使用业余爱好 MF 字体和 LaTeX,添加重音字符

使用业余爱好 MF 字体和 LaTeX,添加重音字符

我使用 metafont 创建了一个业余字体。我想在字体中包含一些重音符号,但我不确定实现该目标的标准方法是什么(gogle 没什么帮助),以便字体可以与 LaTeX(如果需要,可以使用 pdflatex)配合使用。

  1. 如何在 LaTeX 中加载字体,以便将其用于其定义的字符,并将其余的字符使用一些后备字体(带有警告)?(简单地说,我只是这样做\font\myFont=myFont \myFont,但未定义的字符根本没有排版)

  2. 如何定义重音符号的形状,放置在带有\', ... 的字形之上?我猜想这与字体编码有关,例如T1

  3. 我发现虚拟字体指南,其中只提到了从 PS 字体创建虚拟字体。我也可以使用 metafont 生成的字体吗?

  4. 我需要虚拟字体吗?或者有更简单的替代方案?

  5. 编辑:我正在考虑使用 Lilypond 的方法(和一些脚本):使用 mftrace 跟踪 metafont,然后使用 fontforge 脚本创建 OpenType 字体。(它需要 mf 日志读取技巧,但可以工作)如果我将重音符号作为组合字符包含在 OTF 中,它们会自动与 XeTeX 一起使用吗?现在看起来是最简单的,我只是被躲避了吗?

如果问题让你困惑,我很抱歉,因为我对字体还不熟悉。谢谢大家的指点——

附言:我尝试使用 XeLaTeX+fontspec 加载字体,但得到(ignota.tfm 在当前目录中):

fontspec.cfg loaded.
(/usr/share/texmf-texlive/tex/xelatex/fontspec/fontspec.cfg))
! Undefined control sequence.
\zf@set@font@type ...onttype \zf@basefont \zf@tfm 
                                                  \or \zf@atsuitrue \ifnum \...
l.4 \setmainfont{ignota}

备注:每个人都喜欢截图 :-)

乱码

答案1

同时,我找到了一个部分解决方案。使用T1(=Cork?) 编码,它是 8 位的,但足以覆盖西欧/中欧语言(我现在需要的全部)。

  1. 在 Metafont 文件中,将字符定义为beginchar(##,...),其中##是 T1 编码中的数字(例如此处,第 23 页tex256.enc),例如é是233等等。

    未直接覆盖的重音字母(如 ā)T1由字体内的重音符号组成(位置 0-11)

  2. 然后,将字体引入 LaTeX(我使用了书法作为模板)并定义一个激活它的简写:

    % 10.0 is scaling factor; I guess I have something wrong as it is must be that big...
    \DeclareFontShape{T1}{ignota}{m}{n}{<->s*[10.0]ignota}{}
    \DeclareRobustCommand\ignota{
       \fontfamily{ignota}%
       \fontencoding{T1}%
       \selectfont
    }
    

    kpathsea 自动处理从 ignota.mf 生成的度量和位图字体。

以下文本使用\usepackage[T1]{fontenc}\usepackage[utf8x]{inputenc}\usepackage{ignota};重音符号全部输入为 utf8 重音符号;适用于 LaTeX 和 pdfLaTeX。哦,是的,我知道它在印刷上看起来很糟糕: 渲染的 PDF

我仍然不清楚:如何将字体转换为轮廓字体?运行mftrace就够了吗?我可以直接在 XeTeX 中使用字体,而无需进行其他转换吗?

相关内容