Processando scripts complexos
Para fornecer uma justificação de texto, uma aplicação pode utilizar um de dois métodos. Para uma implementação simples de justificação multilingue, a aplicação deve chamar ScriptJustify. Ele gera a matriz delta dx considerando kashida, depois espaçamento entre palavras e, em seguida, espaçamento entre caracteres. Para uma justificativa mais sofisticada, o aplicativo pode gerar uma matriz delta dx atualizada usando seu próprio conhecimento de linguagem e as informações recuperadas por ScriptShape na matriz SCRIPT_VISATTR.
Espaço de justificação ou kashida deve ser inserido quando identificado pelo membro uJustification do SCRIPT_VISATTR. Ao realizar a justificação entre caracteres, o aplicativo deve inserir espaço extra somente após glifos marcados com SCRIPT_JUSTIFY_CHARACTER.
O aplicativo faz o teste de posicionamento de cursor e hit usando ScriptXtoCP e ScriptCPtoX. Para obter mais informações, consulte Gestão da Colocação do Caret e Teste de Hit.
Para obter larguras de maneira independente de fonte, o aplicativo chama ScriptGetLogicalWidths. Ao passar as larguras lógicas para ScriptApplyLogicalWidth, um bloco de texto pode ser reexibido 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 de avanço) adequado para passar para ScriptTextOut. Esse registo e reaplicação de informações sobre a largura avançada de forma independente do tipo de letra pode ser útil em situações como o armazenamento de metadados num formato definido pela aplicação.
Observação
Os metaficheiros não suportam índices de glifos. Para gravar em um metarquivo avançado, 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, blanks, kashida e assim por diante, para a fonte atual, o aplicativo deve chamar ScriptGetFontProperties. Para determinar quais caracteres em uma execução são suportados pela fonte selecionada, o aplicativo chama ScriptGetCMap. Os caracteres que não estão disponíveis têm o glifo padrão no buffer do 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; A LETRA MAIÚSCULA LATINA E COM ACENTO AGUDO pode ser representada utilizando um glifo 'E' maiúsculo e um acento 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çãoScriptCacheGetHeight 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 glifos. No entanto, ele não deve ser usado para formatação de texto de script complexo normal.
Tópicos relacionados