Disponibilidade e substituição de fontes
Contents
[
Hide
]
Um texto em um documento pode ser formatado com várias fontes, como Arial, Times New Roman, Verdana e outras. Quando Aspose.Words renderiza um documento, ele tenta selecionar as fontes especificadas no documento.
No entanto, existem situações em que a fonte exata não pode ser encontrada e Aspose.Words deve substituí-la por uma fonte semelhante. Aspose.Words seleciona a fonte de acordo com o seguinte processo:
- Aspose.Words tenta encontrar uma fonte entre as fontes de fonte disponíveis com um nome de fonte exato.
- Aspose.Words tenta encontrar a fonte necessária entre as fontes incorporadas no documento original. Alguns formatos de documentos, como DOCX, podem conter fontes incorporadas.
- Se Aspose.Words não conseguir localizar a fonte necessária com a correspondência exata do nome e a propriedade AltName definida para essa fonte, Aspose.Words encontrará a fonte definida com AltName da classe FontInfo, que especifica as informações da fonte.
- Se Aspose.Words não conseguir localizar a fonte definida e AltName também não estiver definida, as regras de substituição de fonte serão aplicadas uma a uma, conforme descrito abaixo (quando a substituição apropriada for encontrada, o processo de substituição de fonte será interrompido e a próxima etapa não será executada):
- Aspose.Words tentará aplicar as configurações de fonte OS, se estiverem disponíveis, usando o utilitário
FontConfig
. Este recurso nãoWindows deve ser usado com um FontConfig compatível com OS. Quase todos os OS baseados em Unix já possuem uma bibliotecaFontConfig
projetada para fornecer configuração de fonte, personalização e acesso a aplicativos em todo o sistema. Caso contrário, esta biblioteca pode ser facilmente instalada pelo utilizador.
Aspose.Words sabe consultar dados e interpretar FontConfig Resultados para os seus próprios fins. Por predefinição, o utilitárioFontConfig
está desactivado. Você pode ativá-lo da seguinte maneira:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- O próximo passo é um mecanismo simples, mas incrivelmente poderoso, chamado TableSubstitutionRule. Por predefinição, esta funcionalidade está activa e disponível para qualquer OS. Aspose.Words usa XML tabelas que definem regras básicas de substituição para diferentes OS. De acordo com a regra de substituição de tabelas, será utilizada a lista de nomes de fontes substitutas.
XMLOriginalFont - uma fonte a ser substituída, SubstituteFonts - lista de variantes de substituição, separadas por uma vírgula. A primeira fonte disponível é usada para substituição.<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
A principal característica desta regra é a capacidade de carregar suas próprias tabelas de substituição, como é mostrado no exemplo a seguir:
C++Você pode tomar como base a tabela existente do jar ou salvá-la programaticamente da seguinte maneira:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++Apesar da flexibilidade deste mecanismo, existem alguns casos em que é melhor desativá-lo, como mostrado abaixo:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- A regra de substituição FontInfo será aplicada se a regra de substituição da tabela não conseguir encontrar a fonte. Este mecanismo está activado por predefinição. Aspose.Words Encontra a fonte mais adequada de acordo com as informações de fonte contidas em um documento específico. Esta informação pode ser obtida a partir da classe FontInfo, como mostrado abaixo:
C++Os utilizadores não podem interferir no fluxo de trabalho desta funcionalidade, a menos que decidam desativá - la em caso de resultados insatisfatórios:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++Se FontInfo não estiver disponível para a fonte ausente, o processo será interrompido.fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
- A regra de substituição DefaultFont será aplicada no caso em que a substituição
FontInfo
também falhou. Esta regra também está activada por predefinição. De acordo com esta regra, Aspose.Words tentará usar a fonte padrão especificada na propriedade DefaultFontName. Se o Usuário não escolheu sua própria fonte padrão, então" Times New Roman " será usado como a fonte padrão. Esta regra pode ser desativada como mostrado abaixo:
C++Para verificar a fonte padrão atual, use:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++Para configurar a sua própria opção de substituição, aplique:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Words tentará aplicar as configurações de fonte OS, se estiverem disponíveis, usando o utilitário
- Se Aspose.Words não for possível realizar a substituição da fonte, ele tentará obter a primeira fonte disponível das fontes de fonte disponíveis.
- Finalmente, se Aspose.Words não puder encontrar nenhuma Fonte entre as fontes de fonte disponíveis, ele renderizará o documento usando a fonte Fanwood livre que está embutida no assembly Aspose.Words.
Se FontInfo estiver disponível, o FontInfo substitution rule sempre resolverá a fonte e substituirá a regra de fonte padrão. Se você quiser usar a regra de fonte padrão, você deve desativar o FontInfo substitution rule. Observe que FontConfig substitution rule resolverá a fonte na maioria dos casos e, portanto, substituirá todas as outras regras.