package gaga

const (
	ctUndefined = iota
	ctLatinLetter
	ctLatinDigit
	ctLatinSymbol
	ctKanaLetter 
	ctKanaSymbol 
	ctKanaVom    
	ctMax
)

const (
	ccUndefined = iota
	ccUpper
	ccLower
	ccHiragana
	ccKatakana
	ccLegacy    
	ccCombining 
	ccMax
)

const (
	cwUndefined = iota
	cwNarrow
	cwWide
	cwMax
)

const (
	vcUndefined  = iota 
	vcUnvoiced          
	vcVoiced            
	vcSemivoiced        
	vcMax
)

type unichar struct {
	codepoint        rune  
	category         uint8 
	charCase         uint8 
	charWidth        uint8 
	voicing          uint8 
	compatCase       rune  
	compatWidth      rune  
	compatVoiced     rune  
	compatSemivoiced rune  
}

type unichars []unichar

var latinFirst rune = 0x0020
var latinLast rune = 0x007F
var latinTable = unichars{
	{0x0020, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ' ', '\u3000', ' ', ' '},                
	{0x0021, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '!', '！', '!', '!'},                     
	{0x0022, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '"', '＂', '"', '"'},                     
	{0x0023, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '#', '＃', '#', '#'},                     
	{0x0024, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '$', '＄', '$', '$'},                     
	{0x0025, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '%', '％', '%', '%'},                     
	{0x0026, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '&', '＆', '&', '&'},                     
	{0x0027, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\'', '＇', '\'', '\''},                  
	{0x0028, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '(', '（', '(', '('},                     
	{0x0029, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ')', '）', ')', ')'},                     
	{0x002A, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '*', '＊', '*', '*'},                     
	{0x002B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '+', '＋', '+', '+'},                     
	{0x002C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ',', '，', ',', ','},                     
	{0x002D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '-', '－', '-', '-'},                     
	{0x002E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '.', '．', '.', '.'},                     
	{0x002F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '/', '／', '/', '/'},                     
	{0x0030, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '0', '０', '0', '0'},                      
	{0x0031, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '1', '１', '1', '1'},                      
	{0x0032, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '2', '２', '2', '2'},                      
	{0x0033, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '3', '３', '3', '3'},                      
	{0x0034, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '4', '４', '4', '4'},                      
	{0x0035, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '5', '５', '5', '5'},                      
	{0x0036, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '6', '６', '6', '6'},                      
	{0x0037, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '7', '７', '7', '7'},                      
	{0x0038, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '8', '８', '8', '8'},                      
	{0x0039, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '9', '９', '9', '9'},                      
	{0x003A, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ':', '：', ':', ':'},                     
	{0x003B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ';', '；', ';', ';'},                     
	{0x003C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '<', '＜', '<', '<'},                     
	{0x003D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '=', '＝', '=', '='},                     
	{0x003E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '>', '＞', '>', '>'},                     
	{0x003F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '?', '？', '?', '?'},                     
	{0x0040, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '@', '＠', '@', '@'},                     
	{0x0041, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'a', 'Ａ', 'A', 'A'},                         
	{0x0042, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'b', 'Ｂ', 'B', 'B'},                         
	{0x0043, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'c', 'Ｃ', 'C', 'C'},                         
	{0x0044, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'd', 'Ｄ', 'D', 'D'},                         
	{0x0045, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'e', 'Ｅ', 'E', 'E'},                         
	{0x0046, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'f', 'Ｆ', 'F', 'F'},                         
	{0x0047, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'g', 'Ｇ', 'G', 'G'},                         
	{0x0048, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'h', 'Ｈ', 'H', 'H'},                         
	{0x0049, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'i', 'Ｉ', 'I', 'I'},                         
	{0x004A, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'j', 'Ｊ', 'J', 'J'},                         
	{0x004B, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'k', 'Ｋ', 'K', 'K'},                         
	{0x004C, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'l', 'Ｌ', 'L', 'L'},                         
	{0x004D, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'm', 'Ｍ', 'M', 'M'},                         
	{0x004E, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'n', 'Ｎ', 'N', 'N'},                         
	{0x004F, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'o', 'Ｏ', 'O', 'O'},                         
	{0x0050, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'p', 'Ｐ', 'P', 'P'},                         
	{0x0051, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'q', 'Ｑ', 'Q', 'Q'},                         
	{0x0052, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'r', 'Ｒ', 'R', 'R'},                         
	{0x0053, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 's', 'Ｓ', 'S', 'S'},                         
	{0x0054, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 't', 'Ｔ', 'T', 'T'},                         
	{0x0055, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'u', 'Ｕ', 'U', 'U'},                         
	{0x0056, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'v', 'Ｖ', 'V', 'V'},                         
	{0x0057, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'w', 'Ｗ', 'W', 'W'},                         
	{0x0058, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'x', 'Ｘ', 'X', 'X'},                         
	{0x0059, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'y', 'Ｙ', 'Y', 'Y'},                         
	{0x005A, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'z', 'Ｚ', 'Z', 'Z'},                         
	{0x005B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '[', '［', '[', '['},                     
	{0x005C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\\', '＼', '\\', '\\'},                  
	{0x005D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ']', '］', ']', ']'},                     
	{0x005E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '^', '＾', '^', '^'},                     
	{0x005F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '_', '＿', '_', '_'},                     
	{0x0060, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '`', '｀', '`', '`'},                     
	{0x0061, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'A', 'ａ', 'a', 'a'},                         
	{0x0062, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'B', 'ｂ', 'b', 'b'},                         
	{0x0063, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'C', 'ｃ', 'c', 'c'},                         
	{0x0064, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'D', 'ｄ', 'd', 'd'},                         
	{0x0065, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'E', 'ｅ', 'e', 'e'},                         
	{0x0066, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'F', 'ｆ', 'f', 'f'},                         
	{0x0067, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'G', 'ｇ', 'g', 'g'},                         
	{0x0068, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'H', 'ｈ', 'h', 'h'},                         
	{0x0069, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'I', 'ｉ', 'i', 'i'},                         
	{0x006A, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'J', 'ｊ', 'j', 'j'},                         
	{0x006B, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'K', 'ｋ', 'k', 'k'},                         
	{0x006C, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'L', 'ｌ', 'l', 'l'},                         
	{0x006D, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'M', 'ｍ', 'm', 'm'},                         
	{0x006E, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'N', 'ｎ', 'n', 'n'},                         
	{0x006F, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'O', 'ｏ', 'o', 'o'},                         
	{0x0070, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'P', 'ｐ', 'p', 'p'},                         
	{0x0071, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Q', 'ｑ', 'q', 'q'},                         
	{0x0072, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'R', 'ｒ', 'r', 'r'},                         
	{0x0073, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'S', 'ｓ', 's', 's'},                         
	{0x0074, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'T', 'ｔ', 't', 't'},                         
	{0x0075, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'U', 'ｕ', 'u', 'u'},                         
	{0x0076, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'V', 'ｖ', 'v', 'v'},                         
	{0x0077, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'W', 'ｗ', 'w', 'w'},                         
	{0x0078, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'X', 'ｘ', 'x', 'x'},                         
	{0x0079, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Y', 'ｙ', 'y', 'y'},                         
	{0x007A, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Z', 'ｚ', 'z', 'z'},                         
	{0x007B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '{', '｛', '{', '{'},                     
	{0x007C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '|', '｜', '|', '|'},                     
	{0x007D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '}', '｝', '}', '}'},                     
	{0x007E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '~', '～', '~', '~'},                     
	{0x007F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\u007f', '\u007f', '\u007f', '\u007f'}, 
}

var kanaFirst rune = 0x3000
var kanaLast rune = 0x30FF
var kanaTable = unichars{
	{0x3000, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '\u3000', ' ', '\u3000', '\u3000'},         
	{0x3001, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '、', '､', '、', '、'},                         
	{0x3002, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '。', '｡', '。', '。'},                         
	{0x3003, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〃', '〃', '〃', '〃'},                         
	{0x3004, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〄', '〄', '〄', '〄'},                         
	{0x3005, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '々', '々', '々', '々'},                         
	{0x3006, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〆', '〆', '〆', '〆'},                         
	{0x3007, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〇', '〇', '〇', '〇'},                         
	{0x3008, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〈', '〈', '〈', '〈'},                         
	{0x3009, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〉', '〉', '〉', '〉'},                         
	{0x300A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '《', '《', '《', '《'},                         
	{0x300B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '》', '》', '》', '》'},                         
	{0x300C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '「', '｢', '「', '「'},                         
	{0x300D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '」', '｣', '」', '」'},                         
	{0x300E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '『', '『', '『', '『'},                         
	{0x300F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '』', '』', '』', '』'},                         
	{0x3010, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '【', '【', '【', '【'},                         
	{0x3011, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '】', '】', '】', '】'},                         
	{0x3012, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〒', '〒', '〒', '〒'},                         
	{0x3013, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〓', '〓', '〓', '〓'},                         
	{0x3014, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〔', '〔', '〔', '〔'},                         
	{0x3015, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〕', '〕', '〕', '〕'},                         
	{0x3016, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〖', '〖', '〖', '〖'},                         
	{0x3017, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〗', '〗', '〗', '〗'},                         
	{0x3018, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〘', '〘', '〘', '〘'},                         
	{0x3019, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〙', '〙', '〙', '〙'},                         
	{0x301A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〚', '〚', '〚', '〚'},                         
	{0x301B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〛', '〛', '〛', '〛'},                         
	{0x301C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〜', '〜', '〜', '〜'},                         
	{0x301D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〝', '〝', '〝', '〝'},                         
	{0x301E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〞', '〞', '〞', '〞'},                         
	{0x301F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〟', '〟', '〟', '〟'},                         
	{0x3020, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〠', '〠', '〠', '〠'},                         
	{0x3021, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〡', '〡', '〡', '〡'},                         
	{0x3022, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〢', '〢', '〢', '〢'},                         
	{0x3023, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〣', '〣', '〣', '〣'},                         
	{0x3024, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〤', '〤', '〤', '〤'},                         
	{0x3025, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〥', '〥', '〥', '〥'},                         
	{0x3026, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〦', '〦', '〦', '〦'},                         
	{0x3027, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〧', '〧', '〧', '〧'},                         
	{0x3028, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〨', '〨', '〨', '〨'},                         
	{0x3029, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〩', '〩', '〩', '〩'},                         
	{0x302A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〪', '〪', '〪', '〪'},                         
	{0x302B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〫', '〫', '〫', '〫'},                         
	{0x302C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〬', '〬', '〬', '〬'},                         
	{0x302D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〭', '〭', '〭', '〭'},                         
	{0x302E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〮', '〮', '〮', '〮'},                         
	{0x302F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〯', '〯', '〯', '〯'},                         
	{0x3030, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〰', '〰', '〰', '〰'},                         
	{0x3031, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〱', '〱', '〱', '〱'},                         
	{0x3032, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〲', '〲', '〲', '〲'},                         
	{0x3033, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〳', '〳', '〳', '〳'},                         
	{0x3034, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〴', '〴', '〴', '〴'},                         
	{0x3035, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〵', '〵', '〵', '〵'},                         
	{0x3036, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〶', '〶', '〶', '〶'},                         
	{0x3037, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〷', '〷', '〷', '〷'},                         
	{0x3038, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〸', '〸', '〸', '〸'},                         
	{0x3039, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〹', '〹', '〹', '〹'},                         
	{0x303A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〺', '〺', '〺', '〺'},                         
	{0x303B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〻', '〻', '〻', '〻'},                         
	{0x303C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〼', '〼', '〼', '〼'},                         
	{0x303D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〽', '〽', '〽', '〽'},                         
	{0x303E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〾', '〾', '〾', '〾'},                         
	{0x303F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〿', '〿', '〿', '〿'},                         
	{0x3040, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3040', '\u3040', '\u3040', '\u3040'}, 
	{0x3041, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ァ', 'ｧ', 'ぁ', 'ぁ'},                          
	{0x3042, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ア', 'ｱ', 'あ', 'あ'},                          
	{0x3043, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ィ', 'ｨ', 'ぃ', 'ぃ'},                          
	{0x3044, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'イ', 'ｲ', 'い', 'い'},                          
	{0x3045, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ゥ', 'ｩ', 'ぅ', 'ぅ'},                          
	{0x3046, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ウ', 'ｳ', 'ゔ', 'う'},                           
	{0x3047, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ェ', 'ｪ', 'ぇ', 'ぇ'},                          
	{0x3048, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'エ', 'ｴ', 'え', 'え'},                          
	{0x3049, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ォ', 'ｫ', 'ぉ', 'ぉ'},                          
	{0x304A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'オ', 'ｵ', 'お', 'お'},                          
	{0x304B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'カ', 'ｶ', 'が', 'か'},                           
	{0x304C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ガ', 'ｶ', 'か', 'が'},                             
	{0x304D, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'キ', 'ｷ', 'ぎ', 'き'},                           
	{0x304E, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ギ', 'ｷ', 'き', 'ぎ'},                             
	{0x304F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ク', 'ｸ', 'ぐ', 'く'},                           
	{0x3050, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'グ', 'ｸ', 'く', 'ぐ'},                             
	{0x3051, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ケ', 'ｹ', 'げ', 'け'},                           
	{0x3052, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゲ', 'ｹ', 'け', 'げ'},                             
	{0x3053, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'コ', 'ｺ', 'ご', 'こ'},                           
	{0x3054, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゴ', 'ｺ', 'こ', 'ご'},                             
	{0x3055, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'サ', 'ｻ', 'ざ', 'さ'},                           
	{0x3056, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ザ', 'ｻ', 'さ', 'ざ'},                             
	{0x3057, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'シ', 'ｼ', 'じ', 'し'},                           
	{0x3058, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ジ', 'ｼ', 'し', 'じ'},                             
	{0x3059, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ス', 'ｽ', 'ず', 'す'},                           
	{0x305A, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ズ', 'ｽ', 'す', 'ず'},                             
	{0x305B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'セ', 'ｾ', 'ぜ', 'せ'},                           
	{0x305C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゼ', 'ｾ', 'せ', 'ぜ'},                             
	{0x305D, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ソ', 'ｿ', 'ぞ', 'そ'},                           
	{0x305E, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゾ', 'ｿ', 'そ', 'ぞ'},                             
	{0x305F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'タ', 'ﾀ', 'だ', 'た'},                           
	{0x3060, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ダ', 'ﾀ', 'た', 'だ'},                             
	{0x3061, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'チ', 'ﾁ', 'ぢ', 'ち'},                           
	{0x3062, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヂ', 'ﾁ', 'ち', 'ぢ'},                             
	{0x3063, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ッ', 'ｯ', 'っ', 'っ'},                          
	{0x3064, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ツ', 'ﾂ', 'づ', 'つ'},                           
	{0x3065, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヅ', 'ﾂ', 'つ', 'づ'},                             
	{0x3066, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'テ', 'ﾃ', 'で', 'て'},                           
	{0x3067, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'デ', 'ﾃ', 'て', 'で'},                             
	{0x3068, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ト', 'ﾄ', 'ど', 'と'},                           
	{0x3069, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ド', 'ﾄ', 'と', 'ど'},                             
	{0x306A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ナ', 'ﾅ', 'な', 'な'},                          
	{0x306B, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ニ', 'ﾆ', 'に', 'に'},                          
	{0x306C, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヌ', 'ﾇ', 'ぬ', 'ぬ'},                          
	{0x306D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ネ', 'ﾈ', 'ね', 'ね'},                          
	{0x306E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ノ', 'ﾉ', 'の', 'の'},                          
	{0x306F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ハ', 'ﾊ', 'ば', 'ぱ'},                           
	{0x3070, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'バ', 'ﾊ', 'は', 'ば'},                             
	{0x3071, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'パ', 'ﾊ', 'ぱ', 'は'},                         
	{0x3072, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ヒ', 'ﾋ', 'び', 'ぴ'},                           
	{0x3073, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ビ', 'ﾋ', 'ひ', 'び'},                             
	{0x3074, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ピ', 'ﾋ', 'ぴ', 'ひ'},                         
	{0x3075, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'フ', 'ﾌ', 'ぶ', 'ぷ'},                           
	{0x3076, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ブ', 'ﾌ', 'ふ', 'ぶ'},                             
	{0x3077, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'プ', 'ﾌ', 'ぷ', 'ふ'},                         
	{0x3078, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ヘ', 'ﾍ', 'べ', 'ぺ'},                           
	{0x3079, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ベ', 'ﾍ', 'へ', 'べ'},                             
	{0x307A, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ペ', 'ﾍ', 'ぺ', 'へ'},                         
	{0x307B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ホ', 'ﾎ', 'ぼ', 'ぽ'},                           
	{0x307C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ボ', 'ﾎ', 'ほ', 'ぼ'},                             
	{0x307D, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ポ', 'ﾎ', 'ぽ', 'ほ'},                         
	{0x307E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'マ', 'ﾏ', 'ま', 'ま'},                          
	{0x307F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ミ', 'ﾐ', 'み', 'み'},                          
	{0x3080, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ム', 'ﾑ', 'む', 'む'},                          
	{0x3081, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'メ', 'ﾒ', 'め', 'め'},                          
	{0x3082, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'モ', 'ﾓ', 'も', 'も'},                          
	{0x3083, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ャ', 'ｬ', 'ゃ', 'ゃ'},                          
	{0x3084, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヤ', 'ﾔ', 'や', 'や'},                          
	{0x3085, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ュ', 'ｭ', 'ゅ', 'ゅ'},                          
	{0x3086, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ユ', 'ﾕ', 'ゆ', 'ゆ'},                          
	{0x3087, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ョ', 'ｮ', 'ょ', 'ょ'},                          
	{0x3088, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヨ', 'ﾖ', 'よ', 'よ'},                          
	{0x3089, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ラ', 'ﾗ', 'ら', 'ら'},                          
	{0x308A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'リ', 'ﾘ', 'り', 'り'},                          
	{0x308B, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ル', 'ﾙ', 'る', 'る'},                          
	{0x308C, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'レ', 'ﾚ', 'れ', 'れ'},                          
	{0x308D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ロ', 'ﾛ', 'ろ', 'ろ'},                          
	{0x308E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヮ', 'ﾜ', 'ゎ', 'ゎ'},                          
	{0x308F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ワ', 'ﾜ', 'わ', 'わ'},                          
	{0x3090, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヰ', 'ｲ', 'ゐ', 'ゐ'},                          
	{0x3091, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヱ', 'ｴ', 'ゑ', 'ゑ'},                          
	{0x3092, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヲ', 'ｦ', 'を', 'を'},                          
	{0x3093, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ン', 'ﾝ', 'ん', 'ん'},                          
	{0x3094, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヴ', 'ｳ', 'う', 'ゔ'},                             
	{0x3095, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヵ', 'ｶ', 'ゕ', 'ゕ'},                          
	{0x3096, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヶ', 'ｹ', 'ゖ', 'ゖ'},                          
	{0x3097, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3097', '\u3097', '\u3097', '\u3097'}, 
	{0x3098, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3098', '\u3098', '\u3098', '\u3098'}, 
	{0x3099, ctKanaVom, ccCombining, cwWide, vcUndefined, '゛', 'ﾞ', '゙', '゙'},                            
	{0x309A, ctKanaVom, ccCombining, cwWide, vcUndefined, '゜', 'ﾟ', '゚', '゚'},                            
	{0x309B, ctKanaVom, ccLegacy, cwWide, vcUndefined, '゙', 'ﾞ', '゛', '゛'},                               
	{0x309C, ctKanaVom, ccLegacy, cwWide, vcUndefined, '゚', 'ﾟ', '゜', '゜'},                               
	{0x309D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヽ', 'ゝ', 'ゝ', 'ゝ'},                          
	{0x309E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヾ', 'ゞ', 'ゞ', 'ゞ'},                          
	{0x309F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ゟ', 'ゟ', 'ゟ', 'ゟ'},                          
	{0x30A0, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '゠', '゠', '゠', '゠'},                         
	{0x30A1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぁ', 'ｧ', 'ァ', 'ァ'},                          
	{0x30A2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'あ', 'ｱ', 'ア', 'ア'},                          
	{0x30A3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぃ', 'ｨ', 'ィ', 'ィ'},                          
	{0x30A4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'い', 'ｲ', 'イ', 'イ'},                          
	{0x30A5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぅ', 'ｩ', 'ゥ', 'ゥ'},                          
	{0x30A6, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'う', 'ｳ', 'ヴ', 'ウ'},                           
	{0x30A7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぇ', 'ｪ', 'ェ', 'ェ'},                          
	{0x30A8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'え', 'ｴ', 'エ', 'エ'},                          
	{0x30A9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぉ', 'ｫ', 'ォ', 'ォ'},                          
	{0x30AA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'お', 'ｵ', 'オ', 'オ'},                          
	{0x30AB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'か', 'ｶ', 'ガ', 'カ'},                           
	{0x30AC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'が', 'ｶ', 'カ', 'ガ'},                             
	{0x30AD, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'き', 'ｷ', 'ギ', 'キ'},                           
	{0x30AE, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぎ', 'ｷ', 'キ', 'ギ'},                             
	{0x30AF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'く', 'ｸ', 'グ', 'ク'},                           
	{0x30B0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぐ', 'ｸ', 'ク', 'グ'},                             
	{0x30B1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'け', 'ｹ', 'ゲ', 'ケ'},                           
	{0x30B2, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'げ', 'ｹ', 'ケ', 'ゲ'},                             
	{0x30B3, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'こ', 'ｺ', 'ゴ', 'コ'},                           
	{0x30B4, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ご', 'ｺ', 'コ', 'ゴ'},                             
	{0x30B5, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'さ', 'ｻ', 'ザ', 'サ'},                           
	{0x30B6, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ざ', 'ｻ', 'サ', 'ザ'},                             
	{0x30B7, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'し', 'ｼ', 'ジ', 'シ'},                           
	{0x30B8, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'じ', 'ｼ', 'シ', 'ジ'},                             
	{0x30B9, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'す', 'ｽ', 'ズ', 'ス'},                           
	{0x30BA, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ず', 'ｽ', 'ス', 'ズ'},                             
	{0x30BB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'せ', 'ｾ', 'ゼ', 'セ'},                           
	{0x30BC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぜ', 'ｾ', 'セ', 'ゼ'},                             
	{0x30BD, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'そ', 'ｿ', 'ゾ', 'ソ'},                           
	{0x30BE, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぞ', 'ｿ', 'ソ', 'ゾ'},                             
	{0x30BF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'た', 'ﾀ', 'ダ', 'タ'},                           
	{0x30C0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'だ', 'ﾀ', 'タ', 'ダ'},                             
	{0x30C1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ち', 'ﾁ', 'ヂ', 'チ'},                           
	{0x30C2, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぢ', 'ﾁ', 'チ', 'ヂ'},                             
	{0x30C3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'っ', 'ｯ', 'ッ', 'ッ'},                          
	{0x30C4, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'つ', 'ﾂ', 'ヅ', 'ツ'},                           
	{0x30C5, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'づ', 'ﾂ', 'ツ', 'ヅ'},                             
	{0x30C6, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'て', 'ﾃ', 'デ', 'テ'},                           
	{0x30C7, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'で', 'ﾃ', 'テ', 'デ'},                             
	{0x30C8, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'と', 'ﾄ', 'ド', 'ト'},                           
	{0x30C9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ど', 'ﾄ', 'ト', 'ド'},                             
	{0x30CA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'な', 'ﾅ', 'ナ', 'ナ'},                          
	{0x30CB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'に', 'ﾆ', 'ニ', 'ニ'},                          
	{0x30CC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぬ', 'ﾇ', 'ヌ', 'ヌ'},                          
	{0x30CD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ね', 'ﾈ', 'ネ', 'ネ'},                          
	{0x30CE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'の', 'ﾉ', 'ノ', 'ノ'},                          
	{0x30CF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'は', 'ﾊ', 'バ', 'パ'},                           
	{0x30D0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ば', 'ﾊ', 'ハ', 'バ'},                             
	{0x30D1, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぱ', 'ﾊ', 'パ', 'ハ'},                         
	{0x30D2, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ひ', 'ﾋ', 'ビ', 'ピ'},                           
	{0x30D3, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'び', 'ﾋ', 'ヒ', 'ビ'},                             
	{0x30D4, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぴ', 'ﾋ', 'ピ', 'ヒ'},                         
	{0x30D5, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ふ', 'ﾌ', 'ブ', 'プ'},                           
	{0x30D6, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぶ', 'ﾌ', 'フ', 'ブ'},                             
	{0x30D7, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぷ', 'ﾌ', 'プ', 'フ'},                         
	{0x30D8, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'へ', 'ﾍ', 'ベ', 'ペ'},                           
	{0x30D9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'べ', 'ﾍ', 'ヘ', 'ベ'},                             
	{0x30DA, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぺ', 'ﾍ', 'ペ', 'ヘ'},                         
	{0x30DB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ほ', 'ﾎ', 'ボ', 'ポ'},                           
	{0x30DC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぼ', 'ﾎ', 'ホ', 'ボ'},                             
	{0x30DD, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぽ', 'ﾎ', 'ポ', 'ホ'},                         
	{0x30DE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ま', 'ﾏ', 'マ', 'マ'},                          
	{0x30DF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'み', 'ﾐ', 'ミ', 'ミ'},                          
	{0x30E0, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'む', 'ﾑ', 'ム', 'ム'},                          
	{0x30E1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'め', 'ﾒ', 'メ', 'メ'},                          
	{0x30E2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'も', 'ﾓ', 'モ', 'モ'},                          
	{0x30E3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゃ', 'ｬ', 'ャ', 'ャ'},                          
	{0x30E4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'や', 'ﾔ', 'ヤ', 'ヤ'},                          
	{0x30E5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゅ', 'ｭ', 'ュ', 'ュ'},                          
	{0x30E6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゆ', 'ﾕ', 'ユ', 'ユ'},                          
	{0x30E7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ょ', 'ｮ', 'ョ', 'ョ'},                          
	{0x30E8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'よ', 'ﾖ', 'ヨ', 'ヨ'},                          
	{0x30E9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ら', 'ﾗ', 'ラ', 'ラ'},                          
	{0x30EA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'り', 'ﾘ', 'リ', 'リ'},                          
	{0x30EB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'る', 'ﾙ', 'ル', 'ル'},                          
	{0x30EC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'れ', 'ﾚ', 'レ', 'レ'},                          
	{0x30ED, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ろ', 'ﾛ', 'ロ', 'ロ'},                          
	{0x30EE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゎ', 'ﾜ', 'ヮ', 'ヮ'},                          
	{0x30EF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'わ', 'ﾜ', 'ヷ', 'ワ'},                           
	{0x30F0, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ゐ', 'ｲ', 'ヸ', 'ヰ'},                           
	{0x30F1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ゑ', 'ｴ', 'ヹ', 'ヱ'},                           
	{0x30F2, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'を', 'ｦ', 'ヺ', 'ヲ'},                           
	{0x30F3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ん', 'ﾝ', 'ン', 'ン'},                          
	{0x30F4, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゔ', 'ｳ', 'ウ', 'ヴ'},                             
	{0x30F5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゕ', 'ｶ', 'ヵ', 'ヵ'},                          
	{0x30F6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゖ', 'ｹ', 'ヶ', 'ヶ'},                          
	{0x30F7, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'わ', 'ﾜ', 'ワ', 'ヷ'},                             
	{0x30F8, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゐ', 'ｲ', 'ヰ', 'ヸ'},                             
	{0x30F9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゑ', 'ｴ', 'ヱ', 'ヹ'},                             
	{0x30FA, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'を', 'ｦ', 'ヲ', 'ヺ'},                             
	{0x30FB, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '・', '･', '・', '・'},                         
	{0x30FC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ー', 'ｰ', 'ー', 'ー'},                          
	{0x30FD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゝ', 'ヽ', 'ヽ', 'ヽ'},                          
	{0x30FE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゞ', 'ヾ', 'ヾ', 'ヾ'},                          
	{0x30FF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ヿ', 'ヿ', 'ヿ', 'ヿ'},                          
}

var kanaExtFirst rune = 0x31F0
var kanaExtLast rune = 0x31FF
var kanaExtTable = unichars{
	{0x31F0, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'く', 'ｸ', 'ㇰ', 'ㇰ'}, 
	{0x31F1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'し', 'ｼ', 'ㇱ', 'ㇱ'}, 
	{0x31F2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'す', 'ｽ', 'ㇲ', 'ㇲ'}, 
	{0x31F3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'と', 'ﾄ', 'ㇳ', 'ㇳ'}, 
	{0x31F4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぬ', 'ﾇ', 'ㇴ', 'ㇴ'}, 
	{0x31F5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'は', 'ﾊ', 'ㇵ', 'ㇵ'}, 
	{0x31F6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ひ', 'ﾋ', 'ㇶ', 'ㇶ'}, 
	{0x31F7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ふ', 'ﾌ', 'ㇷ', 'ㇷ'}, 
	{0x31F8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'へ', 'ﾍ', 'ㇸ', 'ㇸ'}, 
	{0x31F9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ほ', 'ﾎ', 'ㇹ', 'ㇹ'}, 
	{0x31FA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'む', 'ﾑ', 'ㇺ', 'ㇺ'}, 
	{0x31FB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ら', 'ﾗ', 'ㇻ', 'ㇻ'}, 
	{0x31FC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'り', 'ﾘ', 'ㇼ', 'ㇼ'}, 
	{0x31FD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'る', 'ﾙ', 'ㇽ', 'ㇽ'}, 
	{0x31FE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'れ', 'ﾚ', 'ㇾ', 'ㇾ'}, 
	{0x31FF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ろ', 'ﾛ', 'ㇿ', 'ㇿ'}, 
}

var widthFirst rune = 0xFF00
var widthLast rune = 0xFF9F
var widthTable = unichars{
	{0xFF00, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\uff00', '\uff00', '\uff00', '\uff00'}, 
	{0xFF01, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '！', '!', '！', '！'},                        
	{0xFF02, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＂', '"', '＂', '＂'},                        
	{0xFF03, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＃', '#', '＃', '＃'},                        
	{0xFF04, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＄', '$', '＄', '＄'},                        
	{0xFF05, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '％', '%', '％', '％'},                        
	{0xFF06, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＆', '&', '＆', '＆'},                        
	{0xFF07, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＇', '\'', '＇', '＇'},                       
	{0xFF08, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '（', '(', '（', '（'},                        
	{0xFF09, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '）', ')', '）', '）'},                        
	{0xFF0A, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＊', '*', '＊', '＊'},                        
	{0xFF0B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＋', '+', '＋', '＋'},                        
	{0xFF0C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '，', ',', '，', '，'},                        
	{0xFF0D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '－', '-', '－', '－'},                        
	{0xFF0E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '．', '.', '．', '．'},                        
	{0xFF0F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '／', '/', '／', '／'},                        
	{0xFF10, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '０', '0', '０', '０'},                         
	{0xFF11, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '１', '1', '１', '１'},                         
	{0xFF12, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '２', '2', '２', '２'},                         
	{0xFF13, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '３', '3', '３', '３'},                         
	{0xFF14, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '４', '4', '４', '４'},                         
	{0xFF15, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '５', '5', '５', '５'},                         
	{0xFF16, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '６', '6', '６', '６'},                         
	{0xFF17, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '７', '7', '７', '７'},                         
	{0xFF18, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '８', '8', '８', '８'},                         
	{0xFF19, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '９', '9', '９', '９'},                         
	{0xFF1A, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '：', ':', '：', '：'},                        
	{0xFF1B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '；', ';', '；', '；'},                        
	{0xFF1C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＜', '<', '＜', '＜'},                        
	{0xFF1D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＝', '=', '＝', '＝'},                        
	{0xFF1E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＞', '>', '＞', '＞'},                        
	{0xFF1F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '？', '?', '？', '？'},                        
	{0xFF20, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＠', '@', '＠', '＠'},                        
	{0xFF21, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ａ', 'A', 'Ａ', 'Ａ'},                            
	{0xFF22, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｂ', 'B', 'Ｂ', 'Ｂ'},                            
	{0xFF23, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｃ', 'C', 'Ｃ', 'Ｃ'},                            
	{0xFF24, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｄ', 'D', 'Ｄ', 'Ｄ'},                            
	{0xFF25, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｅ', 'E', 'Ｅ', 'Ｅ'},                            
	{0xFF26, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｆ', 'F', 'Ｆ', 'Ｆ'},                            
	{0xFF27, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｇ', 'G', 'Ｇ', 'Ｇ'},                            
	{0xFF28, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｈ', 'H', 'Ｈ', 'Ｈ'},                            
	{0xFF29, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｉ', 'I', 'Ｉ', 'Ｉ'},                            
	{0xFF2A, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｊ', 'J', 'Ｊ', 'Ｊ'},                            
	{0xFF2B, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｋ', 'K', 'Ｋ', 'Ｋ'},                            
	{0xFF2C, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｌ', 'L', 'Ｌ', 'Ｌ'},                            
	{0xFF2D, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｍ', 'M', 'Ｍ', 'Ｍ'},                            
	{0xFF2E, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｎ', 'N', 'Ｎ', 'Ｎ'},                            
	{0xFF2F, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｏ', 'O', 'Ｏ', 'Ｏ'},                            
	{0xFF30, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｐ', 'P', 'Ｐ', 'Ｐ'},                            
	{0xFF31, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｑ', 'Q', 'Ｑ', 'Ｑ'},                            
	{0xFF32, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｒ', 'R', 'Ｒ', 'Ｒ'},                            
	{0xFF33, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｓ', 'S', 'Ｓ', 'Ｓ'},                            
	{0xFF34, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｔ', 'T', 'Ｔ', 'Ｔ'},                            
	{0xFF35, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｕ', 'U', 'Ｕ', 'Ｕ'},                            
	{0xFF36, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｖ', 'V', 'Ｖ', 'Ｖ'},                            
	{0xFF37, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｗ', 'W', 'Ｗ', 'Ｗ'},                            
	{0xFF38, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｘ', 'X', 'Ｘ', 'Ｘ'},                            
	{0xFF39, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｙ', 'Y', 'Ｙ', 'Ｙ'},                            
	{0xFF3A, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｚ', 'Z', 'Ｚ', 'Ｚ'},                            
	{0xFF3B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '［', '[', '［', '［'},                        
	{0xFF3C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＼', '\\', '＼', '＼'},                       
	{0xFF3D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '］', ']', '］', '］'},                        
	{0xFF3E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＾', '^', '＾', '＾'},                        
	{0xFF3F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＿', '_', '＿', '＿'},                        
	{0xFF40, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｀', '`', '｀', '｀'},                        
	{0xFF41, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ａ', 'a', 'ａ', 'ａ'},                            
	{0xFF42, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｂ', 'b', 'ｂ', 'ｂ'},                            
	{0xFF43, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｃ', 'c', 'ｃ', 'ｃ'},                            
	{0xFF44, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｄ', 'd', 'ｄ', 'ｄ'},                            
	{0xFF45, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｅ', 'e', 'ｅ', 'ｅ'},                            
	{0xFF46, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｆ', 'f', 'ｆ', 'ｆ'},                            
	{0xFF47, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｇ', 'g', 'ｇ', 'ｇ'},                            
	{0xFF48, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｈ', 'h', 'ｈ', 'ｈ'},                            
	{0xFF49, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｉ', 'i', 'ｉ', 'ｉ'},                            
	{0xFF4A, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｊ', 'j', 'ｊ', 'ｊ'},                            
	{0xFF4B, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｋ', 'k', 'ｋ', 'ｋ'},                            
	{0xFF4C, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｌ', 'l', 'ｌ', 'ｌ'},                            
	{0xFF4D, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｍ', 'm', 'ｍ', 'ｍ'},                            
	{0xFF4E, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｎ', 'n', 'ｎ', 'ｎ'},                            
	{0xFF4F, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｏ', 'o', 'ｏ', 'ｏ'},                            
	{0xFF50, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｐ', 'p', 'ｐ', 'ｐ'},                            
	{0xFF51, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｑ', 'q', 'ｑ', 'ｑ'},                            
	{0xFF52, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｒ', 'r', 'ｒ', 'ｒ'},                            
	{0xFF53, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｓ', 's', 'ｓ', 'ｓ'},                            
	{0xFF54, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｔ', 't', 'ｔ', 'ｔ'},                            
	{0xFF55, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｕ', 'u', 'ｕ', 'ｕ'},                            
	{0xFF56, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｖ', 'v', 'ｖ', 'ｖ'},                            
	{0xFF57, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｗ', 'w', 'ｗ', 'ｗ'},                            
	{0xFF58, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｘ', 'x', 'ｘ', 'ｘ'},                            
	{0xFF59, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｙ', 'y', 'ｙ', 'ｙ'},                            
	{0xFF5A, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｚ', 'z', 'ｚ', 'ｚ'},                            
	{0xFF5B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｛', '{', '｛', '｛'},                        
	{0xFF5C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｜', '|', '｜', '｜'},                        
	{0xFF5D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｝', '}', '｝', '｝'},                        
	{0xFF5E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '～', '~', '～', '～'},                        
	{0xFF5F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｟', '｟', '｟', '｟'},                        
	{0xFF60, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｠', '｠', '｠', '｠'},                        
	{0xFF61, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｡', '。', '｡', '｡'},                       
	{0xFF62, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｢', '「', '｢', '｢'},                       
	{0xFF63, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｣', '」', '｣', '｣'},                       
	{0xFF64, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '､', '、', '､', '､'},                       
	{0xFF65, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '･', '・', '･', '･'},                       
	{0xFF66, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'を', 'ヲ', 'ｦ', 'ｦ'},                        
	{0xFF67, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぁ', 'ァ', 'ｧ', 'ｧ'},                        
	{0xFF68, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぃ', 'ィ', 'ｨ', 'ｨ'},                        
	{0xFF69, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぅ', 'ゥ', 'ｩ', 'ｩ'},                        
	{0xFF6A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぇ', 'ェ', 'ｪ', 'ｪ'},                        
	{0xFF6B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぉ', 'ォ', 'ｫ', 'ｫ'},                        
	{0xFF6C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゃ', 'ャ', 'ｬ', 'ｬ'},                        
	{0xFF6D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゅ', 'ュ', 'ｭ', 'ｭ'},                        
	{0xFF6E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ょ', 'ョ', 'ｮ', 'ｮ'},                        
	{0xFF6F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'っ', 'ッ', 'ｯ', 'ｯ'},                        
	{0xFF70, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ｰ', 'ー', 'ｰ', 'ｰ'},                        
	{0xFF71, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'あ', 'ア', 'ｱ', 'ｱ'},                        
	{0xFF72, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'い', 'イ', 'ｲ', 'ｲ'},                        
	{0xFF73, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'う', 'ウ', 'ｳ', 'ｳ'},                        
	{0xFF74, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'え', 'エ', 'ｴ', 'ｴ'},                        
	{0xFF75, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'お', 'オ', 'ｵ', 'ｵ'},                        
	{0xFF76, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'か', 'カ', 'ｶ', 'ｶ'},                        
	{0xFF77, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'き', 'キ', 'ｷ', 'ｷ'},                        
	{0xFF78, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'く', 'ク', 'ｸ', 'ｸ'},                        
	{0xFF79, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'け', 'ケ', 'ｹ', 'ｹ'},                        
	{0xFF7A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'こ', 'コ', 'ｺ', 'ｺ'},                        
	{0xFF7B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'さ', 'サ', 'ｻ', 'ｻ'},                        
	{0xFF7C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'し', 'シ', 'ｼ', 'ｼ'},                        
	{0xFF7D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'す', 'ス', 'ｽ', 'ｽ'},                        
	{0xFF7E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'せ', 'セ', 'ｾ', 'ｾ'},                        
	{0xFF7F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'そ', 'ソ', 'ｿ', 'ｿ'},                        
	{0xFF80, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'た', 'タ', 'ﾀ', 'ﾀ'},                        
	{0xFF81, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ち', 'チ', 'ﾁ', 'ﾁ'},                        
	{0xFF82, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'つ', 'ツ', 'ﾂ', 'ﾂ'},                        
	{0xFF83, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'て', 'テ', 'ﾃ', 'ﾃ'},                        
	{0xFF84, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'と', 'ト', 'ﾄ', 'ﾄ'},                        
	{0xFF85, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'な', 'ナ', 'ﾅ', 'ﾅ'},                        
	{0xFF86, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'に', 'ニ', 'ﾆ', 'ﾆ'},                        
	{0xFF87, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぬ', 'ヌ', 'ﾇ', 'ﾇ'},                        
	{0xFF88, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ね', 'ネ', 'ﾈ', 'ﾈ'},                        
	{0xFF89, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'の', 'ノ', 'ﾉ', 'ﾉ'},                        
	{0xFF8A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'は', 'ハ', 'ﾊ', 'ﾊ'},                        
	{0xFF8B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ひ', 'ヒ', 'ﾋ', 'ﾋ'},                        
	{0xFF8C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ふ', 'フ', 'ﾌ', 'ﾌ'},                        
	{0xFF8D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'へ', 'ヘ', 'ﾍ', 'ﾍ'},                        
	{0xFF8E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ほ', 'ホ', 'ﾎ', 'ﾎ'},                        
	{0xFF8F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ま', 'マ', 'ﾏ', 'ﾏ'},                        
	{0xFF90, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'み', 'ミ', 'ﾐ', 'ﾐ'},                        
	{0xFF91, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'む', 'ム', 'ﾑ', 'ﾑ'},                        
	{0xFF92, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'め', 'メ', 'ﾒ', 'ﾒ'},                        
	{0xFF93, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'も', 'モ', 'ﾓ', 'ﾓ'},                        
	{0xFF94, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'や', 'ヤ', 'ﾔ', 'ﾔ'},                        
	{0xFF95, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゆ', 'ユ', 'ﾕ', 'ﾕ'},                        
	{0xFF96, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'よ', 'ヨ', 'ﾖ', 'ﾖ'},                        
	{0xFF97, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ら', 'ラ', 'ﾗ', 'ﾗ'},                        
	{0xFF98, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'り', 'リ', 'ﾘ', 'ﾘ'},                        
	{0xFF99, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'る', 'ル', 'ﾙ', 'ﾙ'},                        
	{0xFF9A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'れ', 'レ', 'ﾚ', 'ﾚ'},                        
	{0xFF9B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ろ', 'ロ', 'ﾛ', 'ﾛ'},                        
	{0xFF9C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'わ', 'ワ', 'ﾜ', 'ﾜ'},                        
	{0xFF9D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ん', 'ン', 'ﾝ', 'ﾝ'},                        
	{0xFF9E, ctKanaVom, ccLegacy, cwNarrow, vcUndefined, '゙', '゛', 'ﾞ', 'ﾞ'},                             
	{0xFF9F, ctKanaVom, ccLegacy, cwNarrow, vcUndefined, '゚', '゜', 'ﾟ', 'ﾟ'},                             
}
// Code generated by gen/gentables.go; DO NOT EDIT.
// Based on information from https://unicode.org/Public/13.0.0/ucdxml/ucd.nounihan.flat.zip

package gaga

// Category values
const (
	ctUndefined = iota
	ctLatinLetter
	ctLatinDigit
	ctLatinSymbol
	ctKanaLetter // a Hiragana or Katakana letter
	ctKanaSymbol // a Japanese symbol, voicing modifiers excluded
	ctKanaVom    // a Japanese voicing modifier (a voiced or semi-voiced sound mark)
	ctMax
)

// Character case values
const (
	ccUndefined = iota
	ccUpper
	ccLower
	ccHiragana
	ccKatakana
	ccLegacy    // A legacy voicing modifier
	ccCombining // A non-space voicing modifier (a combining character)
	ccMax
)

// Character width values
const (
	cwUndefined = iota
	cwNarrow
	cwWide
	cwMax
)

// Voicing values
const (
	vcUndefined  = iota // A character that is usually not combined with a voicing modifier
	vcUnvoiced          // A base letter that may be combined with a voicing modifier
	vcVoiced            // A voiced sound letter (a base letter and a voicing modifier precomposed)
	vcSemivoiced        // A Semi-voiced sound letter (a base letter and a voicing modifier precomposed)
	vcMax
)

type unichar struct {
	codepoint        rune  // A Unicode code point value
	category         uint8 // ctUndefined/ctLatinLetter/ctLatinDigit/ctLatinSymbol/ctKanaLetter/ctKanaSymbol/ctKanaModifier
	charCase         uint8 // ccUndefined/ccUpper/ccLower/ccHiragana/ccKatakana/ccLegacy/ccCombining
	charWidth        uint8 // cwUndefined/cwNarrow/cwWide
	voicing          uint8 // vcUndefined/vcUnvoiced/vcVoiced/vcSemivoiced
	compatCase       rune  // A charcase compatible character (Upper-Lower, Hiragana-Katakana, Legacy-Combining)
	compatWidth      rune  // A width compatible character (Narrow-Wide)
	compatVoiced     rune  // A voiced sound compatible character (Unvoiced-Voiced)
	compatSemivoiced rune  // A semi-voiced sound compatible character (Unvoiced-Semivoiced)
}

type unichars []unichar

var latinFirst rune = 0x0020
var latinLast rune = 0x007F
var latinTable = unichars{
	{0x0020, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ' ', '\u3000', ' ', ' '},                // 0x0020
	{0x0021, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '!', '！', '!', '!'},                     // 0x0021 !
	{0x0022, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '"', '＂', '"', '"'},                     // 0x0022 "
	{0x0023, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '#', '＃', '#', '#'},                     // 0x0023 #
	{0x0024, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '$', '＄', '$', '$'},                     // 0x0024 $
	{0x0025, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '%', '％', '%', '%'},                     // 0x0025 %
	{0x0026, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '&', '＆', '&', '&'},                     // 0x0026 &
	{0x0027, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\'', '＇', '\'', '\''},                  // 0x0027 '
	{0x0028, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '(', '（', '(', '('},                     // 0x0028 (
	{0x0029, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ')', '）', ')', ')'},                     // 0x0029 )
	{0x002A, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '*', '＊', '*', '*'},                     // 0x002A *
	{0x002B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '+', '＋', '+', '+'},                     // 0x002B +
	{0x002C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ',', '，', ',', ','},                     // 0x002C ,
	{0x002D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '-', '－', '-', '-'},                     // 0x002D -
	{0x002E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '.', '．', '.', '.'},                     // 0x002E .
	{0x002F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '/', '／', '/', '/'},                     // 0x002F /
	{0x0030, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '0', '０', '0', '0'},                      // 0x0030 0
	{0x0031, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '1', '１', '1', '1'},                      // 0x0031 1
	{0x0032, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '2', '２', '2', '2'},                      // 0x0032 2
	{0x0033, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '3', '３', '3', '3'},                      // 0x0033 3
	{0x0034, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '4', '４', '4', '4'},                      // 0x0034 4
	{0x0035, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '5', '５', '5', '5'},                      // 0x0035 5
	{0x0036, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '6', '６', '6', '6'},                      // 0x0036 6
	{0x0037, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '7', '７', '7', '7'},                      // 0x0037 7
	{0x0038, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '8', '８', '8', '8'},                      // 0x0038 8
	{0x0039, ctLatinDigit, ccUndefined, cwNarrow, vcUndefined, '9', '９', '9', '9'},                      // 0x0039 9
	{0x003A, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ':', '：', ':', ':'},                     // 0x003A :
	{0x003B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ';', '；', ';', ';'},                     // 0x003B ;
	{0x003C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '<', '＜', '<', '<'},                     // 0x003C <
	{0x003D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '=', '＝', '=', '='},                     // 0x003D =
	{0x003E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '>', '＞', '>', '>'},                     // 0x003E >
	{0x003F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '?', '？', '?', '?'},                     // 0x003F ?
	{0x0040, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '@', '＠', '@', '@'},                     // 0x0040 @
	{0x0041, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'a', 'Ａ', 'A', 'A'},                         // 0x0041 A
	{0x0042, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'b', 'Ｂ', 'B', 'B'},                         // 0x0042 B
	{0x0043, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'c', 'Ｃ', 'C', 'C'},                         // 0x0043 C
	{0x0044, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'd', 'Ｄ', 'D', 'D'},                         // 0x0044 D
	{0x0045, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'e', 'Ｅ', 'E', 'E'},                         // 0x0045 E
	{0x0046, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'f', 'Ｆ', 'F', 'F'},                         // 0x0046 F
	{0x0047, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'g', 'Ｇ', 'G', 'G'},                         // 0x0047 G
	{0x0048, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'h', 'Ｈ', 'H', 'H'},                         // 0x0048 H
	{0x0049, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'i', 'Ｉ', 'I', 'I'},                         // 0x0049 I
	{0x004A, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'j', 'Ｊ', 'J', 'J'},                         // 0x004A J
	{0x004B, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'k', 'Ｋ', 'K', 'K'},                         // 0x004B K
	{0x004C, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'l', 'Ｌ', 'L', 'L'},                         // 0x004C L
	{0x004D, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'm', 'Ｍ', 'M', 'M'},                         // 0x004D M
	{0x004E, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'n', 'Ｎ', 'N', 'N'},                         // 0x004E N
	{0x004F, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'o', 'Ｏ', 'O', 'O'},                         // 0x004F O
	{0x0050, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'p', 'Ｐ', 'P', 'P'},                         // 0x0050 P
	{0x0051, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'q', 'Ｑ', 'Q', 'Q'},                         // 0x0051 Q
	{0x0052, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'r', 'Ｒ', 'R', 'R'},                         // 0x0052 R
	{0x0053, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 's', 'Ｓ', 'S', 'S'},                         // 0x0053 S
	{0x0054, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 't', 'Ｔ', 'T', 'T'},                         // 0x0054 T
	{0x0055, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'u', 'Ｕ', 'U', 'U'},                         // 0x0055 U
	{0x0056, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'v', 'Ｖ', 'V', 'V'},                         // 0x0056 V
	{0x0057, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'w', 'Ｗ', 'W', 'W'},                         // 0x0057 W
	{0x0058, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'x', 'Ｘ', 'X', 'X'},                         // 0x0058 X
	{0x0059, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'y', 'Ｙ', 'Y', 'Y'},                         // 0x0059 Y
	{0x005A, ctLatinLetter, ccUpper, cwNarrow, vcUndefined, 'z', 'Ｚ', 'Z', 'Z'},                         // 0x005A Z
	{0x005B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '[', '［', '[', '['},                     // 0x005B [
	{0x005C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\\', '＼', '\\', '\\'},                  // 0x005C \
	{0x005D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, ']', '］', ']', ']'},                     // 0x005D ]
	{0x005E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '^', '＾', '^', '^'},                     // 0x005E ^
	{0x005F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '_', '＿', '_', '_'},                     // 0x005F _
	{0x0060, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '`', '｀', '`', '`'},                     // 0x0060 `
	{0x0061, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'A', 'ａ', 'a', 'a'},                         // 0x0061 a
	{0x0062, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'B', 'ｂ', 'b', 'b'},                         // 0x0062 b
	{0x0063, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'C', 'ｃ', 'c', 'c'},                         // 0x0063 c
	{0x0064, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'D', 'ｄ', 'd', 'd'},                         // 0x0064 d
	{0x0065, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'E', 'ｅ', 'e', 'e'},                         // 0x0065 e
	{0x0066, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'F', 'ｆ', 'f', 'f'},                         // 0x0066 f
	{0x0067, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'G', 'ｇ', 'g', 'g'},                         // 0x0067 g
	{0x0068, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'H', 'ｈ', 'h', 'h'},                         // 0x0068 h
	{0x0069, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'I', 'ｉ', 'i', 'i'},                         // 0x0069 i
	{0x006A, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'J', 'ｊ', 'j', 'j'},                         // 0x006A j
	{0x006B, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'K', 'ｋ', 'k', 'k'},                         // 0x006B k
	{0x006C, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'L', 'ｌ', 'l', 'l'},                         // 0x006C l
	{0x006D, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'M', 'ｍ', 'm', 'm'},                         // 0x006D m
	{0x006E, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'N', 'ｎ', 'n', 'n'},                         // 0x006E n
	{0x006F, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'O', 'ｏ', 'o', 'o'},                         // 0x006F o
	{0x0070, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'P', 'ｐ', 'p', 'p'},                         // 0x0070 p
	{0x0071, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Q', 'ｑ', 'q', 'q'},                         // 0x0071 q
	{0x0072, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'R', 'ｒ', 'r', 'r'},                         // 0x0072 r
	{0x0073, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'S', 'ｓ', 's', 's'},                         // 0x0073 s
	{0x0074, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'T', 'ｔ', 't', 't'},                         // 0x0074 t
	{0x0075, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'U', 'ｕ', 'u', 'u'},                         // 0x0075 u
	{0x0076, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'V', 'ｖ', 'v', 'v'},                         // 0x0076 v
	{0x0077, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'W', 'ｗ', 'w', 'w'},                         // 0x0077 w
	{0x0078, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'X', 'ｘ', 'x', 'x'},                         // 0x0078 x
	{0x0079, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Y', 'ｙ', 'y', 'y'},                         // 0x0079 y
	{0x007A, ctLatinLetter, ccLower, cwNarrow, vcUndefined, 'Z', 'ｚ', 'z', 'z'},                         // 0x007A z
	{0x007B, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '{', '｛', '{', '{'},                     // 0x007B {
	{0x007C, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '|', '｜', '|', '|'},                     // 0x007C |
	{0x007D, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '}', '｝', '}', '}'},                     // 0x007D }
	{0x007E, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '~', '～', '~', '~'},                     // 0x007E ~
	{0x007F, ctLatinSymbol, ccUndefined, cwNarrow, vcUndefined, '\u007f', '\u007f', '\u007f', '\u007f'}, // 0x007F 
}

var kanaFirst rune = 0x3000
var kanaLast rune = 0x30FF
var kanaTable = unichars{
	{0x3000, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '\u3000', ' ', '\u3000', '\u3000'},         // 0x3000
	{0x3001, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '、', '､', '、', '、'},                         // 0x3001 、
	{0x3002, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '。', '｡', '。', '。'},                         // 0x3002 。
	{0x3003, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〃', '〃', '〃', '〃'},                         // 0x3003 〃
	{0x3004, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〄', '〄', '〄', '〄'},                         // 0x3004 〄
	{0x3005, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '々', '々', '々', '々'},                         // 0x3005 々
	{0x3006, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〆', '〆', '〆', '〆'},                         // 0x3006 〆
	{0x3007, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〇', '〇', '〇', '〇'},                         // 0x3007 〇
	{0x3008, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〈', '〈', '〈', '〈'},                         // 0x3008 〈
	{0x3009, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〉', '〉', '〉', '〉'},                         // 0x3009 〉
	{0x300A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '《', '《', '《', '《'},                         // 0x300A 《
	{0x300B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '》', '》', '》', '》'},                         // 0x300B 》
	{0x300C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '「', '｢', '「', '「'},                         // 0x300C 「
	{0x300D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '」', '｣', '」', '」'},                         // 0x300D 」
	{0x300E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '『', '『', '『', '『'},                         // 0x300E 『
	{0x300F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '』', '』', '』', '』'},                         // 0x300F 』
	{0x3010, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '【', '【', '【', '【'},                         // 0x3010 【
	{0x3011, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '】', '】', '】', '】'},                         // 0x3011 】
	{0x3012, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〒', '〒', '〒', '〒'},                         // 0x3012 〒
	{0x3013, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〓', '〓', '〓', '〓'},                         // 0x3013 〓
	{0x3014, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〔', '〔', '〔', '〔'},                         // 0x3014 〔
	{0x3015, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〕', '〕', '〕', '〕'},                         // 0x3015 〕
	{0x3016, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〖', '〖', '〖', '〖'},                         // 0x3016 〖
	{0x3017, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〗', '〗', '〗', '〗'},                         // 0x3017 〗
	{0x3018, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〘', '〘', '〘', '〘'},                         // 0x3018 〘
	{0x3019, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〙', '〙', '〙', '〙'},                         // 0x3019 〙
	{0x301A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〚', '〚', '〚', '〚'},                         // 0x301A 〚
	{0x301B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〛', '〛', '〛', '〛'},                         // 0x301B 〛
	{0x301C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〜', '〜', '〜', '〜'},                         // 0x301C 〜
	{0x301D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〝', '〝', '〝', '〝'},                         // 0x301D 〝
	{0x301E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〞', '〞', '〞', '〞'},                         // 0x301E 〞
	{0x301F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〟', '〟', '〟', '〟'},                         // 0x301F 〟
	{0x3020, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〠', '〠', '〠', '〠'},                         // 0x3020 〠
	{0x3021, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〡', '〡', '〡', '〡'},                         // 0x3021 〡
	{0x3022, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〢', '〢', '〢', '〢'},                         // 0x3022 〢
	{0x3023, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〣', '〣', '〣', '〣'},                         // 0x3023 〣
	{0x3024, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〤', '〤', '〤', '〤'},                         // 0x3024 〤
	{0x3025, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〥', '〥', '〥', '〥'},                         // 0x3025 〥
	{0x3026, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〦', '〦', '〦', '〦'},                         // 0x3026 〦
	{0x3027, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〧', '〧', '〧', '〧'},                         // 0x3027 〧
	{0x3028, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〨', '〨', '〨', '〨'},                         // 0x3028 〨
	{0x3029, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〩', '〩', '〩', '〩'},                         // 0x3029 〩
	{0x302A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〪', '〪', '〪', '〪'},                         // 0x302A 〪
	{0x302B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〫', '〫', '〫', '〫'},                         // 0x302B 〫
	{0x302C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〬', '〬', '〬', '〬'},                         // 0x302C 〬
	{0x302D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〭', '〭', '〭', '〭'},                         // 0x302D 〭
	{0x302E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〮', '〮', '〮', '〮'},                         // 0x302E 〮
	{0x302F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〯', '〯', '〯', '〯'},                         // 0x302F 〯
	{0x3030, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〰', '〰', '〰', '〰'},                         // 0x3030 〰
	{0x3031, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〱', '〱', '〱', '〱'},                         // 0x3031 〱
	{0x3032, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〲', '〲', '〲', '〲'},                         // 0x3032 〲
	{0x3033, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〳', '〳', '〳', '〳'},                         // 0x3033 〳
	{0x3034, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〴', '〴', '〴', '〴'},                         // 0x3034 〴
	{0x3035, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〵', '〵', '〵', '〵'},                         // 0x3035 〵
	{0x3036, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〶', '〶', '〶', '〶'},                         // 0x3036 〶
	{0x3037, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〷', '〷', '〷', '〷'},                         // 0x3037 〷
	{0x3038, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〸', '〸', '〸', '〸'},                         // 0x3038 〸
	{0x3039, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〹', '〹', '〹', '〹'},                         // 0x3039 〹
	{0x303A, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〺', '〺', '〺', '〺'},                         // 0x303A 〺
	{0x303B, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〻', '〻', '〻', '〻'},                         // 0x303B 〻
	{0x303C, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〼', '〼', '〼', '〼'},                         // 0x303C 〼
	{0x303D, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〽', '〽', '〽', '〽'},                         // 0x303D 〽
	{0x303E, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〾', '〾', '〾', '〾'},                         // 0x303E 〾
	{0x303F, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '〿', '〿', '〿', '〿'},                         // 0x303F 〿
	{0x3040, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3040', '\u3040', '\u3040', '\u3040'}, // 0x3040 ぀
	{0x3041, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ァ', 'ｧ', 'ぁ', 'ぁ'},                          // 0x3041 ぁ
	{0x3042, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ア', 'ｱ', 'あ', 'あ'},                          // 0x3042 あ
	{0x3043, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ィ', 'ｨ', 'ぃ', 'ぃ'},                          // 0x3043 ぃ
	{0x3044, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'イ', 'ｲ', 'い', 'い'},                          // 0x3044 い
	{0x3045, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ゥ', 'ｩ', 'ぅ', 'ぅ'},                          // 0x3045 ぅ
	{0x3046, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ウ', 'ｳ', 'ゔ', 'う'},                           // 0x3046 う
	{0x3047, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ェ', 'ｪ', 'ぇ', 'ぇ'},                          // 0x3047 ぇ
	{0x3048, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'エ', 'ｴ', 'え', 'え'},                          // 0x3048 え
	{0x3049, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ォ', 'ｫ', 'ぉ', 'ぉ'},                          // 0x3049 ぉ
	{0x304A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'オ', 'ｵ', 'お', 'お'},                          // 0x304A お
	{0x304B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'カ', 'ｶ', 'が', 'か'},                           // 0x304B か
	{0x304C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ガ', 'ｶ', 'か', 'が'},                             // 0x304C が
	{0x304D, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'キ', 'ｷ', 'ぎ', 'き'},                           // 0x304D き
	{0x304E, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ギ', 'ｷ', 'き', 'ぎ'},                             // 0x304E ぎ
	{0x304F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ク', 'ｸ', 'ぐ', 'く'},                           // 0x304F く
	{0x3050, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'グ', 'ｸ', 'く', 'ぐ'},                             // 0x3050 ぐ
	{0x3051, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ケ', 'ｹ', 'げ', 'け'},                           // 0x3051 け
	{0x3052, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゲ', 'ｹ', 'け', 'げ'},                             // 0x3052 げ
	{0x3053, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'コ', 'ｺ', 'ご', 'こ'},                           // 0x3053 こ
	{0x3054, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゴ', 'ｺ', 'こ', 'ご'},                             // 0x3054 ご
	{0x3055, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'サ', 'ｻ', 'ざ', 'さ'},                           // 0x3055 さ
	{0x3056, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ザ', 'ｻ', 'さ', 'ざ'},                             // 0x3056 ざ
	{0x3057, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'シ', 'ｼ', 'じ', 'し'},                           // 0x3057 し
	{0x3058, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ジ', 'ｼ', 'し', 'じ'},                             // 0x3058 じ
	{0x3059, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ス', 'ｽ', 'ず', 'す'},                           // 0x3059 す
	{0x305A, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ズ', 'ｽ', 'す', 'ず'},                             // 0x305A ず
	{0x305B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'セ', 'ｾ', 'ぜ', 'せ'},                           // 0x305B せ
	{0x305C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゼ', 'ｾ', 'せ', 'ぜ'},                             // 0x305C ぜ
	{0x305D, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ソ', 'ｿ', 'ぞ', 'そ'},                           // 0x305D そ
	{0x305E, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ゾ', 'ｿ', 'そ', 'ぞ'},                             // 0x305E ぞ
	{0x305F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'タ', 'ﾀ', 'だ', 'た'},                           // 0x305F た
	{0x3060, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ダ', 'ﾀ', 'た', 'だ'},                             // 0x3060 だ
	{0x3061, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'チ', 'ﾁ', 'ぢ', 'ち'},                           // 0x3061 ち
	{0x3062, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヂ', 'ﾁ', 'ち', 'ぢ'},                             // 0x3062 ぢ
	{0x3063, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ッ', 'ｯ', 'っ', 'っ'},                          // 0x3063 っ
	{0x3064, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ツ', 'ﾂ', 'づ', 'つ'},                           // 0x3064 つ
	{0x3065, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヅ', 'ﾂ', 'つ', 'づ'},                             // 0x3065 づ
	{0x3066, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'テ', 'ﾃ', 'で', 'て'},                           // 0x3066 て
	{0x3067, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'デ', 'ﾃ', 'て', 'で'},                             // 0x3067 で
	{0x3068, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ト', 'ﾄ', 'ど', 'と'},                           // 0x3068 と
	{0x3069, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ド', 'ﾄ', 'と', 'ど'},                             // 0x3069 ど
	{0x306A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ナ', 'ﾅ', 'な', 'な'},                          // 0x306A な
	{0x306B, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ニ', 'ﾆ', 'に', 'に'},                          // 0x306B に
	{0x306C, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヌ', 'ﾇ', 'ぬ', 'ぬ'},                          // 0x306C ぬ
	{0x306D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ネ', 'ﾈ', 'ね', 'ね'},                          // 0x306D ね
	{0x306E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ノ', 'ﾉ', 'の', 'の'},                          // 0x306E の
	{0x306F, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ハ', 'ﾊ', 'ば', 'ぱ'},                           // 0x306F は
	{0x3070, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'バ', 'ﾊ', 'は', 'ば'},                             // 0x3070 ば
	{0x3071, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'パ', 'ﾊ', 'ぱ', 'は'},                         // 0x3071 ぱ
	{0x3072, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ヒ', 'ﾋ', 'び', 'ぴ'},                           // 0x3072 ひ
	{0x3073, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ビ', 'ﾋ', 'ひ', 'び'},                             // 0x3073 び
	{0x3074, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ピ', 'ﾋ', 'ぴ', 'ひ'},                         // 0x3074 ぴ
	{0x3075, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'フ', 'ﾌ', 'ぶ', 'ぷ'},                           // 0x3075 ふ
	{0x3076, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ブ', 'ﾌ', 'ふ', 'ぶ'},                             // 0x3076 ぶ
	{0x3077, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'プ', 'ﾌ', 'ぷ', 'ふ'},                         // 0x3077 ぷ
	{0x3078, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ヘ', 'ﾍ', 'べ', 'ぺ'},                           // 0x3078 へ
	{0x3079, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ベ', 'ﾍ', 'へ', 'べ'},                             // 0x3079 べ
	{0x307A, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ペ', 'ﾍ', 'ぺ', 'へ'},                         // 0x307A ぺ
	{0x307B, ctKanaLetter, ccHiragana, cwWide, vcUnvoiced, 'ホ', 'ﾎ', 'ぼ', 'ぽ'},                           // 0x307B ほ
	{0x307C, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ボ', 'ﾎ', 'ほ', 'ぼ'},                             // 0x307C ぼ
	{0x307D, ctKanaLetter, ccHiragana, cwWide, vcSemivoiced, 'ポ', 'ﾎ', 'ぽ', 'ほ'},                         // 0x307D ぽ
	{0x307E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'マ', 'ﾏ', 'ま', 'ま'},                          // 0x307E ま
	{0x307F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ミ', 'ﾐ', 'み', 'み'},                          // 0x307F み
	{0x3080, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ム', 'ﾑ', 'む', 'む'},                          // 0x3080 む
	{0x3081, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'メ', 'ﾒ', 'め', 'め'},                          // 0x3081 め
	{0x3082, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'モ', 'ﾓ', 'も', 'も'},                          // 0x3082 も
	{0x3083, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ャ', 'ｬ', 'ゃ', 'ゃ'},                          // 0x3083 ゃ
	{0x3084, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヤ', 'ﾔ', 'や', 'や'},                          // 0x3084 や
	{0x3085, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ュ', 'ｭ', 'ゅ', 'ゅ'},                          // 0x3085 ゅ
	{0x3086, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ユ', 'ﾕ', 'ゆ', 'ゆ'},                          // 0x3086 ゆ
	{0x3087, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ョ', 'ｮ', 'ょ', 'ょ'},                          // 0x3087 ょ
	{0x3088, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヨ', 'ﾖ', 'よ', 'よ'},                          // 0x3088 よ
	{0x3089, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ラ', 'ﾗ', 'ら', 'ら'},                          // 0x3089 ら
	{0x308A, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'リ', 'ﾘ', 'り', 'り'},                          // 0x308A り
	{0x308B, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ル', 'ﾙ', 'る', 'る'},                          // 0x308B る
	{0x308C, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'レ', 'ﾚ', 'れ', 'れ'},                          // 0x308C れ
	{0x308D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ロ', 'ﾛ', 'ろ', 'ろ'},                          // 0x308D ろ
	{0x308E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヮ', 'ﾜ', 'ゎ', 'ゎ'},                          // 0x308E ゎ
	{0x308F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ワ', 'ﾜ', 'わ', 'わ'},                          // 0x308F わ
	{0x3090, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヰ', 'ｲ', 'ゐ', 'ゐ'},                          // 0x3090 ゐ
	{0x3091, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヱ', 'ｴ', 'ゑ', 'ゑ'},                          // 0x3091 ゑ
	{0x3092, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヲ', 'ｦ', 'を', 'を'},                          // 0x3092 を
	{0x3093, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ン', 'ﾝ', 'ん', 'ん'},                          // 0x3093 ん
	{0x3094, ctKanaLetter, ccHiragana, cwWide, vcVoiced, 'ヴ', 'ｳ', 'う', 'ゔ'},                             // 0x3094 ゔ
	{0x3095, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヵ', 'ｶ', 'ゕ', 'ゕ'},                          // 0x3095 ゕ
	{0x3096, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヶ', 'ｹ', 'ゖ', 'ゖ'},                          // 0x3096 ゖ
	{0x3097, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3097', '\u3097', '\u3097', '\u3097'}, // 0x3097 ゗
	{0x3098, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\u3098', '\u3098', '\u3098', '\u3098'}, // 0x3098 ゘
	{0x3099, ctKanaVom, ccCombining, cwWide, vcUndefined, '゛', 'ﾞ', '゙', '゙'},                            // 0x3099 ゙
	{0x309A, ctKanaVom, ccCombining, cwWide, vcUndefined, '゜', 'ﾟ', '゚', '゚'},                            // 0x309A ゚
	{0x309B, ctKanaVom, ccLegacy, cwWide, vcUndefined, '゙', 'ﾞ', '゛', '゛'},                               // 0x309B ゛
	{0x309C, ctKanaVom, ccLegacy, cwWide, vcUndefined, '゚', 'ﾟ', '゜', '゜'},                               // 0x309C ゜
	{0x309D, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヽ', 'ゝ', 'ゝ', 'ゝ'},                          // 0x309D ゝ
	{0x309E, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ヾ', 'ゞ', 'ゞ', 'ゞ'},                          // 0x309E ゞ
	{0x309F, ctKanaLetter, ccHiragana, cwWide, vcUndefined, 'ゟ', 'ゟ', 'ゟ', 'ゟ'},                          // 0x309F ゟ
	{0x30A0, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '゠', '゠', '゠', '゠'},                         // 0x30A0 ゠
	{0x30A1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぁ', 'ｧ', 'ァ', 'ァ'},                          // 0x30A1 ァ
	{0x30A2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'あ', 'ｱ', 'ア', 'ア'},                          // 0x30A2 ア
	{0x30A3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぃ', 'ｨ', 'ィ', 'ィ'},                          // 0x30A3 ィ
	{0x30A4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'い', 'ｲ', 'イ', 'イ'},                          // 0x30A4 イ
	{0x30A5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぅ', 'ｩ', 'ゥ', 'ゥ'},                          // 0x30A5 ゥ
	{0x30A6, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'う', 'ｳ', 'ヴ', 'ウ'},                           // 0x30A6 ウ
	{0x30A7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぇ', 'ｪ', 'ェ', 'ェ'},                          // 0x30A7 ェ
	{0x30A8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'え', 'ｴ', 'エ', 'エ'},                          // 0x30A8 エ
	{0x30A9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぉ', 'ｫ', 'ォ', 'ォ'},                          // 0x30A9 ォ
	{0x30AA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'お', 'ｵ', 'オ', 'オ'},                          // 0x30AA オ
	{0x30AB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'か', 'ｶ', 'ガ', 'カ'},                           // 0x30AB カ
	{0x30AC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'が', 'ｶ', 'カ', 'ガ'},                             // 0x30AC ガ
	{0x30AD, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'き', 'ｷ', 'ギ', 'キ'},                           // 0x30AD キ
	{0x30AE, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぎ', 'ｷ', 'キ', 'ギ'},                             // 0x30AE ギ
	{0x30AF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'く', 'ｸ', 'グ', 'ク'},                           // 0x30AF ク
	{0x30B0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぐ', 'ｸ', 'ク', 'グ'},                             // 0x30B0 グ
	{0x30B1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'け', 'ｹ', 'ゲ', 'ケ'},                           // 0x30B1 ケ
	{0x30B2, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'げ', 'ｹ', 'ケ', 'ゲ'},                             // 0x30B2 ゲ
	{0x30B3, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'こ', 'ｺ', 'ゴ', 'コ'},                           // 0x30B3 コ
	{0x30B4, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ご', 'ｺ', 'コ', 'ゴ'},                             // 0x30B4 ゴ
	{0x30B5, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'さ', 'ｻ', 'ザ', 'サ'},                           // 0x30B5 サ
	{0x30B6, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ざ', 'ｻ', 'サ', 'ザ'},                             // 0x30B6 ザ
	{0x30B7, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'し', 'ｼ', 'ジ', 'シ'},                           // 0x30B7 シ
	{0x30B8, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'じ', 'ｼ', 'シ', 'ジ'},                             // 0x30B8 ジ
	{0x30B9, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'す', 'ｽ', 'ズ', 'ス'},                           // 0x30B9 ス
	{0x30BA, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ず', 'ｽ', 'ス', 'ズ'},                             // 0x30BA ズ
	{0x30BB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'せ', 'ｾ', 'ゼ', 'セ'},                           // 0x30BB セ
	{0x30BC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぜ', 'ｾ', 'セ', 'ゼ'},                             // 0x30BC ゼ
	{0x30BD, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'そ', 'ｿ', 'ゾ', 'ソ'},                           // 0x30BD ソ
	{0x30BE, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぞ', 'ｿ', 'ソ', 'ゾ'},                             // 0x30BE ゾ
	{0x30BF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'た', 'ﾀ', 'ダ', 'タ'},                           // 0x30BF タ
	{0x30C0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'だ', 'ﾀ', 'タ', 'ダ'},                             // 0x30C0 ダ
	{0x30C1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ち', 'ﾁ', 'ヂ', 'チ'},                           // 0x30C1 チ
	{0x30C2, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぢ', 'ﾁ', 'チ', 'ヂ'},                             // 0x30C2 ヂ
	{0x30C3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'っ', 'ｯ', 'ッ', 'ッ'},                          // 0x30C3 ッ
	{0x30C4, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'つ', 'ﾂ', 'ヅ', 'ツ'},                           // 0x30C4 ツ
	{0x30C5, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'づ', 'ﾂ', 'ツ', 'ヅ'},                             // 0x30C5 ヅ
	{0x30C6, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'て', 'ﾃ', 'デ', 'テ'},                           // 0x30C6 テ
	{0x30C7, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'で', 'ﾃ', 'テ', 'デ'},                             // 0x30C7 デ
	{0x30C8, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'と', 'ﾄ', 'ド', 'ト'},                           // 0x30C8 ト
	{0x30C9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ど', 'ﾄ', 'ト', 'ド'},                             // 0x30C9 ド
	{0x30CA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'な', 'ﾅ', 'ナ', 'ナ'},                          // 0x30CA ナ
	{0x30CB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'に', 'ﾆ', 'ニ', 'ニ'},                          // 0x30CB ニ
	{0x30CC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぬ', 'ﾇ', 'ヌ', 'ヌ'},                          // 0x30CC ヌ
	{0x30CD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ね', 'ﾈ', 'ネ', 'ネ'},                          // 0x30CD ネ
	{0x30CE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'の', 'ﾉ', 'ノ', 'ノ'},                          // 0x30CE ノ
	{0x30CF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'は', 'ﾊ', 'バ', 'パ'},                           // 0x30CF ハ
	{0x30D0, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ば', 'ﾊ', 'ハ', 'バ'},                             // 0x30D0 バ
	{0x30D1, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぱ', 'ﾊ', 'パ', 'ハ'},                         // 0x30D1 パ
	{0x30D2, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ひ', 'ﾋ', 'ビ', 'ピ'},                           // 0x30D2 ヒ
	{0x30D3, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'び', 'ﾋ', 'ヒ', 'ビ'},                             // 0x30D3 ビ
	{0x30D4, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぴ', 'ﾋ', 'ピ', 'ヒ'},                         // 0x30D4 ピ
	{0x30D5, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ふ', 'ﾌ', 'ブ', 'プ'},                           // 0x30D5 フ
	{0x30D6, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぶ', 'ﾌ', 'フ', 'ブ'},                             // 0x30D6 ブ
	{0x30D7, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぷ', 'ﾌ', 'プ', 'フ'},                         // 0x30D7 プ
	{0x30D8, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'へ', 'ﾍ', 'ベ', 'ペ'},                           // 0x30D8 ヘ
	{0x30D9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'べ', 'ﾍ', 'ヘ', 'ベ'},                             // 0x30D9 ベ
	{0x30DA, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぺ', 'ﾍ', 'ペ', 'ヘ'},                         // 0x30DA ペ
	{0x30DB, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ほ', 'ﾎ', 'ボ', 'ポ'},                           // 0x30DB ホ
	{0x30DC, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ぼ', 'ﾎ', 'ホ', 'ボ'},                             // 0x30DC ボ
	{0x30DD, ctKanaLetter, ccKatakana, cwWide, vcSemivoiced, 'ぽ', 'ﾎ', 'ポ', 'ホ'},                         // 0x30DD ポ
	{0x30DE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ま', 'ﾏ', 'マ', 'マ'},                          // 0x30DE マ
	{0x30DF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'み', 'ﾐ', 'ミ', 'ミ'},                          // 0x30DF ミ
	{0x30E0, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'む', 'ﾑ', 'ム', 'ム'},                          // 0x30E0 ム
	{0x30E1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'め', 'ﾒ', 'メ', 'メ'},                          // 0x30E1 メ
	{0x30E2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'も', 'ﾓ', 'モ', 'モ'},                          // 0x30E2 モ
	{0x30E3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゃ', 'ｬ', 'ャ', 'ャ'},                          // 0x30E3 ャ
	{0x30E4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'や', 'ﾔ', 'ヤ', 'ヤ'},                          // 0x30E4 ヤ
	{0x30E5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゅ', 'ｭ', 'ュ', 'ュ'},                          // 0x30E5 ュ
	{0x30E6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゆ', 'ﾕ', 'ユ', 'ユ'},                          // 0x30E6 ユ
	{0x30E7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ょ', 'ｮ', 'ョ', 'ョ'},                          // 0x30E7 ョ
	{0x30E8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'よ', 'ﾖ', 'ヨ', 'ヨ'},                          // 0x30E8 ヨ
	{0x30E9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ら', 'ﾗ', 'ラ', 'ラ'},                          // 0x30E9 ラ
	{0x30EA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'り', 'ﾘ', 'リ', 'リ'},                          // 0x30EA リ
	{0x30EB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'る', 'ﾙ', 'ル', 'ル'},                          // 0x30EB ル
	{0x30EC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'れ', 'ﾚ', 'レ', 'レ'},                          // 0x30EC レ
	{0x30ED, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ろ', 'ﾛ', 'ロ', 'ロ'},                          // 0x30ED ロ
	{0x30EE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゎ', 'ﾜ', 'ヮ', 'ヮ'},                          // 0x30EE ヮ
	{0x30EF, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'わ', 'ﾜ', 'ヷ', 'ワ'},                           // 0x30EF ワ
	{0x30F0, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ゐ', 'ｲ', 'ヸ', 'ヰ'},                           // 0x30F0 ヰ
	{0x30F1, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'ゑ', 'ｴ', 'ヹ', 'ヱ'},                           // 0x30F1 ヱ
	{0x30F2, ctKanaLetter, ccKatakana, cwWide, vcUnvoiced, 'を', 'ｦ', 'ヺ', 'ヲ'},                           // 0x30F2 ヲ
	{0x30F3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ん', 'ﾝ', 'ン', 'ン'},                          // 0x30F3 ン
	{0x30F4, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゔ', 'ｳ', 'ウ', 'ヴ'},                             // 0x30F4 ヴ
	{0x30F5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゕ', 'ｶ', 'ヵ', 'ヵ'},                          // 0x30F5 ヵ
	{0x30F6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゖ', 'ｹ', 'ヶ', 'ヶ'},                          // 0x30F6 ヶ
	{0x30F7, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'わ', 'ﾜ', 'ワ', 'ヷ'},                             // 0x30F7 ヷ
	{0x30F8, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゐ', 'ｲ', 'ヰ', 'ヸ'},                             // 0x30F8 ヸ
	{0x30F9, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'ゑ', 'ｴ', 'ヱ', 'ヹ'},                             // 0x30F9 ヹ
	{0x30FA, ctKanaLetter, ccKatakana, cwWide, vcVoiced, 'を', 'ｦ', 'ヲ', 'ヺ'},                             // 0x30FA ヺ
	{0x30FB, ctKanaSymbol, ccUndefined, cwWide, vcUndefined, '・', '･', '・', '・'},                         // 0x30FB ・
	{0x30FC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ー', 'ｰ', 'ー', 'ー'},                          // 0x30FC ー
	{0x30FD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゝ', 'ヽ', 'ヽ', 'ヽ'},                          // 0x30FD ヽ
	{0x30FE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ゞ', 'ヾ', 'ヾ', 'ヾ'},                          // 0x30FE ヾ
	{0x30FF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ヿ', 'ヿ', 'ヿ', 'ヿ'},                          // 0x30FF ヿ
}

var kanaExtFirst rune = 0x31F0
var kanaExtLast rune = 0x31FF
var kanaExtTable = unichars{
	{0x31F0, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'く', 'ｸ', 'ㇰ', 'ㇰ'}, // 0x31F0 ㇰ
	{0x31F1, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'し', 'ｼ', 'ㇱ', 'ㇱ'}, // 0x31F1 ㇱ
	{0x31F2, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'す', 'ｽ', 'ㇲ', 'ㇲ'}, // 0x31F2 ㇲ
	{0x31F3, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'と', 'ﾄ', 'ㇳ', 'ㇳ'}, // 0x31F3 ㇳ
	{0x31F4, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ぬ', 'ﾇ', 'ㇴ', 'ㇴ'}, // 0x31F4 ㇴ
	{0x31F5, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'は', 'ﾊ', 'ㇵ', 'ㇵ'}, // 0x31F5 ㇵ
	{0x31F6, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ひ', 'ﾋ', 'ㇶ', 'ㇶ'}, // 0x31F6 ㇶ
	{0x31F7, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ふ', 'ﾌ', 'ㇷ', 'ㇷ'}, // 0x31F7 ㇷ
	{0x31F8, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'へ', 'ﾍ', 'ㇸ', 'ㇸ'}, // 0x31F8 ㇸ
	{0x31F9, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ほ', 'ﾎ', 'ㇹ', 'ㇹ'}, // 0x31F9 ㇹ
	{0x31FA, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'む', 'ﾑ', 'ㇺ', 'ㇺ'}, // 0x31FA ㇺ
	{0x31FB, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ら', 'ﾗ', 'ㇻ', 'ㇻ'}, // 0x31FB ㇻ
	{0x31FC, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'り', 'ﾘ', 'ㇼ', 'ㇼ'}, // 0x31FC ㇼ
	{0x31FD, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'る', 'ﾙ', 'ㇽ', 'ㇽ'}, // 0x31FD ㇽ
	{0x31FE, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'れ', 'ﾚ', 'ㇾ', 'ㇾ'}, // 0x31FE ㇾ
	{0x31FF, ctKanaLetter, ccKatakana, cwWide, vcUndefined, 'ろ', 'ﾛ', 'ㇿ', 'ㇿ'}, // 0x31FF ㇿ
}

var widthFirst rune = 0xFF00
var widthLast rune = 0xFF9F
var widthTable = unichars{
	{0xFF00, ctUndefined, ccUndefined, cwUndefined, vcUndefined, '\uff00', '\uff00', '\uff00', '\uff00'}, // 0xFF00 ＀
	{0xFF01, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '！', '!', '！', '！'},                        // 0xFF01 ！
	{0xFF02, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＂', '"', '＂', '＂'},                        // 0xFF02 ＂
	{0xFF03, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＃', '#', '＃', '＃'},                        // 0xFF03 ＃
	{0xFF04, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＄', '$', '＄', '＄'},                        // 0xFF04 ＄
	{0xFF05, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '％', '%', '％', '％'},                        // 0xFF05 ％
	{0xFF06, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＆', '&', '＆', '＆'},                        // 0xFF06 ＆
	{0xFF07, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＇', '\'', '＇', '＇'},                       // 0xFF07 ＇
	{0xFF08, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '（', '(', '（', '（'},                        // 0xFF08 （
	{0xFF09, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '）', ')', '）', '）'},                        // 0xFF09 ）
	{0xFF0A, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＊', '*', '＊', '＊'},                        // 0xFF0A ＊
	{0xFF0B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＋', '+', '＋', '＋'},                        // 0xFF0B ＋
	{0xFF0C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '，', ',', '，', '，'},                        // 0xFF0C ，
	{0xFF0D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '－', '-', '－', '－'},                        // 0xFF0D －
	{0xFF0E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '．', '.', '．', '．'},                        // 0xFF0E ．
	{0xFF0F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '／', '/', '／', '／'},                        // 0xFF0F ／
	{0xFF10, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '０', '0', '０', '０'},                         // 0xFF10 ０
	{0xFF11, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '１', '1', '１', '１'},                         // 0xFF11 １
	{0xFF12, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '２', '2', '２', '２'},                         // 0xFF12 ２
	{0xFF13, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '３', '3', '３', '３'},                         // 0xFF13 ３
	{0xFF14, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '４', '4', '４', '４'},                         // 0xFF14 ４
	{0xFF15, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '５', '5', '５', '５'},                         // 0xFF15 ５
	{0xFF16, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '６', '6', '６', '６'},                         // 0xFF16 ６
	{0xFF17, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '７', '7', '７', '７'},                         // 0xFF17 ７
	{0xFF18, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '８', '8', '８', '８'},                         // 0xFF18 ８
	{0xFF19, ctLatinDigit, ccUndefined, cwWide, vcUndefined, '９', '9', '９', '９'},                         // 0xFF19 ９
	{0xFF1A, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '：', ':', '：', '：'},                        // 0xFF1A ：
	{0xFF1B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '；', ';', '；', '；'},                        // 0xFF1B ；
	{0xFF1C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＜', '<', '＜', '＜'},                        // 0xFF1C ＜
	{0xFF1D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＝', '=', '＝', '＝'},                        // 0xFF1D ＝
	{0xFF1E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＞', '>', '＞', '＞'},                        // 0xFF1E ＞
	{0xFF1F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '？', '?', '？', '？'},                        // 0xFF1F ？
	{0xFF20, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＠', '@', '＠', '＠'},                        // 0xFF20 ＠
	{0xFF21, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ａ', 'A', 'Ａ', 'Ａ'},                            // 0xFF21 Ａ
	{0xFF22, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｂ', 'B', 'Ｂ', 'Ｂ'},                            // 0xFF22 Ｂ
	{0xFF23, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｃ', 'C', 'Ｃ', 'Ｃ'},                            // 0xFF23 Ｃ
	{0xFF24, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｄ', 'D', 'Ｄ', 'Ｄ'},                            // 0xFF24 Ｄ
	{0xFF25, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｅ', 'E', 'Ｅ', 'Ｅ'},                            // 0xFF25 Ｅ
	{0xFF26, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｆ', 'F', 'Ｆ', 'Ｆ'},                            // 0xFF26 Ｆ
	{0xFF27, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｇ', 'G', 'Ｇ', 'Ｇ'},                            // 0xFF27 Ｇ
	{0xFF28, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｈ', 'H', 'Ｈ', 'Ｈ'},                            // 0xFF28 Ｈ
	{0xFF29, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｉ', 'I', 'Ｉ', 'Ｉ'},                            // 0xFF29 Ｉ
	{0xFF2A, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｊ', 'J', 'Ｊ', 'Ｊ'},                            // 0xFF2A Ｊ
	{0xFF2B, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｋ', 'K', 'Ｋ', 'Ｋ'},                            // 0xFF2B Ｋ
	{0xFF2C, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｌ', 'L', 'Ｌ', 'Ｌ'},                            // 0xFF2C Ｌ
	{0xFF2D, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｍ', 'M', 'Ｍ', 'Ｍ'},                            // 0xFF2D Ｍ
	{0xFF2E, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｎ', 'N', 'Ｎ', 'Ｎ'},                            // 0xFF2E Ｎ
	{0xFF2F, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｏ', 'O', 'Ｏ', 'Ｏ'},                            // 0xFF2F Ｏ
	{0xFF30, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｐ', 'P', 'Ｐ', 'Ｐ'},                            // 0xFF30 Ｐ
	{0xFF31, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｑ', 'Q', 'Ｑ', 'Ｑ'},                            // 0xFF31 Ｑ
	{0xFF32, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｒ', 'R', 'Ｒ', 'Ｒ'},                            // 0xFF32 Ｒ
	{0xFF33, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｓ', 'S', 'Ｓ', 'Ｓ'},                            // 0xFF33 Ｓ
	{0xFF34, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｔ', 'T', 'Ｔ', 'Ｔ'},                            // 0xFF34 Ｔ
	{0xFF35, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｕ', 'U', 'Ｕ', 'Ｕ'},                            // 0xFF35 Ｕ
	{0xFF36, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｖ', 'V', 'Ｖ', 'Ｖ'},                            // 0xFF36 Ｖ
	{0xFF37, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｗ', 'W', 'Ｗ', 'Ｗ'},                            // 0xFF37 Ｗ
	{0xFF38, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｘ', 'X', 'Ｘ', 'Ｘ'},                            // 0xFF38 Ｘ
	{0xFF39, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｙ', 'Y', 'Ｙ', 'Ｙ'},                            // 0xFF39 Ｙ
	{0xFF3A, ctLatinLetter, ccUpper, cwWide, vcUndefined, 'ｚ', 'Z', 'Ｚ', 'Ｚ'},                            // 0xFF3A Ｚ
	{0xFF3B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '［', '[', '［', '［'},                        // 0xFF3B ［
	{0xFF3C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＼', '\\', '＼', '＼'},                       // 0xFF3C ＼
	{0xFF3D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '］', ']', '］', '］'},                        // 0xFF3D ］
	{0xFF3E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＾', '^', '＾', '＾'},                        // 0xFF3E ＾
	{0xFF3F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '＿', '_', '＿', '＿'},                        // 0xFF3F ＿
	{0xFF40, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｀', '`', '｀', '｀'},                        // 0xFF40 ｀
	{0xFF41, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ａ', 'a', 'ａ', 'ａ'},                            // 0xFF41 ａ
	{0xFF42, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｂ', 'b', 'ｂ', 'ｂ'},                            // 0xFF42 ｂ
	{0xFF43, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｃ', 'c', 'ｃ', 'ｃ'},                            // 0xFF43 ｃ
	{0xFF44, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｄ', 'd', 'ｄ', 'ｄ'},                            // 0xFF44 ｄ
	{0xFF45, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｅ', 'e', 'ｅ', 'ｅ'},                            // 0xFF45 ｅ
	{0xFF46, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｆ', 'f', 'ｆ', 'ｆ'},                            // 0xFF46 ｆ
	{0xFF47, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｇ', 'g', 'ｇ', 'ｇ'},                            // 0xFF47 ｇ
	{0xFF48, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｈ', 'h', 'ｈ', 'ｈ'},                            // 0xFF48 ｈ
	{0xFF49, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｉ', 'i', 'ｉ', 'ｉ'},                            // 0xFF49 ｉ
	{0xFF4A, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｊ', 'j', 'ｊ', 'ｊ'},                            // 0xFF4A ｊ
	{0xFF4B, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｋ', 'k', 'ｋ', 'ｋ'},                            // 0xFF4B ｋ
	{0xFF4C, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｌ', 'l', 'ｌ', 'ｌ'},                            // 0xFF4C ｌ
	{0xFF4D, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｍ', 'm', 'ｍ', 'ｍ'},                            // 0xFF4D ｍ
	{0xFF4E, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｎ', 'n', 'ｎ', 'ｎ'},                            // 0xFF4E ｎ
	{0xFF4F, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｏ', 'o', 'ｏ', 'ｏ'},                            // 0xFF4F ｏ
	{0xFF50, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｐ', 'p', 'ｐ', 'ｐ'},                            // 0xFF50 ｐ
	{0xFF51, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｑ', 'q', 'ｑ', 'ｑ'},                            // 0xFF51 ｑ
	{0xFF52, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｒ', 'r', 'ｒ', 'ｒ'},                            // 0xFF52 ｒ
	{0xFF53, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｓ', 's', 'ｓ', 'ｓ'},                            // 0xFF53 ｓ
	{0xFF54, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｔ', 't', 'ｔ', 'ｔ'},                            // 0xFF54 ｔ
	{0xFF55, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｕ', 'u', 'ｕ', 'ｕ'},                            // 0xFF55 ｕ
	{0xFF56, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｖ', 'v', 'ｖ', 'ｖ'},                            // 0xFF56 ｖ
	{0xFF57, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｗ', 'w', 'ｗ', 'ｗ'},                            // 0xFF57 ｗ
	{0xFF58, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｘ', 'x', 'ｘ', 'ｘ'},                            // 0xFF58 ｘ
	{0xFF59, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｙ', 'y', 'ｙ', 'ｙ'},                            // 0xFF59 ｙ
	{0xFF5A, ctLatinLetter, ccLower, cwWide, vcUndefined, 'Ｚ', 'z', 'ｚ', 'ｚ'},                            // 0xFF5A ｚ
	{0xFF5B, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｛', '{', '｛', '｛'},                        // 0xFF5B ｛
	{0xFF5C, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｜', '|', '｜', '｜'},                        // 0xFF5C ｜
	{0xFF5D, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｝', '}', '｝', '｝'},                        // 0xFF5D ｝
	{0xFF5E, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '～', '~', '～', '～'},                        // 0xFF5E ～
	{0xFF5F, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｟', '｟', '｟', '｟'},                        // 0xFF5F ｟
	{0xFF60, ctLatinSymbol, ccUndefined, cwWide, vcUndefined, '｠', '｠', '｠', '｠'},                        // 0xFF60 ｠
	{0xFF61, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｡', '。', '｡', '｡'},                       // 0xFF61 ｡
	{0xFF62, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｢', '「', '｢', '｢'},                       // 0xFF62 ｢
	{0xFF63, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '｣', '」', '｣', '｣'},                       // 0xFF63 ｣
	{0xFF64, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '､', '、', '､', '､'},                       // 0xFF64 ､
	{0xFF65, ctKanaSymbol, ccUndefined, cwNarrow, vcUndefined, '･', '・', '･', '･'},                       // 0xFF65 ･
	{0xFF66, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'を', 'ヲ', 'ｦ', 'ｦ'},                        // 0xFF66 ｦ
	{0xFF67, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぁ', 'ァ', 'ｧ', 'ｧ'},                        // 0xFF67 ｧ
	{0xFF68, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぃ', 'ィ', 'ｨ', 'ｨ'},                        // 0xFF68 ｨ
	{0xFF69, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぅ', 'ゥ', 'ｩ', 'ｩ'},                        // 0xFF69 ｩ
	{0xFF6A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぇ', 'ェ', 'ｪ', 'ｪ'},                        // 0xFF6A ｪ
	{0xFF6B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぉ', 'ォ', 'ｫ', 'ｫ'},                        // 0xFF6B ｫ
	{0xFF6C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゃ', 'ャ', 'ｬ', 'ｬ'},                        // 0xFF6C ｬ
	{0xFF6D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゅ', 'ュ', 'ｭ', 'ｭ'},                        // 0xFF6D ｭ
	{0xFF6E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ょ', 'ョ', 'ｮ', 'ｮ'},                        // 0xFF6E ｮ
	{0xFF6F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'っ', 'ッ', 'ｯ', 'ｯ'},                        // 0xFF6F ｯ
	{0xFF70, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ｰ', 'ー', 'ｰ', 'ｰ'},                        // 0xFF70 ｰ
	{0xFF71, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'あ', 'ア', 'ｱ', 'ｱ'},                        // 0xFF71 ｱ
	{0xFF72, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'い', 'イ', 'ｲ', 'ｲ'},                        // 0xFF72 ｲ
	{0xFF73, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'う', 'ウ', 'ｳ', 'ｳ'},                        // 0xFF73 ｳ
	{0xFF74, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'え', 'エ', 'ｴ', 'ｴ'},                        // 0xFF74 ｴ
	{0xFF75, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'お', 'オ', 'ｵ', 'ｵ'},                        // 0xFF75 ｵ
	{0xFF76, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'か', 'カ', 'ｶ', 'ｶ'},                        // 0xFF76 ｶ
	{0xFF77, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'き', 'キ', 'ｷ', 'ｷ'},                        // 0xFF77 ｷ
	{0xFF78, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'く', 'ク', 'ｸ', 'ｸ'},                        // 0xFF78 ｸ
	{0xFF79, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'け', 'ケ', 'ｹ', 'ｹ'},                        // 0xFF79 ｹ
	{0xFF7A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'こ', 'コ', 'ｺ', 'ｺ'},                        // 0xFF7A ｺ
	{0xFF7B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'さ', 'サ', 'ｻ', 'ｻ'},                        // 0xFF7B ｻ
	{0xFF7C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'し', 'シ', 'ｼ', 'ｼ'},                        // 0xFF7C ｼ
	{0xFF7D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'す', 'ス', 'ｽ', 'ｽ'},                        // 0xFF7D ｽ
	{0xFF7E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'せ', 'セ', 'ｾ', 'ｾ'},                        // 0xFF7E ｾ
	{0xFF7F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'そ', 'ソ', 'ｿ', 'ｿ'},                        // 0xFF7F ｿ
	{0xFF80, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'た', 'タ', 'ﾀ', 'ﾀ'},                        // 0xFF80 ﾀ
	{0xFF81, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ち', 'チ', 'ﾁ', 'ﾁ'},                        // 0xFF81 ﾁ
	{0xFF82, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'つ', 'ツ', 'ﾂ', 'ﾂ'},                        // 0xFF82 ﾂ
	{0xFF83, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'て', 'テ', 'ﾃ', 'ﾃ'},                        // 0xFF83 ﾃ
	{0xFF84, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'と', 'ト', 'ﾄ', 'ﾄ'},                        // 0xFF84 ﾄ
	{0xFF85, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'な', 'ナ', 'ﾅ', 'ﾅ'},                        // 0xFF85 ﾅ
	{0xFF86, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'に', 'ニ', 'ﾆ', 'ﾆ'},                        // 0xFF86 ﾆ
	{0xFF87, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ぬ', 'ヌ', 'ﾇ', 'ﾇ'},                        // 0xFF87 ﾇ
	{0xFF88, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ね', 'ネ', 'ﾈ', 'ﾈ'},                        // 0xFF88 ﾈ
	{0xFF89, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'の', 'ノ', 'ﾉ', 'ﾉ'},                        // 0xFF89 ﾉ
	{0xFF8A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'は', 'ハ', 'ﾊ', 'ﾊ'},                        // 0xFF8A ﾊ
	{0xFF8B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ひ', 'ヒ', 'ﾋ', 'ﾋ'},                        // 0xFF8B ﾋ
	{0xFF8C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ふ', 'フ', 'ﾌ', 'ﾌ'},                        // 0xFF8C ﾌ
	{0xFF8D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'へ', 'ヘ', 'ﾍ', 'ﾍ'},                        // 0xFF8D ﾍ
	{0xFF8E, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ほ', 'ホ', 'ﾎ', 'ﾎ'},                        // 0xFF8E ﾎ
	{0xFF8F, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ま', 'マ', 'ﾏ', 'ﾏ'},                        // 0xFF8F ﾏ
	{0xFF90, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'み', 'ミ', 'ﾐ', 'ﾐ'},                        // 0xFF90 ﾐ
	{0xFF91, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'む', 'ム', 'ﾑ', 'ﾑ'},                        // 0xFF91 ﾑ
	{0xFF92, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'め', 'メ', 'ﾒ', 'ﾒ'},                        // 0xFF92 ﾒ
	{0xFF93, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'も', 'モ', 'ﾓ', 'ﾓ'},                        // 0xFF93 ﾓ
	{0xFF94, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'や', 'ヤ', 'ﾔ', 'ﾔ'},                        // 0xFF94 ﾔ
	{0xFF95, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ゆ', 'ユ', 'ﾕ', 'ﾕ'},                        // 0xFF95 ﾕ
	{0xFF96, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'よ', 'ヨ', 'ﾖ', 'ﾖ'},                        // 0xFF96 ﾖ
	{0xFF97, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ら', 'ラ', 'ﾗ', 'ﾗ'},                        // 0xFF97 ﾗ
	{0xFF98, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'り', 'リ', 'ﾘ', 'ﾘ'},                        // 0xFF98 ﾘ
	{0xFF99, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'る', 'ル', 'ﾙ', 'ﾙ'},                        // 0xFF99 ﾙ
	{0xFF9A, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'れ', 'レ', 'ﾚ', 'ﾚ'},                        // 0xFF9A ﾚ
	{0xFF9B, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ろ', 'ロ', 'ﾛ', 'ﾛ'},                        // 0xFF9B ﾛ
	{0xFF9C, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'わ', 'ワ', 'ﾜ', 'ﾜ'},                        // 0xFF9C ﾜ
	{0xFF9D, ctKanaLetter, ccKatakana, cwNarrow, vcUndefined, 'ん', 'ン', 'ﾝ', 'ﾝ'},                        // 0xFF9D ﾝ
	{0xFF9E, ctKanaVom, ccLegacy, cwNarrow, vcUndefined, '゙', '゛', 'ﾞ', 'ﾞ'},                             // 0xFF9E ﾞ
	{0xFF9F, ctKanaVom, ccLegacy, cwNarrow, vcUndefined, '゚', '゜', 'ﾟ', 'ﾟ'},                             // 0xFF9F ﾟ
}
