Obtendo texto pesquisável correto para texto Devanagari

Obtendo texto pesquisável correto para texto Devanagari

Considere este documento mínimo, cujo AFAIK é a forma recomendada de composição de texto em idioma sânscrito com script Devanagari:

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Chandas}

\begin{document}
किं  बहुना । परस्परं द्वैधम् उत्पन्नम् ।
\end{document}

Quando eu digito isso, mesmo quando a saída é visualmente boa, tentar copiar o texto do PDF sempre dá resultados incorretos. Eu tentei com ambos xelatexe lualatex, com quatro fontes, todas generosamente disponíveis online gratuitamente:Chandas,Noto Sans Devanagari, Noto Serif Devanagari,Adishila:

  • Texto correto:

    • किं बहुना । परस्परं द्वैधम् उत्पन्नम् ।
  • xelatex:

    • Isso é verdade. परɕपरं जैधम् उɊपਯम् । (Chandas)
    • ɫकʌ बहुना । परȺरं द्वैधम् उत्पȡम् । (Noto Sans Devanágari)
    • ȫक बहुना । परस्परं द्वैधम् उत्पन्नम् । (Noto Serif Devanágari)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (Adishila)
  • lualatex:

    • िकं बहुना । पर�परं द्वैधम् उ�पन्नम् । (Chandas)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (Noto Sans Devanagari – também, a saída está quebrada)
    • िकं बहुना । परस्परं द्वैधम् उत्पन्नम् । (Noto Serif Devanagari – também, a saída está quebrada)
    • िकं बzना । परस्परं द्वैधम् उत्पन्नम् । (Adishila)

Portanto, nada disso está correto, embora para algumas combinações apenas a primeira sílaba fosse problemática. (Não importa que seja a primeira sílaba; किं em qualquer lugar tem o mesmo problema.)

(Além disso: isso estava usando TeX Live 2020, então lualatexusa LuaHBTeX… mas a saída está incorreta em comparação com xelatexduas das fontes.)

Existe uma maneira de copiar o texto correto?

Também tentei agrupar cada palavra usando o accsupppacote, like \BeginAccSupp{ActualText=किं}किं\EndAccSupp{}e assim por diante, mas isso resultou em um jargão completo.

Responder1

Quando compilo com LuaLaTeX no TeX Live 2020, recebo isto quando copio e colo:

किं बहुना । परस्परं द्वैधम् उत्पन्नम् ।

Do MWE a seguir, que também deve poupar alguma digitação se você também quiser definir \devanagarifontsf, \devanagarifonttt, etc.

\documentclass{article}
\tracinglostchars=2

\usepackage{iftex}
\usepackage{polyglossia}

\ifluahbtex
  \defaultfontfeatures{ Renderer=HarfBuzz, Ligatures=TeX }
\fi

\setmainlanguage{sanskrit}
%% Font available at:
%% https://www.google.com/get/noto/#serif-deva
\newfontfamily\devanagarifont[Script=Devanagari]{Noto Serif Devanagari}

\begin{document}
किं  बहुना । परस्परं द्वैधम् उत्पन्नम् ।
\end{document}

No entanto, isso ainda não copia e cola corretamente do XeLaTeX.

Eu normalmente uso o babel, que entre outras coisas pode detectar automaticamente o idioma que digito, mas a solução é muito semelhante.

Como Marcel Kruger disse nos comentários, o LuaLaTeX moderno suporta renderização HarfBuzz, mas você precisa selecioná-lo.

informação relacionada