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.EmbeddingUsagePermissions innan du extraherar eller distribuerar ett inbäddat teckensnitt — vissa teckensnitt är licensierade RestrictedLicense eller PrintAndPreview endast.
  • Använd GetEmbeddedFontAsOpenType() när du behöver ett konsekvent utdataformat oavsett hur källdokumentet inbäddade teckensnittet (EmbeddedOpenType vs OpenType).
  • Ställ in FontInfoCollection.SaveSubsetFonts till true fö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

ProblemOrsakÅtgärd
GetEmbeddedFont() returnerar ingen användbar dataDet refererade teckensnittet är faktiskt inte inbäddat i dokumentetKontrollera dokumentets inbäddningsinställningar innan du antar att teckensnittsdata finns
Indexering i FontInfoCollection efter namn hittar ingetTeckensnittsnamnet matchar inte exakt, inklusive skiftlägeEnumerera FontInfoCollection med GetEnumerator() för att bekräfta den exakta Name strängen
Förväntade API:er för typsnittssubstitution/-upplösning saknasMapp- och systembaserad upplösning av typsnittskällor är inte implementerad i denna FOSS-utgåvaAnvä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 / MetodBeskrivning
FontInfoCollectionTypsnitt som refereras i ett dokument; indexering efter namn (fontInfos[name]), Contains(), Count, GetEnumerator(), samt EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts
FontInfoEtt typsnitts metadata: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType()Extrahera inbäddade typsnittsbyte
EmbeddedFontFormat / EmbeddedFontStyleEnumar som identifierar ett inbäddat typsnitts format och stilvariant
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissionsInbäddningslicensrestriktioner rapporterade per typsnitt
FontSettingsMinimal font-inställnings ingångspunkt (Document.FontSettings, LoadOptions.FontSettings); ingen fontkälla-upplösning i denna utgåva

Se även

 Svenska