如何使用 lualatex 访问 Garamond Premier Pro 的直接“quotedbl/quotesingle”?

如何使用 lualatex 访问 Garamond Premier Pro 的直接“quotedbl/quotesingle”?

想法(来自这里):我使用\symbol{idx},其中 idx 是字形索引。

为了确定这两个字形的索引,我查看了...texmf-var\luatex-cache\generic\fonts\otf\garamondpremrpro.luafontforge 和 MS Word,并验证了结果。三者都报告说,“34”和“39”应该是正确的索引 - 请参见以下屏幕截图:

garamondpremrpro.lua

Fontforge 截图

MS Word 能够访问正确的字形

我还使用“blacksquare”(9632)的索引验证了总体思路:虽然黑色方块设置正确,但是使用以下代码不会显示 quotedbl/quotesingle:

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}

\newcommand{\blackSquare}{\symbol{9632}} %<-- works fine
\newcommand{\straightQuoteDbl}{\symbol{34}} %<-- does not work
\newcommand{\straightQuoteSingle}{\symbol{39}} %<-- does not work

\begin{document}

{\straightQuoteDbl}Hello World! \blackSquare\straightQuoteDbl

{\straightQuoteSingle}Hello World! \blackSquare\straightQuoteSingle

\end{document}

该代码产生以下输出:

在此处输入图片描述

这两个引述显然与 MS Word 生成的结果不同(见上文)。

System environment: Win 7 Pro 64-bit
TeX-Environment: texlive 2014 (frozen)
Font: Garamond Premier Pro Version 2.0.104

我究竟做错了什么?

答案1

出现花括号是因为在 的最新版本中 TeX 连字默认处于启用状态fontspec。如果您的文档仅包含代码,您可以使用 禁用 TeX 连字\setmainfont,如下所示:

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}[RawFeature=-tlig]
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
"Hello World! \blackSquare"
\end{document}

或者,正如 egreg 所建议的,您可以\defaultfontfeatures{}在序言中加入;这会影响 Garamond 和文档中使用的任何其他字体:

\documentclass[12pt]{article}
\usepackage{fontspec}
\defaultfontfeatures{RawFeature=-tlig}% put before specific fonts to affect them all
\setmainfont{Garamond Premier Pro}
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
"Hello World! \blackSquare"
\end{document}

如果您只想在文档的一部分中使用直接引号,请使用此方法:

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\newcommand{\blackSquare}{\symbol{9632}}
\begin{document}
``Hello, beautiful World!''

{\addfontfeatures{RawFeature=-tlig}"Hello World! \blackSquare"}
\end{document}

(如果愿意的话,您可以定义一个宏来缩短它。)

或者,您可以全局禁用 TeX 连字,如两个示例所示,并在需要时在源中输入真正的“,”,',',- 和 —。

答案2

您可以使用csquotes定义使用这些直引号的引用样式:

\DeclareQuoteStyle命令有 5 个位置参数、样式的名称、外部和内部引号的开始和结束标记:

然后您可以将该样式与 一起使用\setquotestyle{<name>}

\documentclass[border=5pt]{standalone}

\usepackage{fontspec}
\setmainfont{Latin Modern Roman}               

\usepackage{csquotes}
\DeclareQuoteStyle{straight}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{34}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{34}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{39}}}%
{{\addfontfeatures{RawFeature=-tlig}\symbol{39}}}     

\setquotestyle{straight}

\begin{document}
John said: \enquote{Harry said \enquote{Hello World!} yesterday}.
\end{document}

需要额外的花括号来使字体特征的改变仅限于引号局部。

结果如下: 结果

相关内容