3. fonts.dir

新たに TrueType フォントをシステムに追加するとき /usr/X11R6/lib/X11/fonts 以下,或いは,/usr/share/fonts などに TrueType などのディレクトリを作成し,そこへ TrueType フォントをコピーしますが,悲しいことに (謎) それだけでは ソフトウェアからフォントを利用できません.

インストールされたフォントを論理フォント名によって利用できるように,インストールしたディレクトリ内に fonts.dir というファイルを作成しておくという作業が必要になります.

fonts.dir とは,そのディレクトリ内にあるフォントファイルと XLFD の対応をリストしたファイルです.

[メモ] メモ

上記は自分に管理者権限がある場合で,自分に管理者権限が無い場合 /usr/X11R6/lib/X11/fonts などに置けないですので,~/ に任意のディレクトリ,例えば ~/fonts/TrueType を作成し,そこにフォントファイルと fonts.dir を置いて利用することになります.

3.1. fonts.dirの書式

書式
line_count (number)
Filename -Foundry-Family-Weight-Slant-SetWidth-AddStyle-PixelSize-PointSize-ResolutionX-ResolutionY-Spacing-AverageWidth-Registry-Encoding

第一行目には記述されているファイル名と XLFD の対応リストの数を記入します.*.bdf*.pcf フォントだと mkfontdirfonts.dir が生成できます.

TrueType フォントの場合,

  • mkttfdir.pl を使う.

  • もしくは ttmkfdirfonts.dirの骨を書き出して加工する.

  • 一からエディタでゴリゴリ書く. (これはカナリ面倒……)

  • fonts.dir でっち上げスクリプト などを自分で作っておいてそれを利用する.

などで作らなくてはなりません.

fonts.dir 記述の手助けになるかどうか判りませんが,fonts.dir & fonts.alias でっち上げゲートウェイを設置しておきましたので,宜しければお使いください.

例 [Bitmap font の場合]
4
shnmk12.pcf.gz -shinonome-gothic-medium-r-normal--12-110-75-75-c-120-jisx0208.1990-0
shnmk12b.pcf.gz -shinonome-gothic-bold-r-normal--12-110-75-75-c-120-jisx0208.1990-0
shnmk12i.pcf.gz -shinonome-gothic-medium-i-normal--12-110-75-75-c-120-jisx0208.1990-0
shnmk12bi.pcf.gz -shinonome-gothic-bold-i-normal--12-110-75-75-c-120-jisx0208.1990-0
                        
例 [TrueType font の場合]
15
fn=0:bw=0.5:dfhsg3.ttc -dynalab-dfhsgothic-light-r-normal--0-0-0-0-m-0-jisx0208.1983-0
fn=0:bw=0.5:ai=0.1:dfhsg3.ttc -dynalab-dfhsgothic-light-i-normal--0-0-0-0-m-0-jisx0208.1983-0
fn=0:bw=0.5:ai=0.2:dfhsg3.ttc -dynalab-dfhsgothic-light-o-normal--0-0-0-0-m-0-jisx0208.1983-0
fn=0:bw=0.5:ai=-0.1:dfhsg3.ttc -dynalab-dfhsgothic-light-ri-normal--0-0-0-0-m-0-jisx0208.1983-0
fn=0:bw=0.5:ai=-0.2:dfhsg3.ttc -dynalab-dfhsgothic-light-ro-normal--0-0-0-0-m-0-jisx0208.1983-0
fn=1:dfhsg3.ttc -dynalab-dfhsgothicp-light-r-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=1:ai=0.1:dfhsg3.ttc -dynalab-dfhsgothicp-light-i-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=1:ai=0.2:dfhsg3.ttc -dynalab-dfhsgothicp-light-o-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=1:ai=-0.1:dfhsg3.ttc -dynalab-dfhsgothicp-light-ri-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=1:ai=-0.2:dfhsg3.ttc -dynalab-dfhsgothicp-light-ro-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=2:dfhsg3.ttc -dynalab-dfhsgothicg-light-r-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=2:ai=0.1:dfhsg3.ttc -dynalab-dfhsgothicg-light-i-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=2:ai=0.2:dfhsg3.ttc -dynalab-dfhsgothicg-light-o-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=2:ai=-0.1:dfhsg3.ttc -dynalab-dfhsgothicg-light-ri-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=2:ai=-0.2:dfhsg3.ttc -dynalab-dfhsgothicg-light-ro-normal--0-0-0-0-p-0-jisx0208.1983-0
           

3.2. TTCap

X の TrueType 独自の拡張に TTCap というものがあります.これを用いることにより文字の傾き,ウェイトなどを細かく制御することができます.

3.2.1. TTCap を使った fonts.dir の書式

書式
Key=Value:FileName -Foundry-Family-Weight-Slant-SetWidth-AddStyle-PixelSize-PointSize-ResolutionX-ResolutionY-Spacing-AverageWidth-Registry-Encoding

TTCap は, Key と Value を '=' (イコール) でつなぎ,その後ろとを ':' コロンで区切った書式で,filename の前へ記述します.

3.2.2. 良く使用されるオプション

【 Face Number 】 fn=整数

TrueType Collection (*.ttc) フォントファイルで取り出す face 番号.当然,*.ttf では意味を持ちません. 0-2 までの face が含まれていることが多いようです.

例を挙げると,上記 fonts.dir の例 [TrueType font の場合] での dfhsg3.ttc というフォントファイルには 3 つの face が含まれていて,それぞれ DF 平成ゴシック, DFP 平成ゴシック, DFG 平成ゴシックという名前になっています.そこで例では face0 を dfhsgothic, face1 を dfhsgothicp, face2 を dfhsgothicgという名前づけを行なっています.

[メモ] メモ

True Type Collection フォントは複数の face を取り出せますが,フォントにより face 番号で取り出せる face が異なり,必ずしも face0 が等幅, face1 がプロポーショナルというわけではないようです.

どの face 番号でどのような face が取り出せるかは,ftstrtto というユーティリティで見ることができます.[7]

例: dfhsg5.ttc の face0, face1, face2 を解像度 75dpi サイズ 16pt で 見比べる.
$ ftstrtto -c 0 -g -u -r 75 16 dfhsg5.ttc \
 "`echo 'ABCDEFGHIJKabcdefghijk01234567 ひらがなカタカナ漢字' | \
iconv -f EUC-JP -t UTF-8`" &

$ ftstrtto -c 1 -g -u -r 75 16 dfhsg5.ttc \
 "`echo 'ABCDEFGHIJKabcdefghijk01234567 ひらがなカタカナ漢字' | \
iconv -f EUC-JP -t UTF-8`" &

$ ftstrtto -c 2 -g -u -r 75 16 dfhsg5.ttc \
 "`echo 'ABCDEFGHIJKabcdefghijk01234567 ひらがなカタカナ漢字' | \
iconv -f EUC-JP -t UTF-8`" &
【 Force Spacing 】 fs=(c|m|p)

フォントメトリック計算法を指定します.与える value は XLFD の Spacing フィールドの文字と同じで,このオプションで XLFD の Spacing フィールドの値をオーバーライドします. このオプションの指定が無い場合は XLFD の Spacing に指定してある Spacing によって計算されます.

【 Bounding box Width 】 bw=実数

このオプションは固定幅フォントのみで有効で,バウンディングボックス幅の倍率を指定します.指定がない場合 1.0 となります. Scale Width オプションも指定されている時は Scale Width 適用後このオプションが適用されます.

フォントに依っては,欠け,重なり等が発生しますので,値は試行錯誤で微調整する必要があります.

【 Scale Width 】 sw=実数

文字幅の倍率を指定します.指定がない場合,1.0 となります.

【 Auto Italic 】 ai=実数

文字の傾きを指定します.良く使われるのは Italic 体に 0.2Oblique 体に 0.4 などの値です.フォントデザインに依っては大きな値を指定すると崩れて読めない場合がありますので,フォント毎に試行錯誤で値を微調整することをお奨めします.特に日本語フォントなどはあまり大きな値を指定せず 0.10.2あたりを指定するのが良いでしょう.

【 Double Strike 】 ds=(y|n)

二重打ち効果を使用して疑似的に太字に見せるか否かを指定します. ds=y にすると,擬似的なボールドになります.

ウェイトの揃っていないフォントで bold を使いたい時などに使います.

【 Very Lazy metrics calculation method 】 vl=(y|n)

vl=y にすると,プロポーショナル,モノスペースに於いてメトリック計算を厳密に行なわないようになります.

embeded bitmap な TrueType フォントの場合,このオプションをつけると埋め込みビットマップフォント表示時に文字の一部が欠たりかすれたりということがあります.最近の PC はパワーありますのでこのオプションは使わない方が良いかもしれません.



[7] ftstrtto は freetype-utils というパッケージに入っています