XでTrueTypeFontを使おう
fonts.dir
新たにTrueTypeフォントをシステムに追加するとき /usr/X11R6/lib/X11/fonts 以下,或いは,/usr/share/fonts などに TrueType などのディレクトリを作成し,そこへ TrueType フォントをコピーしますが,悲しいことに(謎) それだけでは ソフトウェアからフォントを利用できません.インストールされたフォントを論理フォント名によって利用できるように,インストールしたディレクトリ内に fonts.dir というファイルを作成しておくという作業が必要になります.[※注1]
[※1] 上記は自分に管理者権限がある場合で,自分に管理者権限が無い場合 /usr/X11R6/lib/X11/fonts などに置けないですので,~/ に任意のディレクトリ,例えば ~/fonts/TrueType を作成し,そこにフォントを置いて利用することになります.
fonts.dir とは,そのディレクトリ内にあるフォントファイルとXLFDの対応をリストしたファイルです.
- fonts.dirの書式
-
line_count(number) Filename -Foundry-Family-Weight-Slant-SetWidth-AddStyle-PixelSize-PointSize-ResolutionX-ResolutionY-Spacing-AverageWidth-Registry-Encoding
- fonts.dirの例 [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
- fonts.dirの例 [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
第一行目には記述されているファイル名とXLFDの対応リストの数を記入します.bdf や pcf フォントだと mkfontdir で fonts.dir が生成できます.
TrueTypeフォントの場合,mkttfdir.pl を使うか(しかし,最近私んとこでは perlftlib-1.2 の make が通りませぬ), ttmkfdir で fonts.dirの骨を書き出して加工するか( *.ttcの場合,fakeで一旦 *.ttfに名前を変えておいて使う必要があります),一からエディタでゴリゴリ書くか(これはカナリ面倒……) ,fonts.dirでっち上げスクリプト などを でっち上げておくか(謎) しなくてはなりません.
TTCap
X の TrueType 独自の拡張に TTCap というものがあります.これを用いることにより文字の傾き,ウェイトなどを細かく制御することができます.
- TTCapを使ったfonts.dirの書式
-
Key=Value:filename -Foundry-Family-Weight-Slant-SetWidth-AddStyle-PixelSize-PointSize-ResolutionX-ResolutionY-Spacing-AverageWidth-Registry-Encoding
TTCapは,KeyとValueを '=' (イコール)でつなぎ,その後ろとを ':' コロンで区切った書式で,filename の前へ記述します.
良く使用されるオプション
- 【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 というユーティリティで見ることができます.(Kondaraでは freetype-utilsというパッケージに入っています)
- 例: dfhsg3.ttc の face0, face1, face2 を解像度 75dpi サイズ 16pt で 見比べる.
-
$/usr/bin/ftstrtto -c 0 -g -u -r 75 16 dfhsg3.ttc \ "`echo 'ABCDEFGHIJKabcdefghijk01234567ひらがなカタカナ漢字' | iconv -f EUC-JP -t UTF-8`" & $/usr/bin/ftstrtto -c 1 -g -u -r 75 16 dfhsg3.ttc \ "`echo 'ABCDEFGHIJKabcdefghijk01234567ひらがなカタカナ漢字' | iconv -f EUC-JP -t UTF-8`" & $/usr/bin/ftstrtto -c 2 -g -u -r 75 16 dfhsg3.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.2,Oblique体に 0.4などの値です.フォントデザインに依っては大きな値を指定すると崩れて読めない場合がありますので,フォント毎に試行錯誤で値を微調整することをお奨めします.特に日本語フォントなどはあまり大きな値を指定せず 0.1,0.2あたりを指定するのが良いでしょう.
- 【Double Strike】 ds=(y|n)
-
二重打ち効果を使用して疑似的に太字に見せるか否かを指定します.ds=y にすると,擬似的なボールドになります.
ウェイトの揃っていないフォントで boldを使いたい時などに使います.
- 【Very Lazy metrics calculation method】 vl=(y|n)
-
vl=y にすると,プロポーショナル,モノスペースに於いてメトリック計算を厳密に行なわないようになります.
embeded bitmapなTrueTypeフォントの場合,このオプションをつけると埋め込みビットマップフォント表示時に文字の一部が欠たりかすれたりということがあります.最近のPCはパワーありますのでこのオプションは使わない方が良いかもしれません.