创建元字体

创建元字体

我知道,你应该只问一些非常具体的技术问题,但这不是这样的问题。如果你认为这篇文章不合适,请通过发表评论告诉我,我会删除这个问题,但我真的需要帮助,我不知道还能去哪里。

我是一名平面设计师,基本的编程知识,但我几乎只使用 GUI。我最近在一本书中读到了一些关于 Meta-Fonts 的内容,我非常着迷,现在我想创建自己的 Meta-Font。

我在网上找到了一些关于如何创建这种字体的非常好的文档,但我只有运行 macOS 的电脑,而我试图遵循的文档并没有详细介绍我必须在 Mac 上安装哪些应用程序才能创建 Meta-Font。我在谷歌上搜索了一下,找到了 MiKTeX,它看起来像一个可靠的应用程序,也可用于 macOS,但我对所有这些都很陌生,我的问题是:

除了 MiKTeX,我还需要其他东西来创建 Meta-Font 吗?我读到我还需要 GFtoPK,这包含在 MiKTeX 中吗?

谢谢!–西蒙

答案1

MacTeX 系统将包含您需要的所有软件。您可能需要安装水上麦克斯用于编辑 mf 文件,因为它包含一个专用的 MF 模式,它将提供语法高亮显示。请注意,MacTeX 需要长的从头开始下载需要花费一些时间,因此请耐心等待。

如果你想深入了解,我建议你阅读METAFONTbook并拿了一份计算机现代字体(E卷计算机和排版). Neenie Billawalla 的元标记很难找到,但提供了另一种使用 Metafont 的完整设计,可以从 CTAN 下载https://ctan.org/tex-archive/fonts/pandora?lang=en这是值得注意的,因为这实际上是从设计角度设计元字体的最全面的尝试。

Metafont 最终失败的原因是它更像是一个数学/编程工具,而不是一个视觉工具。20 世纪 90 年代初,在与 Sumner Stone 的交谈中,他说 Metafont 不适合他或其他字体设计师,因为他们需要更直接地与作品的视觉方面进行互动。

答案2

事实证明你也可以使用 MiKTeX(正如问题中所问),尽管当这个问题被发布时,在 MikTeX 上不太明显,因为这个问题现已修复从 MiKTeX 20.12 开始。因此,这里有一个关于如何开始使用 METAFONT 的教程/演练。

初始设置

安装TeX 直播(又名麦金塔电脑在 macOS 上)或MikTeX。主要区别在于,前者更容易“安装所有内容”(几 GB),而后者(MiKTeX)更容易进行绝对最小的安装,并根据需要(需要时)安装其他所有内容。

无论您安装哪一个(或以前安装过),请通过验证以下输入文件是否可以编译来确保您的安装正常运行(例如,在 MiKTeX 上第一次可能需要安装几十个东西):

\documentclass{article}
\begin{document}
Hello
\end{document}

例如,您可以使用像 TeXworks(附带 MiKTeX)或 TeXShop(附带 MacTeX)这样的 IDE,或者如果以上内容在文件中foo.tex,则可以pdflatex foo.tex在命令行运行。

画一些东西

当您是 METAFONT 专家时,这可能不是您设计字符的方式(或者可能是,我知道什么),但您可以通过在方格纸上绘图来开始。

画一个字母(或任意形状),按照你喜欢的方式画。我画了这个形状,看起来有点像问号:

我的形状

标记有趣点

给形状上的某些点命名;这里我标记了四个点(1、2、3、4),并且画出了轴以便计算它们的坐标:

点

创建 METAFONT 文件

现在创建一个名为cee.mf(对于此示例),它将是 METAFONT 源文件描述您绘制的形状。手册 (METAFONTbook) 解释了执行此操作的语法。选择字体中希望将此形状指定为字形的位置。这里我选择了“q”(即 ASCII 112;您可以使用 0 到 255 之间的任何数字)。

mode_setup;

% (character code, width, height, depth)
beginchar("q", 8pt#, 10pt#, 0);
  "A funny shape";
  % Can use variables w, h, d below.
  z1 = (1/7 w, 7/8 h);
  z2 = (6/7 w, 4/8 h);
  z3 = (3/7 w, 3/8 h);
  z4 = (3/7 w, 1/8 h);
  pickup pencircle scaled 0.15w;
  draw z1 .. z2 .. z3 -- z4;
  penlabels(1, 2, 3, 4);  
endchar;

end

使用此文件

使用此 METAFONT 文件的一种方法是从您的 TeX 文件中引用它(与文件位于同一目录中.mf):

\documentclass{article}  
\begin{document}
\font\myfont=cee

Hey look, {\myfont qqq} from our font.
\end{document}

这将(在 TeX Live 或 MiKTeX 下)自动调用mf程序来生成 TeX 需要了解的有关字体的任何信息:

第一次尝试

恭喜,您刚刚排版了一份使用您创建的字体的文档!

可是等等…

指定路径

您可能已经注意到,形状并不完全符合我们的预期。事实证明,METAFONT 对于如何连接点有自己的想法。克服这个问题的一种方法是添加大量点,但还有更好的方法;请阅读 METAFONTbook 了解详情。

事实证明,我们可以将我们的draw代码改为:

draw z1{right} .. z2{down} .. {left}z3 -- z4;

迭代/做出改变

我们希望编辑.mf文件并在编译文件时使用更新的字体定义.tex。我发现最简单的方法是删除生成的tfm和文件。pk

  • 在 TeX Live 上,这些cee.tfm与我们的和文件cee.600pk位于同一目录中。.tex.mf

  • 在 MiKTeX 上,这些安装在一个令人惊讶的目录中:

    ~/Library/Application Support/MiKTeX/texmfs/data/fonts/tfm/cg/egyptian/cee.tfm
    ~/Library/Application Support/MiKTeX/texmfs/data/fonts/pk/ljfour/cg/egyptian/dpi600/cee.pk
    

取决于姓名您的文件中.mf可能存在其他文件!请查看日志输出以获取提示。

这是我使用的适用于 TL 和 MiKTeX 的命令(并显示它删除了哪些文件):

rm -vf cee.{tfm,600pk} ~/Library/Application\ Support/MiKTeX/texmfs/data/fonts/{tfm/cg/egyptian/cee.tfm,pk/ljfour/cg/egyptian/dpi600/cee.pk}

然后您可以.tex再次编译该文件以重新生成字体:

第二次尝试

好多了。

校样

您可能不想仅在排版文档中查看字形,而是希望以大尺寸查看它以进行“调试”。您可以运行:

mf '\mode=proofmode; input cee' && gftodvi cee.2602gf && dvipdfmx cee.dvi && open cee.pdf

看起来像这样:

校样

进一步阅读和思考

正如 Don Hosek 在回答中提到的,你应该阅读 METAFONTbook 以了解有关程序语法的更多信息,并仔细研究 Computer Modern 和 Pandora 中的定义,以了解如何使用 METAFONT 构建实际字体。你还可以查看其他示例;Luc Devroye 收集了很多相关链接这里

即使我们用简单形状绘制的这个简单示例字体也说明了 METAFONT 独有的一些特点:

  • 由于形状只是一个程序,你可以改变许多值,看看会发生什么,参数化它(明智地做到这一点并不简单!),进行变化等。Knuth 的文章元字体的概念值得仔细阅读,因为它是示范这一切。

  • 你不能只画出形状;你必须解释向计算机(通过编写程序)传授如何绘制形状。(Knuth 认为这本身就很有价值,可以加深人们对字体的“理解”,我倾向于同意,但这肯定比简单的绘画更难。)请参阅 Richard Southall 的文章使用 METAFONT 设计新字体其中提到了这方面的问题,包括查尔斯·比奇洛的一句话:“设计师认为图像,不是关于图片”。

  • 我没有注意到有人提到这一点(可能有人提到过),但我想知道这对设计的影响:人们是否倾向于选择更容易描述的点和路径(具有“干净”定义的点和路径),而不是纯粹从视觉上选择它们?

无论如何,尽管就主流字体设计而言,METAFONT 在文化上似乎是一个死胡同,但这个过程看起来确实很有趣;祝你好运!

相关内容