m17n ライブラリ  1.8.4
関数 | 変数
フォント
フォント 連携図

関数

MFontmfont ()
 新しいフォントを作る. [詳解]
 
MFontmfont_parse_name (const char *name, MSymbol format)
 フォント名からフォントを作る. [詳解]
 
char * mfont_unparse_name (MFont *font, MSymbol format)
 フォントからフォント名を作る. [詳解]
 
MFontmfont_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)
 フォント選択優先度を設定する. [詳解]
 
MFontmfont_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)
 フォント名からフォントを作る. [詳解]
 
MFontmfont_from_name (const char *name)
 フォントからフォント名を作る. [詳解]
 
int mfont_resize_ratio (MFont *font)
 フォントのリサイズ情報を得る [詳解]
 
MPlistmfont_list (MFrame *frame, MFont *font, MSymbol language, int maxnum)
 フォントのリストを得る [詳解]
 
MPlistmfont_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)
 
MFontmfont_open (MFrame *frame, MFont *font)
 
MFontmfont_encapsulate (MFrame *frame, MSymbol data_type, void *data)
 
int mfont_close (MFont *font)
 

変数

MPlistmfont_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() はプロパティを一切持たない新しいフォントをオブジェクトを作る。

戻り値:
この関数は作ったフォントオブジェクトへのポインタを返す。

◆ mfont_parse_name()

MFont* mfont_parse_name ( const char *  name,
MSymbol  format 
)

フォント名からフォントを作る.

関数 mfont_parse_name() は、フォント名 name から取り出されたプロパティを持つ、新しいフォントオブジェクトを作る。

formatname のフォーマットを指定する。formatMx であれば、 name は XLFD (X Logical Font Description) に従って解析される。 formatMfontconfig であれば name は Fontfonfig のフォントテキスト表現に従って解析される。formatMnil であれば、まず XLFD に従って解析され、それに失敗したら Fontconfig に従って解析される。

戻り値:
処理が成功すれば mfont_parse_name() は新しく作られたフォントへのポインタを返す。そうでなければ NULL を返す。

◆ mfont_unparse_name()

char* mfont_unparse_name ( MFont font,
MSymbol  format 
)

フォントからフォント名を作る.

関数 mfont_unparse_name() は フォント名の文字列をフォント font を元にformat に従って作る。

formatMx または Mfontconfig である。 Mx ならばフォント名は XLFD (X Logical Font Description) に従う。 Mfontconfig ならばフォント名は Fontconfig のフォントテキスト表現に従う。

戻り値:
この関数は新たにアロケートしたフォント名の文字列を返す。文字列は、ユーザが free() によって明示的に解放しない限り解放されない。

◆ mfont_copy()

MFont* mfont_copy ( MFont font)

フォントのコピーを作る.

関数 Mfont_copy() はフォント font のコピーを作り、それを返す。

◆ mfont_get_prop()

void* mfont_get_prop ( MFont font,
MSymbol  key 
)

フォントのプロパティの値を得る.

関数 mfont_get_prop() はフォント font のプロパティのうち、キーが key であるものの値を返す。key は以下のシンボルのいずれかでなけれ ばならない。

Mfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Msize, Mresolution, Mspacing.

戻り値:
keyMfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Mspacing のいずれかであれば、 相当する値をシンボルとして返す。フォントがそのプロパティを持たない 場合にはMnil を返す。keyMsize あるいは Mresolution の 場合には、相当する値をは整数値として返す。フォントがそのプロパティ を持たない場合には 0 を返す。key がそれ以外のものであれば、NULL を返し、外部変数 merror_code にエラーコードを設定する。

◆ mfont_put_prop()

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.

keyMsizeMresolution であれば val は整数値でなくては らない。それ以外の場合、val はプロパティ値の名前のシンボルでなくて はならない。ただしもしその名前が "nil" の場合は、名前が "Nil" のシ ンボルでなくてはならない。

◆ mfont_selection_priority()

MSymbol* mfont_selection_priority ( )

フォント選択の優先度を返す.

関数 mfont_selection_priority() は 6 つのシンボルからなる配列を作って返す。 配列の要素は、以下のフォントプロパティのキーを優先度順に並べたものである。

Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Msize.

m17n ライブラリはこの配列に従って、最も合致するフォントを選択する。 目的のフォントと、それぞれ違うプロパティの値が合致しないフォントがあった場合、優先度の低いプロパティの値が合致しないフォント(優先度の高いプロパティの値が合致しているフォント)が選択される。

◆ mfont_set_selection_priority()

int mfont_set_selection_priority ( MSymbol *  keys)

フォント選択優先度を設定する.

関数 mfont_set_selection_priority() は、6つのシンボルの配列 keys にしたがってフォント選択優先度を設定する。配列は以下の各要素を適切 な順番で並べたものである。

Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Msize.

詳細は関数 mfont_selection_priority() の説明を参照のこと。

◆ mfont_find()

MFont* mfont_find ( MFrame frame,
MFont spec,
int *  score,
int  max_size 
)

フォントを探す.

関数 mfont_find() は、フレーム frame 上でフォント定義 spec にもっとも合致する利用可能なフォントへのポインタを返す。

score は NULL であるか、見つかったフォントが spec にどれほど合っているかを示すスコアを保存する場所へのポインタである。 スコアが小さいほど良く合っていることを意味する。

◆ mfont_set_encoding()

int mfont_set_encoding ( MFont font,
MSymbol  encoding_name,
MSymbol  repertory_name 
)

フォントのエンコーディングを設定する.

関数 mfont_set_encoding() はフォント font のエンコーディング情報を設定する。

encoding_name はフォントと同じエンコーディングを持つ文字セットを示すシンボルである。

repertory_nameMnil であるか、フォントと同じエンコーディングを持つ文字セットを示すシンボルである。 Mnil であれば、個々の文字がそのフォントでサポートされているかどうかは、各々のフォントドライバに問い合わせる。

戻り値:
処理が成功すればこの関数は 0 を返す。そうでなければ -1 を返し、外部変数 merror_code にエラーコードを設定する。

◆ mfont_name()

char* mfont_name ( MFont font)

フォント名からフォントを作る.

この関数は廃止予定である。 mfont_unparse_name() を使用のこと。

◆ mfont_from_name()

MFont* mfont_from_name ( const char *  name)

フォントからフォント名を作る.

これは関数は廃止予定である。 mfont_parse_name() を使用のこと。

◆ mfont_resize_ratio()

int mfont_resize_ratio ( MFont font)

フォントのリサイズ情報を得る

関数 mfont_resize_ratio は m17n データベース <font, reisize> を検索し、フォント FONT のリサイズの比率(パーセンテージ) を返す。たとえば返す値が 150 であれば、m17n ライブラリは指定されたサイズの 1.5 倍のフォントを使用することを意味する。

◆ mfont_list()

MPlist* mfont_list ( MFrame frame,
MFont font,
MSymbol  language,
int  maxnum 
)

フォントのリストを得る

関数 mfont_list() はフレーム frame で利用可能なフォントのリストを 返す。font が NULL でなければ、font と合致する利用可能なフォント のリストを返す。languageMnil でなければ、language をサポー トする利用可能なフォントのリストを返す。maxnum は、0 より大きい場 合には、返すフォントの数の上限である。

ただし、引数 language は旧版との整合性のためだけにあり、その使用は 勧められない。フォントの Mlanguage プロパティを使うべきである。も し font がすでにこのプロパティを持っていたら、引数 language は無

戻り値:
この関数はキーがフォントファミリ名であり値が MFont オブジェクトへの ポインタであるようなplist を返す。plist は m17n_object_unref() で 解放する必要がある。フォントが見つからなければNULL を返す。

◆ mfont_list_family_names()

MPlist* mfont_list_family_names ( MFrame frame)

◆ mfont_check()

int mfont_check ( MFrame frame,
MFontset fontset,
MSymbol  script,
MSymbol  language,
MFont font 
)

◆ mfont_match_p()

int mfont_match_p ( MFont font,
MFont spec 
)

◆ mfont_open()

MFont* mfont_open ( MFrame frame,
MFont font 
)

◆ mfont_encapsulate()

MFont* mfont_encapsulate ( MFrame frame,
MSymbol  data_type,
void *  data 
)

◆ mfont_close()

int mfont_close ( MFont font)

変数詳解

◆ Mfoundry

MSymbol Mfoundry

開発元を指定するフォントプロパティのキー.

変数 Mfoundry"foundry" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの開発元名を名前として持つシンボルである。

◆ Mfamily

MSymbol Mfamily

ファミリを指定するフォントプロパティのキー.

変数 Mfamily"family" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのファミリ名を名前として持つシンボルである。

◆ Mweight

MSymbol Mweight

太さを指定するフォントプロパティのキー.

変数 Mweight"weight" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの太さ名 ( "medium", "bold" 等) を名前として持つシンボルである。

◆ Mstyle

MSymbol Mstyle

スタイルを指定するフォントプロパティのキー.

変数 Mstyle"style" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのスタイル名 ("r", "i", "o" 等)を名前として持つシンボルである。

◆ Mstretch

MSymbol Mstretch

幅を指定するフォントプロパティのキー.

変数 Mstretch"stretch" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの文字幅名 ( "normal", "condensed" 等)を名前として持つシンボルである。

◆ Madstyle

MSymbol Madstyle

adstyle を指定するフォントプロパティのキー.

変数 Madstyle"adstyle" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの adstyle 名("serif", "", "sans" 等)を名前として持つシンボルである。

◆ Mspacing

MSymbol Mspacing

spacing を指定するフォントプロパティのキー.

変数 Mspacing"spacing" という名前を持つシンボルであり、 フォントプロパティのキーとして用いられる。値は、フォントの spacing 特性を示す名前 ("p", "m" 等)を持つシンボルである。

◆ Mregistry

MSymbol Mregistry

レジストリを指定するフォントプロパティのキー.

変数 Mregistry"registry" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントのレジストリ名 ( "iso8859-1", "jisx0208.1983-0" 等) を名前として持つシンボルである。

◆ Msize

MSymbol Msize

サイズを指定するフォントプロパティのキー.

変数 Msize"size" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。値は、 100 dpi のディスプレイ上でのフォントのデザインサイズを 1/10 ポイント単位で示す整数値である。

◆ Motf

MSymbol Motf

◆ Mfontfile

MSymbol Mfontfile

フォントファイルを指定するフォントプロパティのキー.

変数 Mfontfile"fontfile" という名前を持つシンボルであ り、フォントプロパティのキーとして用いられる。値は、フォントファイ ル名を名前として持つとするシンボルである。

◆ Mresolution

MSymbol Mresolution

解像度を指定するフォントプロパティのキー.

変数 Mresolution"resolution" という名前を持つシンボルであり、フォントプロパティとフェースプロパティのキーとして用いられる。 値は、フォントの解像度を dots per inch (dpi) 単位で示す整数値である。

◆ Mmax_advance

MSymbol Mmax_advance

◆ Mfontconfig

MSymbol Mfontconfig

"fontconfig" という名前を持つシンボル.

変数 Mfontconfig は関数 mfont_parse_name()mfont_unparse_name() の引数として用いられる。

◆ Mx

MSymbol Mx

"x" という名前を持つシンボル.

変数 Mx は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XFontStruct *) であることを表す.

◆ Mfreetype

MSymbol Mfreetype

"freetype" という名前を持つシンボル.

変数 Mfreetype は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には FT_Face であることを表す。

◆ Mxft

MSymbol Mxft

"xft" という名前を持つシンボル.

変数 Mxft は構造 MDrawGlyph のメンバ <type> の値として用いられ、メンバ <fontp> の型が実際には (XftFont *) であることを表す。

◆ mfont_freetype_path

MPlist* mfont_freetype_path

フォントファイルとフォントファイルを含むディレクトリのリスト.

変数 mfont_freetype_path は、フォントファイルとフォントファイルを含むディレクトリの plist である。各要素のキーは Mstring であり、値はフォントファイルかディレクトリを示す文字列である。

マクロ M17N_INIT() によって、この変数は m17n データベースと環境変数 "M17NDIR" 双方のサブディレクトリ "fonts" を含むように設定される。 mframe() の最初の呼び出しの際に、この変数から実際に使用できるフォントの内部リストが作られる。 そこでアプリケーションプログラムは、mframe() を呼ぶ前に(必要ならば)この変数を変更しなくてはならない。 新しい要素を追加する場合には、その値は安全に開放できる文字列でなくてはならない。

m17n ライブラリが FreeType ライブラリを使うように設定されてない場合には、この変数は用いられない。


m17n-lib Home