なぜ fontspec は metafont フォントに干渉するのでしょうか?

なぜ fontspec は metafont フォントに干渉するのでしょうか?

いくつかのフォントを使用してドキュメントを作成する必要があります。metafontラテン語ベースの言語のドキュメントのほとんどには 2 つまたは 3 つのフォントを使用し、東南アジア言語には別のフォントを使用する必要があります (東南アジア言語で使用できる TeX ベースのフォントが見つからないため、TrueType フォントまたは類似のフォントを使用する必要があると思われます)。私の理解では、ラテン語ベースの言語ではフォントを簡単に組み合わせることができます。

\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下でメタフォント フォントを使用する場合に を指定する必要があります。これは、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 もその 1 つです。クローンとして 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

ここに画像の説明を入力してください

関連情報