如何使用 fontspec 在大字体中使用特殊字形?

如何使用 fontspec 在大字体中使用特殊字形?

现在,在使用 XeTeX 的 fontspec 包时,我遇到了一些字体大小声明问题。我阅读了 fontspec 手册。其中没有关于字体大小的明确部分,但我看到手册的作者使用 \fontsize{48}{48} 命令来声明字体大小。它也适用于我,例如:

\fontsize{60}{66}
\fontspec{Garamond Premier Pro}
Some text with font size 60 pt.\\

或者如果 Garamond 是默认的,我可以使用:

\fontsize{60}{66}\selectfont
Some text with font size 60 pt.\\

这很好,但是如果我想使用一些特殊的字形,例如大字体大小的花形,pdf 中就会出现一些丑陋的方框而不是字符:

\fontsize{60}{66}\selectfont
Some text, and a fleuron: \symbol{\string"E1C0} or simply: \char"E1C0\\

我试验过,限制在 14 pt 和 15 pt 之间:14 pt 大小时,会出现花饰,15 pt 大小及以上时,会出现方框。这种现象的原因是什么?我如何才能将这些特殊字形缩放到大于 14 pt?

答案1

我认为问题在于“Garamond Premier Pro”系列选择了不同大小的字体(例如,大尺寸的“显示”)并且符号仅为“文本”大小。

一个解决方法是为花饰定义一个字体:

\newfontface{\fleurons}[Path=/path/to/the/font/]{GaramondPremierPro-Regular.otf}

替换为/path/to/the/font/实际路径(这个可选参数可能是不必要的,具体取决于字体所在的位置),并在强制参数中使用实际文件名(它可能与我编造的名称不同)。然后

\fontsize{60}{72}\fleurons\symbol{\string"E1C0}

应该使用“固定”字体。

抱歉,答案中有很多“自己动手”的内容,但我碰巧没有 Garamond Premier Pro。

测试文件

我已经设法访问了“Minion Pro”字体,确实字体规格为不同的尺寸定义不同的字体。您可以通过编译以下测试文件来查看我的诊断是否正确:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\begin{document}

\fontname\font

\fontsize{60}{72}\selectfont
\fontname\font

\end{document}

PDF 文件应该显示所用字体的名称,并且它们应该有所不同。

答案2

如果您有另一种主字体并且我无法通过 fontforge 看到该位置有花形符号。

\documentclass{article}
\usepackage{fontspec}
\newfontface\Fleurons{Garamond Premier Pro}
\newcommand*\fleurons[1][{60}{66}]{{\Fleurons%
   \fontsize#1\selectfont\symbol{\string"E1C0}}}

\begin{document}

\fleurons
\fleurons[{80}{90}]

\end{document}

还有免费字体Fleurons.ttf可用

相关内容