la fuente árabe deseada es Droid Arabic Naskh
la fuenteaquí. El problema es que cuando compilo el documento usando xetex obtengo cuadros divertidos en lugar de un conjunto de caracteres no árabe como en el MWE a continuación:
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}
Producción
Pregunta
¿Hay alguna manera de proporcionar una fuente alternativa para la fuente Droid Arab Naskh para componer todos los juegos de caracteres no árabes y qué fuente alternativa sería más adecuada que cualquier otra para este trabajo?
Actualizar
\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}
Producción
Respuesta1
Marcar los cambios de idioma con \foreignlanguage{english}{...}
, \begin{otherlanguage*}{english}...\end{otherlanguage*}
es mejor y automáticamente hará lo que estás buscando, porque \englishfont
estaría seleccionado, con el beneficio adicional de una separación de palabras correcta.
Para los personajes problemáticos, utilice 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}
Las redefiniciones de english
y \textenglish
se deben a debilidades en la configuración.
Respuesta2
Después de algunas pruebas y errores, encontré una solución a este problema; utilizando otra fuente árabe que ya admita los juegos de caracteres latinos y que no sea compatible con la fuente árabe de interés. Es como complementar el juego de caracteres requerido de una fuente con los de otra. En mi prueba, uséAmirifuente:
\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}
Producción
Precaución
Esta respuesta funciona bien para el texto pequeño en MWE, pero se rompió después de un par de páginas en mi documento, que es un poco largo; además, uno o dos conjuntos de caracteres no se pudieron escribir y, por lo tanto, aparecieron como cuadros divertidos. Por lo tanto, no recomiendo esto como solución al problema; aun así, la respuesta solo es relevante para los idiomas RTL, como el hebreo y el árabe.