|
m17n ライブラリ
1.8.4
|

関数 | |
| MFont * | mfont () |
| 新しいフォントを作る. [詳解] | |
| MFont * | mfont_parse_name (const char *name, MSymbol format) |
| フォント名からフォントを作る. [詳解] | |
| char * | mfont_unparse_name (MFont *font, MSymbol format) |
| フォントからフォント名を作る. [詳解] | |
| MFont * | mfont_copy (MFont *font) |
| フォントのコピーを作る. [詳解] | |
| void * | mfont_get_prop (MFont *font, MSymbol key) |
| フォントのプロパティの値を得る. [詳解] | |
| int | mfont_put_prop (MFont *font, MSymbol key, void *val) |
| フォントのプロパティに値を設定する. [詳解] | |
| MSymbol * | mfont_selection_priority () |
| フォント選択の優先度を返す. [詳解] | |
| int | mfont_set_selection_priority (MSymbol *keys) |
| フォント選択優先度を設定する. [詳解] | |
| MFont * | mfont_find (MFrame *frame, MFont *spec, int *score, int max_size) |
| フォントを探す. [詳解] | |
| int | mfont_set_encoding (MFont *font, MSymbol encoding_name, MSymbol repertory_name) |
| フォントのエンコーディングを設定する. [詳解] | |
| char * | mfont_name (MFont *font) |
| フォント名からフォントを作る. [詳解] | |
| MFont * | mfont_from_name (const char *name) |
| フォントからフォント名を作る. [詳解] | |
| int | mfont_resize_ratio (MFont *font) |
| フォントのリサイズ情報を得る [詳解] | |
| MPlist * | mfont_list (MFrame *frame, MFont *font, MSymbol language, int maxnum) |
| フォントのリストを得る [詳解] | |
| MPlist * | mfont_list_family_names (MFrame *frame) |
| int | mfont_check (MFrame *frame, MFontset *fontset, MSymbol script, MSymbol language, MFont *font) |
| int | mfont_match_p (MFont *font, MFont *spec) |
| MFont * | mfont_open (MFrame *frame, MFont *font) |
| MFont * | mfont_encapsulate (MFrame *frame, MSymbol data_type, void *data) |
| int | mfont_close (MFont *font) |
変数 | |
| MPlist * | mfont_freetype_path |
| フォントファイルとフォントファイルを含むディレクトリのリスト. [詳解] | |
変数: フォントプロパティを指定する定義済みシンボル | |
| MSymbol | Mfoundry |
| 開発元を指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mfamily |
| ファミリを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mweight |
| 太さを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mstyle |
| スタイルを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mstretch |
| 幅を指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Madstyle |
| adstyle を指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mspacing |
| spacing を指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mregistry |
| レジストリを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Msize |
| サイズを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Motf |
| MSymbol | Mfontfile |
| フォントファイルを指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mresolution |
| 解像度を指定するフォントプロパティのキー. [詳解] | |
| MSymbol | Mmax_advance |
| MSymbol | Mfontconfig |
| "fontconfig" という名前を持つシンボル. [詳解] | |
| MSymbol | Mx |
| "x" という名前を持つシンボル. [詳解] | |
| MSymbol | Mfreetype |
| "freetype" という名前を持つシンボル. [詳解] | |
| MSymbol | Mxft |
| "xft" という名前を持つシンボル. [詳解] | |
@addtogroup m17nFont @brief フォントオブジェクト. m17n GUI API はフォントを @c MFont 型のオブジェクトとして表現する。 フォントは @e フォントプロパティ を持つことができる。他のタイプのプ ロパティ同様、フォントプロパティはキーと値からなり、キーは以下のシ ンボルのいずれかである。 @c Mfoundry, @c Mfamily, @c Mweight, @c Mstyle, @c Mstretch, @c Madstyle, @c Mregistry, @c Msize, @c Mresolution, @c Mspacing フォントプロパティのキーが @c Msize あるいは @c Mresolution の場合、値は整数値であり、キーがそれ以外の場合、値はシンボルである。 「フォント F のフォントプロパティのうちキーが @c Mxxx であるもの」のことを簡単に「F の xxx プロパティ」と呼ぶことがある。 foundry プロパティの値は、adobe, misc 等のフォントの開発元情報を示すシンボルである。 family プロパティの値は、times, helvetica 等のフォントファミリーを示すシンボルである。 weight プロパティの値は、normal, bold 等の太さに関する情報を示すシンボルである。 style プロパティの値は、normal, italic 等のスタイルに関する情報を示すシンボルである。 stretch プロパティの値は、normal, semicondensed 等の文字幅に関する情報を示すシンボルである。 adstyle プロパティの値は、serif, sans-serif 等の抽象的なフォントファミリーに関する情報を示すシンボルである。 registry プロパティの値は、iso10646, iso8895-1 等のレジストリ情報を示すシンボルである。 size プロパティの値は、フォントのデザインサイズを表わす整数値であり、 単位は1/10 ポイントである。 resolution プロパティの値は、想定されているデバイスの解像度を表わす 整数値であり、単位はdots per inch (dpi) である。 type プロパティの値は、フォントドライバを指示し、現在 Mx もしくは Mfreetype である。 m17n ライブラリはフォントオブジェクトを2つの目的で用いている。アプ リケーションプログラムからフォントの指定を受け取る目的と、アプリケー ションプログラムに利用可能なフォントを提示する目的である。アプリケー ションプログラムに対して提示を行う際には、フォントプロパティはすべ て具体的な値を持つ。 m17n ライブラリは Window システムフォント、FreeTypeフォント、 OpenTypeフォントの3種類をサポートしている。 <ul> <li> Window システムフォント m17n X ライブラリは、X サーバと X フォントサーバが取り扱う全てのフォントをサポートする。 XLFD の各フィールドとフォントプロパティの対応は以下の通り。この表にないフィールドは無視される。
XLFD フィールド プロパティ
--------------- --------
FOUNDRY foundry
FAMILY_NAME family
WEIGHT_NAME weight
SLANT style
SETWIDTH_NAME stretch
ADD_STYLE_NAME adstyle
PIXEL_SIZE size
RESOLUTION_Y resolution
CHARSET_REGISTRY-CHARSET_ENCODING registry
<li> FreeType fonts m17n ライブラリは、FreeType ライブラリを使うように設定された場合には、 FreeType が扱うすべてのフォントをサポートする。変数 #mfont_freetype_path は m17n ライブラリの設定と環境変数 @c M17NDIR に応じて初期化される。詳細は変数の説明を参照のこと。 もし m17n ライブラリが fontconfig ライブラリを使うように設定された場合には、 #mfont_freetype_path に加えて、 fontconfig で使用可能なフォントもすべてサポートされる。 FreeType フォントのファミリ名は family プロパティに対応する。 FreeType フォントのスタイル名は、下の表のように weight, style, stretch プロパティに対応する。
スタイル名 weight style stretch
---------- ------ ----- -------
Regular medium r normal
Italic medium i normal
Bold bold r normal
Bold Italic bold i normal
Narrow medium r condensed
Narrow Italic medium i condensed
Narrow Bold bold r condensed
Narrow Bold Italic bold i condensed
Black black r normal
Black Italic black i normal
Oblique medium o normal
BoldOblique bold o normal
上の表に現われないスタイル名は "Regular" として扱われる。 platform ID と encoding ID の組み合わせが registry プロパティに対応する。たとえばあるフォントが (1 1) という ID の組合せを持てば、 registry プロパティは 1-1 となる。頻繁にあらわれる組合せには以下のような定義済み registry プロパティ が与えられている。
platform ID encoding ID registry プロパティ
----------- ----------- -----------------
0 3 unicode-bmp
0 4 unicode-full
1 0 apple-roman
3 1 unicode-bmp
3 1 unicode-full
したがって、二つの組合せ (1 0) 、(3 1) を持つフォントは、それぞれ registry プロパティが 1-0, apple-roman, 3-1, unicode-bmp である4つのフォントオブジェクトに対応する。 <li> OpenType フォント m17n ライブラリは、FreeType ライブラリと OTF ライブラリを使用するように設定すれば、すべての OpenType フォントをサポートする。実際に利用できるフォントのリストは FreeType フォントの場合と同様に作られる。OpenType フォントを FLT (Font Layout Table) 経由で使用するようフォントセットに指定されており、FLT に OTF 関連のコマンド (たとえば otf:deva) があれば、OTF ライブラリがフォントの OpenType レイアウトテーブルに従って文字列をグリフコード列に変換し、FreeType ライブラリが各グリフのビットマップイメージを提供する。 </ul>
| MFont* mfont | ( | ) |
| MFont* mfont_parse_name | ( | const char * | name, |
| MSymbol | format | ||
| ) |
フォント名からフォントを作る.
関数 mfont_parse_name() は、フォント名 name から取り出されたプロパティを持つ、新しいフォントオブジェクトを作る。
format は name のフォーマットを指定する。format が Mx であれば、 name は XLFD (X Logical Font Description) に従って解析される。 format が Mfontconfig であれば name は Fontfonfig のフォントテキスト表現に従って解析される。format が Mnil であれば、まず XLFD に従って解析され、それに失敗したら Fontconfig に従って解析される。
NULL を返す。 | char* mfont_unparse_name | ( | MFont * | font, |
| MSymbol | format | ||
| ) |
フォントからフォント名を作る.
関数 mfont_unparse_name() は フォント名の文字列をフォント font を元にformat に従って作る。
format は Mx または Mfontconfig である。 Mx ならばフォント名は XLFD (X Logical Font Description) に従う。 Mfontconfig ならばフォント名は Fontconfig のフォントテキスト表現に従う。
| void* mfont_get_prop | ( | MFont * | font, |
| MSymbol | key | ||
| ) |
フォントのプロパティの値を得る.
関数 mfont_get_prop() はフォント font のプロパティのうち、キーが key であるものの値を返す。key は以下のシンボルのいずれかでなけれ ばならない。
Mfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Msize, Mresolution, Mspacing.
Mfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Mspacing のいずれかであれば、 相当する値をシンボルとして返す。フォントがそのプロパティを持たない 場合にはMnil を返す。key が Msize あるいは Mresolution の 場合には、相当する値をは整数値として返す。フォントがそのプロパティ を持たない場合には 0 を返す。key がそれ以外のものであれば、NULL を返し、外部変数 merror_code にエラーコードを設定する。 | int mfont_put_prop | ( | MFont * | font, |
| MSymbol | key, | ||
| void * | val | ||
| ) |
フォントのプロパティに値を設定する.
関数 mfont_put_prop() は、フォント font のキーがkey であるプロパ ティの値を val に設定する。key は以下のシンボルのいずれかである。
Mfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Msize, Mresolution.
key が Msize か Mresolution であれば val は整数値でなくては らない。それ以外の場合、val はプロパティ値の名前のシンボルでなくて はならない。ただしもしその名前が "nil" の場合は、名前が "Nil" のシ ンボルでなくてはならない。
| MSymbol* mfont_selection_priority | ( | ) |
フォント選択の優先度を返す.
関数 mfont_selection_priority() は 6 つのシンボルからなる配列を作って返す。 配列の要素は、以下のフォントプロパティのキーを優先度順に並べたものである。
Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Msize.
m17n ライブラリはこの配列に従って、最も合致するフォントを選択する。 目的のフォントと、それぞれ違うプロパティの値が合致しないフォントがあった場合、優先度の低いプロパティの値が合致しないフォント(優先度の高いプロパティの値が合致しているフォント)が選択される。
| int mfont_set_selection_priority | ( | MSymbol * | keys | ) |
フォント選択優先度を設定する.
関数 mfont_set_selection_priority() は、6つのシンボルの配列 keys にしたがってフォント選択優先度を設定する。配列は以下の各要素を適切 な順番で並べたものである。
Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Msize.
詳細は関数 mfont_selection_priority() の説明を参照のこと。
フォントを探す.
関数 mfont_find() は、フレーム frame 上でフォント定義 spec にもっとも合致する利用可能なフォントへのポインタを返す。
score は NULL であるか、見つかったフォントが spec にどれほど合っているかを示すスコアを保存する場所へのポインタである。 スコアが小さいほど良く合っていることを意味する。
| int mfont_set_encoding | ( | MFont * | font, |
| MSymbol | encoding_name, | ||
| MSymbol | repertory_name | ||
| ) |
フォントのエンコーディングを設定する.
関数 mfont_set_encoding() はフォント font のエンコーディング情報を設定する。
encoding_name はフォントと同じエンコーディングを持つ文字セットを示すシンボルである。
repertory_name は Mnil であるか、フォントと同じエンコーディングを持つ文字セットを示すシンボルである。 Mnil であれば、個々の文字がそのフォントでサポートされているかどうかは、各々のフォントドライバに問い合わせる。
| char* mfont_name | ( | MFont * | font | ) |
フォント名からフォントを作る.
この関数は廃止予定である。 mfont_unparse_name() を使用のこと。
| MFont* mfont_from_name | ( | const char * | name | ) |
フォントからフォント名を作る.
これは関数は廃止予定である。 mfont_parse_name() を使用のこと。
| int mfont_resize_ratio | ( | MFont * | font | ) |
フォントのリサイズ情報を得る
関数 mfont_resize_ratio は m17n データベース <font, reisize> を検索し、フォント FONT のリサイズの比率(パーセンテージ) を返す。たとえば返す値が 150 であれば、m17n ライブラリは指定されたサイズの 1.5 倍のフォントを使用することを意味する。
フォントのリストを得る
関数 mfont_list() はフレーム frame で利用可能なフォントのリストを 返す。font が NULL でなければ、font と合致する利用可能なフォント のリストを返す。language が Mnil でなければ、language をサポー トする利用可能なフォントのリストを返す。maxnum は、0 より大きい場 合には、返すフォントの数の上限である。
ただし、引数 language は旧版との整合性のためだけにあり、その使用は 勧められない。フォントの Mlanguage プロパティを使うべきである。も し font がすでにこのプロパティを持っていたら、引数 language は無
| int mfont_check | ( | MFrame * | frame, |
| MFontset * | fontset, | ||
| MSymbol | script, | ||
| MSymbol | language, | ||
| MFont * | font | ||
| ) |
| int mfont_close | ( | MFont * | font | ) |
| MSymbol Mfoundry |
開発元を指定するフォントプロパティのキー.
変数 Mfoundry は "foundry" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの開発元名を名前として持つシンボルである。
| MSymbol Mfamily |
ファミリを指定するフォントプロパティのキー.
変数 Mfamily は "family" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのファミリ名を名前として持つシンボルである。
| MSymbol Mweight |
太さを指定するフォントプロパティのキー.
変数 Mweight は "weight" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの太さ名 ( "medium", "bold" 等) を名前として持つシンボルである。
| MSymbol Mstyle |
スタイルを指定するフォントプロパティのキー.
変数 Mstyle は "style" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのスタイル名 ("r", "i", "o" 等)を名前として持つシンボルである。
| MSymbol Mstretch |
幅を指定するフォントプロパティのキー.
変数 Mstretch は "stretch" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの文字幅名 ( "normal", "condensed" 等)を名前として持つシンボルである。
| MSymbol Madstyle |
adstyle を指定するフォントプロパティのキー.
変数 Madstyle は "adstyle" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの adstyle 名("serif", "", "sans" 等)を名前として持つシンボルである。
| MSymbol Mspacing |
spacing を指定するフォントプロパティのキー.
変数 Mspacing は "spacing" という名前を持つシンボルであり、 フォントプロパティのキーとして用いられる。値は、フォントの spacing 特性を示す名前 ("p", "m" 等)を持つシンボルである。
| MSymbol Mregistry |
レジストリを指定するフォントプロパティのキー.
変数 Mregistry は "registry" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのレジストリ名 ( "iso8859-1", "jisx0208.1983-0" 等) を名前として持つシンボルである。
| MSymbol Msize |
サイズを指定するフォントプロパティのキー.
変数 Msize は "size" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。値は、 100 dpi のディスプレイ上でのフォントのデザインサイズを 1/10 ポイント単位で示す整数値である。
| MSymbol Motf |
| MSymbol Mfontfile |
フォントファイルを指定するフォントプロパティのキー.
変数 Mfontfile は "fontfile" という名前を持つシンボルであ り、フォントプロパティのキーとして用いられる。値は、フォントファイ ル名を名前として持つとするシンボルである。
| MSymbol Mresolution |
解像度を指定するフォントプロパティのキー.
変数 Mresolution は "resolution" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの解像度を dots per inch (dpi) 単位で示す整数値である。
| MSymbol Mmax_advance |
| MSymbol Mfontconfig |
"fontconfig" という名前を持つシンボル.
変数 Mfontconfig は関数 mfont_parse_name() と mfont_unparse_name() の引数として用いられる。
| MSymbol Mx |
"x" という名前を持つシンボル.
変数 Mx は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XFontStruct *) であることを表す.
| MSymbol Mfreetype |
"freetype" という名前を持つシンボル.
変数 Mfreetype は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には FT_Face であることを表す。
| MSymbol Mxft |
"xft" という名前を持つシンボル.
変数 Mxft は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XftFont *) であることを表す。
| MPlist* mfont_freetype_path |
フォントファイルとフォントファイルを含むディレクトリのリスト.
変数 mfont_freetype_path は、フォントファイルとフォントファイルを含むディレクトリの plist である。各要素のキーは Mstring であり、値はフォントファイルかディレクトリを示す文字列である。
マクロ M17N_INIT() によって、この変数は m17n データベースと環境変数 "M17NDIR" 双方のサブディレクトリ "fonts" を含むように設定される。 mframe() の最初の呼び出しの際に、この変数から実際に使用できるフォントの内部リストが作られる。 そこでアプリケーションプログラムは、mframe() を呼ぶ前に(必要ならば)この変数を変更しなくてはならない。 新しい要素を追加する場合には、その値は安全に開放できる文字列でなくてはならない。
m17n ライブラリが FreeType ライブラリを使うように設定されてない場合には、この変数は用いられない。