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.EmbeddingUsagePermissions před extrahováním nebo redistribucí vloženého fontu — některé fonty jsou licencovány pouze RestrictedLicense nebo PrintAndPreview.
  • Použijte GetEmbeddedFontAsOpenType(), když potřebujete konzistentní výstupní formát bez ohledu na to, jak zdrojový dokument vložil font (EmbeddedOpenType vs OpenType).
  • Nastavte FontInfoCollection.SaveSubsetFonts na true, 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émPříčinaOprava
GetEmbeddedFont() nevrací žádná použitelná dataOdkazovaný font ve skutečnosti není vložen do dokumentuZkontrolujte nastavení vkládání dokumentu, než předpokládáte, že data fontu jsou přítomna
Indexování do FontInfoCollection podle názvu nenajde nicNázev fontu se přesně neshoduje, včetně velikosti písmenVyjmenujte 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ánoPouž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 / MetodaPopis:
FontInfoCollectionFonty odkazované v dokumentu; indexer podle názvu (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts
FontInfoMetadata jednoho písma: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType()Extrahovat vložené bajty fontu
EmbeddedFontFormat / EmbeddedFontStyleEnums určující formát a variantu stylu vloženého písma
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissionsOmezení licence při vkládání hlášená pro každé písmo
FontSettingsMinimální vstupní bod font-settings (Document.FontSettings, LoadOptions.FontSettings); v této edici není řešeno rozlišení font-source

Viz také:

 Čeština