Fonts
Fonts
Deze gids laat zien hoe je de lettertypen die in een document worden aangehaald kunt inspecteren, ingebedde lettertypegegevens kunt extraheren, en TrueType lettertype-embedden bij opslaan kunt regelen met Aspose.Words FOSS voor .NET. Aspose.Words FOSS voor .NET volgt elk lettertype dat door een geladen document wordt aangehaald via FontInfoCollection, en biedt per-lettertype metadata, ingebedde lettertype-extractie, en embedden-bij-opslaan controles via FontInfo. Document.FontSettings en LoadOptions.FontSettings bieden het (opzettelijk minimale, in deze editie) FontSettings instappunt.
Inspectie van gebruikte lettertypen in een document
DocumentBase.FontInfos (geërfd door Document) retourneert een FontInfoCollection die elk lettertype beschrijft dat ergens in het document wordt aangehaald. Indexeer ernaar op naam (bijv. fontInfos["Arial"]), test of het bestaat met Contains(name), tel ze met Count, of doorloop de volledige collectie via GetEnumerator().
Lettertype-eigenschappen en classificatie
Elke FontInfo beschrijft één lettertype: Name en AltName identificeren het, Family classificeert het via de FontFamily enum (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch rapporteert zijn FontPitch (Default, Fixed, Variable), en IsTrueType, Charset en Panose onthullen data op een lager niveau voor lettertype-matching.
Extractie van ingebedde lettertypen
Als een document ingesloten lettertypen heeft, FontInfo.GetEmbeddedFont(format, style) retourneert de ruwe ingesloten lettertype-bytes voor een gegeven EmbeddedFontFormat (EmbeddedOpenType of OpenType) en EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) retourneert het lettertype direct geconverteerd naar OpenType-formaat, ongeacht hoe het oorspronkelijk is ingesloten.
Licentierechten voor het Insluiten van Lettertypen
Voordat u een lettertype extraheert of opnieuw insluit, controleer FontInfo.EmbeddingLicensingRights, een FontEmbeddingLicensingRights-object. EmbeddingUsagePermissions rapporteert het licentieniveau via de FontEmbeddingUsagePermissions enum (Installable, RestrictedLicense, PrintAndPreview, Editable), terwijl NoSubsetting en BitmapEmbeddingOnly verdere beperkingen aangeven die door de lettertype-leverancier zijn ingesteld.
Lettertype-insluiting bij Opslaan Beheren
FontInfoCollection bevat ook insluitingsschakelaars op documentniveau: stel EmbedTrueTypeFonts in op true om elk TrueType lettertype dat in het document wordt gebruikt bij het opslaan in te sluiten, EmbedSystemFonts om lettertypen op te nemen die normaal gesproken op elk systeem aanwezig worden geacht, en SaveSubsetFonts om alleen de daadwerkelijk gebruikte glyphs in te sluiten in plaats van het volledige lettertype.
Reikwijdte van FontSettings in Deze Editie
Document.FontSettings en LoadOptions.FontSettings retourneren beide een FontSettings-object, en FontSettings.DefaultInstance biedt een gedeelde standaardinstantie. In deze FOSS-editie is de FontSettings’ API-laag beperkt tot die standaard-instantie-eigenschap — map-gebaseerde en systeem-lettertype-bronresolutie, die elders in Aspose.Words wordt gebruikt om lettertypen te vervangen of op te lossen voor paginalay-out en rendering, is niet aanwezig, aangezien paginalay-out en rendering buiten de reikwijdte van deze editie vallen. Lettertype-verwerking hier betekent inspectie van metadata en insluiting, niet het vervangen van lettertypen voor rendering.
Tips en Best Practices
- Controleer altijd
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsvoordat je een ingesloten lettertype extraheert of herdistribueert — sommige lettertypen zijn alleen gelicentieerdRestrictedLicenseofPrintAndPreviewalleen. - Gebruik
GetEmbeddedFontAsOpenType()wanneer je een consistent uitvoerformaat nodig hebt, ongeacht hoe het brondocument het lettertype heeft ingesloten (EmbeddedOpenTypeversusOpenType). - Stel
FontInfoCollection.SaveSubsetFontsin optrueom de grootte van het uitvoerbestand te verkleinen wanneer je lettertypen insluit die slechts een handvol glyphs gebruiken. FontInfoCollection.Contains(name)is goedkoper dan indexeren en het afhandelen van een mislukte zoekopdracht (bijv.fontInfos[name]) wanneer je alleen de aanwezigheid van een lettertype wilt testen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
GetEmbeddedFont() retourneert geen bruikbare gegevens | Het genoemde lettertype is niet daadwerkelijk in het document ingebed | Controleer de insluitingsinstellingen van het document voordat u ervan uitgaat dat lettertypegegevens aanwezig zijn |
Indexeren in FontInfoCollection op naam levert niets op | De lettertype-naam komt niet exact overeen, inclusief hoofdlettergebruik | Enumereer FontInfoCollection met GetEnumerator() om de exacte Name tekenreeks te bevestigen |
| Verwachte lettertypevervanging/resolutie-API’s ontbreken | Map- en systeemgebaseerde lettertypebronresolutie is niet geïmplementeerd in deze FOSS-editie | Gebruik FontInfo/FontInfoCollection alleen voor metadata en insluiting; lettertypevervanging voor weergave valt niet binnen de scope van deze editie |
FAQ
Hoe kan ik elk lettertype dat een document refereert, opsommen?
Enumereer Document.FontInfos (een FontInfoCollection) via GetEnumerator(), of indexeer ernaar op naam om een specifieke op te zoeken (bijv. fontInfos["Arial"]).
Kan ik de ruwe bytes van een ingesloten lettertype uit een document halen?
Ja, als het lettertype is ingesloten — roep FontInfo.GetEmbeddedFont(format, style) aan voor het originele ingesloten formaat, of GetEmbeddedFontAsOpenType(style) om het resultaat te normaliseren naar OpenType.
Hoe zorg ik ervoor dat lettertypen worden ingesloten wanneer ik een document opsla?
Stel FontInfoCollection.EmbedTrueTypeFonts in op true vóór het opslaan; voeg EmbedSystemFonts toe als je ook lettertypen wilt aannemen die op elk systeem aanwezig zijn, en SaveSubsetFonts om alleen de gebruikte glyphs in te sluiten.
Ondersteunt deze editie het oplossen van lettertypen uit een aangepaste map voor weergave?
Nee — map- en systeemgebaseerde font-bronresolutie (FontSettings bronconfiguratie) is hier niet geïmplementeerd, omdat het bedoeld is om paginalay-out en weergave te ondersteunen, wat buiten de reikwijdte van deze FOSS-editie valt.
Wat betekent FontEmbeddingLicensingRights.NoSubsetting?
Het is een licentievlag die wordt gerapporteerd door de embed-rechten van de lettertypeleverancier: wanneer true, mag het lettertype niet worden onderverdeeld tot alleen de gebruikte glyphs.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
FontInfoCollection | Lettertypen die in een document worden gerefereerd; indexeer op naam (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadata van één lettertype: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extraheer ingesloten lettertypebytes |
EmbeddedFontFormat / EmbeddedFontStyle | Enums die het formaat en de stijlvariant van een ingesloten lettertype identificeren |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Insluitlicentiebeperkingen gerapporteerd per lettertype |
FontSettings | Minimaal font-settings ingangspunt (Document.FontSettings, LoadOptions.FontSettings); geen font-source resolutie in deze editie |