Compartilhar via


Processando scripts complexos

Para fornecer justificativa de texto, um aplicativo pode usar um dos dois métodos. Para uma implementação simples de justificativa multilíngue, o aplicativo deve chamar ScriptJustify. Ele gera a matriz dx delta considerando kashida, espaçamento entre palavras e espaçamento entre caracteres. Para uma justificativa mais sofisticada, o aplicativo pode gerar uma matriz dx delta atualizada usando seu próprio conhecimento de linguagem e as informações recuperadas pelo ScriptShape na matriz SCRIPT_VISATTR .

O espaço de justificativa ou kashida deve ser inserido quando identificado pelo membro uJustification do SCRIPT_VISATTR. Ao executar a justificativa entre caracteres, o aplicativo deve inserir espaço extra somente após glifos marcados com SCRIPT_JUSTIFY_CHARACTER.

O aplicativo faz o posicionamento do cursor e o teste de clique usando ScriptXtoCP e ScriptCPtoX. Para obter mais informações, consulte Gerenciando o posicionamento do cursor e o teste de clique.

Para obter larguras de maneira independente da fonte, o aplicativo chama ScriptGetLogicalWidths. Ao passar as larguras lógicas para ScriptApplyLogicalWidth, um bloco de texto pode ser reproduzido nos mesmos limites com perda aceitável de qualidade mesmo quando a fonte original não está disponível. Ele gera uma matriz de larguras de glifo (larguras avançadas) adequadas para passar para ScriptTextOut. Essa gravação e reaplicação de informações de largura avançada de maneira independente de fonte podem ser úteis em situações como o metarquivo em um formato definido pelo aplicativo.

Observação

Os metafiles não dão suporte a índices de glifo. Para gravar em um meta-arquivo aprimorado, o aplicativo deve usar ExtTextOut e gravar os caracteres lógicos diretamente. Usando esse mecanismo, a geração e o posicionamento do glifo não ocorrem até que o texto seja reproduzido.

 

Para recuperar os glifos específicos que são usados para o padrão, espaços em branco, kashida e assim por diante, para a fonte atual, o aplicativo deve chamar ScriptGetFontProperties. Para determinar quais caracteres em uma execução têm suporte na fonte selecionada, o aplicativo chama ScriptGetCMap. Os caracteres que não estão disponíveis têm o glifo padrão no buffer de glifo. Observe que esse método falhará se uma fonte renderizar um caractere usando uma combinação de glifos em vez de um único glifo. Por exemplo, 00C9; LATIN CAPITAL LETTER E WITH ACUTE pode ser renderizado usando um E glifo maiúsculo e um glifo agudo. Para determinar o suporte de fonte para uma cadeia de caracteres que contém esses tipos de pontos de código, o aplicativo pode chamar ScriptShape. Para obter mais informações, consulte Usando mecanismos de modelagem.

A função ScriptCacheGetHeight retorna a altura da fonte do cache de fontes. ScriptGetProperties fornece informações sobre o processamento especial necessário para todos os scripts, indexados por script. Por exemplo, ele inclui a linguagem primária associada ao script, dados que indicam se o script é numérico e dados que indicam se o script é um script complexo.

ScriptGetGlyphABCWidth retorna a largura ABC de um determinado glifo, o que pode ser útil para desenhar gráficos de glifo. No entanto, ele não deve ser usado para formatação de texto de script complexo normal.

Usando Uniscribe