a fonte árabe desejada é Droid Arabic Naskh
fonteaqui. 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
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
Responder1
Marcar as alterações de idioma com \foreignlanguage{english}{...}
, \begin{otherlanguage*}{english}...\end{otherlanguage*}
é melhor e fará automaticamente o que você procura, pois \englishfont
seria 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 english
e \textenglish
são devidas a deficiências na configuração.
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
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.