このトピックでは、Windows で提供されるアウトライン フォント、Windows のバージョン間で変更される可能性があるフォント メトリック値、およびデスクトップ アプリでフォント メトリックを使用する方法のガイダンスについて説明します。
- DirectWrite のフォント メトリックに固有の情報については、「テキスト メトリック」を参照してください。
- GDI を使用してアプリ内のテキストを管理する方法の詳細については、「フォントとテキスト」のトピックを参照してください。
フォントの使用法と種類の仕様の詳細については、Microsoft の文字体裁サイトのを参照してください。
使用可能なフォント
Windows で提供されるアウトライン フォントは、TrueType アウトラインを含む OpenType フォントとして提供されます (Windows では、CFF 形式の OpenType フォントもサポートされています)。 Windows で提供されるすべてのフォントの一覧については、「Microsoft の文字体裁 : 製品別またはファミリ別のフォントを参照してください。 すべての Windows アウトライン フォントは、OpenType 仕様の最新バージョンに準拠しています。
現在および従来のすべての UI フォントの一覧については、以下の「ロックされたフォント メトリック 参照してください。
フォントの変更
下位互換性を確保するために、フォントが Windows から削除されることはほとんどありません。 ただし、多くの場合、フォントは変更されます。 変更には、文字の追加、既存の文字の再描画、ヒントの変更、高度な OpenType 機能と複雑なスクリプト シェイプのサポートの追加または変更が含まれます。
ロックされたフォント メトリック
Microsoft アプリで使用される UI フォントと既定のフォントに関連付けられている一部の値はロックされていることに注意してください。 UI フォントは、キャプション、ダイアログ、メニューなどの UI 要素をレンダリングするために使用されます。 可視性が高く頻繁に使用されるため、これらのフォントに加えられる変更はほとんどありません。 ただし、これらのフォントに関連付けられている報告された値はロックされているため、報告されたフォント値と実際のフォント値の間に不一致がある可能性があります。
次の報告された値は、UI と既定のフォントに対してロックされ、不正確に報告される可能性があります。
- フォントの OS/2 テーブルの次の値。
- xAvgCharWidth
- sTypoLineGap
- sTypoAscender
- sTypoDescender
- usWinAscent
- usWinDescent
- フォントのヘッダーに設定された unitsPerEm 値
- 垂直デバイス メトリック テーブル (VDMX) からの値
- 個々のグリフの事前幅
Windows 8.1 に付属している UI フォントの一覧を次に示します (ロックされた値の影響を受けます)。
スクリプト名 | UI フォント |
---|---|
アラビア語 | Segoe UI |
アルメニア語 | Segoe UI |
バングラ | Nirmala UI |
Bopomofo | Microsoft JhengHei UI |
点字 | Segoe UI シンボル |
Buginese | Leelawadee UI |
カナダアボリジニの音節 | Gadugi |
チェロキー | Gadugi |
コプト語 | Segoe UI シンボル |
中国語 (簡体字) | Microsoft YaHei UI |
中国語 (繁体字) | Microsoft JhengHei UI |
キリル | Segoe UI |
Devanagari | Nirmala UI |
ディザレット | Segoe UI シンボル |
エチオピック | Ebrima |
グルジア語 | Segoe UI |
Gagolitic | Segoe UI シンボル |
ゴシック | Segoe UI シンボル |
ギリシャ語 | Segoe UI |
グジャラート語 | Nirmala UI |
グルムキ | Nirmala UI |
ヘブライ語 | Segoe UI |
古い斜体 | Segoe UI シンボル |
ジャワ語 | Javanese Text |
日本語 | Meiryo UI |
カナラ語 | Mirmala UI |
クメール語 | Leelawadee UI |
韓国語 | マルグン ゴシック |
ラーオ語 | Leelawadee UI |
ラテン語 | Segoe UI |
マラヤラム語 | Nirmala UI |
モンゴル語 | モンゴルのバイティ |
ミャンマー | ミャンマーテキスト |
N'Ko | Ebrima |
Ogham | Segoe UI シンボル |
Ol Chiki | Nirmala UI |
旧トルコ語 | Segoe UI シンボル |
Odia | Nirmala UI |
Osmanya | Ebrima |
Phags-pa | Microsoft PhagsPa |
ルーン 文字 | Segoe UI シンボル |
ソラ・センペン | Nirmala UI |
シンハラ語 | Nirmala UI |
シリア | エストランジェロ エデスサ |
Tai Le | Microsoft Tai Le |
新しい Tai Lue | Microsoft New Tai Lue |
タミール語 | Nirmala UI |
テルグ語 | Nirmala UI |
Tifinagh | Ebrima |
Thaana | MV Boli |
タイ語 | Leelawadee UI |
チベット語 | Microsoft のヒマラヤ |
ヴァイ | Ebrima |
李 | Microsoft Yi Baiti |
ロックされた値の影響を受けるレガシ UI フォントの一覧を次に示します。
スクリプト名 (レガシ) | UI フォント (レガシ) |
---|---|
バングラ | Vrinda |
カナダアボリジニの音節 | ユーフェミア |
チェロキー | Plantagenet |
中国語 (簡体字) | Microsoft YaHei と SimSun |
中国語 (繁体字) | MingLiU と Microsoft JhengHei |
Devanagari | マンガル |
ヨーロッパ言語 | Tahoma |
グジャラート語 | Shruti |
グルムキ | Raavi |
日本語 | Meiryo と MS ゴシック UI |
カナラ語 | トゥンガ |
クメール語 | クメール語 |
韓国語 | Gulim |
ラーオ語 | ラオス語 UI |
マラヤラム語 | カルティカ |
中東言語 | Tahoma |
Odia | カリンガ |
シンハラ語 | イスコラ ポタ |
タミール語 | ラタとヴィジャヤ |
テルグ語 | Gautami |
タイ語 | リーラワディーとタホマ |
これらのフォントは、Microsoft アプリの既定値として使用され、ロックされた値の影響も受けます。
- Arial
- Calibri
- カンブリア
- Consolas
- Courier New
- MS Mincho
- Times New Roman
- Verdana
動的フォント メトリック
上記のロックされたメトリックを除き、フォント値は正確に報告されます。 新しいバージョンの Windows でフォントが変更された場合、動的フォントの値は新しいフォントと古いもので異なります。 たとえば、グリフをフォントに追加すると、フォントのヘッダーの値が変更される可能性があります。 クリッピングは、これらの値 (xMin、xMax、yMin、yMax を含み、フォント内のグリフの最小境界ボックスと最大境界ボックスを報告する値) がロックされ、真の値を報告しなかった場合に発生する可能性があります。
大事な
アプリで動的フォント値 (TEXTMETRICの値など) を使用する場合、今後のバージョンの Windows でフォントが変更されると、これらの値が変更されます。 テキストを静的に保つ必要がある場合は、これらの実際の値を使用しないでください。
フォント メトリックを使用するためのガイドライン
- アプリの起動時に画面のメトリックとフォント メトリック (平均幅など) を計算し、これらの値を使用してアプリをレイアウトします。 これにより、一貫して正確なレンダリングが提供され、レイアウトはフォントの変更に対応するか、フォントフォールバックに対応します。 フォント フォールバックとフォント リンクの概要については、「グローバリゼーションのステップ バイ ステップ: フォント」を参照してください。 Uniscribe 固有の情報については、フォント フォールバック の使用に関する を参照してください。
- ベース メトリックを計算するには、目的の言語/スクリプトの代表的なテキストをレンダリングします。
- ラップされていないテキストの 1 行のみを含むコントロールの場合は、トリムされていないテキストの全幅に合わせてレイアウトします。
- 複数行のコントロールの場合は、合計の長さを取得し、文字の長さで除算すると、使用できる幅が固定されています。 これは、リーダーに対する 1 つの "文字" が複数のコード ポイントになる可能性がある複雑なスクリプトでは、複雑な作業になります。
- 垂直方向の間隔を計算するには、sTypoAscender、sTypoDescender、unitsPerEm (OS/2 テーブルのから) を使用します。 sTypoAscender は、テキスト フレームの上端から最初のベースラインへの最適なオフセットを決定するために使用され、sTypoDescender はテキスト フレームの下部から最後のベースラインへの最適なオフセットを決定します。
- DirectWrite を使用している場合は、IDWriteTextLayoutを使用してレイアウトを作成します。 IDWriteTextLayout は、自然なレイアウトで アセンダー + 降順 + lineGap を提供します。 これらの特定の値には、DWRITE_FONT_METRICSを使用してアクセスできます。 このインターフェイスの詳細については、「テキストの書式設定とレイアウトの」を参照してください。
- GDI を使用している場合は、画面からレンダリングし、レイアウト (行の長さや 1 行あたりの文字など) を調べて、実際のレンダリングで使用される最終的なレイアウト パラメーターを再計算します。
- 特定のバージョンのフォントの特定の値に基づいてレイアウトを静的に構築しないでください。 実際の値はリリースからリリースに変更される可能性があります。
関連トピック