为什么 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 的默认编码fontspec是 和EU1

在此处输入图片描述

相关内容