ムウェ

ムウェ

この例があります

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

コンパイルするとlualatexこの警告が表示されます

パッケージ fontspec 警告: 言語 'English' はフォント 'Amiri' では使用できません

何を間違えたのでしょうか? あるいは何を見逃したのでしょうか?

答え1

私も長い間、このことで悩んでいました。現状は次のようになっています。

これらはサポートされているスクリプトと言語ですアミリ:

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

でアラビア語をロードすると\babelprovide[import=ar-DZ, main]{arabic}babelが読み込まれますbabel-ar-DZ.ini

このファイルには、次の内容が含まれています (他にも次の内容があります):

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

アルジェリアアラビア語が使用言語の場合babelアミリスクリプトとarab.ARA言語。これはフォント内に存在するので、すべて問題ありません。

しかし、babel-en.ini次の内容が含まれています:

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

英語が使用されている場合は、babel読み込もうとしますアミリスクリプトと言語の組み合わせlatn.ENG。ただし、この組み合わせはフォントに存在しないため、次の警告が発行されますbabel

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

今必要なのは、英語には with をbabel使用し、アルジェリア アラビア語には引き続きwithを使用するように指示することだけです。Language=DefaultScript=LatinLanguage=ArabicScript=Arabic

これを行うには、englishメインbabelオプションから削除し、代わりに次のようにロードします。

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

注記: babellanguageは小文字で使用しl、一方fontspecwhich はLanguage!を使用します。

babel読み込まれますアミリ英語テキストのオプションがサポートされており、警告は発行されません。

ムウェ

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

答え2

言語をデフォルトに設定できます:

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

答え3

まず、この警告は無視できます。無害です。(ただし、意味のある警告を見逃さないように、意味のない警告を抑制するのは良い習慣だと思います。)

David Purton の回答は非常に簡潔ですが、より複雑なものが必要になる状況が 1 つあります。それは、同じ言語で異なるオプションを必要とする異なるフォントをロードする場合です。たとえば、 は を\babelfont[chinese-traditional]{rm}サポートしLanguage=Chinese Traditional、 は を\babelfont[chinese-traditional]{sf}サポートする可能性がありますCJKShape = Traditional。さらに言えば、一部のアラビア語フォント (Noto Sans Arabic を含む) は をサポートしていませんLanguage=Arabic

この場合、コマンドfontspecに異なるオプションを渡す必要があります\babelfont

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

しかし、Khaled Hosny の Amiri によく合う多言語フォントは、彼の別のフォント ファミリーである Libertinus です。彼は、Libertinus Serif を Linux Libertine に基づいて、Libertinus Sans を Linux Biolinum に基づいて作成しました。Amiri のラテン文字のインスピレーションについては彼に任せますが、それらはよく似ています。 で選択できる数学フォントもありますunicode-math

これらのフォントのすべてのフォント機能を有効にしたい場合は、次の操作を試してください。

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

パッケージでは上付き文字の OpenType 機能を使用できますrealscripts

バグのため、Babel 3.27 以下では が無視されることに注意してください\defaultfontfeatures\babelfontここではバグを回避しましたが、修正がリリース ツリーに取り込まれています。

この時点で、 はbeamerデフォルトでサンセリフ フォントを使用するため、 を定義する必要があります\babelfont[arabic]{sf}。 の行をコピーするかbabelfont[arabic]{rm}、サンセリフ アラビア語フォントをロードすることができます。例:

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

答え4

むしろ、何も問題はありません。これらの警告は ではfontspecなくで表示されますbabel。これらは英語には無関係かもしれませんが、アラビア語を含む他の多くの言語には関係があります。これらを完全に削除するには (これらはドキュメント形式が設定されている場合にのみ役立ちます)、silentにオプションを渡しますfontspec

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

または:

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

編集。3 番目のオプションは、silentクラス オプションとして渡すことです。

関連情報