Disponibilidade e substituição de fontes

Contents
[ ]

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:

  1. Aspose.Words tenta encontrar uma fonte entre as fontes de fonte disponíveis com um nome de fonte exato.
  2. 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.
  3. 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.
  4. 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):
    1. 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 biblioteca FontConfig 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ário FontConfig está desactivado. Você pode ativá-lo da seguinte maneira:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
            
      
    2. 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.
      XML
            <TableSubstitutionSettings xmlns="Aspose.Words"> 
      	<SubstitutesTable> 
      		<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /></SubstitutesTable> 
            </TableSubstitutionSettings>
            
      OriginalFont - 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.
      A principal característica desta regra é a capacidade de carregar suas próprias tabelas de substituição, como é mostrado no exemplo a seguir:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
            
      
      Você pode tomar como base a tabela existente do jar ou salvá-la programaticamente da seguinte maneira:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
            
      
      Apesar da flexibilidade deste mecanismo, existem alguns casos em que é melhor desativá-lo, como mostrado abaixo:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
            
      
    3. 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++
            System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
            
      
      Os utilizadores não podem interferir no fluxo de trabalho desta funcionalidade, a menos que decidam desativá - la em caso de resultados insatisfatórios:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
            
      
      Se FontInfo não estiver disponível para a fonte ausente, o processo será interrompido.
    4. 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++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
            
      
      Para verificar a fonte padrão atual, use:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
            
      
      Para configurar a sua própria opção de substituição, aplique:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
            
      
  5. 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.
  6. 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.