我需要使用几种字体创建文档。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
。