如何创建虚拟字体?

如何创建虚拟字体?

在回答这个问题时用向后的箭头替换连字符亨德里克·沃格特写道:

如果你遇到一种情况,你希望你的连字符是这样的\hookleftarrow,而菲利普的回答确实如此不是帮助,那么仍然可以选择创建虚拟字体。通过这种方式,您可以规避\hookleftarrow来自不同字体的问题以及它不是单个字符的问题。这并不像听起来那么难:如果您需要这个,我可以填写详细信息。

我想了解这些“细节”以及特别是针对这个问题的解决方案。

答案1

您可以按照以下步骤创建带有 hookleftarrow 的虚拟字体。首先选择您想要作为基础字体的字体。在此示例中,我采用了 helvetica 克隆 (phvr8r)。从该字体创建属性列表格式,并将结果放入将用作虚拟字体属性列表文件 (vpl) 模板的文件中:

tftopl phvr8r.tfm > myfont.vpl

现在编辑此文件并在 vpl 文件的开头添加以下几行:

(MAPFONT D 0 (FONTNAME phvr8r))
(MAPFONT D 1 (FONTNAME cmmi10))
(MAPFONT D 2 (FONTNAME cmsy10))

这将加载phvr8r(我们的基础字体)以及 hookleftarrow 所需的两种数学字体。现在我们要替换字体的连字符,因此查找条目 055(CHARACTER O 55并将此条目替换为

(CHARACTER O 55
   (CHARWD R 0.8)
   (MAP
      (SELECTFONT D 2)
      (SETCHAR O 040)
      (MOVELEFT R 0.200)
      (SELECTFONT D 1)
      (SETCHAR O 055)
      )
   )

我们从字体#2 中放置字符(八进制)040,并向左移动一点,并从字体 1 中放置字符 055。现在从属性列表中创建一个虚拟字体(这是一个vp和一个文件):tfm

vptovf myfont

现在您的字体已可以使用(将其放在 TeX 可以找到的目录中 - 我使用了当前工作目录)。这是我的纯 TeX 测试文件:

 \font\myfont=myfont
 \hsize 4in
 \myfont
 A wonderful serenity has taken possession of my entire soul, like these sweet
 mornings of spring which I enjoy with my whole heart. I am alone, and feel the
 charm of existence in this spot, which was created for the bliss of souls like mine.
 I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil
 existence, that I neglect my talents. I should be incapable of drawing a single
 stroke at the present moment; and yet I feel that I never was a greater artist than now.
 \bye

答案2

Patrick 的方法确实很有效。但是,让 LaTeX 使用新字体有点复杂。这里有一个技巧,我将使用相同的字体作为示例。

mv phvr8r.tfm xphvr8r.tfm
tftopl xphvr8r.tfm > phvr8r.vpl

现在按照 Patrick 的建议编辑.vpl文件,但要更改

(MAPFONT D 0 (FONTNAME phvr8r)) -> (MAPFONT D 0 (FONTNAME xphvr8r))

然后运行

vpltovf phvr8r.vpl

如果我们现在把这个测试文件写入同一目录中

\documentclass{article}
\pdfmapline{+xphvr8r NimbusSanL-Regu " TeXBase1Encoding ReEncodeFont " <8r.enc <uhvr8a.pfb}

\setlenght{\textwidth}{4in}

\begin{document}
\fontfamily{phv}\selectfont

 A wonderful serenity has taken possession of my entire soul, like these sweet
 mornings of spring which I enjoy with my whole heart. I am alone, and feel the
 charm of existence in this spot, which was created for the bliss of souls like mine.
 I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil
 existence, that I neglect my talents. I should be incapable of drawing a single
 stroke at the present moment; and yet I feel that I never was a greater artist than now.

\end{document}

我们将得到相同的输出。可以通过在中\pdfmapline查找来获得的参数,方法是复制相关行并将其添加到其前面。phvr8rpdftex.map+x

这是因为 TeX 首先在当前目录中查找文件。这样做使得可以使用该phv系列的标准字体描述文件。如果必须将新创建的虚拟字体用于更大的项目,最好定义一个新的字体系列名称并构建新的字体描述文件。

相关内容