从商业字体创建 OML 字体编码

从商业字体创建 OML 字体编码

我已经购买了传统的 sans 和 serif 字体包,并通过 pltotf、vptovf 和类似的实用程序将其插入到我的 TeX/LaTeX 发行版中。

然后我创建了一个包,允许我在数学模式下使用这些字体,我已经展示过但是,我需要增加一些字形框的拉伸,例如“f”斜体字形框,如下图所示

“f”字形的延伸

为了获得第二个输出,实际上我需要手动添加\,指令。那么,如何创建旧字体的 OML 字体编码,以调整数学字形之间的跳跃?

此外,这是获得我所说的结果的正确方法吗?我必须说,我不会创建这样的命令\def\f{f\,},因为在我看来,这是一个微不足道的解决方案

答案1

这是我第一次使用下面将要描述的工具,但让我解释一下我刚刚尝试过的操作(我确信至少有一个关键步骤可能是错误的,必须予以纠正。)

[以下进行了编辑,以对步骤进行必要的添加]

[当然,在.tex下面的源代码中,这只是为了测试,我粗暴地重新分配了letters 符号字体,根本不关心希腊字母;当然,这里缺少一些额外的步骤来将希腊字母与拉丁字母分开,并且仅有的重新分配拉丁字母以使用 T1 编码中的 Times Italic 字体]

  1. 我创建了一个临时目录
  2. 然后我就照做了tftopl ptmri8r.tfm ptmmi8r.pl。这样,我就从中获得了 Times 字体的可读字体规格psnfss
  3. 在我的文本编辑器中我打开了ptmmi8r.pl然后替换(SPACE R 0.25)(SPACE R 0.0)

在步骤2中创建的文件的顶部附近ptmmi8r.pl有:

(FONTDIMEN
   (SLANT R 0.277)
   (SPACE R 0.25)   <-- this is the 0.25 which I replace with 0.0
   (STRETCH R 0.15)
   (SHRINK R 0.0599985)
   (XHEIGHT R 0.440991)
   (QUAD R 1.0)
   (EXTRASPACE R 0.0599985)
   )

继续(抱歉,我不知道如何用 4、5、6……来恢复枚举):

  1. 我保存了文件然后执行了。现在我的工作目录中pltotf ptmmi8r.pl ptmmi8r.tfm有这个文件。ptmmi8r.tfm

  2. 我创建了一个ptmm.map只有一行的文件: ptmmi8r NimbusRomNo9L-ReguItal "TeXBase1Encoding ReEncodeFont" <8r.enc <utmri8a.pfb 这需要进行一些研究,因为我必须pdftex.map从我的安装中挖出该文件,然后将该行复制ptmri8r到上面的文件中。

  3. 然后我创建了以下测试文件,用 进行编译pdftex。并且它可以工作。

但是:tfm 文件中似乎有一个校验和,我不知道修改参数是否font dimension 2需要更新校验和。

但是第二点:Times 字体的标准用法似乎psnfss是通过虚拟字体,这肯定有充分的理由。我尝试使用 和工具ptmri8t执行与上述相同的步骤,但不知何故始终无法理解到底该怎么做。vftovpvptovf

更新:好的,现在我可能明白了正确获取文件进行T1编码所需的一些额外步骤。除上述内容外,我还做了:

  1. vftovp ptmri8t.vf ptmri8t.tfm ptmmi8t.vpl
  2. 我对生成的 ptmmi8t.vpl 进行了两处编辑:首先是 fontdimen 2,然后是条目的下方FONTNAME:我将其更改为(FONTNAME ptmmi8r)
  3. 经过这两次修改后,我做到了vptovf ptmmi8t.vpl ptmmi8t.vf ptmmi8t.tfm
  4. 然后\DeclareFontShape {T1}{ptmm}{m}{it}使用ptmmi8t而不是ptmmi8r

更新结束

再次重申,我对此领域的唯一了解可以追溯到三十分钟前,从阅读第 9 页开始字体安装指南,然后输入man tftoplman pltotf。我希望字体专家能来纠正我的步骤:唯一的目标是获取现有字体的副本,并将其字间空间设置为零,以便 TeX 可以在数学模式下自动插入斜体修正。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

% for pdf output only
\pdfmapfile{+ptmm.map}
% ptmmi8r NimbusRomNo9L-ReguItal "TeXBase1Encoding ReEncodeFont" <8r.enc <utmri8a.pfb

\DeclareFontFamily{T1}{ptmm}{}

% earlier versions had ptmmi8r, but certainly this was wrong

% now that files ptmmi8t.vf and ptmmi8t.tfm have also been prepared
% (see update above)
% additionally to ptmmi8r.tfm, the following presumably should be done:

% (does not matter for the Latin letters in math, but I guess does matter 
% for accented letters or other symbols in text, with `\usefont{t1}{ptmm}{m}{it}`

\DeclareFontShape{T1}{ptmm}{m}{it}{
   <-> ptmmi8t
}{}

\SetSymbolFont{letters}{normal}{T1}{ptmm}{m}{it}

\DeclareMathVersion {standardinterword}
\SetSymbolFont {letters}{standardinterword}{T1}{ptm}{m}{it}

\usepackage{times}

\begin{document}\thispagestyle{empty}

$f(x)$

% with the edit done for correctly generating also files for T1,
% we can compare the original with the font without interword space: 

{\usefont{T1}{ptmm}{m}{it} àé ù}

{\usefont{T1}{ptm}{m}{it} àé ù}

$abcdefghijklmnopqrstuvwxyz$

\textit{abcdefghijklmnopqrstuvwxyz}

\mathversion{standardinterword}

$abcdefghijklmnopqrstuvwxyz$

\mathversion{normal}
$abcdefghijklmnopqrstuvwxyz$

\end{document} 

数学中带有斜体更正的时间

带有变音符号和有或没有单词间空格

相关内容