I'm trying to set up a document with Polyglossia/XeLaTeX, which should be mostly in Hebrew, with some English excerpts. However, I can't get fontspec to use the correct English font for anything other than the main (roman) font - it instead uses the Hebrew-specified fonts.
Here is my minimal example file:
\documentclass{article}
\usepackage{fontspec}
\usepackage[a4paper]{geometry}
\makeatletter
\setmainfont[Language=English,Script=Latin]{Nimbus Roman No9 L}
\setsansfont[Language=English,Script=Latin]{Nimbus Sans L}
\setmonofont[Language=English,Script=Latin]{Nimbus Mono L}
\newfontfamily\hebrewfont[Language=Hebrew,Script=Hebrew,Scale=3.0]{Frank Ruehl CLM}
\newfontfamily\hebrewfontsf[Language=Hebrew,Script=Hebrew,Scale=3.0]{Nachlieli CLM}
\newfontfamily\hebrewfonttt[Language=Hebrew,Script=Hebrew,Scale=3.0]{Miriam Mono CLM}
\makeatother
\usepackage{xunicode}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\begin{document}
בדיקה, באיזה פונט זה יוצג \textenglish{\ttfamily{Hello, World!}}.
\begin{english}
Hello, \sffamily{Sans}, \ttfamily{Mono}
\end{english}
\end{document}
Hebrew fonts scale to better see outcome. The result looks like this:
As you can see, only the default (roman) English font is used, while all other English text uses the scaled (Hebrew) fonts. I have tried with or without Language/Script specifications, but results are always the same.
Edit: Changing it so English is default and Hebrew is other seems to fix it, but this is far from ideal - the document would be 95% Hebrew at least. But maybe it hints towards the root cause?
Edit2: Changing default language to English also has the undesired outcome of making it so Hebrew Sans-Serif and Typewriter/Mono text disappears completely.
Edit3: The proposed fix in Ulrike Fischer's answer has the side effect of making it so after the first use of \textenglish, all section titles are wrongly rendered using the English fonts:
\documentclass{article}
\usepackage{fontspec}
\usepackage[a4paper]{geometry}
\usepackage{xunicode}
\usepackage{polyglossia}
\setmainfont{DejaVu Sans}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans}
\newfontfamily\englishfont{TeX Gyre Termes}
\newfontfamily\englishfontsf{TeX Gyre Heros}
\newfontfamily\englishfonttt{TeX Gyre Cursor}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\makeatletter
\addto\inlineextras@english{\xpg@set@normalfont{english}}
\addto\blockextras@english{\xpg@set@normalfont{english}}
\makeatother
\begin{document}
\section{חלק ראשון}
נכתוב באנגלית \textenglish{Hello, World!}
ומעכשיו כל הכותרות לא יופיעו
\section{חלק שני}
הכותרת לא מופיעה, אבל הטקסט כן.
\end{document}
Different fonts will have different behaviors - the previously used Nimbus fonts only show spaces, while the Liberation ones show empty squares - I guess it has to do with what those fonts have in the Hebrew glyph locations.


