METAFONT

METAFONT
開發者高德納
当前版本
  • 2.71828182 (2021年2月5日)[1]
編輯維基數據鏈接
操作系统跨平台
类型編程語言
许可协议自由軟件

Metafont是一種用於定義矢量字體的編程語言。這也是Metafont直譯器的名稱,其生成的點陣字體,可嵌入到PostScript中。Metafont由高德納發明,與也是他發明的TeX排版軟體相輔相成。 Metafont的特點之一是所有的字体都是用几何方程定义的,例如,可以用線段及貝茲曲線的相交處來定義點。

歷史

美國計算機科學家高德纳(Donald Knuth)於1977年著手字體製作軟件,並於1979年發佈的第一個版本METAFONT。由於原來語言的缺陷,高德纳於1984年開發一個全新的METAFONT系統。METAFONT有一個與TeX的相似點 ,就是每一個更新版本都愈接近一個數學常數(每一個更新版本增加一個小數位,METAFONT趋近于eTeX趋近于π)。

特点

与很多常见的轮廓字体格式如TrueType和PostScript Type 1不同,METAFONT字体主要由一定宽度的“笔划”和一些封闭填色区域构成。因此,METAFONT字体文件并不描述字形的轮廓,而是描述“笔划”的路径。

METAFONT的曲线描述采用三次样条函数,而不是二次的。

使用

虽然一些著名的字体设计师如Hermann Zapf已经与高德纳合作用METAFONT设计新字体(二者曾合作设计了AMS Euler数学字体),但这个系统并未在业界被广泛使用。高德纳认为这是由于“让一个艺术家变成一个能够理解如何通过60多个参数设计字体的数学家实在太困难”[2]

例子

下列例子為字母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

這會產生下列字型圖樣:

上述例子可由命令列指令來處理 [3]

mf '\mode=ljfour; mode_setup; input beta.mf'; gftopk beta.600gf beta.600pk

處理後可用於LaTeX檔案[3](所有檔案應存放在相同目錄下,或是使用適當的方法提示TeX系統相關的資訊):

\documentclass{article}

\newfont{\letterbeta}{beta}
\newcommand{\otherbeta}{{\letterbeta B}}

\begin{document}
Let’s try having a strange \otherbeta\ here.
\end{document}

最後的PDF檔應如下所示:

参考

  1. ^ https://ctan.org/pkg/metafont.
  2. ^ Karel Horák. Questions and Answers with Prof. Donald E. Knuth [与高德纳教授的问答] (PDF). TUGBoat (布拉格). 1996年3月, 17 (4): 361 [2012-10-25]. (原始内容存档 (PDF)于2020-09-20) (英语). 
  3. ^ 3.0 3.1 Christophe Grandsir. METAFONT Tutorial. [2009-06-28]. (原始内容存档于2020-05-30). 

外部連結

  • The Metafont Tutorial: an online guide to using Metafont. (页面存档备份,存于互联网档案馆
软件及库
许可证
操作系统、企业及专业
其他字体
  • Allerta英语Allerta
  • Asana-Math英语Asana-Math
  • Cardo英语Bembo#Digitisations and derivatives
  • Chandas英语Chandas (typeface)
  • Comic Neue英语Comic Neue
  • Cormorant
  • Garamond
  • Gentium
  • Inconsolata英语Inconsolata
  • IM Fell英语History of Western typography#Fell types
  • Jomolhari
  • Junicode
  • Kochi英语Kochi (font)
  • Linux Libertine
  • M+英语M+ FONTS
  • News Cycle英语News Gothic
  • Open Baskerville英语Baskerville
  • OpenDyslexic
  • Railway Sans
  • Squarish Sans CT英语Squarish Sans CT
  • Theano Didot英语Theano Didot
  • XITS英语XITS font project
  • 花園字體
  • 和田研字体
  • 一點明體
工作组和人物
  • 高德纳
  • Font Awesome
  • Greek Font Society英语Greek Font Society
  • Font Library英语Font Library
  • Template:Google字體
  • i/世界少数民族语文研究院
  • 开放源代码Unicode字体英语Open-source Unicode typefaces
  • CJK字体列表
  • 开放源代码字体列表英语:Category:Open-source typefaces
  • 自由Unicode字体列表英语:Category:Free software Unicode typefaces
宏包
  • AMSTeX英语AMSTeX
  • ArabTeX英语ArabTeX
  • CircuiTikZ英语CircuiTikZ
  • ConTeXt英语ConTeXt
  • FarsiTeX英语FarsiTeX
  • Texinfo英语Texinfo
  • LaTeX
  • MusiXTeX英语MusiXTeX
  • Plain TeX
  • PSTricks英语PSTricks
  • TIPA
  • XyMTeX英语XyMTeX
替代TeX引擎
  • eTeX
  • LuaTeX
  • pdfTeX
  • XeTeX
  • New Typesetting System英语New Typesetting System
  • Omega英语Omega (TeX)
发行版
  • TeX Live
  • teTeX
  • fpTeX
  • MiKTeX
  • proTeXt
  • MacTeX英语MacTeX
  • gwTeX
  • OzTeX
  • Latexian
  • AmigaTeX
  • PasTeX
  • TeXPortal
  • W32TeX英语W32TeX
社区
  • CTAN
  • TUGboat英语TUGboat
  • The PracTeX Journal英语The PracTeX Journal
  • Deutschsprachige Anwendervereinigung TeX
相关
著作
  • 计算机程序设计艺术
  • 歌曲的計算複雜度英语The Complexity of Songs
  • 電腦與排版英语Computers and Typesetting
  • 具體數學
  • 超現實數英语Surreal Numbers (book)
  • 計算機科學家很少談論的事情英语Things a Computer Scientist Rarely Talks About
  • 論文選集英语Selected papers series of Knuth
软件
  • TeX
  • METAFONT
  • MIXAL
    • MIX英语MIX (abstract machine)
    • MMIX英语MMIX
字型
文学编程
  • WEB
  • CWEB英语CWEB
算法
  • X算法
  • 高德納-本迪克斯補全算法英语Knuth–Bendix completion algorithm
  • KMP算法
  • 高德納洗牌算法英语Fisher–Yates shuffle
  • RSK 對應英语Robinson–Schensted–Knuth correspondence
  • TPK算法英语TPK algorithm
  • 概念化戴克斯特拉算法
  • Knuth's Simpath algorithm英语Knuth's Simpath algorithm
相關