Freigeben über


Festlegen der Schriftart für einen Textlauf

In diesem Thema wird gezeigt, wie Sie die Klassen im Open XML SDK für Office verwenden, um die Schriftart für einen Teil des Texts in einem Textverarbeitungsdokument programmgesteuert festzulegen.


Pakete und Dokumentteile

Ein Open XML-Dokument wird als Paket gespeichert, dessen Format durch ISO/IEC 29500 definiert wird. Das Paket kann mehrere Teile enthalten, die untereinander in Beziehung stehen. Durch die Beziehung zwischen den Teilen wird die Kategorie des Dokuments gesteuert. Ein Dokument kann als Textverarbeitungsdokument definiert sein, falls sein Paketbeziehungselement eine Beziehung zu einem Hauptdokumentteil besitzt. Falls das Paketbeziehungselement eine Beziehung zu einem Präsentationsteil hat, kann es als Präsentationsdokument definiert sein. Falls das Paketbeziehungselement eine Beziehung zu einem Arbeitsmappenteil hat, ist es als Tabellenkalkulationsdokument definiert. In diesem Thema vom Typ "Gewusst wie" wird ein Textverarbeitungsdokument-Paket verwendet.


Struktur des Laufschriftartelements

Der folgende Text aus der ISO/IEC 29500-Spezifikation kann beim Arbeiten mit rFonts -Elementen nützlich sein.

Mit diesem Element werden die Schriftarten angegeben, die zum Anzeigen der Textinhalte dieses Laufs verwendet werden sollen. Innerhalb eines einzelnen Laufs können bis zu vier Inhaltstypen vorhanden sein, von denen jeder eine eindeutige Schriftart verwenden kann:

  • ASCII

  • High ANSI

  • Komplexe Schriftzeichen

  • Ostasiatische Schriftzeichen

Die Verwendung jeder dieser Schriftarten muss durch die Unicode-Zeichenwerte des Laufinhalts bestimmt werden, es sei denn, diese Einstellung wird mithilfe des cs-Elements manuell außer Kraft gesetzt.

Falls dieses Element nicht vorhanden ist, gibt der Standardwert an, dass die Formatierung beibehalten wird, die auf der vorherigen Ebene in der Formathierarchie angewendet wurde. Falls dieses Element in der Formathierarchie nicht angewendet wird, dann muss der Text in einer beliebigen Standardschriftart angezeigt werden, die jeden Inhaltstyp unterstützt.

Stellen Sie sich einen einzelnen Textlauf mit arabischem und englischem Text wie folgt vor:

English العربية

Dieser Inhalt kann in einem einzelnen WordprocessingML-Lauf ausgedrückt werden:

    <w:r>
      <w:t>English العربية</w:t>
    </w:r>

Obwohl sich die Inhalte in demselben Lauf befinden, liegen sie in verschiedenen Schriftarten vor, indem eine unterschiedliche Schriftart für ASCII- und CS-Zeichen im Lauf angegeben ist:

    <w:r>
      <w:rPr>
        <w:rFonts w:ascii="Courier New" w:cs="Times New Roman" />
      </w:rPr>
      <w:t>English العربية</w:t>
    </w:r>

In diesem Textlauf soll daher die Schriftart Courier New für alle Zeichen im ASCII-Bereich und die Schriftart Times New Roman für alle Zeichen im Bereich "Komplexe Schriftzeichen" verwendet werden.

© ISO/IEC 29500: 2016


Funktionsweise des Beispielcodes

Nach dem Öffnen der Paketdatei für Lese-/Schreibzugriff erstellt der Code ein RunProperties -Objekt, das ein RunFonts -Objekt enthält, dessen -Eigenschaft auf "Arial" festgelegt ist Ascii . RunProperties - und RunFonts -Objekte stellen Ausführungseigenschaftenelemente rPr bzw. Run Fonts-Elemente rFontim Open XML-Wordprocessing-Schema dar. Verwenden Sie ein RunProperties -Objekt, um die Eigenschaften einer bestimmten Textausführung anzugeben. Um in diesem Fall die Schriftart der Ausführung auf Arial festzulegen, erstellt der Code ein RunFonts -Objekt und legt dann den Ascii Wert auf "Arial" fest.

// Set the font to Arial to the first Run.
// Use an object initializer for RunProperties and rPr.
RunProperties rPr = new RunProperties(
    new RunFonts()
    {
        Ascii = "Arial"
    });

Der Code erstellt dann ein Run -Objekt, das die erste Textausführung des Dokuments darstellt. Der Code instanziiert ein Run und legt es auf die erste Textausführung des Dokuments fest. Der Code fügt dann das RunProperties -Objekt mithilfe der RunPrependChild -Methode dem -Objekt hinzu. Die PrependChild -Methode fügt dem angegebenen Element in der XML-Struktur im Arbeitsspeicher ein Element als erstes untergeordnetes Element hinzu. In diesem Fall erzeugt die Ausführung des Codebeispiels eine XML-Struktur im Arbeitsspeicher, in der das RunProperties Element als erstes untergeordnetes Element des Run Elements hinzugefügt wird. Es ist nicht erforderlich, direkt aufzurufen Save , da wir uns in einer using-Anweisung befinden.

if (package.MainDocumentPart is null)
{
    throw new ArgumentNullException("MainDocumentPart is null.");
}

Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
r.PrependChild<RunProperties>(rPr);

Hinweis

In diesem Codebeispiel wird davon ausgegangen, dass das Testtextverarbeitungsdokument unter fileName path mindestens eine Textausführung enthält.

Es folgt der vollständige Beispielcode in C# und Visual Basic.

static void SetRunFont(string fileName)
{
    // Open a Wordprocessing document for editing.
    using (WordprocessingDocument package = WordprocessingDocument.Open(fileName, true))
    {
        // Set the font to Arial to the first Run.
        // Use an object initializer for RunProperties and rPr.
        RunProperties rPr = new RunProperties(
            new RunFonts()
            {
                Ascii = "Arial"
            });

        if (package.MainDocumentPart is null)
        {
            throw new ArgumentNullException("MainDocumentPart is null.");
        }

        Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
        r.PrependChild<RunProperties>(rPr);
    }
}

Siehe auch