Fonts
Fonts
Este guia mostra como inspecionar as fontes referenciadas em um documento, extrair dados de fontes incorporadas e controlar o TrueType incorporação de fontes ao salvar com Aspose.Words FOSS para .NET. Aspose.Words FOSS para .NET rastreia cada fonte referenciada por um documento carregado através de FontInfoCollection, e expõe metadados por fonte, extração de fontes incorporadas e controles de incorporação ao salvar através de FontInfo. Document.FontSettings e LoadOptions.FontSettings fornecem o ponto de entrada FontSettings (deliberadamente minimalista, nesta edição).
Inspecionando Fontes Usadas em um Documento
DocumentBase.FontInfos (herdado por Document) retorna um FontInfoCollection que descreve cada fonte referenciada em qualquer parte do documento. Indexe nele por nome (ex.: fontInfos["Arial"]), teste se existe com Contains(name), conte-as com Count, ou enumere toda a coleção via GetEnumerator().
Propriedades e Classificação de Fontes
Cada FontInfo descreve uma fonte: Name e AltName a identificam, Family a classifica via o enum FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch relata seu FontPitch (Default, Fixed, Variable), e IsTrueType, Charset e Panose expõem dados de correspondência de fontes de nível inferior.
Extração de Fonte Incorporada
Se um documento possui fontes incorporadas, FontInfo.GetEmbeddedFont(format, style) retorna os bytes brutos da fonte incorporada para um determinado EmbeddedFontFormat (EmbeddedOpenType ou OpenType) e EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) retorna a fonte convertida para o formato OpenType diretamente, independentemente de como foi originalmente incorporada.
Direitos de Licença de Incorporação de Fontes
Antes de extrair ou reincorporar uma fonte, verifique FontInfo.EmbeddingLicensingRights, um objeto FontEmbeddingLicensingRights. EmbeddingUsagePermissions relata o nível da licença através do enum FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), enquanto NoSubsetting e BitmapEmbeddingOnly sinalizam restrições adicionais definidas pelo fornecedor da fonte.
Controlando a Incorporação de Fontes ao Salvar
FontInfoCollection também possui interruptores de incorporação a nível de documento: defina EmbedTrueTypeFonts como true para incorporar todas as fontes TrueType usadas no documento ao salvá-lo, EmbedSystemFonts para incluir fontes normalmente assumidas como presentes em qualquer sistema, e SaveSubsetFonts para incorporar apenas os glifos realmente utilizados em vez da fonte completa.
Escopo de FontSettings Nesta Edição
Document.FontSettings e LoadOptions.FontSettings retornam ambos um objeto FontSettings, e FontSettings.DefaultInstance expõe uma instância padrão compartilhada. Nesta edição FOSS, a superfície de FontSettings’ API está limitada a essa propriedade de instância padrão — a resolução de fontes baseada em pastas e no sistema, que em outro lugar em Aspose.Words é usada para substituir ou resolver fontes para layout e renderização de páginas, não está presente, pois o layout e a renderização de páginas estão fora do escopo desta edição. O manuseio de fontes aqui significa inspeção de metadados e incorporação, não substituição de fontes para renderização.
Dicas e Melhores Práticas
- Sempre verifique
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsantes de extrair ou redistribuir uma fonte incorporada — algumas fontes são licenciadas apenasRestrictedLicenseouPrintAndPreview. - Use
GetEmbeddedFontAsOpenType()quando precisar de um formato de saída consistente independentemente de como o documento de origem incorporou a fonte (EmbeddedOpenTypevsOpenType). - Defina
FontInfoCollection.SaveSubsetFontscomotruepara reduzir o tamanho do arquivo de saída ao incorporar fontes que utilizam apenas um pequeno número de glifos. FontInfoCollection.Contains(name)é mais barato do que indexar e lidar com uma busca falhada (por exemplo,fontInfos[name]) quando você só precisa testar a presença de uma fonte.
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
GetEmbeddedFont() não retorna dados utilizáveis | A fonte referenciada não está realmente embutida no documento | Verifique as configurações de incorporação do documento antes de assumir que os dados da fonte estão presentes |
Indexar em FontInfoCollection por nome não encontra nada | O nome da fonte não corresponde exatamente, incluindo maiúsculas/minúsculas | Enumere FontInfoCollection com GetEnumerator() para confirmar a string exata de Name |
| As APIs esperadas de substituição/resolução de fontes estão ausentes | A resolução de fontes baseada em pastas e no sistema não está implementada nesta edição FOSS | Use FontInfo/FontInfoCollection apenas para metadados e incorporação; a substituição de fontes para renderização não faz parte do escopo desta edição |
FAQ
Como faço para listar todas as fontes que um documento referencia?
Enumere Document.FontInfos (um FontInfoCollection) via GetEnumerator(), ou faça indexação por nome para localizar um específico (por exemplo, fontInfos["Arial"]).
Posso extrair os bytes brutos de uma fonte incorporada de um documento?
Sim, se a fonte estiver incorporada — chame FontInfo.GetEmbeddedFont(format, style) para o formato original incorporado, ou GetEmbeddedFontAsOpenType(style) para normalizar o resultado para OpenType.
Como garantir que as fontes sejam incorporadas ao salvar um documento?
Defina FontInfoCollection.EmbedTrueTypeFonts como true antes de salvar; adicione EmbedSystemFonts se também precisar que as fontes sejam presumidas presentes em qualquer sistema, e SaveSubsetFonts para incorporar apenas os glifos em uso.
Esta edição suporta a resolução de fontes a partir de uma pasta personalizada para renderização?
Não — a resolução de fontes baseada em pastas e no sistema (FontSettings configuração de fonte) não está implementada aqui, pois serve ao layout de página e à renderização, que estão fora do escopo desta edição FOSS.
O que significa FontEmbeddingLicensingRights.NoSubsetting?
É uma bandeira de licenciamento relatada pelos direitos de incorporação do fornecedor da fonte: quando true, a fonte pode não ser subtitulada apenas para os glifos em uso.
API Reference Resumo
| Classe / Método | Descrição |
|---|---|
FontInfoCollection | Fontes referenciadas em um documento; indexador por nome (fontInfos[name]), Contains(), Count, GetEnumerator(), além de EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadados de uma fonte: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Extrair bytes da fonte incorporada |
EmbeddedFontFormat / EmbeddedFontStyle | Enums que identificam o formato e a variante de estilo de uma fonte incorporada |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Restrições de licença de incorporação relatadas por fonte |
FontSettings | Ponto de entrada mínimo das configurações de fonte (Document.FontSettings, LoadOptions.FontSettings); sem resolução de fonte de origem nesta edição |