Verfügbarkeit und Ersetzung von Schriftarten

Contents
[ ]

Ein Text in einem Dokument kann mit verschiedenen Schriftarten formatiert werden, z. B. Arial, Times New Roman, Verdana und anderen. Wenn Aspose.Words ein Dokument rendert, versucht es, die im Dokument angegebenen Schriftarten auszuwählen.

Es gibt jedoch Situationen, in denen die genaue Schriftart nicht gefunden werden kann und Aspose.Words sie stattdessen durch eine ähnliche Schriftart ersetzen muss. Aspose.Words wählt die Schriftart gemäß dem folgenden Prozess aus:

  1. Aspose.Words versucht, eine Schriftart unter den verfügbaren Schriftquellen mit einem genauen Schriftnamen zu finden.
  2. Aspose.Words versucht, die erforderliche Schriftart unter den im Originaldokument eingebetteten Schriftarten zu finden. Einige Dokumentformate wie DOCX können eingebettete Schriftarten enthalten.
  3. Wenn Aspose.Words die erforderliche Schriftart mit der genauen Namensübereinstimmung und der für diese Schriftart definierten Eigenschaft AltName nicht finden kann, findet Aspose.Words die mit AltName definierte Schriftart aus der Klasse FontInfo, die die Schriftarteninformationen angibt.
  4. Wenn Aspose.Words die definierte Schriftart nicht finden kann und AltName nicht ebenfalls definiert ist, werden die Regeln für die Schriftartenersetzung nacheinander angewendet, wie unten beschrieben (wenn die entsprechende Ersetzung gefunden wurde, stoppt der Schriftartenersetzungsprozess und der nächste Schritt wird nicht ausgeführt.):
    1. Aspose.Words versucht, OS Schriftarteinstellungen, sofern verfügbar, mithilfe des Dienstprogramms FontConfig anzuwenden. Diese Nicht-Windows-Funktion muss mit einem FontConfig-kompatiblen OS verwendet werden. Fast jedes Unix-basierte OS verfügt bereits über eine FontConfig -Bibliothek, die eine systemweite Schriftkonfiguration, Anpassung und Zugriff auf Anwendungen ermöglicht. Ansonsten kann diese Bibliothek einfach vom Benutzer installiert werden.
      Aspose.Words weiß, wie man Daten abfragt und FontConfig Ergebnisse für seine eigenen Zwecke interpretiert. Standardmäßig ist das Dienstprogramm FontConfig deaktiviert. Sie können es wie folgt aktivieren:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
            
      
    2. Der nächste Schritt ist ein einfacher, aber unglaublich mächtiger Mechanismus namens TableSubstitutionRule. Standardmäßig ist diese Funktion aktiv und für alle OS verfügbar. Aspose.Words verwendet XML -Tabellen, die grundlegende Substitutionsregeln für verschiedene OS definieren. Gemäß der Tabellenersetzungsregel wird die Liste der Ersatzschriftnamen verwendet.
      XML
            <TableSubstitutionSettings xmlns="Aspose.Words"> 
      	<SubstitutesTable> 
      		<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /></SubstitutesTable> 
            </TableSubstitutionSettings>
            
      OriginalFont - eine zu ersetzende Schriftart, SubstituteFonts - Liste der Ersetzungsvarianten, getrennt durch ein Komma. Die erste verfügbare Schriftart wird zum Ersetzen verwendet.
      Das Hauptmerkmal dieser Regel ist die Möglichkeit, eigene Ersetzungstabellen zu laden, wie im folgenden Beispiel gezeigt:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
            
      
      Sie können die vorhandene Tabelle aus dem Glas als Grundlage nehmen oder sie programmgesteuert auf folgende Weise speichern:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
            
      
      Trotz der Flexibilität dieses Mechanismus gibt es einige Fälle, in denen es besser ist, ihn zu deaktivieren, wie unten gezeigt:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
            
      
    3. Die Ersetzungsregel FontInfo wird angewendet, wenn die Tabellenersetzungsregel die Schriftart nicht finden kann. Dieser Mechanismus ist standardmäßig aktiviert. Aspose.Words findet die am besten geeignete Schriftart gemäß den in einem bestimmten Dokument enthaltenen Schriftarteninformationen. Diese Informationen können wie unten gezeigt von der Klasse FontInfo abgerufen werden:
      C++
            System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
            
      
      Benutzer können nicht in den Workflow dieser Funktion eingreifen, es sei denn, sie entscheiden sich, sie bei unbefriedigenden Ergebnissen zu deaktivieren:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
            
      
      Wenn FontInfo für die fehlende Schriftart nicht verfügbar ist, stoppt der Prozess.
    4. DefaultFont Ersetzungsregel wird angewendet, wenn die FontInfo Ersetzung ebenfalls fehlgeschlagen ist. Diese Regel ist auch standardmäßig aktiviert. Gemäß dieser Regel versucht Aspose.Words, die in der Eigenschaft DefaultFontName angegebene Standardschriftart zu verwenden. Wenn der Benutzer keine eigene Standardschriftart ausgewählt hat, wird “Times New Roman” als Standardschriftart verwendet. Diese Regel kann wie unten gezeigt deaktiviert werden:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
            
      
      Um die aktuelle Standardschriftart zu überprüfen, verwenden Sie:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
            
      
      Um Ihre eigene Ersatzoption einzurichten, bewerben Sie sich:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
            
      
  5. Wenn Aspose.Words die Schriftartenersetzung nicht durchführen kann, versucht es, die erste verfügbare Schriftart aus verfügbaren Schriftartquellen abzurufen.
  6. Wenn Aspose.Words schließlich keine Schriftarten unter den verfügbaren Schriftquellen finden kann, wird das Dokument mit der kostenlosen Fanwood-Schriftart gerendert, die in die Aspose.Words -Assembly eingebettet ist.