フォント関数の一覧表示
フォントに関する解説をすると非常に膨大な労力が必要である。
ここではフォントに関する詳細な知識を得ることが目的ではないため、TrueTypeフォント
だけを対象に考えて説明する。
なおフォントに関するプログラミングに関しては当サイトの別館の今月の特集
「2002/7月号 フォントの実験してみる」を参照のこと。
フォントの作り方に関しては、リクエストが多ければ特集する。
(Q&Aからメールでも送ってくれれば。)
フォントに関する歴史は調べてみると意外におくが深く、古き時代の
MicrosoftとAppleの関係も見えてくる。時間があれば調べてみることをお勧めする。
また、フォントについてとっても詳しく知りたい方は、TrueTypeフォントの
ファイル構造を調べてみることをオススメする。
私は英語の量が多すぎてあきらめた...。
アスペクト比・・・・・・・・フォントの縦横比。
フォントをマッピングするときに、フォントマッパはデバイスに
最適なアスペクト比に基づいて物理フォントに置き換えする。
CreateFontIndirect()関数を使ってフォントを定義するとき、
LOGFONT構造体のlfWidthを0にすると
フォントの幅を自動的に選択してくれる。
ABC寸法・・・・・・・・・・A:文字セルの左端からのブラックボックスの左端までの距離。
B:ブラックボックスの幅。
C:文字セルの右端からブラックボックスの右端までの距離。
GetCharABCWidths()関数を使うと取得できる。
オーバーハング ・・・・・・ABC寸法のA、またはCがマイナスの値の場合、隣り合うフォントが
重なり合う事になる。このような状態をオーバーハングという。
ちなみに、下側で重なる場合はアンダーハングという。
ウェイト ・・・・・・・・・フォントの線(ストローク)の太さ。
Windows標準では普通とボールドしかないが
フォントによってはいろいろある。
ちなみに存在しないウェイトを指定されたときは
一番近いものが選択される。
| FW_DONTCARE | 0 |
| FW_THIN | 100 |
| FW_EXTRALIGHT | 200 |
| FW_LIGHT | 300 |
| FW_NORMAL | 400 |
| FW_MEDIUM | 500 |
| FW_SEMIBOLD | 600 |
| FW_BOLD | 700 |
| FW_EXTRABOLD | 800 |
| FW_HEAVY | 900 |
(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である。