Мне нужно создать документ с использованием нескольких шрифтов. Два или три будут 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 и fontspec
— EU1
.