-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Labels
Description
#150 関連ですが,issue を分割します.npTeX では「Unicode 1 文字 1 トークン」ですが,その一方で欧文フォントは 8-bit のままでしょうから,両者をどう折り合いをつけようか,という話です.
とりあえず今考えていることを述べます:
^^xy
は U+00xy と解釈して 1 トークンを作る.^^^^xyzw
,^^^^^^xyzwuv
も同様.- catcode=11, 12 の欧文文字トークン t からノードを作ろうとする過程で,
\nptexnoderecipe
の内容を見る.\nptexnoderecipe <char_code>={<token list>}
- t の文字コードが 0xpq のとき,
\nptexnoderecipe"pq
の値が空でないならば,t からノードは作られず,\nptexnoderecipe"pq
の値が入力に追加される.
- プリミティブ
\char"pq
は符号位置 0xpq の文字ノードを作る.- 欧文文字ノードか和文文字ノードかは
\cjkxcode"pq
の値に依存する.←[TODO] catcode に依存させるか? \kchar
は常に和文文字ノードを作る.\achar
は常に欧文文字ノードを作る.
- 欧文文字ノードか和文文字ノードかは
\Uchar
,\Ucharcat
は文字トークンに展開される.- [TODO]
\chardef
で定義されたトークンはどちらの扱いにすべきか? - [TODO]
\accent
によってアクセントがつく文字に対して\nptexnoderecipe
が定まっていた場合はどうするか?\accent<char_code><optional assignments><character>
とアクセントとそれがつく文字の間に(フォント切り替えなどの)代入が許容されるので,\nptexnoderecipe
の内容を見るというのもありか.
- [非現実的?] そもそも
\nptexnoderecipe
なる仕組みを考えだしたのは,アクティブ文字 (catcode=13) がコントロールワードで使えないから.catcode=13 をコントロールワードで使えるか否かで「分割」できないか?- その場合,is_cjk(_x) は流用できるか?
e-TeX では 256 番以上の追加レジスタを eqtb テーブルでなく sparse tree に格納しています.同じ仕組みを流用することを考えると,「文字ごとに格納されるパラメータ」を増やすことへの抵抗がなくなってきました.