LuaLaTeX + newtxでサンセリフがフォント変更されない

Re: LuaLaTeX + newtxでサンセリフがフォント変更されない

- Z. R. の投稿
返信数: 0
確かTL2020では問題なかったはずですが

■TeX Live 2020での状況の確認

例えば、TeX Live 2020のlualatexで次のソースをコンパイルすると:

% TeX Live 2020のlualatexでコンパイル
\documentclass{article}
\usepackage{newtxtext,newtxmath}
\begin{document}
\encodingdefault% エンコーディング
/\rmdefault% rmのファミリ名
/\sfdefault% sfのファミリ名
\end{document}

“T1/ntxtlf/qhv”という出力が得られます。エンコーディングが「T1」なのでUnicodeフォントになっていないことがわかります。

実際、この時のNew TXはまだUnicode TeX(XeTeX/LuaTeX)に対応してなかったようで、もし(無理やり)読み込んだ場合は、pdfTeX用の設定(T1エンコーディングのType1形式フォント)をそのまま適用するという動作になります。

一般的に、「Unicode TeXをT1エンコーディングで使用する」ことは以下の理由で推奨されていません

  • 当然だが「Unicode TeXとして期待される」ものに反する動作をする。
  • 場合により明らかに理屈に合わない動作をする。
  • 種々のパッケージが“その状態”をサポートするとは期待できない。

ただし、LaTeXカーネルとしては一応“その状態”はサポートされているはずです。

そういうわけで、「TeX Live 2020のNew TXと同じ」状態を期待値だと考えてみます。

■TeX Live 2020での状況の再現

今のnewtxパッケージ(newtxtextではなく)には「Type1形式のフォントの使用」を明示的に指示する“type1”というオプションがあります。色々と試した結果、次のようにすると、同じ状況を得ることができました。

% TeX Live 2021のlualatexでコンパイル
\documentclass{article}
% エンコーディングを自分でT1に変える
\usepackage[T1]{fontenc}
% Type1形式を指定, fontspecの読込を抑止
\usepackage[type1,nofontspec]{newtx}
\begin{document}
\meaning\sfdefault\par
\textsf{The quick brown fox jumps over the lazy dog.}
\end{document}

※LuaTeX-ja併用でも問題なく動作するようです。


抜本的な対応

マニュアルには「サンセリフはTeX Gyre Herosになる」と書いてあるんだから、UNicode TeXでもその仕様が守られるべきだと自分は思いますけどね……。