設計者の高岡さんに以前聞いたことのメモ。
▼ 内部的にUTF8の理由
-
1: UTF16だと"0"byteを含む文字がある → dartscloneでは"0"byteを許容できない
- シフトするときに、+0だと、そこからシフトしない → 成り立たない
- 普通のDAではC+1しているが、dartscloneでは+1していない
- 255のとき+1すると=256、8bitで溢れる → 9bitにはしたくない
- UTF8ではnull文字以外で"0"はない
-
2: UTF16だと(コード割当的に?)Trieが非効率になる、という古くからの言い伝え
- UTF16を積極的に使いたい理由は「Javaだから」以外ない
- プラグインにはUTF8としてはみせていない(Stringでやってもらう)
▼ UTF8InputText
-
originalText
: 原入力文(UTF16) -
modifiedText
: 正規化後文(UTF16)
-
bytes
:modifiedText
のUTF8バイト列 -
offsets
:bytes
→originalText
の対応 -
byteIndexes
:bytes
→modifiedText
の対応 -
textOffset
(UTF8InputTextBuilder
内):modifiedText
→originalText
の対応