共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

フォント・セット・メトリクスの取得

国際化対応テキスト描画関数のメトリクスは、標準描画方向によって定義されます。標準描画方向とは、文字列の起点にある文字が次の文字へと進んでいくデフォルトの方向です。現在 Xlib インタフェースは、左から右の標準描画方向だけをサポートするよう定義されています。描画の起点は、テキストを描画するときに描画関数へ渡される位置です。ベースラインは、描画の起点を通って標準描画方向と並行に描画される線です。文字インクは、フォアグラウンド・カラーに塗られるピクセルであり、行間または文字間のスペースやイメージ・テキストのバックグラウンド・ピクセルは含みません。

描画関数によりテキスト方向の暗示的なコントロールが許されており、ロケール固有の文字列の字句的な分析に応じて標準描画方向に沿って文字が受け渡しされる順序を逆にすることができます。

文字の受け渡し順に関係なく、すべての文字の起点は、描画の起点の標準描画方向側にあります。特定の文字イメージの画面位置は、XmbTextPerCharExtents() 関数または XwcTextPerCharExtents() 関数で決定されます。

描画関数は、コンテキストに依存した受け渡しを実現できます。コンテキストに依存した受け渡しにおいて、文字列のために描画されるグリフは、単に個々の文字を表すグリフの組み合わせではありません。XmbDrawString() 関数で描画される 2 文字の文字列は、その 2 文字が XmbDrawString() 関数への別々の呼び出しで描画された場合とは異なる受け渡しの方法を取ります。クライアントが以前に描画された文字列に文字を追加または挿入する場合、正しい受け渡しを得るために、クライアントは隣接する文字をいくつか再描画する必要があるかもしれません。

描画関数は、改行文字、タブその他の制御文字を認識しません。非印刷文字 (スペースを除く) の描画時の動作は実装に依存します。テキストの流れの中で制御文字を解釈するのはクライアントの責任です。

コンテキストに依存した受け渡しを見つけ出すには、XContextDependentDrawing() 関数を使用します。XExtentsOfFontSet() 関数は、XFontSet を指定された最大エクステント構造体を取得します。XmbTextEscapement() 関数と XwcTextEscapement() 関数は、値として指定されたテキストのピクセル単位のエスケープを取得します。XmbTextExtents() 関数と XwcTextExtents() 関数は、文字列のイメージの総合割り当てボックスとロジック割り当てボックスを取得します (それぞれの引き数は overall_ink_returnoverall_logical_return)。XmbTextPerCharExtents() 関数と XwcTextPerCharExtents() 関数は、指定されたフォント・セットに読み込まれたフォントを使用して、指定されたテキストの各文字の寸法を返します。