Festlegen einer Ersatzschriftart für nicht-arabische Zeichensätze, die von einer bestimmten arabischen Schriftart nicht unterstützt werden

Festlegen einer Ersatzschriftart für nicht-arabische Zeichensätze, die von einer bestimmten arabischen Schriftart nicht unterstützt werden

die gewünschte arabische Schriftart ist Droid Arabic NaskhQuelleHier. Das Problem besteht darin, dass ich beim Kompilieren des Dokuments mit xetex komische Kästchen anstelle eines nicht-arabischen Zeichensatzes erhalte, wie im folgenden 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}

Ausgabe
Bildbeschreibung hier eingeben

Frage
Gibt es eine Möglichkeit, eine Ersatzschriftart für die Schriftart Droid Arabic Naskh bereitzustellen, um alle nicht-arabischen Zeichensätze zu setzen, und welche Ersatzschriftart wäre für diese Aufgabe besser geeignet als jede andere?

Aktualisieren

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

Ausgabe

Bildbeschreibung hier eingeben

Antwort1

Das Markieren der Sprachänderungen mit \foreignlanguage{english}{...}ist \begin{otherlanguage*}{english}...\end{otherlanguage*}besser und führt automatisch zu dem gewünschten Ergebnis, da \englishfontausgewählt würde, mit dem zusätzlichen Vorteil der korrekten Silbentrennung.

Verwenden Sie für die problematischen Zeichen 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}

Die Neudefinitionen von englishund \textenglishsind auf Schwächen im Setup zurückzuführen.

Bildbeschreibung hier eingeben

Antwort2

Nach einigem Ausprobieren habe ich eine Lösung für dieses Problem gefunden: durch die Verwendung einer anderen arabischen Schriftart, die bereits die lateinischen Zeichensätze unterstützt, die von der betreffenden arabischen Schriftart nicht unterstützt werden. Es ist so, als würde man den erforderlichen Zeichensatz einer Schriftart durch den einer anderen ergänzen. In meinem Versuch habe ich verwendetAmiriSchriftart:

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

Ausgabe
Bildbeschreibung hier eingeben

Vorsicht
Diese Antwort funktioniert für den kleinen Text im MWE einwandfrei, ist aber nach ein paar Seiten in meinem etwas langen Dokument kaputtgegangen. Außerdem konnten ein oder zwei Zeichensätze nicht gesetzt werden und erschienen daher als komische Kästchen. Ich empfehle dies also nicht als Lösung des Problems, die Antwort ist trotzdem nur für RTL-Sprachen wie Hebräisch und Arabisch relevant.

verwandte Informationen