我知道,你应该只问一些非常具体的技术问题,但这不是这样的问题。如果你认为这篇文章不合适,请通过发表评论告诉我,我会删除这个问题,但我真的需要帮助,我不知道还能去哪里。
我是一名平面设计师,基本的编程知识,但我几乎只使用 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 在文化上似乎是一个死胡同,但这个过程看起来确实很有趣;祝你好运!