---
title: "MFontC++での可用性と置換"
---

文書内のテキストは、Arial、Times New Roman、Verdanaなどのさまざまなフォントで書式設定できます。 Aspose.Wordsがドキュメントをレンダリングするとき、ドキュメントで指定されているフォントを選択しようとします。

ただし、正確なフォントが見つからず、代わりにAspose.Wordsが同様のフォントに置き換える必要がある状況があります。 Aspose.Wordsは、次のプロセスに従ってフォントを選択します:

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

```

**FontInfo**が使用可能な場合、*FontInfo substitution rule*は常にフォントを解決し、デフォルトのフォントルールを上書きします。 デフォルトのフォントルールを使用する場合は、*FontInfo substitution rule*を無効にする必要があります。 ほとんどの場合、*FontConfig substitution rule*はフォントを解決し、他のすべてのルールを上書きすることに注意してください。

```

