FontConfigのmatrixフォントプロパティを利用して字体を変化させる方法
FontConfigはフォント名(ファミリー名、サイズなどを指定するフォントパター ンを表現する文字列)からシステムにインストールされているフォントを選び 出すライブラリです。
詳しくは、思うところ実に日本語訳が存在するべき FontConfigユーザードキュメンテーション( 以下FCUD)を読んでください。
アンチエイリアス(やサブピクセルレンダリング)された文字を表示するXアプ リケーションの多くはXftと呼ばれるFreeTypeインターフェイスを使用してお り、XftはFontConfigを通じてフォントを選び出しています。
したがって、Xftを利用しているアプリケーションならば、FontConfigを利用 しているので、FontConfig形式のフォント名によってユーザーがフォントを指 定できる可能性が低くありません。
フォント名は以下のような形式の文字列です。
<families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...
例えば、EPSON 太明朝体B:pixelsize=20
のようになります。
pixelsize=20
のようにname=value
の形になっている部分が、追加のフォン
トプロパティを指定しています。
matrixはこのようなフォントプロパティのひとつで、FCUDによるとグリフに適 用する「アフィン変換の4つの数式である」とあります。
アフィン変換は3×3の行列で2次元図形を変形させるのに使います。2×2 だと回転はできても平行移動が表現できないので、3×3に拡張するという話 だったと思います。よくわかりませんが、グリフに何が起こるかは下の図が一 目瞭然です。
matrixプロパティは4つの数で、2×2の行列を指定しますので本当にアフィ ン変換なのか不安になりますが、アフィン変換行列の左上 1,1 から右下 2,2 までの正方形を指定していると解釈すると、上の図と合致します。
端末エミュレーターである rxvt では、rxvt -fn ‘xft:フォント名’ の形でフォ ントが指定できますので、matrixプロパティを試してみましょう。
ノーマル
EPSON 太明朝体B-20
。20ポイント。
斜体
EPSON 太明朝体B-20:matrix=1 .1 0 1
。セルの横幅が大きくなりました。
45度回転
EPSON 太明朝体B-20:matrix=.707 .707 -.707 .707
。時計回りに45度。
横二倍角
EPSON 太明朝体B-20:matrix=2 0 0 1
。和字と英字に別々のフォントを指定
できるようなアプリケーションがあれば、全角・半角の比率を調整するのに使
えるでしょうか。