フォントの可用性と置換
Contents
[
Hide
]
文書内のテキストは、Arial、Times New Roman、Verdanaなどのさまざまなフォントで書式設定できます。 Aspose.Wordsがドキュメントをレンダリングするとき、ドキュメントで指定されているフォントを選択しようとします。
ただし、正確なフォントが見つからず、代わりにAspose.Wordsが同様のフォントに置き換える必要がある状況があります。 Aspose.Wordsは、次のプロセスに従ってフォントを選択します:
- Aspose.Wordsは、正確なフォント名を持つ利用可能なフォントソースの中からフォントを見つけようとします。
- Aspose.Wordsは、元の文書に埋め込まれたフォントの中から必要なフォントを見つけようとします。 DOCXなどの一部の文書形式には、埋め込みフォントを含めることができます。
- Aspose.Wordsが正確な名前が一致する必要なフォントを見つけることができず、このフォントに対してAltNameプロパティが定義されている場合、Aspose.WordsはFontInfoクラスからAltNameで定義されたフォントを検索します。
- Aspose.Wordsが定義されたフォントを見つけることができず、AltNameも定義されていない場合、以下で説明するように、フォント置換ルールが1つずつ適用されます(適切な置換が見つかった場合、フォント置換プロセスは停止し、次のステップは実行されません)。:
- Aspose.Wordsは、
FontConfig
ユーティリティを使用して、OSフォント設定が利用可能な場合に適用しようとします。 このWindows以外の機能はFontConfig互換のOSで使用する必要があります。 ほとんどすべてのUnixベースのOSには、システム全体のフォント構成、カスタマイズ、アプリケーションへのアクセスを提供するように設計されたFontConfig
ライブラ それ以外の場合は、このライブラリをユーザーが簡単にインストールできます。
Aspose.Wordsは、データをクエリし、FontConfigの結果を独自の目的で解釈する方法を知っています。 デフォルトでは、FontConfig
ユーティリティは無効になっています。 次のようにして有効にできます:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- 次のステップは、TableSubstitutionRuleと呼ばれる単純ですが、非常に強力なメカニズムです。 デフォルトでは、この機能は有効であり、どのOSでも使用できます。 Aspose.Wordsは、異なるOSの基本的な置換規則を定義するXMLテーブルを使用します。 テーブル置換ルールに従って、代替フォント名のリストが使用されます。
XMLOriginalFont-置換されるフォント、SubstituteFonts-コンマで区切られた置換バリアントのリスト。 最初に使用可能なフォントが置換に使用されます。<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
このルールの主な機能は、次の例に示すように、独自の置換テーブルをロードする機能です:
C++既存のテーブルをjarから基本として取得するか、次の方法でプログラムで保存することができます:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++このメカニズムの柔軟性にもかかわらず、以下に示すように、それを無効にする方が良い場合があります:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- テーブル置換ルールがフォントを見つけられない場合は、FontInfo置換ルールが適用されます。 このメカニズムはデフォルトで有効になっています。 Aspose.Wordsは、特定の文書に含まれるフォント情報に従って、最も適したフォントを検索します。 この情報は、以下に示すようにFontInfoクラスから取得できます:
C++ユーザーは、不十分な結果が発生した場合に無効にすることを決定しない限り、この機能のワークフローに干渉することはできません:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++不足しているフォントでFontInfoを使用できない場合、プロセスは停止します。fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
- DefaultFont置換ルールは、
FontInfo
置換も失敗した場合に適用されます。 このルールもデフォルトで有効になっています。 この規則に従って、Aspose.WordsはDefaultFontNameプロパティで指定された既定のフォントを使用しようとします。 ユーザーが独自のデフォルトフォントを選択していない場合は、「Times New Roman」がデフォルトフォントとして使用されます。 このルールは、以下に示すように無効にすることができます:
C++現在の既定のフォントを確認するには、次を使用します:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++独自の代替オプションを設定するには、次の手順を適用します:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Wordsは、
- Aspose.Wordsがフォント置換を実行できない場合は、使用可能なフォントソースから最初に使用可能なフォントを取得しようとします。
- 最後に、Aspose.Wordsが利用可能なフォントソースの中からフォントを見つけることができない場合は、Aspose.Wordsアセンブリに埋め込まれている無料のFanwoodフォントを使
FontInfoが使用可能な場合、FontInfo substitution ruleは常にフォントを解決し、デフォルトのフォントルールを上書きします。 デフォルトのフォントルールを使用する場合は、FontInfo substitution ruleを無効にする必要があります。 ほとんどの場合、FontConfig substitution ruleはフォントを解決し、他のすべてのルールを上書きすることに注意してください。