変数: フォントプロパティを指定する定義済みシンボル | |
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" という名前を持つシンボル. | |
型定義 | |
typedef MFont | MFont |
フォントの型宣言. | |
関数 | |
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 |
フォントファイルとフォントファイルを含むディレクトリのリスト. |
MFont
型のオブジェクトとして表現する。 フォントは フォントプロパティ を持つことができる。他のタイプのプ ロパティ同様、フォントプロパティはキーと値からなり、キーは以下のシ ンボルのいずれかである。
Mfoundry
, Mfamily
, Mweight
, Mstyle
, Mstretch
, Madstyle
, Mregistry
, Msize
, Mresolution
, Mspacing
フォントプロパティのキーが Msize
あるいは Mresolution
の場合、値は整数値であり、キーがそれ以外の場合、値はシンボルである。
「フォント F のフォントプロパティのうちキーが 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種類をサポートしている。
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
m17n ライブラリは、FreeType ライブラリを使うように設定された場合には、 FreeType が扱うすべてのフォントをサポートする。変数 mfont_freetype_path は m17n ライブラリの設定と環境変数 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つのフォントオブジェクトに対応する。
m17n ライブラリは、FreeType ライブラリと OTF ライブラリを使用するように設定すれば、すべての OpenType フォントをサポートする。実際に利用できるフォントのリストは FreeType フォントの場合と同様に作られる。OpenType フォントを FLT (Font Layout Table) 経由で使用するようフォントセットに指定されており、FLT に OTF 関連のコマンド (たとえば otf:deva) があれば、OTF ライブラリがフォントの OpenType レイアウトテーブルに従って文字列をグリフコード列に変換し、FreeType ライブラリが各グリフのビットマップイメージを提供する。
MFont 型はフォント指定用の構造体であり、フォントのプロパティである foundry, family, weight, style, stretch, adstyle, registry, size, resolution に関する情報を含む。
この構造体はフォントセット内のフォントを指定する際と、使用可能なシステムフォントの情報を格納する際の両方に用いられる。
内部構造はアプリケーションプログラムからは見えない。
関数 mfont_parse_name() は、フォント名 name から取り出されたプロパティを持つ、新しいフォントオブジェクトを作る。
format は name のフォーマットを指定する。format が Mx であれば、 name は XLFD (X Logical Font Description) に従って解析される。 format が Mfontconfig であれば name は Fontfonfig のフォントテキスト表現に従って解析される。format が Mnil であれば、まず XLFD に従って解析され、それに失敗したら Fontconfig に従って解析される。
NULL
を返す。 関数 mfont_unparse_name() は フォント名の文字列をフォント font を元にformat に従って作る。
format は Mx または Mfontconfig である。 Mx ならばフォント名は XLFD (X Logical Font Description) に従う。 Mfontconfig ならばフォント名は Fontconfig のフォントテキスト表現に従う。
関数 mfont_get_prop() はフォント font のプロパティのうち、キーが key であるものの値を返す。key は以下のシンボルのいずれかでなけれ ばならない。
Mfoundry
, Mfamily
, Mweight
, Mstyle
, Mstretch
, Madstyle
, Mregistry
, Msize
, Mresolution
, Mspacing
.
Mfoundry
, Mfamily
, Mweight
, Mstyle
,
Madstyle
, Mregistry
, Mspacing
のいずれかであれば、 相当する値をシンボルとして返す。フォントがそのプロパティを持たない 場合にはMnil
を返す。key が Msize
あるいは Mresolution
の 場合には、相当する値をは整数値として返す。フォントがそのプロパティ を持たない場合には 0 を返す。key がそれ以外のものであれば、NULL
を返し、外部変数 merror_code にエラーコードを設定する。 関数 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 にどれほど合っているかを示すスコアを保存する場所へのポインタである。 スコアが小さいほど良く合っていることを意味する。
関数 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 | ) |
変数 Mfoundry は "fonudry"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの開発元名を名前として持つシンボルである。
変数 Mfamily は "family"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのファミリ名を名前として持つシンボルである。
変数 Mweight は "weight"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの太さ名 ( "medium", "bold" 等) を名前として持つシンボルである。
変数 Mstyle は "style"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのスタイル名 ("r", "i", "o" 等)を名前として持つシンボルである。
変数 Mstretch は "stretch"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの文字幅名 ( "normal", "condensed" 等)を名前として持つシンボルである。
変数 Madstyle は "adstyle"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの adstyle 名("serif", "", "sans" 等)を名前として持つシンボルである。
変数 Mspacing は "spacing"
という名前を持つシンボルであり、 フォントプロパティのキーとして用いられる。値は、フォントの spacing 特性を示す名前 ("p", "m" 等)を持つシンボルである。
変数 Mregistry は "registry"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのレジストリ名 ( "iso8859-1", "jisx0208.1983-0" 等) を名前として持つシンボルである。
変数 Msize は "size"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。値は、 100 dpi のディスプレイ上でのフォントのデザインサイズを 1/10 ポイント単位で示す整数値である。
変数 Mfoundry は "fonudry"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの開発元名を名前として持つシンボルである。
変数 Mfontfile は "fontfile"
という名前を持つシンボルであ り、フォントプロパティのキーとして用いられる。値は、フォントファイ ル名を名前として持つとするシンボルである。
変数 Mresolution は "resolution"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの解像度を dots per inch (dpi) 単位で示す整数値である。
変数 Mfoundry は "fonudry"
という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの開発元名を名前として持つシンボルである。
変数 Mfontconfig は関数 mfont_parse_name() と mfont_unparse_name() の引数として用いられる。
変数 Mx は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XFontStruct *) であることを表す.
変数 Mfreetype は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には FT_Face であることを表す。
変数 Mxft は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XftFont *) であることを表す。
変数 mfont_freetype_path
は、フォントファイルとフォントファイルを含むディレクトリの plist である。各要素のキーは Mstring
であり、値はフォントファイルかディレクトリを示す文字列である。
マクロ M17N_INIT() によって、この変数は m17n データベースと環境変数 "M17NDIR" 双方のサブディレクトリ "fonts" を含むように設定される。 mframe() の最初の呼び出しの際に、この変数から実際に使用できるフォントの内部リストが作られる。 そこでアプリケーションプログラムは、mframe() を呼ぶ前に(必要ならば)この変数を変更しなくてはならない。 新しい要素を追加する場合には、その値は安全に開放できる文字列でなくてはならない。
m17n ライブラリが FreeType ライブラリを使うように設定されてない場合には、この変数は用いられない。