Fonts
Fonts
Acest ghid arată cum să inspectați fonturile referențiate într-un document, să extrageți datele de font încorporate și să controlați încorporarea fonturilor TrueType la salvare cu Aspose.Words FOSS pentru .NET. Aspose.Words FOSS pentru .NET urmărește fiecare font referențiat de un document încărcat prin FontInfoCollection și expune metadatele per-font, extragerea fonturilor încorporate și controalele de încorporare la salvare prin FontInfo. Document.FontSettings și LoadOptions.FontSettings furnizează (deliberat minim, în această ediție) punctul de intrare FontSettings.
Inspectarea fonturilor utilizate într-un document
DocumentBase.FontInfos (moștenit de Document) returnează un FontInfoCollection care descrie fiecare font referențiat în orice parte a documentului. Accesați-l prin nume (de ex. fontInfos["Arial"]), verificați existența cu Contains(name), numărați-le cu Count sau enumerați întreaga colecție prin GetEnumerator().
Proprietăți și clasificare a fonturilor
Fiecare FontInfo descrie un font: Name și AltName îl identifică, Family îl clasifică prin enum-ul FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch raportează FontPitch (Default, Fixed, Variable), și IsTrueType, Charset și Panose expun date de potrivire a fonturilor la nivel inferior.
Extragerea fonturilor încorporate
Dacă un document are fonturi încorporate, FontInfo.GetEmbeddedFont(format, style) returnează octeții brute ale fontului încorporat pentru un anumit EmbeddedFontFormat (EmbeddedOpenType sau OpenType) și EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) returnează fontul convertit direct în formatul OpenType, indiferent de modul în care a fost inițial încorporat.
Drepturi de licențiere pentru încorporarea fonturilor
Înainte de a extrage sau reîncărca un font, verificați FontInfo.EmbeddingLicensingRights, un obiect FontEmbeddingLicensingRights. EmbeddingUsagePermissions raportează nivelul licenței prin enumerația FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), în timp ce NoSubsetting și BitmapEmbeddingOnly semnalizează restricții suplimentare impuse de furnizorul fontului.
Controlul încorporării fonturilor la salvare
FontInfoCollection conține, de asemenea, comutatoare de încorporare la nivel de document: setați EmbedTrueTypeFonts la true pentru a încorpora fiecare font TrueType utilizat în document la salvare, EmbedSystemFonts pentru a include fonturi care se presupune că sunt prezente pe orice sistem, și SaveSubsetFonts pentru a încorpora doar glifele efectiv utilizate, nu întregul font.
Domeniul de aplicare al FontSettings în această versiune
Document.FontSettings și LoadOptions.FontSettings returnează ambele un obiect FontSettings, iar FontSettings.DefaultInstance expune o instanță implicită partajată. În această versiune FOSS, suprafața API a lui FontSettings este limitată la acea proprietate de instanță implicită — rezoluția surselor de fonturi bazate pe dosare și sistem, care în altă parte în Aspose.Words este folosită pentru a substitui sau rezolva fonturi în aranjamentul și randarea paginilor, nu este prezentă, deoarece aranjamentul și randarea paginilor ies din domeniul acestei variante. Manipularea fonturilor aici înseamnă inspectarea metadatelor și încorporarea, nu substituirea fonturilor pentru randare.
Sfaturi și bune practici
- Verificați întotdeauna
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsînainte de a extrage sau redistribui un font încorporat — unele fonturi sunt licențiateRestrictedLicensesauPrintAndPreviewnumai. - Utilizați
GetEmbeddedFontAsOpenType()când aveți nevoie de un format de ieșire consistent, indiferent de modul în care documentul sursă a încorporat fontul (EmbeddedOpenTypevsOpenType). - Setați
FontInfoCollection.SaveSubsetFontslatruepentru a reduce dimensiunea fișierului de ieșire când încorporați fonturi care utilizează doar câteva glyphuri. FontInfoCollection.Contains(name)este mai ieftin decât indexarea și gestionarea unei căutări eșuate (de ex.fontInfos[name]) când trebuie doar să testați prezența unui font.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
GetEmbeddedFont() nu returnează date utilizabile | Fontul referențiat nu este de fapt încorporat în document | Verificați setările de încorporare ale documentului înainte de a presupune că datele fontului sunt prezente |
Indexarea în FontInfoCollection pe bază de nume nu găsește nimic | Numele fontului nu se potrivește exact, inclusiv diferența de majuscule/minuscule | Enumeraţi FontInfoCollection cu GetEnumerator() pentru a confirma şirul exact Name string |
| API-urile așteptate pentru substituţia/rezoluţia fonturilor lipsesc | Rezolvare a sursei fonturilor bazată pe dosar și sistem nu este implementată în această versiune FOSS | Utilizaţi FontInfo/FontInfoCollection doar pentru metadate și încorporare; substituţia fonturilor pentru randare nu face parte din domeniul de aplicare al acestei versiuni |
FAQ
Cum pot lista toate fonturile la care face referire un document?
Enumerați Document.FontInfos (un FontInfoCollection) prin GetEnumerator(), sau indexați-l după nume pentru a căuta un anumit (de ex. fontInfos["Arial"]).
Pot extrage octeții brute ai unui font încorporat dintr-un document?
Da, dacă fontul este încorporat — apelează FontInfo.GetEmbeddedFont(format, style) pentru formatul încorporat original sau GetEmbeddedFontAsOpenType(style) pentru a normaliza rezultatul la OpenType.
Cum pot să mă asigur că fonturile sunt încorporate când salvez un document?
Setează FontInfoCollection.EmbedTrueTypeFonts la true înainte de a salva; adaugă EmbedSystemFonts dacă ai nevoie ca fonturile să fie presupuse prezente pe orice sistem și SaveSubsetFonts pentru a încorpora doar glifele utilizate.
Această versiune suportă rezolvarea fonturilor dintr-un dosar personalizat pentru randare?
Nu — rezolvarea surselor de fonturi bazate pe dosare și sistem (FontSettings configurarea sursei) nu este implementată aici, deoarece servește la aranjarea paginilor și randare, care ies din domeniul acestei ediții FOSS.
Ce înseamnă FontEmbeddingLicensingRights.NoSubsetting?
Este un indicator de licență raportat de drepturile de încorporare ale furnizorului de fonturi: când true, fontul nu poate fi subîmpărțit la doar glifele utilizate.
API Reference Rezumat
| Clasă / Metodă | Descriere: |
|---|---|
FontInfoCollection | Fonturi referenţiate într-un document; indexare pe nume (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadatele unui font: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extrage octeții fontului încorporat |
EmbeddedFontFormat / EmbeddedFontStyle | Enumerații care identifică formatul și varianta de stil a unui font încorporat |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Restricții de licență pentru încorporare raportate pentru fiecare font |
FontSettings | Punct de intrare minimal pentru setările de font (Document.FontSettings, LoadOptions.FontSettings); fără rezoluție a sursei de font în această ediție |