Fonts
Fonts
Ez az útmutató bemutatja, hogyan lehet ellenőrizni a dokumentumban hivatkozott betűtípusokat, kinyerni a beágyazott betűtípus-adatokat, és szabályozni a TrueType betűtípus beágyazását mentéskor a Aspose.Words FOSS segítségével .NET számára. A Aspose.Words FOSS .NET számára nyomon követi a betöltött dokumentum által hivatkozott minden betűtípust a FontInfoCollection révén, és elérhetővé teszi betűtípusonkénti metaadatokat, beágyazott betűtípus-kinyerést, valamint a mentéskor történő beágyazás vezérlését a FontInfo segítségével. A Document.FontSettings és a LoadOptions.FontSettings biztosítják a (szándékosan minimális, ebben a kiadásban) FontSettings belépési pontot.
A dokumentumban használt betűtípusok ellenőrzése
DocumentBase.FontInfos (a Document által örökölt) egy FontInfoCollection értékkel tér vissza, amely leírja a dokumentumban bárhol hivatkozott minden betűtípust. Indexelhető név szerint (pl. fontInfos["Arial"]), létezését Contains(name) segítségével tesztelhető, megszámolható Count használatával, vagy az egész gyűjtemény felsorolható a GetEnumerator() segítségével.
Betűtípus tulajdonságai és osztályozása
Minden FontInfo egy betűtípust ír le: a Name és a AltName azonosítja, a Family a FontFamily felsorolt típus (enum) (Auto, Roman, Swiss, Modern, Script, Decorative) segítségével osztályozza, a Pitch jelenti a FontPitch értékét (Default, Fixed, Variable), és a IsTrueType, Charset és Panose alacsonyabb szintű betűtípus-illesztési adatokat tesznek elérhetővé.
Beágyazott betűtípus kinyerése
Ha egy dokumentumnak beágyazott betűtípusai vannak, a FontInfo.GetEmbeddedFont(format, style) visszaadja a nyers beágyazott betűtípus bájtokat egy adott EmbeddedFontFormat (EmbeddedOpenType vagy OpenType) és EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic) esetén. A GetEmbeddedFontAsOpenType(style) közvetlenül visszaadja a betűtípust OpenType formátumba konvertálva, függetlenül attól, hogyan lett eredetileg beágyazva.
Betűtípus-beágyazási licencjogok
Mielőtt egy betűtípust kinyernénk vagy újra beágyaznánk, ellenőrizze a FontInfo.EmbeddingLicensingRights objektumot, amely egy FontEmbeddingLicensingRights objektum. A EmbeddingUsagePermissions a licencszintet a FontEmbeddingUsagePermissions enumeráció (Installable, RestrictedLicense, PrintAndPreview, Editable) segítségével jelenti, míg a NoSubsetting és a BitmapEmbeddingOnly további korlátozásokat jelölnek, amelyeket a betűtípus-gyártó állapított fel.
A betűtípus-beágyazás ellenőrzése mentéskor
FontInfoCollection dokumentumszintű beágyazási kapcsolókat is tartalmaz: állítsa a EmbedTrueTypeFonts értékét true-re, hogy a dokumentumban használt minden TrueType betűtípust beágyazza mentéskor, a EmbedSystemFonts-t, hogy a normál esetben bármely rendszeren jelen lévőnek feltételezett betűtípusokat is belefoglalja, és a SaveSubsetFonts-t, hogy csak a ténylegesen használt glifeket ágyazza be, nem pedig a teljes betűtípust.
FontSettings hatóköre ebben a kiadásban
Document.FontSettings és LoadOptions.FontSettings egyaránt egy FontSettings objektumot ad vissza, és a FontSettings.DefaultInstance egy közös alapértelmezett példányt tesz elérhetővé. Ebben a FOSS kiadásban a FontSettings API felülete csak erre az alapértelmezett példány tulajdonságra korlátozódik – a mappákon alapuló és a rendszer betűtípus-forrás feloldása, amely máshol a Aspose.Words-ben a betűtípusok helyettesítésére vagy feloldására szolgál az oldalelrendezés és renderelés során, nincs jelen, mivel az oldalelrendezés és renderelés kívül esik ennek a kiadásnak a hatókörén. Itt a betűtípus-kezelés a metaadat-ellenőrzést és a beágyazást jelenti, nem a betűtípus helyettesítést a rendereléshez.
Tippek és bevált gyakorlatok
- Mindig ellenőrizze a
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissions-t, mielőtt egy beágyazott betűtípust kicsomagolna vagy terjesztene — egyes betűtípusok csakRestrictedLicensevagyPrintAndPreviewlicenc alatt állnak. - Használja a
GetEmbeddedFontAsOpenType()-t, ha következetes kimeneti formátumra van szüksége, függetlenül attól, hogy a forrásdokumentum hogyan ágyazta be a betűtípust (EmbeddedOpenTypekontraOpenType). - Állítsa a
FontInfoCollection.SaveSubsetFonts-ttrueértékre, hogy csökkentse a kimeneti fájlméretet, ha csak néhány glifet használó betűtípusokat ágyaz be. - A
FontInfoCollection.Contains(name)olcsóbb, mint egy indexelés és egy sikertelen keresés kezelése (példáulfontInfos[name]), ha csak a betűtípus létezését kell ellenőrizni.
Gyakori problémák
| Probléma | Oka | Javítás |
|---|---|---|
GetEmbeddedFont() nem ad vissza felhasználható adatot | A hivatkozott betűtípus valójában nincs beágyazva a dokumentumban | Ellenőrizze a dokumentum beágyazási beállításait, mielőtt azt feltételezné, hogy a betűtípus adatok jelen vannak |
A FontInfoCollection név szerinti indexelése nem talál semmit | A betűtípus neve nem egyezik pontosan, beleértve a kis- és nagybetűket | Felsorolja FontInfoCollection GetEnumerator() segítségével a pontos Name string megerősítéséhez |
| A várt betűtípus helyettesítési/felbontási API-k hiányoznak | A mappa- és rendszeralapú betűtípus-forrás feloldás nincs megvalósítva ebben a FOSS kiadásban | Használja a(z) FontInfo/FontInfoCollection kombinációt csak metaadatokhoz és beágyazáshoz; a betűtípus helyettesítés a megjelenítéshez nem része ennek a kiadásnak |
FAQ
Hogyan listázhatom ki az összes betűtípust, amelyre egy dokumentum hivatkozik?
Enumerálja a Document.FontInfos-t (egy FontInfoCollection) a GetEnumerator() segítségével, vagy indexeljen rá név szerint, hogy egy konkrét elemet keressen (például fontInfos["Arial"]).
Kinyerhetem egy beágyazott betűtípus nyers bájtjait a dokumentumból?
Igen, ha a betűtípus be van ágyazva — hívd a FontInfo.GetEmbeddedFont(format, style) az eredeti beágyazott formátumért, vagy a GetEmbeddedFontAsOpenType(style) a végeredmény OpenType formátumra normalizálásához.
Hogyan biztosíthatom, hogy a betűtípusok be legyenek ágyazva, amikor dokumentumot mentek?
Állítsd be a FontInfoCollection.EmbedTrueTypeFonts értékét true értékre a mentés előtt; add hozzá a EmbedSystemFonts ha azt is szeretnéd, hogy a betűtípusok minden rendszerben feltételezettek legyenek, és a SaveSubsetFonts csak a használatban lévő glypheket ágyazza be.
Támogatja-e ez a kiadás a betűtípusok egyedi mappából való feloldását a megjelenítéshez?
Nem — a mappa- és rendszeralapú betűtípusforrás feloldása (FontSettings forráskonfiguráció) nincs megvalósítva itt, mivel ez az oldalelrendezés és a renderelés szolgálatára létezik, amelyek kívül esnek e FOSS kiadás hatáskörén.
Mit jelent a FontEmbeddingLicensingRights.NoSubsetting?
Ez egy licencjelző, amelyet a betűtípus-gyártó beágyazási jogai jelentenek: amikor true, a betűtípus nem szegmentálható csak a használatban lévő glyphekre.
API Reference Összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
FontInfoCollection | A dokumentumban hivatkozott betűtípusok; indexelő név szerint (fontInfos[name]), Contains(), Count, GetEnumerator(), valamint EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Egy betűtípus metaadatai: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Beágyazott betűtípus bájtjainak kinyerése |
EmbeddedFontFormat / EmbeddedFontStyle | Enumok, amelyek azonosítják a beágyazott betűtípus formátumát és stílusvariánsát |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Betűtípusonként jelentett beágyazási licenckorlátozások |
FontSettings | Minimális betűtípus-beállítások belépési pont (Document.FontSettings, LoadOptions.FontSettings); nincs betűtípus-forrás feloldás ebben a kiadásban |