texjporg / platex

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

\adjustbaseline の基準とする全角文字を「全角空白」から「漢」へ #48

Closed aminophen closed 6 years ago

aminophen commented 7 years ago

plfonts.dtx 及び uplfonts.dtx には

\adjustbaseline 現在の和文フォントの空白(EUC コード0xA1A1)の中央に 現在の欧文フォントの / の中央がくるようにベースラインシフトを設定します。

とあるのですが,LuaTeX-ja ではかなり昔に基準を「あ」や「漢」に変えていて,最近は「文字クラス 0 の和文文字」にしているようです。全角空白 (EUC 0xA1A1) が JFM で寸法特別扱いされる可能性は確かにあるので,安全のため次回から「漢 (JIS 0x3441)」に変えておこうと思っています。

h-kitagawa commented 7 years ago

特に異論はありません(以下は雑感です).

aminophen commented 7 years ago

patch level 1 にして \adjustbaseline を修正しました。

pTeX で zw は「文字クラス0の和文文字」の幅,zh は「文字クラス0の和文文字」の高さ+深さになっているので,現行のようにしなくても \cHT と \cwd については単純に \cHT=1zw かつ \cwd=1zw とすれば良いと思うのは私の気のせい?

仰るとおりだと思いますが,結局他の寸法は計らないといけないので,単純に全部計る方が一貫しているという考えかな,と勝手に推測します。あまり深い意味はないかと。

欧文 tfm では em, ex の示す値は tfm 中に \fontdimen6, \fontdimen5 として実際のグリフ幅とは無関係に決められていたが,なぜ pTeX ではそうしなかったのだろうか?

なぜでしょうね? 私も見当がつきません。

zr-tex8r commented 7 years ago

なぜでしょうね? 私も見当がつきません。

「長体・平体対応」とかと関係あるのかな?(てきとー)

aminophen commented 7 years ago

よく見ると jclasses.dtx の中の *.clo (クラスオプション)の実装内に,まだ \euc"A1A1 が残っていました。次のリリースではこれも「漢」に変えましょう。

aminophen commented 7 years ago

(\topskip の設定に \Cht が使われているので今さら変えるわけにはいかないと思いますが)

\Cht, \Cdp など「基準となる和文フォント」の寸法が tarticle.cls など縦組クラスでも無関係に 「横組ボックスに基準文字を入れて計る」 という実装になっている理由は何だったのだろう? これが理由で、縦組クラスでは \selectfont で更新される「現在の和文フォント」の寸法 \cht, \cdp と決して一致しない状態ですから、不思議です。

aminophen commented 7 years ago

platex, uplatex, jsclasses のすべてについて,「基準となる和文文字」を「漢」に変更完了。

aminophen commented 6 years ago

jclasses も jsclasses も,\begin{document} の後に \box0 としてみると「漢」が出てきました。内部処理で使われたものがクラスファイル終了後に残っているのは気持ち悪かったので消してみました。

https://github.com/texjporg/platex/commit/e78c6ae6294f748ea24e8b612c3d228701cf57d6, https://github.com/texjporg/jsclasses/commit/4a4368574f51afaba1f79392d4d8d84bc9fda501