fallback mappingの考慮
fallback mappingってーのは、例えば:
- GBKの0xA2E3は、今は通貨記号U+20ACが割り当てられてるが、昔はユーザ私用領域U+E76Cだった
- 後方互換性を考えると、変換テーブルにはU+20AC → 0xA2E3だけでなくU+E76C → 0xA2E3も必要
というようなものの事をいいます。
しかしGBK → GB18030と建て増しを行う際に、U+E76Cはあらためて
0x8336C739に割り当てられたので、esdbで
NAME "GB18030"
ENCODING "GBK2K"
VARIABLE "4byte"
DEFCSID "ISO646-US" 0
DEFCSID "GB2312" 1
DEFCSID "GBK" 2
DEFCSID "GB18030" 3
のように書いちゃうとGBKのfallback mappingの方が先にに評価され
0x8336C739ではなく0xA2E3に変換されてしまう、まあこれも
NAME "GB18030"
ENCODING "GBK2K"
VARIABLE "4byte"
DEFCSID "ISO646-US" 0
DEFCSID "GB18030" 3
DEFCSID "GBK" 2
DEFCSID "GB2312" 1
と逆に書けば回避できるんだろうけど、あんまり美しくない気がする(性能劣化しかねないし)。
fallback mappingな文字にはそれとわかる属性をつけておいて
遅延評価したほうがいいと思うんだな。