MWE

MWE

Ich habe dieses Beispiel

\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}

Zusammengestellt mit lualatexIch erhalte diese Warnung

Paket Fontspec Warnung: Sprache „Englisch“ für Schriftart „Amiri“ nicht verfügbar

Was habe ich falsch gemacht? Oder was habe ich übersehen?

Antwort1

Das hat mich auch lange Zeit gestört. Folgendes ist los:

Dies sind die Skripts und Sprachen, die unterstützt werden vonAmiri:

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

Wenn Sie Arabisch mit laden, wird \babelprovide[import=ar-DZ, main]{arabic}es babeleingelesen babel-ar-DZ.ini.

In dieser Datei finden Sie (unter anderem):

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

Wenn also Algerisches Arabisch die verwendete Sprache ist, babelwird geladenAmirimit arab.ARASchrift und Sprache. Das ist in der Schriftart vorhanden, also ist alles gut.

Enthält aber babel-en.iniFolgendes:

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

Wenn also Englisch verwendet wird, babelwird versucht,Amirimit latn.ENGSchrift und Sprache. Allerdings existiert diese Kombination nicht im Font, daher erfolgt eine Warnung durch babel:

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

Jetzt müssen wir nur noch angeben, dass with für Englisch babelverwendet werden soll , während wir weiterhin with für Algerisches Arabisch verwenden .Language=DefaultScript=LatinLanguage=ArabicScript=Arabic

Entfernen Sie es hierzu englishaus den Hauptoptionen babelund laden Sie es stattdessen folgendermaßen:

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

Notiz: babelverwendet languagemit einem Kleinbuchstaben l, im Gegensatz zu dem, das ! fontspecverwendet .Language

babelwird jetzt geladenAmirimit unterstützten Optionen für englischen Text und es wird keine Warnung ausgegeben.

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}

Antwort2

Sie können die Sprache als Standard festlegen:

\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}

Antwort3

Erstens können Sie diese Warnung ignorieren. Sie ist harmlos. (Ich stimme jedoch zu, dass es eine gute Praxis ist, bedeutungslose Warnungen zu unterdrücken, damit Sie keine bedeutungsvollen übersehen.)

Die Antwort von David Purton ist sehr elegant, aber es gibt eine Situation, in der Sie möglicherweise etwas Komplexeres benötigen: Wenn Sie verschiedene Schriftarten für dieselbe Sprache laden, die unterschiedliche Optionen erfordern. Beispielsweise \babelfont[chinese-traditional]{rm}könnte a stattdessen Language=Chinese Traditionalund a \babelfont[chinese-traditional]{sf}unterstützen CJKShape = Traditional. Kurz gesagt: Einige arabische Schriftarten (einschließlich Noto Sans Arabic) unterstützen nicht Language=Arabic.

In diesem Fall müssen Sie fontspecdem \babelfontBefehl andere Optionen übergeben:

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

Eine großartige mehrsprachige Begleitschriftart für Khaled Hosnys Amiri ist jedoch eine andere seiner Schriftfamilien, Libertinus. Er hat Libertinus Serif auf Linux Libertine und Libertinus Sans auf Linux Biolinum aufgebaut. Ich überlasse ihm die Inspiration für die lateinischen Buchstaben in Amiri, aber sie ähneln einander sehr. Es gibt auch eine mathematische Schriftart, die Sie mit auswählen können unicode-math.

Wenn Sie alle Schriftfunktionen dieser Schriftarten aktivieren möchten, können Sie Folgendes versuchen:

\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}

realscriptsSie können die OpenType-Funktion für hochgestellte Zeichen mit dem Paket verwenden .

Beachten Sie, dass Babel 3.27 und darunter aufgrund eines Fehlers \defaultfontfeaturesin ignoriert \babelfont. Ich habe den Fehler hier umgangen, aber ein Fix ist auf dem Weg in den Release-Baum.

beamerDa standardmäßig serifenlose Schriftarten verwendet werden, müssen Sie an dieser Stelle definieren \babelfont[arabic]{sf}. Sie können entweder die Zeilen für kopieren babelfont[arabic]{rm}oder eine serifenlose arabische Schriftart laden, z. B.:

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

Antwort4

Im Gegenteil, es ist nichts Schlimmes. Diese Warnungen werden von angezeigt fontspec, nicht von babel. Sie könnten für Englisch irrelevant sein, aber nicht für viele andere Sprachen, einschließlich Arabisch. Um sie ganz zu entfernen (sie sind nur wirklich nützlich, wenn das Dokumentformat eingerichtet wird), können Sie die silentOption an übergeben fontspec:

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

Oder auch:

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

Bearbeiten.Eine dritte Möglichkeit besteht darin, es silentals Klassenoption zu übergeben.

verwandte Informationen