-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[upTeX] \char, \kchar で作った仮名のwidow penalty #103
Comments
ノードの中身を見て調べたのですが,和文文字を表す 2 つの char_node p, link(p) に対して,次のようになっています.
よく分かっていませんが,「info(link(p)) には文字コードに kcatcode*2^24 の値を加えている」という挙動にしては \char のときの値が変ですし, [5/31 12:40 edit] \jcharwdowpenalty の挿入対象か否かを見分ける手段が \kcatcode しかないというのであれば,確かにノード中に \kcatcode の情報を入れるしかないですね(ボックス終了時の \kcatcode で判断,というのも変な気がしますし).失礼しました. |
前後の命令によっては info(link(p))=0"12003059, 0"4a003059 になったりもするようです.おそらくは main_loop_j+1 の
の cur_cmd の値が \kcatcode になっていない? |
67b221c で,文字ノードを現在のリストに追加する際に \kcatcode の値を kcat_code(kcatcodekey(cur_chr)) で再評価するようにしました. |
67b221c でうまくいった……と思ったのですが,(e-pTeX の \Ucharcat で作るのが簡便な)リスト終了時と違う \kcatcode をもつ和文文字トークンへの考慮を忘れていました.「cur_cmd の範囲が kanji..hangul の範囲内ならそのまま,そうでなければノード作成時に \kcatcode 再評価」でも試していますが,どうも cur_cmd の値が安定しません. |
@h-kitagawa さん、ご検討ありがとうございます。
もしかして噛み合っていないかもしれませんが、私の考えた案は以下です。 \kchar もしくは \charの0x100以上の場合、(1)「UTF-8の普通の文字のときと同様、kcat_code(kcatcodekey(cur_chr)) が kanji..hangul の範囲内なら kcatcode kanji..hangul を付与」、(2)「 kcat_code(kcatcodekey(cur_chr)) が not_cjk の場合、kcatcode other_kcharを付与」 和文文字を表す 2 つの char_node p, link(p) に対して,次のようになるようにする。
|
この方針で良いと思います. |
#120 のオフトピで話題になっている「将来的に upTeX で pTeX を代用する」を実現するために,『pTeX で出来るが upTeX で出来ないこと』は出来る限り潰しましょう。 この kcatcode / jcharwidowpenalty の件はその一つですね。 |
2年以上対応せず済みませんでした。 |
コミットしました。r65228 |
北川さんによる 3d88303 に含まれるテストファイルを利用し、CI で動くテストを追加しました。 |
\UTFC{}, \UTFT{}, \UTFK{}の多書体化 t-tk/japanese-otf-uptex#4 に関連してテスト中に気付きました。
pTeX では仮名文字を\charで作った場合でもwidow penaltyが有効なのに対し、upTeX ではwidow penaltyが無効になってしまうようです。
少々長いですが、以下のコードが例です。
「す」を
\char\kuten"0419
に変えた場合でもpTeXではwidow penaltyが効きますが、upTeXでは効かなくなってしまいます。「。」「.」を
\char\kuten
に変えた場合でも、その文字のpre break penaltyが有効なのはpTeX, upTeXに差はありません。(想定通り)ついでに「。」「.」を
\UTF{}
に変えた場合、その文字のpre break penaltyが効かなくなってしまう現象は現状pTeX,upTeX共通で私の想定していたとおりです。今まで気付いていませんでした。どうしましょうか。
テスト版数
The text was updated successfully, but these errors were encountered: