Latin Modern 字体系列的技术文档列出了所有可用的字形。字形的数量比随附的编码表 (CS、T1、L7X、OT1、OT4、QX、T5、LY1、TS1) 中收集的要多。我需要带笔划的 h 或带双重音符的元音等字形。它们不在上述编码表中。我无法使用 Xe(La)TeX。我的问题是:如何创建包含所需字形的新编码表?
答案1
构建类似于 T1、QX 或您列出的其他字体编码的新字体编码并非易事。
最简单的部分是构建字体表;通常的要求是可打印的 ASCII 字符应该留在其位置,并且同一字符的小写和大写版本相隔 32 个位置。
接下来,所有非 ASCII 字符都应该命名;适用时,名称通常是\text<AdobeName>
,除了某些<AdobeName>
完全错误的情况(臭名昭著的海鸠例如,LaTeX 内部字符表示(光照)。
假设您的新编码是LC
(L
对于本地和C
Chris)。您必须准备一个名为 的文件lcenc.def
,您可以使用它t1enc.def
作为示例。接下来是一个名为 的文件lcenc.dfu
,用于补充utf8
选项,其中inputenc
包含从 Unicode 点到 LICR 的转换,用于尚未涵盖的 Unicode 点。同样,t1enc.dfu
可以作为模型。
现在到了最难的部分。你必须构建你计划使用的每种字体。这里有一些工具,TUGboat 上也有一些论文。
我想说这是一个长期项目。
对于有限的需求,可以通过复合字形更轻松地解决。 这样做的缺点是,连字无法在单词中超过复合字形时起作用,但如果您不想为所用语言构建连字模式,则无论如何都会遇到连字问题。
例如,你可以得到双重音符和带删除线的拉丁小写字母 H
\documentclass{article}
\usepackage[T3,T1]{fontenc}
\usepackage[utf8]{inputenc}
\DeclareTextAccentDefault{\textdoublegrave}{T3}
\DeclareTextSymbolDefault{\textcrh}{T3}
\DeclareUnicodeCharacter{0127}{\textcrh}
\DeclareUnicodeCharacter{0201}{\textdoublegrave{a}}
% add the other Unicode points for the accented letters you need
\begin{document}
\textdoublegrave{a} \textcrh
ȁ ħ
\end{document}
如您所见,输出是相同的。
答案2
我不知道你需要做什么来创建新字体。但要获得所需的字形,你也不需要这样做。只需使用 T3 编码即可。
\documentclass{article}
\usepackage[T3]{fontenc}
\begin{document}
\textcrh\ \H*{o}
\end{document}