フォント関数の一覧表示

フォントに関する解説をすると非常に膨大な労力が必要である。
ここではフォントに関する詳細な知識を得ることが目的ではないため、TrueTypeフォント
だけを対象に考えて説明する。

なおフォントに関するプログラミングに関しては当サイトの別館の今月の特集
「2002/7月号 フォントの実験してみる」を参照のこと。

フォントの作り方に関しては、リクエストが多ければ特集する。
(Q&Aからメールでも送ってくれれば。)

フォントに関する歴史は調べてみると意外におくが深く、古き時代の
MicrosoftとAppleの関係も見えてくる。時間があれば調べてみることをお勧めする。

また、フォントについてとっても詳しく知りたい方は、TrueTypeフォントの
ファイル構造を調べてみることをオススメする。
私は英語の量が多すぎてあきらめた...。

アスペクト比・・・・・・・・フォントの縦横比。
                            フォントをマッピングするときに、フォントマッパはデバイスに
                            最適なアスペクト比に基づいて物理フォントに置き換えする。
                            CreateFontIndirect()関数を使ってフォントを定義するとき、
                            LOGFONT構造体のlfWidthを0にすると
                            フォントの幅を自動的に選択してくれる。

ABC寸法・・・・・・・・・・A:文字セルの左端からのブラックボックスの左端までの距離。
                           B:ブラックボックスの幅。
                           C:文字セルの右端からブラックボックスの右端までの距離。
                           GetCharABCWidths()関数を使うと取得できる。
                           

オーバーハング ・・・・・・ABC寸法のA、またはCがマイナスの値の場合、隣り合うフォントが
                           重なり合う事になる。このような状態をオーバーハングという。
                           ちなみに、下側で重なる場合はアンダーハングという。
                           

ウェイト ・・・・・・・・・フォントの線(ストローク)の太さ。
                           Windows標準では普通とボールドしかないが
                           フォントによってはいろいろある。
                           ちなみに存在しないウェイトを指定されたときは
                           一番近いものが選択される。
FW_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_MEDIUM500
FW_SEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_HEAVY900
(NSimSunで実験)
カーニングペア ・・・・・・英文字の「A」と「W」を並べて描画するときに、通常の文字間隔よりも 少し詰めた方が見栄えがよい。カーニングペアはこの文字間隔を調整する 2つの文字とその調整値との組み合わせのこと。 フォントがカーニングペアを持つかどうかは GetFontLanguageInfo()関数で取得できる。 グリフ ・・・・・・・・・・フォントがデバイス上に表示されるときのフォントの形状 サイズ ・・・・・・・・・・フォントのサイズは印刷用語としてのフォントとは違うので注意。 ここではWindowsにおけるフォントのサイズである。 類書によると、GetTextMetrics()関数で得られる tmHeightの値から内部レディングを差し引いた値との事。 ちなみにフォントサイズのポイントとピクセルの関係は 次のように定義されている。 1ポイント = 1/72論理値 1論理インチ = 1,440Twips 1ピクセル = Screen.TwipsPerPixelsY 例として32ポイントのフォントの高さをピクセルに換算する。 ((32/72) * 1,440) / Screen.TwipsPerPixelsY = ピクセル値 APIを使う場合は、次のようになる。 FontHeight = MulDiv(32,GetDeviceCaps(hdc,LOGPIXELSY),72) スタイル・・・・・・・・・フォントのウェイトとスラント(斜体) セリフ・・・・・・・・・・ストロークの先端の飾りはね セル・・・・・・・・・・・文字セル「Character cell」の略。 グリフを包含する矩形のことだが、ブラックボックスよりは大きい。 また、必ずしもグリフのサイズと一致しない。 テキストを字間、行間を調整せず(共に0)に 描画したときの文字幅と高さを規定する。 TrueTypeフォント ・・・・Apple社が開発したアウトラインフォントのこと。 直線と曲線を組み合わせて構成したフォントである。 別名「スケーラブルフォント」という。 ベクタフォント ・・・・・線分のみで構成するフォント。 最終的に出力するときに実際のサイズに計算して 変換する。簡単に言えばベクタ形式のフォント。 ラスタフォント ・・・・・Systemフォントなどのようにドットの集まりにより構成されたフォント。 デバイス上にはビットマップが表示されるので 「ビットマップフォント」とも言う。 フォントファミリ ・・・・フォントファミリは次の5つが定義されている。
ファミリピッチストロークセリフフォント例
FF_DECORATIVE---Old English
FF_MODERN固定固定なしCourier
FF_ROMAN可変可変ありTimes New Roman
FF_SCRIPT---不明
FF_SWISS可変可変-なしHelvetica
フォントマッピング ・・・論理フォントから物理フォントに変換すること ピッチ ・・・・・・・・・文字の幅 物理フォント ・・・・・・システム、またはデバイスに組み込まれたフォント ブラックボックス ・・・・グリフを包含する最小の矩形。GetGlyphiOutline()関数で取得できる 文字セット ・・・・・・・フォントは必ず、文字セットを使用する。 例えばANSIやUnicodeやOEMなどである。 なおOEMはoriginal equipment manufacturerの略。 日本語はANSIに属する。ちなみにWindowsでの標準はANSIである。
グラフィック
関数名機能Sample
フォント
CreateFont指定の属性を持つ論理フォントを作成するあり
CreateFontIndirectLOGFONT構造体に基づいて指定の属性を持つ論理フォントを作成するなし
EnumFontFamExProcEnumFontFamiliesEx()関数のコールバック関数なし
EnumFontFamiliesExシステム内の全てのフォントを列挙するなし
GetAspectRatioFilterExフォントのアスペクト比を取得するなし
GetCharABCWidthsTrueTypeフォントの文字幅(A,B,C寸法)を取得するなし
GetCharacterPlacement文字列に関する情報を取得するなし
GetCharWidth32フォントの文字幅を取得するなし
GetFontDataTrueTypeフォントに関するデータを取得するなし
GetFontLanguageInfo指定のフォントの言語に関する情報を取得するなし
GetGlyphOutlineTrueTypeフォントのアウトライン曲線を取得するなし
GetKerningPairsデバイスコンテキストに選択されているフォントのカーニングペアを調べるなし
GetOutlineTextMetricsTrueTypeフォントに関する情報を取得するなし
GetRasterizerCapsTrueTypeフォントがシステムに組み込まれているかどうかを判定するなし
GetTextFace指定のデバイスコンテキストに選択されている現在のフォント名を取得するなし
GetTextMetrics現在のフォントに関する情報を取得するなし
SetMapperFlags論理フォントから物理フォントに変換するときのフォントマッパ動作方法を指定するなし