英語で読む

次の方法で共有


埋め込みフォント

フォントを埋め込むとは、ドキュメントとそのフォントを別のコンピューターに送信するためのファイルにバンドルする手法です。 フォントを埋め込む場合、送信ファイルで指定されたフォントが、ファイルを受信しているコンピューターに存在することが保証されます。 ただし、ほとんどのフォントは一度に 1 台のコンピューターにのみライセンスされるため、すべてのフォントをコンピューターからコンピューターに移動できるわけではありません。 埋め込むことができるのは、TrueType フォントと OpenType フォントのみです。

アプリケーションは、ユーザーから要求された場合にのみ、ドキュメントにフォントを埋め込む必要があります。 アプリケーションを埋め込みフォントを含むドキュメントと共に配布したり、アプリケーション自体に埋め込みフォントを含めることはできません。 アプリケーションが任意の形式でフォントを配布するときは常に、フォントの所有者の所有権を確認する必要があります。

埋め込みが許可されていないフォントを埋め込むか、フォントの埋め込みに関する次のガイドラインを遵守しないことは、フォント ベンダーの所有権またはユーザー ライセンス契約に違反している可能性があります。 フォントのライセンスでは、インストールして対象のコンピューターで使用するフォントの読み取り/書き込みアクセス許可のみを付与できます。 または、ライセンスによって読み取り専用のアクセス許可が付与される場合があります。 読み取り専用アクセス許可を使用すると、対象のコンピューターでドキュメントを表示および印刷できます (ただし、変更することはできません)。読み取り専用の埋め込みフォントを持つドキュメントは、それ自体が読み取り専用です。 読み取り専用の埋め込みフォントは、ドキュメントからバンドル解除されず、コピー先のコンピューターにインストールされない場合があります。

アプリケーションは、GetOutlineTextMetrics 関数を呼び出し、OUTLINETEXTMETRIC 構造体の otmfsType メンバーを調べることで、ライセンスの状態を確認できます。 otmfsType のビット 1 が設定されている場合、フォントの埋め込みは許可されません。 ビット 1 が明確な場合は、フォントを埋め込むことができます。 ビット 2 が設定されている場合、埋め込みは読み取り専用です。

TrueType フォントを埋め込むには、アプリケーションで GetFontData 関数を使用してフォント ファイルを読み取ることができます。 GetFontDatadwTable パラメーターと dwOffset パラメーターを 0L に設定し、cbData パラメーターを 1L に設定すると、アプリケーションがフォント ファイル全体を最初から読み取ることができます。

文字幅とフォント データが存在する場所に応じて、OpenType フォントを埋め込むためのいくつかの関数を使用できます。 デバイス コンテキストに存在する OpenType Unicode フォントを埋め込むには、アプリケーションで TTEmbedFont を使用できます。 デバイス コンテキストに存在する OpenType UCS-4 フォントを埋め込むには、アプリケーションで TTEmbedFontEx を使用できます。 フォント ファイルに存在する OpenType Unicode フォントを埋め込むには、アプリケーションで TTEmbedFontFromFile を使用できます。 OpenType フォント埋め込みの詳細については、「 フォント埋め込みリファレンス」を参照してください

アプリケーションは、フォント データを取得した後、該当する任意の形式を使用して、ドキュメントにデータを格納できます。 ほとんどのアプリケーションでは、ドキュメント内にフォント ディレクトリが作成され、埋め込みフォントが一覧表示され、埋め込みが読み取り/書き込みか読み取り専用かを示します。 アプリケーションでは、OUTLINETEXTMETRIC 構造体の otmpStyleName メンバーと otmFamilyName メンバーを使用して、フォントを識別できます。

埋め込みフォントに対して読み取り専用ビットが設定されている場合、アプリケーションはフォント データをドキュメントと共に格納する前に暗号化する必要があります。 暗号化方法は複雑である必要はありません。たとえば、XOR 演算子を使用してフォント データをアプリケーション定義定数と組み合わせることは、十分かつ高速です。