Metafont是一种用于定义矢量字体的编程语言。这也是Metafont直译器的名称,其生成的点阵字体,可嵌入到PostScript中。Metafont由高德纳发明,与也是他发明的TeX排版软体相辅相成。 Metafont的特点之一是所有的字体都是用几何方程定义的,例如,可以用线段及贝兹曲线的相交处来定义点。
历史
美国计算机科学家高德纳(Donald Knuth)于1977年著手字体制作软件,并于1979年发布的第一个版本METAFONT
。由于原来语言的缺陷,高德纳于1984年开发一个全新的METAFONT
系统。METAFONT
有一个与TeX的相似点 ,就是每一个更新版本都愈接近一个数学常数(每一个更新版本增加一个小数位,METAFONT
趋近于e,TeX趋近于π)。
特点
与很多常见的轮廓字体格式如TrueType和PostScript Type 1不同,METAFONT
字体主要由一定宽度的“笔划”和一些封闭填色区域构成。因此,METAFONT
字体文件并不描述字形的轮廓,而是描述“笔划”的路径。
使用
虽然一些著名的字体设计师如Hermann Zapf已经与高德纳合作用METAFONT
设计新字体(二者曾合作设计了AMS Euler数学字体),但这个系统并未在业界被广泛使用。高德纳认为这是由于“让一个艺术家变成一个能够理解如何通过60多个参数设计字体的数学家实在太困难”[1]。
例子
下列例子为字母B定义一个类似豆子的字型。
%file name: beta.mf
%mode_setup;
% Define a beanlike shape for the character B
beginchar("B",11pt#,11pt#,0);
% Setup coordinates as an equation system
y1=y2=y3=0;
y4=y5=y6=h;
x1=x4=0;
x2=x5=w;
x3=x6=2*w;
% Define pen
pickup pencircle xscaled 0.2w yscaled 0.04w rotated 45;
% Draw the character curve
draw z1..z3..z6{z2-z6}..z5..{z4-z2}z4..cycle;
endchar;
end
这会产生下列字型图样:
上述例子可由命令列指令来处理 [2]:
mf '\mode=ljfour; mode_setup; input beta.mf'; gftopk beta.600gf beta.600pk
处理后可用于LaTeX档案[2](所有档案应存放在相同目录下,或是使用适当的方法提示TeX系统相关的资讯):
\documentclass{article}
\newfont{\letterbeta}{beta}
\newcommand{\otherbeta}{{\letterbeta B}}
\begin{document}
Let’s try having a strange \otherbeta\ here.
\end{document}
参考
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.