texjporg / tex-jp-build

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

[XeTeX] BMP超のコントロールシンボル #167

Closed h-kitagawa closed 6 months ago

h-kitagawa commented 9 months ago

146 に関連する話ですが,現行の XeTeX では,\🍌 のような「BMP超のコントロールシンボル」にバッククオートを前置して文字コードを得ることができません.

plain tex with UTF-8 text ::

\count1000=`\🍌
\count1000=`\𪀯
\bye

console log:

$ xetex a
This is XeTeX, Version 3.141592653-2.6-0.999996 (TeX Live 2024) (preloaded format=xetex)
 restricted \write18 enabled.
entering extended mode
(./a.tex
! Improper alphabetic constant.
<to be read again> 
                   \ 
l.1 \count1000=`\

? 
! Undefined control sequence.
<recently read> \ 

l.1 \count1000=`\

? 
! Improper alphabetic constant.
<to be read again> 
                   \ꀯ 
l.2 \count1000=`\ꀯ

? 
! Undefined control sequence.
<recently read> \ꀯ 

l.2 \count1000=`\ꀯ

? 
 )
No pages of output.
Transcript written on a.log.

エラーが出るのももちろん変ですが,ログでは文字も化けています:

npTeX をいじっているときに,npTeX 側でこっそり直したのを思い出したので,XeTeX 用にパッチを作りました.いかがでしょう. https://github.com/h-kitagawa/texlive-source/commit/fd477fab2380b73bc370fb00f1a4ddaa16efb4c8 (これも,今年は見送りでも良いかな,と思っています)

h-kitagawa commented 9 months ago

(別チケットのほうが良いかもしれませんが,関連して) pTeX 系列では,\count100=`\あのようにバッククオートを「和文文字 1 文字からなる制御綴」に前置して文字コードを得ることはできないのでした.これは意図的な仕様なのでしょうか? あまり深い理由がないのならば,できるようにしても良いかもしれません.パッチしたものを https://github.com/h-kitagawa/tex-jp-build/tree/ptex_ctlsym においておきます.

t-tk commented 6 months ago

ご提案いただいたpatchを当て、サンプルを make check で走るようにして TeX Live svnにコミットしました。r71288, r71289 直すべきところがあればご指摘お願いします。 一応ここは閉じておきます。

aminophen commented 6 months ago

pTeX 系列で…(中略)…バッククオートを「和文文字 1 文字からなる制御綴」に前置して文字コードを得る

要ドキュメント化 → https://github.com/texjporg/ptex-manual/issues/10

※ 現状 https://github.com/texjporg/ptex-manual/blob/ce2a927adbf9f80e483a745ee7e29f9cae019d1b/ptex-manual.tex#L657C3-L657C36