XFT(3)

名前
  XFT - X 用の FreeType インタフェースライブラリ

説明
Xft は FreeType ラスタライザと X Rendering 機能拡張とインタフェースとなるよう に設計された、簡単なライブラリである。このオンラインマニュアルではこの ライブラリの表面的な部分だけをかいつまんで説明する。

データ型
XftPattern は名前の集合とそのそれぞれに対応する値のリストを保持する。 それぞれの名前はフォントの属性を指す。 XftPattern はマッチング処理の入力や、特定のフォントに関する情報の保持 に使われる。 XftFont はフォントの一般的な寸法および、 X のコア構造体である XFontStruct のデータあるいは FreeType と X Render 機能拡張のデータへのポインタを持つ。 XftFontStruct は X Render 機能拡張で使われる FreeType フォントに関する情報を持つ。 XftFontSet は XftPattern のリストを持つ。内部的には、Xft はこのデータ構造体を使っ てフォントの集合を保持する。外部的には、Xft はこのフォーマットで フォントのリスト取得の結果を返す。 XftObjectSet は名前の集合を保持する。これはフォントのリスト取得を行う際、 返されるパターンのリスト内にフォントのどのフィールドが置かれるのかを指 定するために使われる。 XftDraw は opaque なオブジェクトであり、コアプロトコルまたは X Rendering 機能 拡張を使って X のドロウアブルをレンダリングするために使われる情報を保 持する。

関数
XftFont *
XftFontOpen (Display *dpy, int screen, ...);
XftFontOpen は (フィールド, 型, 値) の形式のパターン要素のリストを引き数に取る。 このリストの末尾は 0 である。 この関数はこのパターンと利用可能なフォントを比べ、一致するフォントを オープンする。

使用例:
    font = XftFontOpen (dpy, scr,
                XFT_FAMILY, XftTypeString, "charter",
                XFT_SIZE, XftTypeDouble, 12.0);

この例では 12 ポイントの文字がオープンされる。ポイントサイズは、モニタ の解像度に基づいて自動的に適切なピクセルサイズに変換される。

void
XftTextExtents8 (Display	*dpy,
		 XftFont	*font,
		 unsigned char  *string,
		 int		len,
		 XGlyphInfo	*extents);
XftTextExtents8 は文字列 "string" をフォント "font" で描画した時のピクセル単位での 大きさを計算する。

XftDraw *
XftDrawCreate (Display   *dpy,
	       Drawable  drawable,
	       Visual    *visual,
	       Colormap  colormap);
XtDrawCreate は、テキストと矩形を画面に描画するために使う構造体を生成する。

void
XftDrawString8 (XftDraw		*d,
		XRenderColor	*color,
		XftFont		*font,
		int		x,
		int		y,
		unsigned char	*string,
		int		len);
XftDrawString8 は、文字列 "string" をフォント "font", 色 "color" で、座標 "x, y" に描画 する。

void
XftDrawRect (XftDraw	    *d,
	     XRenderColor   *color,
	     int	    x,
	     int	    y,
	     unsigned int   width,
	     unsigned int   height);
XftDrawRect は指定した色で矩形領域を塗りつぶす。

XftConfig
XftConfig ファイルには Xft ライブラリの設定情報が書かれる。このファイルには、 フォント情報を探す先のディレクトリや、プログラムが指定したフォント パターンを利用可能なフォントと比べる前に編集するための手順が書かれる。

config	:   "dir" STRING
	|   "include" STRING
	|   "includeif" STRING
	|   "match" tests "edit" edits
	;
test	:   qual FIELD-NAME COMPARE CONSTANT
	;
qual	:   "any"
	|   "all"
	;
edit	:   FIELD-NAME ASSIGN expr SEMI
	;

STRING は二重引用符で区切られる。 FIELD-NAME は識別子であり、ASSIGN は "=", "+=", "=+" のいずれかである。 expr には普通の算術演算子と FIELD-NAME を含めることができる。

"dir" は Xft がフォントを検索する場所のリストに指定したディレクトリを 追加する。 リストの順序には特に意味はない。Xft は全てのフォントを同列に扱う。

"include" と "includeif" は、指定されたファイルから追加の 設定パラメータを読み込む。 "includeif" は指定されたファイルが存在しなくてもエラーを出さない。 ファイル名が '~' で始まる場合、そのファイル名はユーザの ホームディレクトリからの相対パスで参照される。

"match" 文の中での評価が全てユーザが指定したパターンと一致した場合、 そのパターンは指定された手順で編集される。

ASSIGN が "=" である場合、パターン中で一致した値は指定された表現に置き 換えられる。 "+="/"=+" は値のリストに対し、指定したフィールドに新しい値を前置/後置する。

制限
Xft は将来的には大幅に変更されるだろう。 ソースコードレベルでの互換性を保とうとするつもりもあまりない。

著者
Keith Packard (XFree86 Project, Inc. のメンバー)