Fonts
Fonts
Tento průvodce ukazuje, jak prozkoumat písma odkazovaná v dokumentu, extrahovat vložená data písem a řídit TrueType vkládání písem při uložení pomocí Aspose.Words FOSS pro .NET. Aspose.Words FOSS pro .NET sleduje každé písmo odkazované načteným dokumentem prostřednictvím FontInfoCollection a poskytuje per-font metadata, extrakci vložených písem a ovládání vkládání při uložení skrze FontInfo. Document.FontSettings a LoadOptions.FontSettings poskytují (záměrně minimální, v tomto vydání) FontSettings vstupní bod.
Prohlížení písem použitých v dokumentu
DocumentBase.FontInfos (zděděné od Document) vrací FontInfoCollection popisující každé písmo odkazované kdekoliv v dokumentu. Indexujte jej podle názvu (např. fontInfos["Arial"]), otestujte, zda existuje pomocí Contains(name), spočítejte je pomocí Count nebo vyjmenujte celou kolekci pomocí GetEnumerator().
Vlastnosti písem a klasifikace
Každý FontInfo popisuje jedno písmo: Name a AltName jej identifikují, Family jej klasifikuje pomocí výčtu FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch hlásí jeho FontPitch (Default, Fixed, Variable) a IsTrueType, Charset a Panose odhalují data o nižší úrovni při porovnávání písem.
Extrahování vložených písem
Pokud má dokument vložená písma, FontInfo.GetEmbeddedFont(format, style) vrací surové bajty vloženého písma pro daný EmbeddedFontFormat (EmbeddedOpenType nebo OpenType) a EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) vrací písmo převedené přímo do formátu OpenType, bez ohledu na to, jak bylo původně vloženo.
Práva licencování vkládání písem
Před extrahováním nebo opětovným vložením písma zkontrolujte FontInfo.EmbeddingLicensingRights, objekt FontEmbeddingLicensingRights. EmbeddingUsagePermissions hlásí úroveň licence pomocí výčtu FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), zatímco NoSubsetting a BitmapEmbeddingOnly označují další omezení nastavená poskytovatelem písma.
Řízení vkládání písem při ukládání
FontInfoCollection také obsahuje přepínače vkládání na úrovni dokumentu: nastavte EmbedTrueTypeFonts na true, aby se při uložení vložilo každé TrueType písmo použité v dokumentu, EmbedSystemFonts pro zahrnutí písem, která jsou běžně považována za dostupná v jakémkoli systému, a SaveSubsetFonts pro vložení pouze skutečně použitých glyfů místo celého písma.
Rozsah FontSettings v této edici
Document.FontSettings a LoadOptions.FontSettings oba vracejí objekt FontSettings a FontSettings.DefaultInstance poskytuje sdílenou výchozí instanci. V této FOSS edici je rozhraní FontSettings’ API omezeno na tuto vlastnost výchozí instance — řešení písem na základě složek a systémových zdrojů, které je jinde v Aspose.Words používáno k nahrazení nebo řešení písem pro rozvržení stránky a vykreslování, není přítomno, protože rozvržení stránky a vykreslování jsou mimo rozsah této edice. Zpracování písem zde znamená inspekci metadat a vkládání, nikoli nahrazování písem pro vykreslování.
Tipy a osvědčené postupy
- Vždy zkontrolujte
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionspřed extrahováním nebo redistribucí vloženého fontu — některé fonty jsou licencovány pouzeRestrictedLicenseneboPrintAndPreview. - Použijte
GetEmbeddedFontAsOpenType(), když potřebujete konzistentní výstupní formát bez ohledu na to, jak zdrojový dokument vložil font (EmbeddedOpenTypevsOpenType). - Nastavte
FontInfoCollection.SaveSubsetFontsnatrue, abyste snížili velikost výstupního souboru při vkládání fontů, které používají jen několik glyfů. FontInfoCollection.Contains(name)je levnější než indexování a zpracování neúspěšného vyhledávání (např.fontInfos[name]), pokud potřebujete pouze otestovat přítomnost fontu.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
GetEmbeddedFont() nevrací žádná použitelná data | Odkazovaný font ve skutečnosti není vložen do dokumentu | Zkontrolujte nastavení vkládání dokumentu, než předpokládáte, že data fontu jsou přítomna |
Indexování do FontInfoCollection podle názvu nenajde nic | Název fontu se přesně neshoduje, včetně velikosti písmen | Vyjmenujte FontInfoCollection pomocí GetEnumerator(), abyste potvrdili přesný řetězec Name |
| Očekávaná API pro nahrazení/rozlišení fontů chybí | Rozlišení zdroje fontů založené na složce a systému není v této FOSS edici implementováno | Použijte FontInfo/FontInfoCollection pouze pro metadata a vkládání; nahrazení fontů při vykreslování není součástí rozsahu této edice |
FAQ
Jak mohu vypsat všechny fonty, na které se dokument odkazuje?
Vypište Document.FontInfos (a FontInfoCollection) pomocí GetEnumerator(), nebo do něj indexujte podle názvu, abyste našli konkrétní (např. fontInfos["Arial"]).
Mohu získat surové bajty vloženého fontu z dokumentu?
Ano, pokud je font vložen — zavolejte FontInfo.GetEmbeddedFont(format, style) pro původní vložený formát, nebo GetEmbeddedFontAsOpenType(style) pro normalizaci výsledku na OpenType.
Jak zajistit, aby byly fonty vloženy při ukládání dokumentu?
Nastavte FontInfoCollection.EmbedTrueTypeFonts na true před uložením; přidejte EmbedSystemFonts, pokud také potřebujete fonty předpokládané jako přítomné na jakémkoli systému, a SaveSubsetFonts pro vložení pouze glyphů, které jsou používány.
Podporuje tato edice načítání fontů z vlastního adresáře pro vykreslování?
Ne — řešení zdrojů fontů na základě složek a systému (FontSettings konfigurace zdroje) není zde implementováno, protože slouží pro rozvržení stránky a vykreslování, což je mimo rozsah této FOSS edice.
Co znamená FontEmbeddingLicensingRights.NoSubsetting?
Jedná se o licenční příznak hlášený právy na vkládání poskytovatele fontu: když je true, font nesmí být podmnožinován pouze na glyphy, které jsou používány.
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
FontInfoCollection | Fonty odkazované v dokumentu; indexer podle názvu (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadata jednoho písma: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extrahovat vložené bajty fontu |
EmbeddedFontFormat / EmbeddedFontStyle | Enums určující formát a variantu stylu vloženého písma |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Omezení licence při vkládání hlášená pro každé písmo |
FontSettings | Minimální vstupní bod font-settings (Document.FontSettings, LoadOptions.FontSettings); v této edici není řešeno rozlišení font-source |