Fonts
Fonts
Denna guide visar hur man inspekterar de typsnitt som refereras i ett dokument, extraherar inbäddade typsnittsdata och styr TrueType typsnitts-inbäddning vid sparande med Aspose.Words FOSS för .NET. Aspose.Words FOSS för .NET spårar varje typsnitt som refereras av ett laddat dokument via FontInfoCollection, och exponerar per-typsnitt-metadata, inbäddad typsnittsextraktion och inbäddning-vid-sparande-kontroller via FontInfo. Document.FontSettings och LoadOptions.FontSettings tillhandahåller (avsiktligt minimal, i denna utgåva) FontSettings inträdespunkt.
Inspektera typsnitt som används i ett dokument
DocumentBase.FontInfos (ärvd av Document) returnerar en FontInfoCollection som beskriver varje typsnitt som refereras någonstans i dokumentet. Indexera i den efter namn (t.ex. fontInfos["Arial"]), testa om den finns med Contains(name), räkna dem med Count, eller uppräkna hela samlingen via GetEnumerator().
Typsnittsegenskaper och klassificering
Varje FontInfo beskriver ett typsnitt: Name och AltName identifierar det, Family klassificerar det via FontFamily enum (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch rapporterar dess FontPitch (Default, Fixed, Variable), och IsTrueType, Charset och Panose exponerar lägre-nivå data för typsnittsmatchning.
Extrahering av inbäddade typsnitt
Om ett dokument har inbäddade typsnitt, FontInfo.GetEmbeddedFont(format, style) returnerar de råa inbäddade typsnittsbytes för en given EmbeddedFontFormat (EmbeddedOpenType eller OpenType) och EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) returnerar typsnittet konverterat till OpenType-format direkt, oavsett hur det ursprungligen var inbäddat.
Licensrättigheter för typsnittsinbäddning
Innan du extraherar eller återinbäddar ett typsnitt, kontrollera FontInfo.EmbeddingLicensingRights, ett FontEmbeddingLicensingRights-objekt. EmbeddingUsagePermissions rapporterar licensnivån via FontEmbeddingUsagePermissions-enumerationen (Installable, RestrictedLicense, PrintAndPreview, Editable), medan NoSubsetting och BitmapEmbeddingOnly flaggar ytterligare restriktioner som satts av typsnittstillverkaren.
Styrning av typsnittsinbäddning vid sparning
FontInfoCollection innehåller också inbäddningsväxlar på dokumentnivå: sätt EmbedTrueTypeFonts till true för att inbädda varje TrueType typsnitt som används i dokumentet när det sparas, EmbedSystemFonts för att inkludera typsnitt som normalt antas finnas på något system, och SaveSubsetFonts för att inbädda endast de glyfer som faktiskt används snarare än hela typsnittet.
Omfattning av FontSettings i denna utgåva
Document.FontSettings och LoadOptions.FontSettings returnerar båda ett FontSettings-objekt, och FontSettings.DefaultInstance exponerar en gemensam standardinstans. I denna FOSS-utgåva är FontSettingss API-yta begränsad till den standardinstans-egenskapen — mapp-baserad och system-typsnittskällslösning, som på andra ställen i Aspose.Words används för att ersätta eller lösa upp typsnitt för sidlayout och rendering, finns inte, eftersom sidlayout och rendering ligger utanför denna utgavas omfattning. Typsnittshantering här innebär metadata-granskning och inbäddning, inte typsnittsutbyte för rendering.
Tips och bästa praxis
- Kontrollera alltid
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsinnan du extraherar eller distribuerar ett inbäddat teckensnitt — vissa teckensnitt är licensieradeRestrictedLicenseellerPrintAndPreviewendast. - Använd
GetEmbeddedFontAsOpenType()när du behöver ett konsekvent utdataformat oavsett hur källdokumentet inbäddade teckensnittet (EmbeddedOpenTypevsOpenType). - Ställ in
FontInfoCollection.SaveSubsetFontstilltrueför att minska utdatafilens storlek när du bäddar in teckensnitt som bara använder ett fåtal tecken. FontInfoCollection.Contains(name)är billigare än att indexera in och hantera en misslyckad uppslagning (t.ex.fontInfos[name]) när du bara behöver testa om ett teckensnitt finns.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
GetEmbeddedFont() returnerar ingen användbar data | Det refererade teckensnittet är faktiskt inte inbäddat i dokumentet | Kontrollera dokumentets inbäddningsinställningar innan du antar att teckensnittsdata finns |
Indexering i FontInfoCollection efter namn hittar inget | Teckensnittsnamnet matchar inte exakt, inklusive skiftläge | Enumerera FontInfoCollection med GetEnumerator() för att bekräfta den exakta Name strängen |
| Förväntade API:er för typsnittssubstitution/-upplösning saknas | Mapp- och systembaserad upplösning av typsnittskällor är inte implementerad i denna FOSS-utgåva | Använd FontInfo/FontInfoCollection endast för metadata och inbäddning; typsnittssubstitution för rendering ingår inte i denna utgavas omfattning |
FAQ
Hur listar jag alla teckensnitt som ett dokument refererar till?
Enumerera Document.FontInfos (en FontInfoCollection) via GetEnumerator(), eller indexera den efter namn för att slå upp ett specifikt (t.ex. fontInfos["Arial"]).
Kan jag hämta de råa bytena av ett inbäddat teckensnitt ur ett dokument?
Ja, om teckensnittet är inbäddat — anropa FontInfo.GetEmbeddedFont(format, style) för det ursprungliga inbäddade formatet, eller GetEmbeddedFontAsOpenType(style) för att normalisera resultatet till OpenType.
Hur säkerställer jag att teckensnitt är inbäddade när jag sparar ett dokument?
Ställ in FontInfoCollection.EmbedTrueTypeFonts till true innan du sparar; lägg till EmbedSystemFonts om du också behöver teckensnitt som antas finnas på vilket system som helst, och SaveSubsetFonts för att endast inbädda de tecken som används.
Stöder den här utgåvan att lösa upp teckensnitt från en anpassad mapp för rendering?
Nej — mapp- och systembaserad teckensnittskällupplösning (FontSettings källkonfiguration) är inte implementerad här, eftersom den finns för att stödja sidlayout och rendering, vilket ligger utanför denna FOSS-utgåvas omfattning.
Vad betyder FontEmbeddingLicensingRights.NoSubsetting?
Det är en licensflagga som rapporteras av teckensnittstillverkarens inbäddningsrättigheter: när true får teckensnittet inte delas upp till endast de tecken som används.
API Reference Sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
FontInfoCollection | Typsnitt som refereras i ett dokument; indexering efter namn (fontInfos[name]), Contains(), Count, GetEnumerator(), samt EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Ett typsnitts metadata: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extrahera inbäddade typsnittsbyte |
EmbeddedFontFormat / EmbeddedFontStyle | Enumar som identifierar ett inbäddat typsnitts format och stilvariant |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Inbäddningslicensrestriktioner rapporterade per typsnitt |
FontSettings | Minimal font-inställnings ingångspunkt (Document.FontSettings, LoadOptions.FontSettings); ingen fontkälla-upplösning i denna utgåva |