Definir uma fonte substituta para conjuntos de caracteres não árabes não suportados por uma determinada fonte árabe

Definir uma fonte substituta para conjuntos de caracteres não árabes não suportados por uma determinada fonte árabe

a fonte árabe desejada é Droid Arabic Naskhfonteaqui. O problema é que quando compilo o documento usando xetex recebo caixas engraçadas em vez de conjunto de caracteres não-árabe como no MWE abaixo:

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}

Saída
insira a descrição da imagem aqui

Pergunta
Existe uma maneira de fornecer uma fonte alternativa para a fonte Droid Arabic Naskh para compor todos os conjuntos de caracteres não árabes e qual fonte alternativa seria mais adequada do que qualquer outra para este trabalho?

Atualizar

\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}

Saída

insira a descrição da imagem aqui

Responder1

Marcar as alterações de idioma com \foreignlanguage{english}{...}, \begin{otherlanguage*}{english}...\end{otherlanguage*}é melhor e fará automaticamente o que você procura, pois \englishfontseria selecionado, com o benefício adicional da hifenização correta.

Para os personagens problemáticos, use 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}

As redefinições de englishe \textenglishsão devidas a deficiências na configuração.

insira a descrição da imagem aqui

Responder2

Após algumas tentativas e erros, encontrei uma solução para este problema; usando outra fonte árabe que já suporta os conjuntos de caracteres latinos que não são suportados pela fonte árabe de interesse. É como complementar o conjunto de caracteres necessário de uma fonte com os de outra. No meu teste, useiAmiriFonte:

\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}

Saída
insira a descrição da imagem aqui

Cuidado
Esta resposta funciona bem para o texto pequeno no MWE, mas quebrou depois de algumas páginas no meu documento, que é um pouco longo. Além disso, um ou dois conjuntos de caracteres não puderam ser digitados e, portanto, apareceram como caixas engraçadas. Portanto, não recomendo isso como solução para o problema, mas a resposta só é relevante para idiomas RTL, como hebraico e árabe.

informação relacionada