texjporg / platex

pLaTeX community edition
BSD 3-Clause "New" or "Revised" License
49 stars 8 forks source link

\DeclareKanjiSubstitution と \DeclareFontSubstitution の干渉 #93

Closed aminophen closed 4 years ago

aminophen commented 4 years ago

Slack の会話を記録のために転載させてください。

aminophen

前から思ってたんですが,pLaTeX の \DeclareErrorKanjiFont\default@k@family etc. を作るのに \DeclareKanjiSubstitution\default@family etc. を作ります。なぜ?(多分,ちゃんと動いているんだとは思いますが…。)

h_kitagawa

\wrong@fontshape で shape -> series -> family と代替していくところで(\default@k@family 他ではなく) \default@family 他が使われるから?

aminophen

うーん,でも platex 起動直後に \show\default@family すると mc になっているのはやっぱり変な気が…。例えば platex で

\documentclass{article}
\DeclareFontEncoding{FOO1}{}{}
%\DeclareFontSubstitution{FOO1}{none}{m}{n}
\DeclareFontFamily{FOO1}{none}{}
\DeclareFontShape{FOO1}{none}{m}{n}{ <-> cmtt10 }{}
\begin{document}
\stop

とやると

! LaTeX Error: This NFSS system isn't set up properly.
For encoding scheme FOO1 the defaults mc/m/n do not form a valid font shape

が出ますが,本来なら

For encoding scheme FOO1 the defaults cmr/m/n do not form a valid font shape

であるべきです。

aminophen commented 4 years ago

92 の 'kanjiencodingpair' ブランチに追加する形で fcd26df を実装。巻き戻し(rollback)・未来へ進める(roll forward)とも成功しました。

aminophen commented 4 years ago

おっと,以下のソースがエラーになってしまいました。

\documentclass{jarticle}
\DeclareSymbolFont{hogemath}{OT1}{hoge}{m}{n}
\DeclareSymbolFont{piyomath}{JY1}{piyo}{m}{n}
%
\DeclareFontFamily{OT1}{guha}{}
\DeclareFontShape{OT1}{guha}{m}{n}{<-> cmfi10}{}
\DeclareFontShape{JY1}{gt}{l}{it}{<-> hgotheb-h}{}
\DeclareFontSubstitution{OT1}{guha}{m}{n}
\DeclareKanjiSubstitution{JY1}{gt}{l}{it}
%
\begin{document}
%\romanfamily{hoge}\kanjifamily{piyo}\selectfont
\setbox0=\hbox{$\empty$}%
\end{document}
LaTeX Font Warning: Font shape `OT1/hoge/m/n' undefined
(Font)              using `OT1/guha/m/n' instead on input line 13.

LaTeX Font Warning: Font shape `JY1/piyo/m/n' undefined
(Font)              using `JY1/cmr/m/n' instead on input line 13.

LaTeX Font Warning: Font shape `JY1/cmr/m/n' undefined
(Font)              using `JY1/cmr/m/n' instead on input line 13.

! Corrupted NFSS tables.
wrong@fontshape ...message {Corrupted NFSS tables}
                                                  error@fontshape else let f...
l.13 \setbox0=\hbox{$\empty
                           $}%
?
aminophen commented 4 years ago

先日 plfonts.dtx に \do@subst@correction の修正についてドキュメント化した際に調べたのと同じ現象が起きていそうです。

\do@subst@correction と同様に \wrong@fontshape

の2通りがあるので,後者が未対策になってしまったと思われます。

h-kitagawa commented 4 years ago

とりあえず LuaTeX-ja だと commit feb2b29 みたいに直せばエラーがなくなったので,plfonts も同様にすれば良いと思います.

aminophen commented 4 years ago

ありがとうございます。やってみます。

aminophen commented 4 years ago

962e5ed で luatexja を真似ました。

aminophen commented 4 years ago

2020-04-12 を出したので close します。