Почему fontspec конфликтует со шрифтами metafont?

Почему fontspec конфликтует со шрифтами metafont?

Мне нужно создать документ с использованием нескольких шрифтов. Два или три будут metafontшрифтами, используемыми для большей части документа на языке, основанном на латинице, а затем мне нужно использовать еще один шрифт для языка Юго-Восточной Азии (вероятно, шрифт TrueType или подобный, поскольку я не могу найти шрифты на основе TeX, которые работают с языками Юго-Восточной Азии). Насколько я понимаю, я могу довольно легко комбинировать шрифты для языков, основанных на латинице:

\documentclass{book}
\usepackage[T1]{fontenc}
\begin{document}
Regular {\fontfamily{pzc}\selectfont and special} fonts.
\end{document}

дает мне желаемый эффект:

введите описание изображения здесь

но как только я добавляю fontspec, что требуется polyglossia, шрифт Zapf Chancery ( pzc) больше не работает:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\newfontfamily\thaifont{Norasi}
\setdefaultlanguage{english}
\setotherlanguage{thai}
\begin{document}
English regular {\fontfamily{pzc}\selectfont and special} fonts.\\
\begin{thai}ตัวพิมพ์ภาษาไทย\end{thai}
\end{document}

производит:

введите описание изображения здесь

Есть ли способ избежать этой проблемы? Чтобы было ясно, ядуматьЯ должен использовать polyglossiaюго-восточные азиатские языки, и ядолжениспользуйте metafontтакже несколько шрифтов.

Отвечать

Как отметилУльрике Фишер, и далее поясняетсяэгрег, \fontencodingнеобходимо указать при использовании шрифтов Metafont, fontspecпоскольку последний ожидает , EU1тогда как первый нуждается в этом T1(я обобщаю то, что я понимаю о fontencoding, а это не так уж много).

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{polyglossia}
\newfontfamily\thaifont{Norasi}
\setdefaultlanguage{english}
\setotherlanguage{thai}
\begin{document}
English regular {\fontencoding{T1}\fontfamily{pzc}\selectfont and special} fonts.\\
\begin{thai}ตัวพิมพ์ภาษาไทย\end{thai}
\end{document}

дает правильный вывод:

введите описание изображения здесь

решение1

Часто можно найти заменители OpenType/TrueType для нужных шрифтов, и это касается Zapf Chancery: клон доступен как TeX Gyre Chorus. Но также можно использовать собственные шрифты TeX/Metafont: ниже приведен пример со шрифтом Dürer.

\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}

\newfontfamily\thaifont{Sathu} % I don't have Norasi
\newfontfamily\specialfont{TeX Gyre Chorus}

\setmainlanguage{english}
\setotherlanguage{thai}

\usepackage{duerer} % for a MF font

\begin{document}

English regular {\specialfont and special} fonts.\\
\begin{thai}ตัวพิมพ์ภาษาไทย\end{thai}

\textdurm{ABCDE} % duerer has only uppercase

\end{document}

Что \textdurm{ABCDE}, по сути, делает, так это

{\fontencoding{OT1}\fontfamily{durm}\selectfont ABCDE}

и \fontencoding{OT1}(или \fontencoding{T1}) — это то, чего вам не хватало, поскольку кодировка по умолчанию в XeLaTeX и fontspecEU1.

введите описание изображения здесь

Связанный контент