METAFONT
[Wikipedia|▼Menu]

METAFONT
作者ドナルド・クヌース

最新版2.71828182 / 2021年2月5日 (3年前) (2021-02-05)
対応OSクロスプラットフォーム
種別プログラミング言語
ライセンスパーミッシブ・ライセンス
テンプレートを表示

METAFONT(メタフォント)は、フォント作成用のコンピュータプログラムである。組版システム TeX とともにドナルド・クヌースにより開発された。
概要

METAFONT は文字の形を描くプログラムソースファイルを読み込んで、組版用の情報(文字の大きさや合字などの情報)を持つフォントメトリックファイルと、文字の形の情報(グリフデータ)を持つビットマップフォントファイルを生成するシステムである。フォントファイルを生成する際にいくつかのパラメータを調整することで、同一のソースファイルから幾種ものフォントを生成することも可能であり、それが名称の由来にもなっている。生成する文字の輪郭には、ベジェ曲線が用いられる。

METAFONT は組版システム TeX とともにドナルド・クヌースにより開発された。組版処理をする際、フォントデザインに応じた合字やカーニングなどの情報が必要となる。TeX では数式組版などにも力点が置かれているが、その際はさらに豊富な組版情報をフォント自体が持つことが期待される。METAFONT は、そのような組版情報を持ったフォントを作成する必要から開発された。METAFONT は TeX と同様にフリーソフトウェアであり、いくつかのプラットフォームに移植されている。

METAFONT で生成したフォントを他の形式(Type1など)に変換するプログラムも開発されている。

また、METAFONT 用のプログラムと似た構文のプログラムで PostScript 形式の画像ファイルを生成できる MetaPost も開発されている。
プログラミング言語としての METAFONT

プログラミング言語としては、METAFONT は以下のような特徴を持つ。

フォントメトリックファイルとフォントグリフファイルを生成する

フォント作成に特化した各種命令がある

数学的な意味の方程式がそのまま扱え、連立一次方程式によって変数の値を与えることができる

演算子の意味の変更までできる柔軟なカスタマイズ可能性を持つ

プログラム例

簡単なサンプルプログラムとその出力を示す。1: beginchar(65,10pt#,10pt#,0pt#);2: pickup pencircle xscaled 1.2pt yscaled 0.5pt rotated 120;3: z1=(0.1w,0.75h);4: z2-z1=whatever*(8,1);5: x2=0.9w;6: z3=(0.8w,0.1h);7: draw z1--z2{z1-z2}..{z2-z1}z3;8: labels(1,2,3);9: endchar;10: end.行番号は説明のために付けてある。

1行目では文字の情報を定めている。この例では、文字コード65の文字を幅10pt, 高さ10pt, 深さ0pt(幅と高さが同じ値だが、引数はこの順)で作成することを宣言している。

2行目では文字を描くのに用いる“ペン”を定義している。このペンは単位円を縦横異なる比率で拡大縮小してできる楕円を120度回転させたもので、次の図のような形を持つ。



3行目から6行目までで3つの点の位置を定めている。3つの点はそれぞれ z1, z2, z3 で、図中では1,2,3とラベルを付けて表示してある。w と h の値は1行目の宣言によって決められて、この例では左下の座標が (0,0)、右下が (w,0)、右上が (w,h) 等となる。

z1 と z3 はそれぞれ3行目と6行目で明示的に決められる。

z2 の決め方に METAFONT の特徴がよく現れている。4行目の段階では「z1 から z2 へ向かうベクトルが (8,1) という成分を持つベクトルの何倍かになっている」ことだけが定義されている。続く5行目で z2 のx成分が明示的に与えられると、z2 の位置が自動的に決定される。METAFONT 内部では、4行目の段階で一次方程式が作られたのちに5行目と併せて解かれている。

7行目で文字を描く。まず z1 から z2 へ直線を引き、z2 からは、z2 から z1 へと向かう方向へ線を引き始める。その線は滑らかな曲線を描きながら z3 へと向かうのだが、最終的に z3 へたどり着くときには z1 から z2 へと向かう方向を向くようにする。

8行目では、3つの点にラベルを付けて表示させている。

9行目で、1行目から続いた文字コード 65 の文字は終了する。さらに他のコードの文字を描きたければ1行目と同様に続けることもできる。

10行目で1文字しかないこのフォントセットが終了する。

(他のプログラム例がw:de:Metafontにも)
関連項目

MetaPost (en)

Computer Modern METAFONTで作られた、TeX標準のフォント。










TeX
処理系

e-upTeX

eTeX

pTeX


LuaTeX

Omega|Aleph


pdfTeX

XǝTeX

マクロパッケージ

マクロ体系

ConTeXt

LaTeX

Texinfo

PSTricks

分野特化

AmS-LaTeX

数学


ArabTeX

アラビア文字


CircuiTikZ(英語版)

電気回路


emath

数学


FarsiTeX(英語版)

ペルシア文字


mhchem

化学式


MusiXTeX

楽譜


TIPA

音声記号


XϒMTeX

化学式



ディストリビューション

MacTeX

MiKTeX

teTeX

TeX Live

W32TeX

エディタ

Kile

LyX

TeXShop

Texmaker

TeXstudio

TeXworks

WinShell

ShareLaTeX

ユーティリティ

Babel(ドイツ語版)| ⇒polyglossia

Beamer

BibTeX

文献


dviout

dvipdfm

dvips

KETpic

PGF/TikZ

TeXPoint

ChkTeX

TeX 関連

Computer Modern

DVI

METAFONT

MetaPost

TeX ディレクトリ構造(英語版)

WEB

CWEB(英語版)


コミュニティ

CTAN

TeXConf

TeXユーザの集い


TUG (TeX Users Group)

TUGboat(英語版)

TPJ(英語版)


DANTE(英語版)

人物

ドナルド・クヌース

レスリー・ランポート

奥村晴彦



コンピュータ

カテゴリ

拡張機能の一覧

TeX エディタの比較(英語版)

TeX/LaTeX入門

TeX Wiki










フリーフォント
OS書体

Bitstream Vera


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:17 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef