让虚拟字体在 LaTeX 中发挥作用

让虚拟字体在 LaTeX 中发挥作用

为了更好地理解所有 LaTeX 内容,我一直在尝试使用虚拟字体(例如。替换连字符如何创建虚拟字体?)。然而,我无法让 LaTeX 识别我的新 TFM 文件,我认为问题在于我对该\pdfmapline命令缺乏理解。

以下是我采取的步骤:

从我的 tex 目录中复制已知可用的字体:

cp /usr/share/texmf-texlive/fonts/tfm/public/cm/cmr10.tfm .

创建一种人类可读的格式:

tftopl cmb10 cmb10

编辑cmb10.pl并将新文件保存到foobar.vpl。在本例中,我映射了字母 b->a,只是为了看看我所做的是否有效果(参见第 6 节)这里)接下来我将文件编译为二进制格式:

vptovf foobar.vpl

这将创建foobar.tfmfoobar.vf。通过阅读,似乎位于\pdfmapline本地目录中,因此暂时,我可以将文件保留在原处。现在我的 LaTeX 文档如下所示:

\documentclass{article}
\pdfmapline{=foorbar cmr10}

\begin{document}
aaaa bbbb aaaa
\font\test=foobar aaaa bbbb aaaa \the\font
\end{document}

这可以编译但是不会将任何 b 替换为 a。

答案1

正如帕特里克所观察到的,您不会切换到新字体。

确实,添加后

(MAPFONT D 0 (FONTNAME cmr10))

到生成的pl文件中,将条目更改b

(CHARACTER C b
   (CHARWD R 0.555557)
   (CHARHT R 0.694445)
   (MAP 
      (SELECTFONT D 0)
      (SETCHAR C a)
      )
   )

并保存为文档foobar.vplvptovf foobar

\pdfmapline{=foobar cmr10}

aaa bbb aaa

\font\test=foobar aaa bbb aaa

\test aaa bbb aaa


\bye

处理后将pdftex给予

aaa bbb aaa
aaa bbb aaa
aaa aaa aaa

正如预期的那样(这里没有显示精确的对齐)。

该命令\the\font不执行任何操作:它仅生成选择当前字体的相应声明。如果要打印.tfm文件名,则必须说\fontname\font。如果我们将此指令添加到以下三行中,aaa bbb aaa我们将得到

aaa bbb aaa cmr10
aaa bbb aaa cmr10
aaa aaa aaa fooaar

(第三行在b打印时将 改为 a )。

相关内容