Estoy intentando utilizar lualatex para componer un documento que tiene una mezcla de hindi e inglés. Los siguientes MWE funcionan:
\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}
y da la salida correcta.
Sin embargo, si cambio el idioma predeterminado a inglés y el otro idioma a hindi como en el MWE a continuación
\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}
Respuesta1
Polyglossia no detecta automáticamente el idioma. (Babel tiene un comando para hacer esto). Quieres seleccionarlo con \texthindi
o \textenglish
. Sucedió que su fuente hindi también admite inglés, por lo que usarla como predeterminada funcionó. Si revisa las fuentes, verá que está usando solo su fuente Devanagari, no la fuente en inglés que especificó.
Si está cambiando de idioma, debe agregar el comando, cerca de la parte superior de su fuente:
\tracinglostchars=3
Esto hace que sea un error solicitar un glifo que su fuente actual no tiene, en lugar de ignorarlo silenciosamente (con un mensaje en el medio del .log
archivo). En su lugar, podrías convertirlo en una advertencia en la consola con \tracinglostchars=2
.
La siguiente solución con Babel establece el idioma principal en inglés y detecta automáticamente en qué idioma estás escribiendo:
\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}
Si su fuente existente usa comandos como \texthindi
o \textdevanagari
, es posible que también desee declarar \babeltags
la compatibilidad con Polyglossia.