この例があります
\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=Default
Script=Latin
Language=Arabic
Script=Arabic
これを行うには、english
メインbabel
オプションから削除し、代わりに次のようにロードします。
\babelprovide[import,language=Default]{english}
注記: babel
language
は小文字で使用しl
、一方fontspec
which は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
クラス オプションとして渡すことです。