이 예가 있습니다
\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}
로드 하면 .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
Language
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
클래스 옵션으로 전달하는 것입니다.