我想在我的 LaTeX 文档中使用 Cormorant 字体系列。
后来我了解到,这个家族的 Geramond 变体出现在 TeXLive 发行版中,但我当时并不知道,而且无论如何我相信这些家族并不相同,Geramond 缺少小型大写字母的定义。
我从发布下载页面(档案名称Cormorant_Install_v3.601.zip
)放入包含我的文档的文件夹中,并将以下几行插入我的 LaTeX 文件中:
\usepackage{fontspec}
\setmainfont{Cormorant-Regular.ttf}[
BoldFont = Cormorant-Bold.ttf ,
ItalicFont = Cormorant-Italic.ttf ,
BoldItalicFont = Cormorant-BoldItalic.ttf,
]
我创建了一些小型大写字母格式,在运行 XeLaTeX 后,这些格式看起来很合理,但据我所知,LaTeX 没有正确的小型大写字母来源,因此它一定是根据常规样式字体伪造了小型大写字母。我想从正确的来源获得这种字母外观的卓越外观,该来源在单独的字体文件中提供。
我将附加字段添加到可选参数列表中:
SmallCapsFont = CormorantSC-Regular.ttf
然而,我发现输出没有什么区别。
我尝试了多种方法来进一步添加列表,处理字体功能,基于我从文档中获益的失败尝试fontspec
,但我发现没有产生具有不同效果的输出的变化。
我放大查看了结果,开始怀疑我看到的效果是否真的是正确的小写字母。然而,在尽可能仔细地检查了字体文件后,我了解到 TTF 格式的文件无法同时嵌入常规字母和小写字母。
因此,我现在得到的小写字母输出要么是假的,要么是在其他来源中发现的字体。但我没有证据证明这两种情况。
我可以证明该选项有一定效果,因为我可以\textsc
使用以下形式让 LaTeX 从命令中生成斜体:
SmallCapsFont = Cormorant-Italics.ttf
我创建了一个总体测试用例,如下。
\documentclass{article}
\usepackage{fontspec}
\usepackage{geometry}
\geometry{landscape,a5paper}
\setmainfont{Cormorant-Regular.ttf}[
BoldFont = Cormorant-Bold.ttf ,
ItalicFont = Cormorant-Italic.ttf ,
BoldItalicFont = Cormorant-BoldItalic.ttf,
]
\begin{document}
\Large
\noindent The Quick Brown Fox Jumped Over The Lazy Dog. \vspace{1em}
\noindent \textbf{The Quick Brown Fox Jumped Over The Lazy Dog.} \vspace{1em}
\noindent \textit{The Quick Brown Fox Jumped Over The Lazy Dog.} \vspace{1em}
\noindent \textsc{The Quick Brown Fox Jumped Over The Lazy Dog.} \vspace{1em}
\end{document}
将以下行添加到可选参数列表中\setmainfont
应该会产生效果,但却没有任何效果。
SmallCapsFont = CormorantSC-Regular.ttf
结果
不使用小型大写字体文件
使用小型大写字体文件
答案1
您不需要更改任何内容,因为Cormorant-Regular.ttf
它包含使用真正小型大写字母smcp
所需的功能:fontspec
$ otfinfo -f Cormorant_Install_v3.601/1.\ TrueType\ Font\ Files/Cormorant-Regular.ttf | grep smcp
smcp Small Capitals
您在评论中提到的 fontforge 提供了另一种查看此内容的方法。使用它,Metrics -> New Metrics Window
您不仅可以测试字体指标,还可以测试许多字体功能。输入一些文本即可获得:
激活smcp
左侧栏的功能可获得以下效果:
虽然顶部输入的字符保持不变,但用于表示这些字符的字形已经发生变化:/h
已被替换为/h.sc
等。
如果没有该功能,fontspec
则不会自行伪造小写字母。CormorantSC-Regular.ttf
发行版中提供的字体旨在为那些必须使用无法理解 OpenType 功能的软件的人提供便利,例如smcp
。
关于您的(隐含的)问题,TrueType 字体如何同时包含常规和小型大写字母字形。这已经是可能的了。“Palatino Linotype”就是这种字体的一个例子。必须记住,OpenType 是 TrueType 加上将字形存储为三次样条的能力和附加字体功能,例如smcp
。字形存储为二次样条但具有 OpenType 字体功能的 TrueType 字体仍然可以被不理解 OpenType 的应用程序视为普通的 TrueType 字体。