ポータブル ドキュメントのメトリック
次の表は、移植可能なドキュメントを必要とするアプリケーションの最も重要なフォント メトリックと、アプリケーションがそれらを取得できるようにする関数を示しています。
機能 | メトリック | 用途 |
---|---|---|
EnumFontFamilies | ntmSizeEM | 設計メトリックの取得。デバイス メトリックへの変換。 |
GetCharABCWidths | ABCWidths | 余白、図の境界、およびその他のテキスト区切りの開始位置と末尾での文字の正確な配置。 |
GetCharWidth32 | AdvanceWidths | 行への文字の配置。 |
GetOutlineTextMetrics | otmfsType | フォント埋め込みビット。 |
otmsCharSlopeRise | 斜体フォントのカーソルの傾きの Y コンポーネント。 | |
otmsCharSlopeRun | 斜体フォントのカーソルの傾きの X コンポーネント。 | |
otmAscent | 行間。 | |
otmDescent | 行間。 | |
otmLineGap | 行間。 | |
otmpFamilyName | フォントの識別。 | |
otmpStyleName | フォントの識別。 | |
otmpFullName | フォントの識別 (通常はファミリとスタイル名)。 |
OUTLINETEXTMETRIC 構造体の otmsCharSlopeRise、otmsCharSlopeRun、otmAscent、otmDescent、otmLineGap メンバーは、現在のデバイス モードと物理高さに対応するようにスケーリングまたは変換されます (NEWTEXTMETRIC 構造体の tmHeight メンバーで指定)。
フォントの識別は、アプリケーションが同じフォントを選択する必要がある場合 (たとえば、ドキュメントを再度開いたり、別のオペレーティング システムに移動したりする場合など) に重要です。 アプリケーションがフル ネームでフォントを要求すると、フォント マッパーは常に正しいフォントを選択します。 ファミリ名とスタイル名は、標準のフォント ダイアログ ボックスに入力します。これにより、選択バーが適切に配置されます。
otmsCharSlopeRise 値と otmsCharSlopeRun 値は、フォントの斜体の角度メイン近似値を生成するために使用されます。 一般的なローマ字フォントの場合、 otmsCharSlopeRise は 1、 otmsCharSlopeRun は 0 です。 斜体フォントの場合、値はフォントのメイン斜体の角度のサインとコサインを近似しようとします (垂直を超える反時計回りの角度)。 直立フォントの斜体の角度は 0 であることに注意してください。 これらの値は設計単位で表されないため、デバイス単位に変換しないでください。
文字配置と行間メトリックを使用すると、アプリケーションは、画面、プリンター、タイプテッタ、さらにはプラットフォーム間で移植可能なデバイスに依存しない改行を計算できます。
デバイスに依存しないページ レイアウトを実行するには
- すべての設計メトリックを一般的な超高解像度 (UHR) 値 (65,536 DPI など) に正規化します。これにより、丸めエラーが防止されます。
- UHR メトリックと物理ページ幅に基づいて改行を計算します。これにより、テキスト ストリーム内の行の開始点と終了点が生成されます。
- デバイス ページの幅をデバイス単位 (ピクセル単位など) で計算します。
- 手順 2 で計算した改行を使用して、テキストの各行をデバイスのページ幅に収めます。
- UHR メトリックと物理ページ長を使用して改ページを計算する。これにより、1 ページあたりの行数が生成されます。
- 線の高さをデバイス単位で計算します。
- 手順 5 の 1 ページあたりの行数と手順 6 の行の高さを使用して、テキストの行をページに収めます。
すべてのアプリケーションでこれらの手法が採用されている場合、開発者は、あるアプリケーションから別のアプリケーションに移動されたドキュメントが元の外観と形式を保持することを事実上保証できます。