2021/06/01以降のpLaTeX環境と"ipamjm.sty"

2021/06/01以降のpLaTeX環境と"ipamjm.sty"

- nksPdRLJAF の投稿
返信数: 3
夜分遅くに失礼いたします。
当方,TeXLive 2023環境でIPAmj明朝体を利用したいと考え,IPAmj明朝フォントおよびipamjm.styをインストールしたのですが,ttf, tfm, vf, mapファイルを適宜作業ディレクトリ内に配置したり,texmf以下の所定の場所に配置してmktexlsrしたりしても,文字化けのような状態になりうまく漢字が表示されませんでした。

そこで,もしかするとTeXのバージョンの問題かも知れないと考え実験してみたところ,

%%%%%%%%%%ソースここから%%%%%%%%%%
%
\RequirePackage[2021/05/31]{platexrelease}%%% added by me
\documentclass{jbook}
\usepackage[scale=2.0]{ipamjm}
\AtBeginDvi{\special{pdf:mapfile ipamjm.map}}%%% added by me

\begin{document}
\pagestyle{empty}
\parindent=0pt
\huge

\char\sjis"82A0\MJMZM{000147}\char\sjis"82A0\MJMZM{000148}\MJMZM{000150}\MJMZM{000151}\MJMZM{000152}\MJMZM{000153}\MJMZM{000154}\MJMZM{000155}\MJMZM{000156}\MJMZM{000157}\MJMZM{000158}\MJMZM{000159}\MJMZM{000160}\char\sjis"82A0
\end{document}
%
%%%%%%%%%%ソースここまで%%%%%%%%%%

↑こちらのソース(ipamjm.styに付属のsample.texに一部追記したもの)では,本来意図されていたであろう漢字が出力され,PDFにもIPAmj明朝のフォントが埋め込まれていることを確認いたしました(添付zipファイル内の"sample-2021-05-31.pdf")。

一方,

%%%%%%%%%%ソースここから%%%%%%%%%%
%
\RequirePackage[2021/06/01]{platexrelease}%%% added by me
\documentclass{jbook}
\usepackage[scale=2.0]{ipamjm}
\AtBeginDvi{\special{pdf:mapfile ipamjm.map}}%%% added by me

\begin{document}
\pagestyle{empty}
\parindent=0pt
\huge

\char\sjis"82A0\MJMZM{000147}\char\sjis"82A0\MJMZM{000148}\MJMZM{000150}\MJMZM{000151}\MJMZM{000152}\MJMZM{000153}\MJMZM{000154}\MJMZM{000155}\MJMZM{000156}\MJMZM{000157}\MJMZM{000158}\MJMZM{000159}\MJMZM{000160}\char\sjis"82A0
\end{document}
%
%%%%%%%%%%ソースここまで%%%%%%%%%%

↑こちらのソースでは,意図と異なっているであろう漢字が表示され,フォントもTeXLive 2023標準の原ノ味明朝のままとなっていました(添付zipファイル内の"sample-2021-06-01.pdf")。

%%%%%%%%%%以下警告の部分を抜粋%%%%%%%%%%

LaTeX Font Warning: Font shape `JT1/mjmzm/m/' undefined
(Font) using `JT1/mc/m/n' instead on input line 11.

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

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

%%%%%%%%%%以上警告の部分を抜粋%%%%%%%%%%

platexreleaseパッケージのオプションから,2021/05/31と2021/06/01の間に何らかの更新が入っているに違いないだろうと思い少々調べたところ,2021/06/01にLaTeX/pLaTeXが更新されていたとわかりました(恥ずかしながら,皆様がリンク先で議論されていた内容の詳細までは理解できておらず・・・)。

https://okumuralab.org/tex/mod/forum/discuss.php?d=3124

今回の件と関連があるのではないかと思い,ご報告させていただいた次第です。
こちらのフォーラムで既出の話題でしたら恐縮です。
nksPdRLJAF への返信

Re: 2021/06/01以降のpLaTeX環境と"ipamjm.sty"

- はやて (h20y6m) の投稿

ipamjm.sty の以下の部分を

    \@tempcntb=\@tempcnta
    \divide\@tempcntb by "40
    \multiply\@tempcntb by "C0
    \advance\@tempcnta by \@tempcntb
    \if@ipamjm@uplatex
        \advance\@tempcnta by "113030
        \selectfont
        \char\@tempcnta
    \else
        \advance\@tempcnta by "3030
        \selectfont
        \char\jis\@tempcnta
    \fi

以下のように修正すると直ると思います。

    \selectfont% \@tempcntb が変更される前に \selectfont を実行する
    \@tempcntb=\@tempcnta
    \divide\@tempcntb by "40
    \multiply\@tempcntb by "C0
    \advance\@tempcnta by \@tempcntb
    \if@ipamjm@uplatex
        \advance\@tempcnta by "113030
        \char\@tempcnta
    \else
        \advance\@tempcnta by "3030
        \char\jis\@tempcnta
    \fi

\kanjishape の引数の評価が \selectfont まで遅延されるようになったことが原因だと思います。

        \kanjishape{\ifcase\@tempcntb0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or a\or b\or c\or d\or e\or f\fi}%

\selectfont よりも前に \@tempcntb が変更されると意図しないフォントが選択されてしまいます。

はやて (h20y6m) への返信

Re: 2021/06/01以降のpLaTeX環境と"ipamjm.sty"

- aminophen の投稿
> \selectfont よりも前に \@tempcntb が変更されると意図しない

https://github.com/texjporg/japanese-otf-mirror/commit/f530a3c6006811b9ca4c16faff5f97247653e7e8

(よく読めてませんが)これと同じような話ですかね。
(\selectfont を複数実行すると動作が遅いのかな?)
はやて (h20y6m) への返信

Re: 2021/06/01以降のpLaTeX環境と"ipamjm.sty"

- nksPdRLJAF の投稿
ご返信ありがとうございます。対応が遅れてしまい大変申し訳ございません。

ご指摘の通り\@tempcntbが変更される前に\selectfontを置いてみたところ,うまく出力されました。

お忙しい中貴重なアドバイスをいただきまして,大変ありがとうございました。