如何在 LaTeX 中创建新的字体编码?

如何在 LaTeX 中创建新的字体编码?

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 内部字符表示(光照)。

假设您的新编码是LCL对于本地和CChris)。您必须准备一个名为 的文件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}

在此处输入图片描述

相关内容