Fonts
Fonts
このガイドでは、ドキュメントで参照されているフォントを検査し、埋め込みフォントデータを抽出し、TrueType フォント埋め込みを保存時に Aspose.Words FOSS for .NET で制御する方法を示します。Aspose.Words FOSS for .NET は、ロードされたドキュメントが参照するすべてのフォントを FontInfoCollection を通じて追跡し、フォントごとのメタデータ、埋め込みフォントの抽出、保存時の埋め込み制御を FontInfo で公開します。Document.FontSettings と LoadOptions.FontSettings は、(本版では意図的に最小限の)FontSettings エントリーポイントを提供します。
ドキュメントで使用されているフォントの検査
DocumentBase.FontInfos(Document が継承) は、ドキュメント内のどこで参照されているフォントもすべて記述した FontInfoCollection を返します。名前でインデックス付けできます(例: fontInfos["Arial"])、Contains(name) で存在をテストし、Count で数を数え、または GetEnumerator() で全コレクションを列挙できます。
フォントのプロパティと分類
各 FontInfo は 1 つのフォントを記述します: Name と AltName がそれを識別し、Family が FontFamily 列挙型(Auto, Roman, Swiss, Modern, Script, Decorative)を介して分類します、Pitch はその FontPitch(Default, Fixed, Variable)を報告し、IsTrueType、Charset、Panose は下位レベルのフォントマッチングデータを公開します。
埋め込みフォントの抽出
ドキュメントに埋め込みフォントがある場合、FontInfo.GetEmbeddedFont(format, style) は指定された EmbeddedFontFormat(EmbeddedOpenType または OpenType)および EmbeddedFontStyle(Regular、Bold、Italic、BoldItalic)の生の埋め込みフォントバイトを返します。GetEmbeddedFontAsOpenType(style) は、元の埋め込み方法に関係なく、フォントを直接 OpenType フォーマットに変換して返します。
フォント埋め込みライセンス権利
フォントを抽出または再埋め込みする前に、FontInfo.EmbeddingLicensingRights(FontEmbeddingLicensingRights オブジェクト)を確認してください。EmbeddingUsagePermissions は FontEmbeddingUsagePermissions 列挙体(Installable、RestrictedLicense、PrintAndPreview、Editable)を通じてライセンスレベルを報告し、NoSubsetting と BitmapEmbeddingOnly はフォントベンダーが設定したさらなる制限をフラグとして示します。
保存時のフォント埋め込み制御
FontInfoCollection にはドキュメントレベルの埋め込みスイッチも含まれます。保存時にドキュメントで使用されているすべての TrueType フォントを埋め込むには EmbedTrueTypeFonts を true に設定し、任意のシステムに通常存在すると見なされるフォントを含めるには EmbedSystemFonts を、フォント全体ではなく実際に使用されたグリフのみを埋め込むには SaveSubsetFonts を設定します。
このエディションにおける FontSettings の範囲
Document.FontSettings と LoadOptions.FontSettings はどちらも FontSettings オブジェクトを返し、FontSettings.DefaultInstance は共有デフォルトインスタンスを公開します。この FOSS エディションでは、FontSettings の API 表面はそのデフォルトインスタンスプロパティに限定されます。フォルダー基盤やシステムフォントソースの解決は、Aspose.Words の他の場所でページレイアウトやレンダリングのためにフォントを置換または解決する際に使用されますが、このエディションの範囲外であるため存在しません。ここでのフォント処理は、メタデータの検査と埋め込みを意味し、レンダリング用のフォント置換は含まれません。
ヒントとベストプラクティス
- 常に
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsを確認してから埋め込まれたフォントを抽出または再配布してください — 一部のフォントはRestrictedLicenseまたはPrintAndPreviewのみでライセンスされています。 - ソース文書がフォントを埋め込んだ方法(
EmbeddedOpenTypeとOpenType)に関係なく、一貫した出力形式が必要な場合はGetEmbeddedFontAsOpenType()を使用してください。 - ごく少数のグリフしか使用しないフォントを埋め込む際に出力ファイルサイズを削減するため、
FontInfoCollection.SaveSubsetFontsをtrueに設定してください。 - フォントの存在をテストするだけの場合、
FontInfoCollection.Contains(name)はインデックス化して失敗した検索(例:fontInfos[name])を処理するよりもコストが低くなります。
よくある問題
| 問題 | 原因 | 修正 |
|---|---|---|
GetEmbeddedFont() は使用可能なデータを返しません | 参照されたフォントは実際には文書に埋め込まれていません | フォントデータが存在すると仮定する前に、文書の埋め込み設定を確認してください |
名前で FontInfoCollection にインデックスしても何も見つかりません | フォント名が完全に一致していません(大文字小文字も含む) | 正確なName文字列を確認するために、FontInfoCollectionをGetEnumerator()で列挙してください |
| 期待されるフォント置換/解決 API が存在しません | フォルダーおよびシステムベースのフォントソース解決は、この FOSS エディションでは実装されていません | FontInfo/FontInfoCollection はメタデータと埋め込みのみに使用してください;レンダリング用のフォント置換はこのエディションの対象外です |
FAQ
文書が参照しているすべてのフォントを一覧表示するにはどうすればよいですか?
GetEnumerator()を介してDocument.FontInfos(FontInfoCollection)を列挙するか、名前でインデックスして特定のもの(例:fontInfos["Arial"])を検索します。
ドキュメントから埋め込まれたフォントの生バイトを抽出できますか?
はい、フォントが埋め込まれている場合は、元の埋め込み形式については FontInfo.GetEmbeddedFont(format, style) を呼び出し、結果を OpenType に正規化するには GetEmbeddedFontAsOpenType(style) を使用します。
ドキュメントを保存する際にフォントが埋め込まれるようにするにはどうすればよいですか?
保存する前に FontInfoCollection.EmbedTrueTypeFonts を true に設定します。任意のシステムにフォントが存在すると仮定する必要がある場合は EmbedSystemFonts を追加し、使用中のグリフのみを埋め込むには SaveSubsetFonts を使用してください。
このエディションは、レンダリングのためにカスタムフォルダーからフォントを解決することをサポートしていますか?
いいえ — フォルダーおよびシステムベースのフォントソース解決(FontSettings ソース設定)はここでは実装されていません。これはページレイアウトとレンダリングにサービスするためのものであり、このFOSSエディションの範囲外です。
FontEmbeddingLicensingRights.NoSubsetting とは何を意味しますか?
これはフォントベンダーの埋め込み権限によって報告されるライセンスフラグです。true の場合、フォントは使用中のグリフのみへのサブセット化ができません。
API Reference 概要
| クラス / メソッド | 説明 |
|---|---|
FontInfoCollection | 文書で参照されているフォント;名前でインデックス付け (fontInfos[name])、Contains()、Count、GetEnumerator()、さらに EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | 1つのフォントのメタデータ: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | 埋め込みフォントバイトを抽出する |
EmbeddedFontFormat / EmbeddedFontStyle | 埋め込みフォントの形式とスタイルバリアントを識別する列挙型 |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | フォントごとに報告された埋め込みライセンス制限 |
FontSettings | 最小限の font-settings エントリーポイント (Document.FontSettings, LoadOptions.FontSettings);このエディションでは font-source の解決は行われません |