Problemas de fuentes en lualatex al usar fontspec y poliglosia

Problemas de fuentes en lualatex al usar fontspec y poliglosia

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.

ingrese la descripción de la imagen aquí

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} 

Los caracteres hindi no se muestran. ¿Cuál es el problema? ingrese la descripción de la imagen aquí

Respuesta1

Polyglossia no detecta automáticamente el idioma. (Babel tiene un comando para hacer esto). Quieres seleccionarlo con \texthindio \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 .logarchivo). 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}

Muestra de noto serif

Si su fuente existente usa comandos como \texthindio \textdevanagari, es posible que también desee declarar \babeltagsla compatibilidad con Polyglossia.

información relacionada