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 xelatex
e 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 lualatex
usa LuaHBTeX… mas a saída está incorreta em comparação com xelatex
duas das fontes.)
Existe uma maneira de copiar o texto correto?
Também tentei agrupar cada palavra usando o accsupp
pacote, 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.