Suporte a Shaping Árabe / Persa / Urdu

Pipeline de shaping no lado do produtor (v2.85.0 - v2.119.68)

O HotPDF executa um pipeline de shaping no lado do produtor que mapeia execuções árabes, persas e urdu de entrada Unicode para suas Formas de Apresentação Árabe durante a emissão de texto do PDF, para que os leitores recebam glifos posicionais/ligaturas prontos para renderizar sem precisar de um shaper próprio.

O que o pipeline faz

Shaping posicional (v2.85.0): cada letra base árabe tem até quatro formas posicionais - isolada (isol), inicial (init), medial (medi), final (fina). O HotPDF inspeciona a classe de junção de cada caractere árabe e as classes de junção de seus vizinhos imediatos, mapeando o codepoint de entrada para o glifo correspondente no bloco Arabic Presentation Forms-B.

Ligatura obrigatória LAM-ALEF (v2.119.32): a especificação de Shaping Unicode Árabe determina que qualquer LAM imediatamente seguido por um ALEF se dobra em um único glifo de ligatura.

Ligatura Allah (v2.119.60): a sequência de quatro caracteres ALEF + LAM + LAM + HEH dobra-se no U+FDF2.

Ligatura da frase Bismillah (v2.119.62): a frase padrão de 22 codepoints Bismillah "بسم الله الرحمن الرحيم" dobra-se no glifo U+FDFD.

Como os chamadores o invocam

O pipeline de shaping é executado automaticamente dentro dos métodos de emissão de texto Unicode - nenhuma chamada "shape isto" explícita é necessária. Passe strings Unicode para THPDFPage.UnicodeTextOut ou THPDFPage.RtLTextOut.

Requisitos de fonte

A fonte registrada via RegisterUnicodeTTF deve conter glifos tanto para o bloco Arabic Presentation Forms-B quanto (para Persa/Urdu) a respectiva faixa Arabic Presentation Forms-A.

Exemplo de fluxo de trabalho típico

PDF.RegisterUnicodeTTF('NotoArab', 'NotoSansArabic-Regular.ttf');
PDF.BeginDoc;
PDF.CurrentPage.SetFont('NotoArab', [], 14);
PDF.CurrentPage.RtLTextOut(100, 700, 0,
   UnicodeString(#####));  // "marhaba" (olá)
PDF.EndDoc;

Veja Também