- 2.71828182 (2021年2月5日)[1]
![編輯維基數據鏈接](//upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
操作系统 | 跨平台 |
---|
类型 | 編程語言 |
---|
许可协议 | 自由軟件 |
Metafont是一種用於定義矢量字體的編程語言。這也是Metafont直譯器的名稱,其生成的點陣字體,可嵌入到PostScript中。Metafont由高德納發明,與也是他發明的TeX排版軟體相輔相成。 Metafont的特點之一是所有的字体都是用几何方程定义的,例如,可以用線段及貝茲曲線的相交處來定義點。
歷史
美國計算機科學家高德纳(Donald Knuth)於1977年著手字體製作軟件,並於1979年發佈的第一個版本METAFONT
。由於原來語言的缺陷,高德纳於1984年開發一個全新的METAFONT
系統。METAFONT
有一個與TeX的相似點 ,就是每一個更新版本都愈接近一個數學常數(每一個更新版本增加一個小數位,METAFONT
趋近于e,TeX趋近于π)。
特点
与很多常见的轮廓字体格式如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檔應如下所示:
参考
- ^ https://ctan.org/pkg/metafont.
- ^ 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.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)
|
---|
| 字型 | |
---|
| 文学编程 | |
---|
| 算法 | - 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)
|
---|
| 相關 | |
---|
|