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