Estou tentando usar lualatex para compor um documento que contém uma mistura dos idiomas hindi e inglês. O seguinte MWE funciona:
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{hindi}
\setotherlanguage{english}
\usepackage{fontspec}
\newfontscript{Devanagari}{deva,dev2}
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Scale=1.1,Script=Devanagari]
\newfontfamily{\englishfont}{Noto Serif}
\begin{document}
This is a test.
यह एक परीक्षा है।
\end{document}
e fornece a saída correta.
No entanto, se eu alterar o idioma padrão para inglês e o outro idioma para hindi, como no MWE abaixo
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
\usepackage{fontspec}
\newfontscript{Devanagari}{deva,dev2}
\newfontfamily{\devanagarifont}{Noto Serif Devanagari}[Scale=1.1,Script=Devanagari]
\newfontfamily{\englishfont}{Noto Serif}
\begin{document}
This is a test.
यह एक परीक्षा है।
\end{document}
Responder1
A Polyglossia não detecta automaticamente o idioma. (Babel tem um comando para fazer isso.) Você deseja selecioná-lo com \texthindi
ou \textenglish
. Acontece que sua fonte Hindi também suporta inglês, então usá-la como padrão funcionou. Se você verificar as fontes, verá que está usando apenas a fonte Devanagari, não a fonte em inglês que você especificou.
Se você estiver trocando de idioma, adicione o comando próximo ao topo da sua fonte:
\tracinglostchars=3
Isso torna um erro solicitar um glifo que sua fonte atual não possui, em vez de ignorá-lo silenciosamente (com uma mensagem no meio do .log
arquivo). Em vez disso, você poderia transformá-lo em um aviso no console com \tracinglostchars=2
.
A solução a seguir com Babel define o idioma principal como inglês e detecta automaticamente em qual idioma você está digitando:
\documentclass{article}
\tracinglostchars=3
\usepackage[english, bidi=basic]{babel}
\usepackage{fontspec}
\babelprovide[import=hi, onchar=fonts ids]{hindi}
\babelfont{rm}
[Ligatures={Common, TeX}]{Noto Serif}
\babelfont[hindi]{rm}
[Scale=MatchUppercase]{Noto Serif Devanagari}
\begin{document}
This is a test.
यह एक परीक्षा है।
\end{document}
Se sua fonte existente usa comandos como \texthindi
ou \textdevanagari
, você também pode declarar \babeltags
compatibilidade com Polyglossia.