Установка резервного шрифта для неарабской кодировки, не поддерживаемой определенным арабским шрифтом

Установка резервного шрифта для неарабской кодировки, не поддерживаемой определенным арабским шрифтом

желаемый арабский шрифт - Droid Arabic NaskhисточникздесьПроблема в том, что когда я компилирую документ с помощью xetex, я получаю странные квадратики вместо неарабских символов, как в 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, но он сломался через пару страниц в моем документе, который немного длинный, вдобавок один или два набора символов не могли быть набраны и поэтому отображались как смешные квадратики. Поэтому я не рекомендую это как решение проблемы, тем не менее ответ актуален только для языков с письмом справа налево, таких как иврит и арабский.

Связанный контент