Fonts
Fonts
Questa guida mostra come ispezionare i font referenziati in un documento, estrarre i dati dei font incorporati e controllare l’incorporamento dei font TrueType al salvataggio con Aspose.Words FOSS per .NET. Aspose.Words FOSS per .NET tiene traccia di ogni font referenziato da un documento caricato tramite FontInfoCollection e espone i metadati per font, l’estrazione dei font incorporati e i controlli di incorporamento al salvataggio tramite FontInfo. Document.FontSettings e LoadOptions.FontSettings forniscono il punto di ingresso FontSettings (deliberatamente minimalista, in questa edizione).
Ispezione dei font usati in un documento
DocumentBase.FontInfos (eredita da Document) restituisce un FontInfoCollection che descrive ogni font referenziato in qualsiasi punto del documento. Indicizzalo per nome (ad es. fontInfos["Arial"]), verifica se esiste con Contains(name), contali con Count, o elenca l’intera collezione tramite GetEnumerator().
Proprietà dei font e classificazione
Ogni FontInfo descrive un font: Name e AltName lo identificano, Family lo classifica tramite l’enumerazione FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch riporta il suo FontPitch (Default, Fixed, Variable), e IsTrueType, Charset e Panose espongono dati di corrispondenza dei font a livello inferiore.
Estrazione dei font incorporati
Se un documento contiene font incorporati, FontInfo.GetEmbeddedFont(format, style) restituisce i byte grezzi del font incorporato per un determinato EmbeddedFontFormat (EmbeddedOpenType o OpenType) e EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) restituisce il font convertito direttamente al formato OpenType, indipendentemente da come è stato originariamente incorporato.
Diritti di licenza per l’incorporamento dei font
Prima di estrarre o reinserire un font, controlla FontInfo.EmbeddingLicensingRights, un oggetto FontEmbeddingLicensingRights. EmbeddingUsagePermissions segnala il livello di licenza tramite l’enum FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), mentre NoSubsetting e BitmapEmbeddingOnly indicano ulteriori restrizioni impostate dal fornitore del font.
Controllo dell’incorporamento dei font al salvataggio
FontInfoCollection include anche interruttori di incorporamento a livello di documento: imposta EmbedTrueTypeFonts su true per incorporare ogni font TrueType usato nel documento al momento del salvataggio, EmbedSystemFonts per includere i font normalmente considerati presenti su qualsiasi sistema, e SaveSubsetFonts per incorporare solo i glifi effettivamente utilizzati anziché l’intero font.
Ambito di FontSettings in questa edizione
Document.FontSettings e LoadOptions.FontSettings restituiscono entrambi un oggetto FontSettings, e FontSettings.DefaultInstance espone un’istanza predefinita condivisa. In questa edizione FOSS, la superficie API di FontSettings è limitata a quella proprietà dell’istanza predefinita — la risoluzione delle font basata su cartelle e sul sistema, che altrove in Aspose.Words è usata per sostituire o risolvere i font per il layout e il rendering delle pagine, non è presente, poiché il layout e il rendering delle pagine sono al di fuori dell’ambito di questa edizione. La gestione dei font qui significa ispezione dei metadati e incorporamento, non sostituzione dei font per il rendering.
Suggerimenti e migliori pratiche
- Controlla sempre
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsprima di estrarre o ridistribuire un font incorporato — alcuni font sono concessi in licenza soloRestrictedLicenseoPrintAndPreview. - Usa
GetEmbeddedFontAsOpenType()quando hai bisogno di un formato di output coerente indipendentemente da come il documento sorgente ha incorporato il font (EmbeddedOpenTypevsOpenType). - Imposta
FontInfoCollection.SaveSubsetFontssutrueper ridurre la dimensione del file di output quando incorpori font che usano solo un piccolo numero di glifi. FontInfoCollection.Contains(name)è più economico rispetto all’indicizzazione e alla gestione di una ricerca non riuscita (ad esempiofontInfos[name]) quando devi solo verificare la presenza di un font.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
GetEmbeddedFont() non restituisce dati utilizzabili | Il font di riferimento non è effettivamente incorporato nel documento | Verifica le impostazioni di incorporamento del documento prima di presumere che i dati del font siano presenti |
Indicizzare FontInfoCollection per nome non restituisce nulla | Il nome del font non corrisponde esattamente, compresa la differenza tra maiuscole e minuscole | Elenca FontInfoCollection con GetEnumerator() per confermare la stringa esatta Name |
| Le API di sostituzione/risoluzione dei font previste sono mancanti | La risoluzione delle sorgenti dei font basata su cartelle e sul sistema non è implementata in questa edizione FOSS | Usa FontInfo/FontInfoCollection solo per i metadati e l’incorporamento; la sostituzione dei font per il rendering non fa parte dell’ambito di questa edizione |
FAQ
Come posso elencare tutti i font a cui un documento fa riferimento?
Enumera Document.FontInfos (un FontInfoCollection) tramite GetEnumerator(), oppure indicizzalo per nome per cercare uno specifico (ad esempio fontInfos["Arial"]).
Posso estrarre i byte grezzi di un font incorporato da un documento?
Sì, se il font è incorporato — chiama FontInfo.GetEmbeddedFont(format, style) per il formato originale incorporato, oppure GetEmbeddedFontAsOpenType(style) per normalizzare il risultato a OpenType.
Come faccio a garantire che i font siano incorporati quando salvo un documento?
Imposta FontInfoCollection.EmbedTrueTypeFonts su true prima di salvare; aggiungi EmbedSystemFonts se hai anche bisogno che i font siano considerati presenti su qualsiasi sistema, e SaveSubsetFonts per incorporare solo i glifi in uso.
Questa edizione supporta la risoluzione dei font da una cartella personalizzata per il rendering?
No — la risoluzione delle font basata su cartelle e sul sistema (FontSettings configurazione della sorgente) non è implementata qui, poiché serve al layout e al rendering delle pagine, che sono al di fuori dell’ambito di questa edizione FOSS.
Cosa significa FontEmbeddingLicensingRights.NoSubsetting?
È un flag di licenza segnalato dai diritti di incorporamento del fornitore del font: quando true, il font non può essere sottoposto a subset solo ai glifi in uso.
API Reference Riepilogo
| Classe / Metodo | Descrizione |
|---|---|
FontInfoCollection | Font riferiti in un documento; indicizzatore per nome (fontInfos[name]), Contains(), Count, GetEnumerator(), più EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadati di un font: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Estrai i byte del font incorporato |
EmbeddedFontFormat / EmbeddedFontStyle | Enum che identificano il formato e la variante di stile di un font incorporato |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Restrizioni di licenza di incorporamento riportate per font |
FontSettings | Punto di ingresso minimale per le impostazioni dei font (Document.FontSettings, LoadOptions.FontSettings); nessuna risoluzione della sorgente dei font in questa edizione |