Fonts

Fonts

Dieses Handbuch zeigt, wie man die in einem Dokument referenzierten Schriften inspiziert, eingebettete Schriftartdaten extrahiert und das TrueType Einbetten von Schriften beim Speichern mit Aspose.Words FOSS für .NET steuert. Aspose.Words FOSS für .NET verfolgt jede von einem geladenen Dokument referenzierte Schrift über FontInfoCollection und stellt pro-Schrift-Metadaten, eingebettete Schrift-Extraktion sowie Einbetten-beim-Speichern-Steuerungen über FontInfo bereit. Document.FontSettings und LoadOptions.FontSettings bieten den (absichtlich minimalen, in dieser Ausgabe) FontSettings Einstiegspunkt.


Untersuchung der im Dokument verwendeten Schriften

DocumentBase.FontInfos (geerbt von Document) liefert ein FontInfoCollection, das jede im Dokument irgendwo referenzierte Schrift beschreibt. Greifen Sie per Name darauf zu (z.B. fontInfos["Arial"]), prüfen Sie mit Contains(name), ob sie existiert, zählen Sie sie mit Count oder enumerieren Sie die gesamte Sammlung über GetEnumerator().


Schrifteigenschaften und Klassifizierung

Jedes FontInfo beschreibt eine Schrift: Name und AltName identifizieren sie, Family klassifiziert sie über das FontFamily-Enum (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch gibt ihr FontPitch (Default, Fixed, Variable) aus, und IsTrueType, Charset und Panose stellen niedrigere Font-Matching-Daten bereit.


Extraktion eingebetteter Schriften

Wenn ein Dokument eingebettete Schriftarten hat, gibt FontInfo.GetEmbeddedFont(format, style) die rohen eingebetteten Schriftart-Bytes für ein gegebenes EmbeddedFontFormat (EmbeddedOpenType oder OpenType) und EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic) zurück. GetEmbeddedFontAsOpenType(style) gibt die Schriftart direkt im OpenType-Format zurück, unabhängig davon, wie sie ursprünglich eingebettet wurde.


Lizenzrechte für das Einbetten von Schriftarten

Bevor Sie eine Schriftart extrahieren oder erneut einbetten, prüfen Sie FontInfo.EmbeddingLicensingRights, ein FontEmbeddingLicensingRights-Objekt. EmbeddingUsagePermissions meldet die Lizenzstufe über das FontEmbeddingUsagePermissions-Enum (Installable, RestrictedLicense, PrintAndPreview, Editable), während NoSubsetting und BitmapEmbeddingOnly weitere vom Schriftartenhersteller festgelegte Einschränkungen kennzeichnen.


Steuerung der Schriftarten-Einbettung beim Speichern

FontInfoCollection enthält zudem schreibebene Einbettungsschalter: Setzen Sie EmbedTrueTypeFonts auf true, um jede TrueType-Schriftart, die im Dokument verwendet wird, beim Speichern einzubetten, EmbedSystemFonts, um Schriftarten einzuschließen, die normalerweise auf jedem System vorhanden sein sollen, und SaveSubsetFonts, um nur die tatsächlich genutzten Glyphen statt der gesamten Schriftart einzubetten.


Geltungsbereich von FontSettings in dieser Ausgabe

Document.FontSettings und LoadOptions.FontSettings geben beide ein FontSettings-Objekt zurück, und FontSettings.DefaultInstance stellt eine gemeinsam genutzte Standardinstanz bereit. In dieser FOSS-Ausgabe ist die FontSettings’ API Oberfläche auf jene Standardinstanz-Eigenschaft beschränkt – die auf Ordnern basierende und systemweite Schriftquellen-Auflösung, die andernorts in Aspose.Words zum Ersetzen oder Auflösen von Schriftarten für Seitenlayout und Rendering verwendet wird, fehlt, da Seitenlayout und Rendering außerhalb des Geltungsbereichs dieser Ausgabe liegen. Die Schriftarten-Verarbeitung hier bedeutet Metadaten-Inspektion und Einbettung, nicht das Ersetzen von Schriftarten für das Rendering.


Tipps und bewährte Praktiken

  • Überprüfen Sie immer FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissions, bevor Sie eine eingebettete Schriftart extrahieren oder weiterverbreiten — einige Schriftarten sind nur RestrictedLicense oder PrintAndPreview lizenziert.
  • Verwenden Sie GetEmbeddedFontAsOpenType(), wenn Sie ein konsistentes Ausgabeformat benötigen, unabhängig davon, wie das Quelldokument die Schriftart eingebettet hat (EmbeddedOpenType vs OpenType).
  • Setzen Sie FontInfoCollection.SaveSubsetFonts auf true, um die Ausgabedateigröße zu reduzieren, wenn Sie Schriftarten einbetten, die nur eine Handvoll Glyphen verwenden.
  • FontInfoCollection.Contains(name) ist günstiger als das Indizieren und Verarbeiten einer fehlgeschlagenen Suche (z.B. fontInfos[name]), wenn Sie nur das Vorhandensein einer Schriftart testen müssen.

Häufige Probleme

ProblemUrsacheLösung
GetEmbeddedFont() liefert keine nutzbaren DatenDie referenzierte Schriftart ist im Dokument nicht tatsächlich eingebettetÜberprüfen Sie die Einbettungseinstellungen des Dokuments, bevor Sie davon ausgehen, dass Schriftartdaten vorhanden sind
Das Indizieren von FontInfoCollection nach Namen liefert nichtsDer Schriftartname stimmt nicht exakt überein, einschließlich Groß-/KleinschreibungEnumerieren Sie FontInfoCollection mit GetEnumerator(), um die genaue Name-Zeichenkette zu bestätigen
Erwartete APIs für Schriftart-Substitution/Auflösung fehlenDie auf Ordnern und Systemen basierende Auflösung von Schriftquellen ist in dieser FOSS-Edition nicht implementiertVerwenden Sie FontInfo/FontInfoCollection nur für Metadaten und Einbettung; Schriftart-Substitution für die Darstellung gehört nicht zum Umfang dieser Edition

FAQ

Wie kann ich jede Schriftart auflisten, die ein Dokument referenziert?

Enumerieren Sie Document.FontInfos (ein FontInfoCollection) über GetEnumerator() oder greifen Sie per Namen darauf zu, um ein bestimmtes Element nachzuschlagen (z.B. fontInfos["Arial"]).

Kann ich die Rohbytes eines eingebetteten Fonts aus einem Dokument extrahieren?

Ja, falls die Schriftart eingebettet ist — rufen Sie FontInfo.GetEmbeddedFont(format, style) für das ursprüngliche eingebettete Format auf, oder GetEmbeddedFontAsOpenType(style), um das Ergebnis zu OpenType zu normalisieren.

Wie stelle ich sicher, dass Schriften beim Speichern eines Dokuments eingebettet werden?

Setzen Sie FontInfoCollection.EmbedTrueTypeFonts auf true vor dem Speichern; fügen Sie EmbedSystemFonts hinzu, falls Sie außerdem Schriften voraussetzen, die auf jedem System vorhanden sein sollen, und SaveSubsetFonts, um nur die tatsächlich genutzten Glyphen einzubetten.

Unterstützt diese Edition das Auflösen von Schriften aus einem benutzerdefinierten Ordner für das Rendering?

Nein — die ordner- und systembasierte Auflösung von Schriftquellen (FontSettings Quellkonfiguration) ist hier nicht implementiert, da sie der Seitenlayout- und Rendering-Unterstützung dient, die außerhalb des Geltungsbereichs dieser FOSS-Edition liegen.

Was bedeutet FontEmbeddingLicensingRights.NoSubsetting?

Es ist ein Lizenz-Flag, das von den Einbettungsrechten des Font-Anbieters gemeldet wird: Wenn true, darf die Schrift nicht nur auf die tatsächlich verwendeten Glyphen reduziert werden.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
FontInfoCollectionSchriften, die in einem Dokument referenziert werden; Indexer nach Name (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts
FontInfoMetadaten einer Schriftart: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType()Eingebettete Schriftbytes extrahieren
EmbeddedFontFormat / EmbeddedFontStyleEnums zur Identifizierung des Formats und der Stilvariante einer eingebetteten Schriftart
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissionsEinbettungs-Lizenzbeschränkungen pro Schriftart
FontSettingsMinimaler font-settings Einstiegspunkt (Document.FontSettings, LoadOptions.FontSettings); keine font-source Auflösung in dieser Ausgabe

Siehe auch

 Deutsch