원하는 아랍어 글꼴이 Droid Arabic Naskh
소스 입니다여기. 문제는 xetex를 사용하여 문서를 컴파일할 때 아래 MWE와 같이 아랍어가 아닌 문자 집합 대신 재미있는 상자가 표시된다는 것입니다.
MWE
\documentclass[11pt]{scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq,abjadjimnotail=true]{arabic}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,Ligatures=TeX]{Droid Arabic Naskh}
\begin{document}
هذا نص بالعربية وفيه بعض الرموز الاخرى مثلا (-، * ، + ، )
\end{document}
산출
질문
아랍어가 아닌 모든 문자 세트를 조판하기 위해 Droid Arabic Naskh 글꼴에 대체 글꼴을 제공할 수 있는 방법이 있습니까? 이 작업에 다른 글꼴보다 더 적합한 대체 글꼴은 무엇입니까?
업데이트
\documentclass[11pt]{scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq,abjadjimnotail=true]{arabic}
\setotherlanguages{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,Ligatures=TeX]{Droid Arabic Naskh}
\newfontfamily\englishfont{Linux Libertine O}
\usepackage[Latin,Arabic]{ucharclasses}
\setTransitionsForLatin{\begingroup\englishfont}{\endgroup}
\renewenvironment{english}
{\begin{LTR}\begin{otherlanguage*}{english}}
{\end{otherlanguage*}\end{LTR}}
\renewrobustcmd{\textenglish}[1]{\LR{\foreignlanguage{english}{#1}}}
\begin{document}
هذا نص بالعربية وفيه بعض الرموز الاخرى مثلا (-، * ، + ، )
\end{document}
산출
답변1
언어 변경 사항을 로 표시하는 것이 \foreignlanguage{english}{...}
더 좋으며 올바른 하이픈 연결의 추가 이점과 함께 가 선택되므로 \begin{otherlanguage*}{english}...\end{otherlanguage*}
찾고 있는 작업을 자동으로 수행합니다 .\englishfont
문제가 있는 문자의 경우 다음을 사용하십시오 ucharclasses
.
\documentclass[11pt]{scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq,abjadjimnotail=true]{arabic}
\setotherlanguages{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,Ligatures=TeX]{Scheherazade}
\newfontfamily\englishfont{Linux Libertine O}
\usepackage[Latin,Arabic]{ucharclasses}
\setTransitionsForLatin{\begingroup\englishfont}{\endgroup}
\renewenvironment{english}
{\begin{LTR}\begin{otherlanguage*}{english}}
{\end{otherlanguage*}\end{LTR}}
\renewrobustcmd{\textenglish}[1]{\LR{\foreignlanguage{english}{#1}}}
\begin{document}
هذا نص بالعربية وفيه بعض الرموز الاخرى مثلا (-، * ، + ، )
\begin{english}This is a text in Arabic with some
characters like (, +, *, -)\end{english}
ة وفيه بعض الرموز الاخرى مثلا (-، * ، + ،\textenglish{This is a text in Arabic with some
characters like (, +, *, -)}
\end{document}
english
및 의 재정의는 \textenglish
설정의 약점으로 인해 발생합니다.
답변2
몇 번의 시행착오 끝에 저는 이 문제에 대한 한 가지 해결책을 찾았습니다. 관심 있는 아랍어 글꼴에서 지원하지 않는 라틴 문자 집합을 이미 지원하는 다른 아랍어 글꼴을 사용합니다. 이는 한 글꼴의 필수 문자 집합을 다른 글꼴의 문자 집합으로 보완하는 것과 같습니다. 재판에서 나는아미리폰트:
\documentclass[11pt]{scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq,abjadjimnotail=true]{arabic}
\setotherlanguages{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,Ligatures=TeX]{Droid Arabic Naskh}
\newfontfamily\arabicfontx[Script=Arabic,Scale=1.2,Ligatures=TeX]{Amiri}
\newfontfamily\englishfont{Linux Libertine O}
\usepackage[Latin,Arabic]{ucharclasses}
\setTransitionsForLatin{\begingroup\arabicfontx}{\endgroup}
\begin{document}
هذا نص بالعربية وفيه بعض الرموز الاخرى مثلا (- ، * ، + ، ).
\end{document}
산출
주의
이 답변은 MWE의 작은 텍스트에는 잘 작동하지만 약간 긴 내 문서의 몇 페이지 후에 깨졌습니다. 또한 하나 또는 두 개의 문자 집합을 입력할 수 없어 재미있는 상자로 표시되었습니다. 따라서 나는 이것을 문제에 대한 해결책으로 권장하지 않습니다. 여전히 답변은 히브리어 및 아랍어와 같은 RTL 언어에만 관련됩니다.