texjporg / tex-jp-build

Minimum source repository to build Japanese TeX processing tools
23 stars 6 forks source link

[ptex] 最初・末尾が JFM グルー・カーンであるボックス #86

Open h-kitagawa opened 5 years ago

h-kitagawa commented 5 years ago

「文字タイプ 0 の文字」との間に JFM グルー(やカーン)が設定されている文字がボックスの最初・末尾に来た場合の処理が,グルーかカーンかによって異なります.

例として,gist を作りました.Γ は前後の「文字タイプ 0 の文字」との間にカーン,γ はグルーを入れるようにしていますが,

> \box0=
\hbox(8.99998+1.0)x14.15001, yoko direction
.\displace 0.0
.\tenrm a
.\hbox(8.99998+1.0)x4.14998, yoko direction
..\kern-3.14001
..\displace 0.0
..\test Γ
..\kern-2.71
.\tenrm a

! OK.
\out #1->\setbox 0=\hbox {#1}\showbox 0

l.10 \out{a\hbox{Γ}a}
                      % ボックス周囲に xkanjiskip なし
?
> \box0=
\hbox(8.99998+1.0)x22.40556, yoko direction
.\displace 0.0
.\tenrm a
.\glue(\xkanjiskip) 2.40553 plus 1.0 minus 1.0
.\hbox(8.99998+1.0)x10.0, yoko direction
..\displace 0.0
..\test γ
..\glue(refer from jfm) 0.0
.\tenrm a

! OK.
\out #1->\setbox 0=\hbox {#1}\showbox 0

l.13 \out{a\hbox{γ}a}
                       % ボックス前のみ xkanjiskip

とグルーかカーンか,さらにグルーの場合は前後で [x]kanjiskip の入り方が異なります.

h-kitagawa commented 5 years ago

以下,補足&私が感じている疑問点です.

.\tenrm a
.\hbox(8.99998+1.0)x4.14998, yoko direction
..\kern-3.14001
..\displace 0.0
..\test Γ
..\kern-2.71
.\tenrm a

TFM 由来のカーンと JFM 由来のカーンとは区別できないので,ボックス内の先頭・末尾の JFM 由来カーンを消去しないというのは納得ができます.しかし,「フォント由来の自動的に挿入されるカーンのおかげでボックスの周囲に [x]kanjiskip が入らなくなる」というのが気になります.

.\tenrm a
.\glue(\xkanjiskip) 2.40553 plus 1.0 minus 1.0
.\hbox(8.99998+1.0)x10.0, yoko direction
..\displace 0.0
..\test γ
..\glue(refer from jfm) 0.0
.\tenrm a

「ボックス内の先頭のノードが JFM 由来のグルーの場合はそれを消し,最後のノードが JFM 由来のグルーの場合はゼロにする」というコードは,少なくとも pTeX j1.7e p1.0.9F (1992-01-21) 以降にあります.

aminophen commented 5 years ago

TFM 由来のカーンと JFM 由来のカーンとは区別できない

glue_kern と lig_kern の処理は完全に別実装なので,必要があれば区別は出来そうです。(たしか #52 の頃に似た話が合った気がする)

「ボックス内の先頭のノードが JFM 由来のグルーの場合はそれを消し,最後のノードが JFM 由来のグルーの場合はゼロにする」

25 の話ですね。私も疑問です。

aminophen commented 5 years ago

「フォント由来の自動的に挿入される JFM グルーのおかげでボックスの直後に [x]kanjiskip が入らなくなる」というのが気になります.

私も疑問ではありますが,最近は jlreq クラスの (u)pTeX 用メトリクスのように「始め括弧類の後・終わり括弧類の前」のような「[x]kanjiskip を入れたくない場所に JFM グルーを入れてある例」もある(“たぶん意図はそうだろう”と私が勝手に推測しているにすぎませんが)ので,単に変えれば解決というわけでもないと思っています。