METAFONT 単位
フォント METAFONT#METAFONTプログラミングへ戻る。
概要
METAFONTに限らず、フォント制作に必要となる単位についてとりあげます。通常の距離には国際単位系のmに係数をつけてum、mm、cm、kmのようなものを使いますが、これに加えて、文字デザインや活版印刷、コンピュータを使った印刷業界で使われるような単位がありまして、METAFONTプログラムでも、ちょっとかわった単位について理解する必要があります。プログラムでGUI(グラフィカルユーザインターフェース)のあるものを作ったりしたことがある人には聞いたことがあるような単位も含まれます。あるいはWebデザインで画面をデザインしたことがある人も聞いたことがあるような単位でもあるかもしれません。Webの画面デザインを指定するCSS(カスケードスタイルシート)とかでも使われる単位だったりします。
- inchインチ
- 1[in]=2.74[cm]
- 画面のサイズがインチで表現されていることからも、よく使われる単位です。
- pointポイント
- 1[in]=72.27[pt]
- 植字工と呼ばれる人たちが使っていた単位です。
- DPIドット パー インチ(Dot/Inch)
- 96dpi(PC初期~2010年頃までの通常のPCスクリーンの強制的な設定)
- 1インチあたり96dot(ピクセル) 絶対的な距離ではありませんでした。PC上の96ドットが実際の空間や印刷後の1インチを表すという意味です。
- 最近は高DPIという概念があって、96とか、それ以上のDPIの画面設定のものもあります。DPIではドットの大きさは決まらないため、厳密にはPixel Per Inchという単位が画面の解像度を現します。PPIも画面のピクセルとインチを現すためのものではなく出力する機器との関係の値であり、何に出力するのかという基準によって変化する値です。PPIとDPIは同じような意味として扱われる場合もありますので、そのときそのときの話の定義や構造の定義や世界観の定義によって変わることもあります。ちなみに印刷機や印刷業界では350DPI以上でないと美しく印字されないとされています。高いDPIの画像情報の方が自然界の風景をよりたくさんの情報で記憶しているため、解像度の高いディスプレイや紙に印字できたとしたら美しく表示されます。また、低いDPIの表示装置に対しても数学的アプローチによって、より美しく表示させることが可能になります。
- 横方向がPPIで縦方向はLine Per Inchという単位によって表現されます。いずれにしても1インチをどれくらいのdotで表現するかという意味であり、画面上においてDPIはかならずしも96DPIだからといって96ドットが1インチではなく、そのデバイスで作業した結果を出力するときに96DPIとして扱ってくださいと伝えることで、結果的に1インチの大きさになるという感じが多いです。PPIはpixels_per_inchという変数で予約されている値になっています。
- em エム
- 字面の縦の長さを決めるのに使う単位です。Mという文字が正方形に近いことからMの文字の大きさとも言えるということからemという単位の名前が付いたとされています。METAFONTではemの大きさを数値で指定することで、フォントの横幅の大きさの基準が定義され、それぞれの単位を使った大きさがひとつに決まる仕組みになっています。もうひとつは、x_heightという単位で高さが決まります。em および、x_heightによって1文字の大きさが決まり、それぞれの文字毎にフォントメトリック定義を使って、横幅を狭く使う文字や、ある特定の文字が続く場合のみ使われる文字の入れ替えが定義されたりして、等幅でないフォントは定義が足されていく感じです。
- METAFONTでは1倍という単位サイズ(200[dpi])に1[pt]=2.7674で1mm=7.87402という値が定義される仕組みになっています。
- たとえば、\mode=proof;mag=1;なら解像度は2601.72[dpi]で1[pt]は36[dot]になります。36[dot]*72.27[pt]=2601.72という値になりますから、72.27[pt]は1[in]ですから、1[inch]は2601.72[dot]ということで、解像度によって1[pt]あたりの数値が決定されます。このとき1[mm]は102.42995[dot]で表現されます。こういう体系において、1[em]を何ptにするのかということは、プログラマやフォントデザイナーが決定するべきことです。例えば1[em]を10[pt]とすると、このとき決定した1[em](字面の横幅)値によって、そのフォントは10[pt]のフォントということになります。よくフォントファミリーにもゴシック10ptとか9ptとかが作られますが、まさにこの1[em]を何ptとして作ったフォントタイプであるのかということを示します。
fontsize 10pt#;
- のようにして定義します。さらに文字毎に横幅と高さは定義できます。
以下にあまり使わない単位を記述しておきます。
- pc(パイカ)pica
- 1[pc]=12[pt]
- bp(ピッグポイント)big point
- 1[bp]=0.0139[in]
- 72[bp]=1[in]
- dd(ディドーポイント)didot point
- 1157[dd]=1238[pt]
- cc(シセロ)cicero
- 1[cc]=12dd[pt]
特殊な値
- 補正に使う値で、少し足し合わせる値として予約されている変数です。
- blacker
- \mode=proofではblacker=0です。
- \mode=localfontではblacker=0.25です。
モード毎の定義値
あらかじめ用意されている\modeの値に対して準備されている初期値が異なります。今はpixels_per_inchだけしか説明していませんので、その値が異なるということだけでも理解しておけば良いでしょう。
- \mode=localfont
- pixels_per_inch=600
- blacker=0.25
- % 線の太さ補正値
- o_correction=1
- % フォント幅に対してのはみ出し補正値
- fontmaking=1
- % フォントを作るか?
- % 0=作らない、1=作る。
- fillin=0
- % 隅の黒ずみ補正値
- proofing=0
- % ゲラ刷り(頂点ポイント表示)するか?しないか?
- % 0=しない、1=する。
- tracingtitles=0
- % 画面にタイトル表示するか?長時間処理の場合に進捗状況を知るのに役に立つ。
- % 0=しない、1=する。
- \mode=proof(省略値)
- pixels_per_inch=2601.72
- blacker=0
- o_correction=1
- fontmaking=0
- fillin=0
- proofing=2
- tracingtitles=1
- \mode=smoke
- pixels_per_inch=2601.72
- blacker=0
- o_correction=1
- fontmaking=0
- fillin=0
- proofing=1
- tracingtitles=1