특정 아랍어 글꼴에서 지원하지 않는 비 아랍어 문자 집합에 대한 대체 글꼴 설정

특정 아랍어 글꼴에서 지원하지 않는 비 아랍어 문자 집합에 대한 대체 글꼴 설정

원하는 아랍어 글꼴이 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 언어에만 관련됩니다.

관련 정보