MWE

MWE

tengo este ejemplo

\documentclass[hyperref=unicode]{beamer}

\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}


\begin{document}

\begin{frame}{}
\today
\end{frame}

\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}

\end{document}

Compilado con lualatexobtengo esta advertencia

Advertencia de especificación de fuente del paquete: idioma 'inglés' no disponible para la fuente 'Amiri'

¿Qué he hecho mal? o lo que me he perdido?

Respuesta1

Esto también me molestó durante mucho tiempo. Esto es lo que está pasando:

Estos son los scripts y lenguajes soportados porAmiri:

DFLT        Default
arab        Arabic
arab.ARA    Arabic/Arabic
arab.KSH    Arabic/Kashmiri
arab.SND    Arabic/Sindhi
arab.URD    Arabic/Urdu
latn        Latin
latn.TRK    Latin/Turkish

Cuando cargas árabe con \babelprovide[import=ar-DZ, main]{arabic}luego babellees en babel-ar-DZ.ini.

En este archivo encontrará (entre otras cosas):

tag.opentype = ARA
script.tag.opentype = arab

Entonces, cuando el árabe argelino sea el idioma en uso, babelse cargaráAmiricon arab.ARAescritura y lenguaje. Esto existe en la fuente, así que todo está bien.

Pero babel-en.inicontiene esto:

tag.opentype = ENG
script.tag.opentype = latn

Entonces, cuando el inglés esté en uso, babelintentaré cargarAmiricon latn.ENGescritura y lenguaje. Excepto que esta combinación no existe en la fuente, por lo que se emite una advertencia babel:

Language 'English' not available for font 'Amiri' with script 'Latin'.

Ahora todo lo que tenemos que hacer es indicar babelque usemos Language=Defaultwith Script=Latinpara inglés mientras continuamos usando Language=Arabicwith Script=Arabicpara árabe argelino.

Para hacer esto, elimínelo englishde las babelopciones principales y en su lugar cárguelo así:

\babelprovide[import,language=Default]{english}

Nota: babelusa languagecon minúscula len lugar de fontspeccual usa Language!

babelahora se cargaráAmiricon opciones compatibles para texto en inglés y no se emite ninguna advertencia.

MWE

\documentclass[hyperref=unicode]{beamer}

\usepackage[nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelprovide[import, language=Default]{english}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}    

\begin{document}

\begin{frame}{}
\today
\end{frame}

\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}

\end{document}

Respuesta2

Puede configurar el idioma por defecto:

\documentclass[hyperref=unicode]{beamer}

\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelfont{rm}[Language=Default]{Amiri}
\babelfont{sf}[Language=Default]{Amiri}


\begin{document}

\begin{frame}{}
\today
\end{frame}

\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}

\end{document}

Respuesta3

Primero, puedes ignorar esta advertencia. Es inofensivo. (Sin embargo, estoy de acuerdo en que es una buena práctica suprimir las advertencias sin sentido para no pasar por alto las significativas).

La respuesta de David Purton es muy elegante, pero hay una situación en la que es posible que necesites algo más complejo: si estás cargando diferentes fuentes para el mismo idioma que requieren diferentes opciones. Por ejemplo, un \babelfont[chinese-traditional]{rm}podría admitir Language=Chinese Traditionaly un \babelfont[chinese-traditional]{sf}podría admitir CJKShape = Traditionalen su lugar. Más inmediatamente, algunas fuentes árabes (incluida Noto Sans Arabe) no son compatibles Language=Arabic.

En este caso, debes pasar diferentes fontspecopciones al \babelfontcomando:

\babelfont{rm}[Scale=1.0]{Amiri}
\babelfont[english]{rm}[Language=Default]{Amiri}

Sin embargo, una gran fuente multilingüe complementaria para Amiri de Khaled Hosny es otra de sus familias de fuentes, Libertinus. Basó Libertinus Serif en Linux Libertine y Libertinus Sans en Linux Biolinum. Le dejaré hablar sobre la inspiración de las letras latinas en Amiri, pero son muy similares. También hay una fuente matemática que puedes seleccionar con unicode-math.

Si desea habilitar todas las funciones de fuente de estas fuentes, puede intentar lo siguiente:

\documentclass[hyperref=unicode]{beamer}

\usepackage[nil,bidi=basic-r]{babel}

\babelprovide[import=ar-DZ, main]{arabic}
\babelprovide[import=en, language=Default]{english}

\babelfont{rm}[Scale=1.0,
               Ligatures={Common, TeX},
               UprightFeatures={Ligatures=Discretionary},
               Numbers={OldStyle,Proportional}
              ]{Libertinus Serif}
\babelfont{sf}[Scale=MatchLowercase,
               Ligatures=TeX,
               UprightFeatures={Ligatures={Common, Discretionary}},
               BoldFeatures={Ligatures=Common}
             ]{Libertinus Sans}
\babelfont[arabic]{rm}[Scale=MatchLowercase,
                       Ligatures={Common, TeX},
                       Contextuals={WordInitial,WordFinal,Inner}
                      ]{Amiri}

Puede utilizar la función OpenType de superíndices con el realscriptspaquete.

Tenga en cuenta que, debido a un error, Babel 3.27 y versiones anteriores ignoran \defaultfontfeatureslos archivos \babelfont. He solucionado el error aquí, pero se está implementando una solución en el árbol de lanzamiento.

En este punto, debido a que beamerutiliza fuentes sans-serif de forma predeterminada, es necesario definir \babelfont[arabic]{sf}. Puede copiar las líneas babelfont[arabic]{rm}o cargar una fuente árabe sans-serif, por ejemplo:

\babelfont[arabic]{sf}[Scale=MatchLowercase,
                       Ligatures=Discretionary,
                       Language=Default
                      ]{Noto Sans Arabic}

Respuesta4

No pasa nada, al contrario. Estas advertencias se muestran mediante fontspec, no mediante babel. Podrían ser irrelevantes para el inglés, pero no para muchos otros idiomas, incluido el árabe. Para eliminarlos por completo (sólo son realmente útiles cuando se está configurando el formato del documento), puede pasar la silentopción a fontspec:

\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\PassOptionsToPackage{silent}{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}

O también:

\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\usepackage[silent]{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}

Editar.Una tercera opción es pasar silentcomo opción de clase.

información relacionada