MWE

MWE

이 예가 있습니다

\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이 경고를 받았습니다 .

패키지 글꼴 사양 경고: 'Amiri' 글꼴에는 언어 'English'를 사용할 수 없습니다.

내가 뭘 잘못했나요? 아니면 내가 무엇을 놓쳤는가?

답변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}로드 하면 .babelbabel-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}

메모: babel! 를 사용하는 것과는 반대로 language소문자를 사용합니다 .lfontspecLanguage

babel이제 로드됩니다아미리영어 텍스트에 대해 지원되는 옵션이 있으며 경고가 발행되지 않습니다.

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}

답변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의 답변은 매우 우아하지만 좀 더 복잡한 것이 필요할 수 있는 상황이 있습니다. 동일한 언어에 대해 다른 옵션이 필요한 다른 글꼴을 로드하는 경우입니다. 예를 들어, a \babelfont[chinese-traditional]{rm}might support Language=Chinese Traditional및 a \babelfont[chinese-traditional]{sf}might support 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입니다. 그는 Linux Libertine의 Libertinus Serif와 Linux Biolinum의 Libertinus Sans를 기반으로 했습니다. 나는 그에게 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기본적으로 sans-serif 글꼴을 사용하므로 정의해 주어야 합니다 \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}

편집하다.세 번째 옵션은 silent클래스 옵션으로 전달하는 것입니다.

관련 정보