Fonts
Fonts
Esta guía muestra cómo inspeccionar las fonts referenciadas en un documento, extraer datos de fonts incrustados y controlar el TrueType de incrustación de fonts al guardar con Aspose.Words FOSS para .NET. Aspose.Words FOSS para .NET rastrea cada font referenciada por un documento cargado mediante FontInfoCollection, y expone metadatos por font, extracción de fonts incrustados y controles de incrustación al guardar a través de FontInfo. Document.FontSettings y LoadOptions.FontSettings proporcionan el punto de entrada FontSettings (deliberadamente mínimo, en esta edición).
Inspección de Fonts Utilizadas en un Documento
DocumentBase.FontInfos (heredado por Document) devuelve un FontInfoCollection que describe cada font referenciada en cualquier parte del documento. Indexa en él por nombre (p. ej. fontInfos["Arial"]), verifica si existe con Contains(name), cuéntalas con Count, o enumera toda la colección mediante GetEnumerator().
Propiedades y Clasificación de Font
Cada FontInfo describe una font: Name y AltName la identifican, Family la clasifica mediante el enum FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch informa su FontPitch (Default, Fixed, Variable), y IsTrueType, Charset y Panose exponen datos de coincidencia de fonts de nivel inferior.
Extracción de Font Incrustada
Si un documento tiene fuentes incrustadas, FontInfo.GetEmbeddedFont(format, style) devuelve los bytes de fuente incrustada sin procesar para un EmbeddedFontFormat dado (EmbeddedOpenType o OpenType) y EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) devuelve la fuente convertida al formato OpenType directamente, sin importar cómo se incrustó originalmente.
Derechos de Licencia de Incrustación de Fuentes
Antes de extraer o volver a incrustar una fuente, verifique FontInfo.EmbeddingLicensingRights, un objeto FontEmbeddingLicensingRights. EmbeddingUsagePermissions informa el nivel de licencia a través del enumerado FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), mientras que NoSubsetting y BitmapEmbeddingOnly señalan restricciones adicionales establecidas por el proveedor de la fuente.
Control de la Incrustación de Fuentes al Guardar
FontInfoCollection también lleva interruptores de incrustación a nivel de documento: establezca EmbedTrueTypeFonts en true para incrustar cada fuente TrueType utilizada en el documento al guardarlo, EmbedSystemFonts para incluir fuentes que normalmente se asume están presentes en cualquier sistema, y SaveSubsetFonts para incrustar solo los glifos realmente usados en lugar de la fuente completa.
Alcance de FontSettings en Esta Edición
Document.FontSettings y LoadOptions.FontSettings ambos devuelven un objeto FontSettings, y FontSettings.DefaultInstance expone una instancia predeterminada compartida. En esta edición FOSS, la superficie API de FontSettings está limitada a esa propiedad de instancia predeterminada — la resolución de fuentes basada en carpetas y del sistema, que en otras partes de Aspose.Words se usa para sustituir o resolver fuentes para el diseño y renderizado de páginas, no está presente, ya que el diseño y renderizado de páginas están fuera del alcance de esta edición. El manejo de fuentes aquí significa inspección de metadatos e incrustación, no sustitución de fuentes para el renderizado.
Consejos y Mejores Prácticas
- Siempre verifique
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsantes de extraer o redistribuir una fuente incrustada — algunas fuentes están licenciadas soloRestrictedLicenseoPrintAndPreview. - Utilice
GetEmbeddedFontAsOpenType()cuando necesite un formato de salida coherente sin importar cómo el documento fuente incrustó la fuente (EmbeddedOpenTypevsOpenType). - Configure
FontInfoCollection.SaveSubsetFontsatruepara reducir el tamaño del archivo de salida al incrustar fuentes que utilizan solo un puñado de glifos. FontInfoCollection.Contains(name)es más barato que indexar y gestionar una búsqueda fallida (p. ej.,fontInfos[name]) cuando solo necesita comprobar la presencia de una fuente.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
GetEmbeddedFont() no devuelve datos utilizables | La fuente referenciada no está realmente incrustada en el documento | Verifique la configuración de incrustación del documento antes de asumir que los datos de la fuente están presentes |
Indexar en FontInfoCollection por nombre no encuentra nada | El nombre de la fuente no coincide exactamente, incluidas mayúsculas y minúsculas | Enumere FontInfoCollection con GetEnumerator() para confirmar la cadena exacta de Name |
| Faltan las API esperadas de sustitución/resolución de fuentes | La resolución de fuentes basada en carpetas y en el sistema no está implementada en esta edición FOSS | Utilice FontInfo/FontInfoCollection solo para metadatos e incrustación; la sustitución de fuentes para renderizado no forma parte del alcance de esta edición |
FAQ
¿Cómo puedo enumerar todas las fuentes que referencia un documento?
Enumere Document.FontInfos (un FontInfoCollection) a través de GetEnumerator(), o indexe en él por nombre para buscar uno específico (p. ej., fontInfos["Arial"]).
¿Puedo extraer los bytes crudos de una fuente incrustada de un documento?
Sí, si la fuente está incrustada — llame a FontInfo.GetEmbeddedFont(format, style) para el formato incrustado original, o GetEmbeddedFontAsOpenType(style) para normalizar el resultado a OpenType.
¿Cómo me aseguro de que las fuentes se incrusten al guardar un documento?
Establezca FontInfoCollection.EmbedTrueTypeFonts a true antes de guardar; añada EmbedSystemFonts si también necesita que se asuma que las fuentes están presentes en cualquier sistema, y SaveSubsetFonts para incrustar solo los glifos en uso.
¿Esta edición admite la resolución de fuentes desde una carpeta personalizada para el renderizado?
No — la resolución de fuentes basada en carpetas y en el sistema (FontSettings configuración de origen) no está implementada aquí, ya que sirve para el diseño y renderizado de página, lo cual está fuera del alcance de esta edición FOSS.
¿Qué significa FontEmbeddingLicensingRights.NoSubsetting?
Es una bandera de licencia reportada por los derechos de incrustación del proveedor de la fuente: cuando true, la fuente no puede ser subestablecida solo a los glifos en uso.
API Reference Resumen
| Clase / Método | Descripción |
|---|---|
FontInfoCollection | Fuentes referenciadas en un documento; indexador por nombre (fontInfos[name]), Contains(), Count, GetEnumerator(), más EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadatos de una fuente: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extraer bytes de la fuente incrustada |
EmbeddedFontFormat / EmbeddedFontStyle | Enums que identifican el formato y la variante de estilo de una fuente incrustada |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Restricciones de licencia de incrustación reportadas por fuente |
FontSettings | Punto de entrada mínimo de configuración de fuentes (Document.FontSettings, LoadOptions.FontSettings); sin resolución de origen de fuentes en esta edición |