/* Copyright (C) 1998 National Electronics and Computer Technology Center This file is part of ThColl, a Thai string collation library. ThColl is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ThColl is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ThColl; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Any licensing or usage questions should be directed to Theppitak Karoonboonyanan . */ /* * $Id: cweight.c,v 1.3 2001-08-14 06:11:41 thep Exp $ * cweight.c - Thai Character Weight Table for TIS-620/2533 Collating * Created: 9 Nov 1998 * Author: Theppitak Karoonboonyanan */ /* * The ordering algorithm is in accordance * with the Thai Royal Institute Dictionary * 2525 B.E. Edition */ #include #include "cweight.h" #define TOT_CHARS 256 /* level 1 symbols & order */ enum l1_symbols { L1_08 = TOT_LEVELS, L1_18, L1_28, L1_38, L1_48, L1_58, L1_68, L1_78, L1_88, L1_98, L1_A8, L1_B8, L1_C8, L1_D8, L1_E8, L1_F8, L1_G8, L1_H8, L1_I8, L1_J8, L1_K8, L1_L8, L1_M8, L1_N8, L1_O8, L1_P8, L1_Q8, L1_R8, L1_S8, L1_T8, L1_U8, L1_V8, L1_W8, L1_X8, L1_Y8, L1_Z8, L1_KO_KAI, L1_KHO_KHAI, L1_KHO_KHUAT, L1_KHO_KHWAI, L1_KHO_KHON, L1_KHO_RAKHANG, L1_NGO_NGU, L1_CHO_CHAN, L1_CHO_CHING, L1_CHO_CHANG, L1_SO_SO, L1_CHO_CHOE, L1_YO_YING, L1_DO_CHADA, L1_TO_PATAK, L1_THO_THAN, L1_THO_NANGMONTHO, L1_THO_PHUTHAO, L1_NO_NEN, L1_DO_DEK, L1_TO_TAO, L1_THO_THUNG, L1_THO_THAHAN, L1_THO_THONG, L1_NO_NU, L1_BO_BAIMAI, L1_PO_PLA, L1_PHO_PHUNG, L1_FO_FA, L1_PHO_PHAN, L1_FO_FAN, L1_PHO_SAMPHAO, L1_MO_MA, L1_YO_YAK, L1_RO_RUA, L1_RU, L1_LO_LING, L1_LU, L1_WO_WAEN, L1_SO_SALA, L1_SO_RUSI, L1_SO_SUA, L1_HO_HIP, L1_LO_CHULA, L1_O_ANG, L1_HO_NOKHUK, L1_NKHIT, L1_SARA_A, L1_MAI_HAN_AKAT, L1_SARA_AA, L1_SARA_AM, L1_SARA_I, L1_SARA_II, L1_SARA_UE, L1_SARA_UEE, L1_SARA_U, L1_SARA_UU, L1_SARA_E, L1_SARA_AE, L1_SARA_O, L1_SARA_AI_MAIMUAN, L1_SARA_AI_MAIMALAI }; /* level 2 symbols & order */ enum l2_symbols { L2_BLANK = TOT_LEVELS, L2_THAII, L2_YAMAK, L2_PINTU, L2_GARAN, L2_TYKHU, L2_TONE1, L2_TONE2, L2_TONE3, L2_TONE4 }; /* level 3 symbols & order */ enum l3_symbols { L3_BLANK = TOT_LEVELS, L3_SPACE, L3_NB_SACE, L3_LOW_LINE, L3_HYPHEN, L3_COMMA, L3_SEMICOLON, L3_COLON, L3_EXCLAMATION, L3_QUESTION, L3_SOLIDUS, L3_FULL_STOP, L3_PAIYAN_NOI, L3_MAI_YAMOK, L3_GRAVE, L3_CIRCUMFLEX, L3_TILDE, L3_APOSTROPHE, L3_QUOTATION, L3_L_PARANTHESIS, L3_L_BRACKET, L3_L_BRACE, L3_R_BRACE, L3_R_BRACKET, L3_R_PARENTHESIS, L3_AT, L3_BAHT, L3_DOLLAR, L3_FONGMAN, L3_ANGKHANKHU, L3_KHOMUT, L3_ASTERISK, L3_BK_SOLIDUS, L3_AMPERSAND, L3_NUMBER, L3_PERCENT, L3_PLUS, L3_LESS_THAN, L3_EQUAL, L3_GREATER_THAN, L3_V_LINE }; /* level 4 symbols & order */ enum l4_symbols { L4_BLK = TOT_LEVELS, L4_MIN, L4_CAP, L4_EXT }; static thchar_t char_weight_tbl_[TOT_CHARS][TOT_LEVELS] = { /*0x00*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x01*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x02*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x03*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x04*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x05*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x06*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x07*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x08*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x09*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0A*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0B*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0C*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0D*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0E*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x0F*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x10*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x11*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x12*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x13*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x14*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x15*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x16*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x17*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x18*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x19*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1A*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1B*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1C*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1D*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1E*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x1F*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x20*/ { IGNORE, IGNORE, L3_SPACE, IGNORE }, /* */ /*0x21*/ { IGNORE, IGNORE, L3_EXCLAMATION, IGNORE }, /* ! */ /*0x22*/ { IGNORE, IGNORE, L3_QUOTATION, IGNORE }, /* " */ /*0x23*/ { IGNORE, IGNORE, L3_NUMBER, IGNORE }, /* # */ /*0x24*/ { IGNORE, IGNORE, L3_DOLLAR, IGNORE }, /* $ */ /*0x25*/ { IGNORE, IGNORE, L3_PERCENT, IGNORE }, /* % */ /*0x26*/ { IGNORE, IGNORE, L3_AMPERSAND, IGNORE }, /* & */ /*0x27*/ { IGNORE, IGNORE, L3_APOSTROPHE, IGNORE }, /* ' */ /*0x28*/ { IGNORE, IGNORE, L3_L_PARANTHESIS, IGNORE }, /* ( */ /*0x29*/ { IGNORE, IGNORE, L3_R_PARENTHESIS, IGNORE }, /* ) */ /*0x2A*/ { IGNORE, IGNORE, L3_ASTERISK, IGNORE }, /* * */ /*0x2B*/ { IGNORE, IGNORE, L3_PLUS, IGNORE }, /* + */ /*0x2C*/ { IGNORE, IGNORE, L3_COMMA, IGNORE }, /* , */ /*0x2D*/ { IGNORE, IGNORE, L3_HYPHEN, IGNORE }, /* _ */ /*0x2E*/ { IGNORE, IGNORE, L3_FULL_STOP, IGNORE }, /* . */ /*0x2F*/ { IGNORE, IGNORE, L3_SOLIDUS, IGNORE }, /* / */ /*0x30*/ { L1_08, L2_BLANK, L3_BLANK, L4_BLK }, /* 0 */ /*0x31*/ { L1_18, L2_BLANK, L3_BLANK, L4_BLK }, /* 1 */ /*0x32*/ { L1_28, L2_BLANK, L3_BLANK, L4_BLK }, /* 2 */ /*0x33*/ { L1_38, L2_BLANK, L3_BLANK, L4_BLK }, /* 3 */ /*0x34*/ { L1_48, L2_BLANK, L3_BLANK, L4_BLK }, /* 4 */ /*0x35*/ { L1_58, L2_BLANK, L3_BLANK, L4_BLK }, /* 5 */ /*0x36*/ { L1_68, L2_BLANK, L3_BLANK, L4_BLK }, /* 6 */ /*0x37*/ { L1_78, L2_BLANK, L3_BLANK, L4_BLK }, /* 7 */ /*0x38*/ { L1_88, L2_BLANK, L3_BLANK, L4_BLK }, /* 8 */ /*0x39*/ { L1_98, L2_BLANK, L3_BLANK, L4_BLK }, /* 9 */ /*0x3A*/ { IGNORE, IGNORE, L3_COLON, IGNORE }, /* : */ /*0x3B*/ { IGNORE, IGNORE, L3_SEMICOLON, IGNORE }, /* ; */ /*0x3C*/ { IGNORE, IGNORE, L3_LESS_THAN, IGNORE }, /* < */ /*0x3D*/ { IGNORE, IGNORE, L3_EQUAL, IGNORE }, /* = */ /*0x3E*/ { IGNORE, IGNORE, L3_GREATER_THAN, IGNORE }, /* > */ /*0x3F*/ { IGNORE, IGNORE, L3_QUESTION, IGNORE }, /* ? */ /*0x40*/ { IGNORE, IGNORE, L3_AT, IGNORE }, /* @ */ /*0x41*/ { L1_A8, L2_BLANK, L3_BLANK, L4_CAP }, /* A */ /*0x42*/ { L1_B8, L2_BLANK, L3_BLANK, L4_CAP }, /* B */ /*0x43*/ { L1_C8, L2_BLANK, L3_BLANK, L4_CAP }, /* C */ /*0x44*/ { L1_D8, L2_BLANK, L3_BLANK, L4_CAP }, /* D */ /*0x45*/ { L1_E8, L2_BLANK, L3_BLANK, L4_CAP }, /* E */ /*0x46*/ { L1_F8, L2_BLANK, L3_BLANK, L4_CAP }, /* F */ /*0x47*/ { L1_G8, L2_BLANK, L3_BLANK, L4_CAP }, /* G */ /*0x48*/ { L1_H8, L2_BLANK, L3_BLANK, L4_CAP }, /* H */ /*0x49*/ { L1_I8, L2_BLANK, L3_BLANK, L4_CAP }, /* I */ /*0x4A*/ { L1_J8, L2_BLANK, L3_BLANK, L4_CAP }, /* J */ /*0x4B*/ { L1_K8, L2_BLANK, L3_BLANK, L4_CAP }, /* K */ /*0x4C*/ { L1_L8, L2_BLANK, L3_BLANK, L4_CAP }, /* L */ /*0x4D*/ { L1_M8, L2_BLANK, L3_BLANK, L4_CAP }, /* M */ /*0x4E*/ { L1_N8, L2_BLANK, L3_BLANK, L4_CAP }, /* N */ /*0x4F*/ { L1_O8, L2_BLANK, L3_BLANK, L4_CAP }, /* O */ /*0x50*/ { L1_P8, L2_BLANK, L3_BLANK, L4_CAP }, /* P */ /*0x51*/ { L1_Q8, L2_BLANK, L3_BLANK, L4_CAP }, /* Q */ /*0x52*/ { L1_R8, L2_BLANK, L3_BLANK, L4_CAP }, /* R */ /*0x53*/ { L1_S8, L2_BLANK, L3_BLANK, L4_CAP }, /* S */ /*0x54*/ { L1_T8, L2_BLANK, L3_BLANK, L4_CAP }, /* T */ /*0x55*/ { L1_U8, L2_BLANK, L3_BLANK, L4_CAP }, /* U */ /*0x56*/ { L1_V8, L2_BLANK, L3_BLANK, L4_CAP }, /* V */ /*0x57*/ { L1_W8, L2_BLANK, L3_BLANK, L4_CAP }, /* W */ /*0x58*/ { L1_X8, L2_BLANK, L3_BLANK, L4_CAP }, /* X */ /*0x59*/ { L1_Y8, L2_BLANK, L3_BLANK, L4_CAP }, /* Y */ /*0x5A*/ { L1_Z8, L2_BLANK, L3_BLANK, L4_CAP }, /* Z */ /*0x5B*/ { IGNORE, IGNORE, L3_L_BRACKET, IGNORE }, /* [ */ /*0x5C*/ { IGNORE, IGNORE, L3_BK_SOLIDUS, IGNORE }, /* '\' */ /*0x5D*/ { IGNORE, IGNORE, L3_R_BRACKET, IGNORE }, /* ] */ /*0x5E*/ { IGNORE, IGNORE, L3_CIRCUMFLEX, IGNORE }, /* ^ */ /*0x5F*/ { IGNORE, IGNORE, L3_LOW_LINE, IGNORE }, /* _ */ /*0x60*/ { IGNORE, IGNORE, L3_GRAVE, IGNORE }, /* ` */ /*0x61*/ { L1_A8, L2_BLANK, L3_BLANK, L4_MIN }, /* a */ /*0x62*/ { L1_B8, L2_BLANK, L3_BLANK, L4_MIN }, /* b */ /*0x63*/ { L1_C8, L2_BLANK, L3_BLANK, L4_MIN }, /* c */ /*0x64*/ { L1_D8, L2_BLANK, L3_BLANK, L4_MIN }, /* d */ /*0x65*/ { L1_E8, L2_BLANK, L3_BLANK, L4_MIN }, /* e */ /*0x66*/ { L1_F8, L2_BLANK, L3_BLANK, L4_MIN }, /* f */ /*0x67*/ { L1_G8, L2_BLANK, L3_BLANK, L4_MIN }, /* g */ /*0x68*/ { L1_H8, L2_BLANK, L3_BLANK, L4_MIN }, /* h */ /*0x69*/ { L1_I8, L2_BLANK, L3_BLANK, L4_MIN }, /* i */ /*0x6A*/ { L1_J8, L2_BLANK, L3_BLANK, L4_MIN }, /* j */ /*0x6B*/ { L1_K8, L2_BLANK, L3_BLANK, L4_MIN }, /* k */ /*0x6C*/ { L1_L8, L2_BLANK, L3_BLANK, L4_MIN }, /* l */ /*0x6D*/ { L1_M8, L2_BLANK, L3_BLANK, L4_MIN }, /* m */ /*0x6E*/ { L1_N8, L2_BLANK, L3_BLANK, L4_MIN }, /* n */ /*0x6F*/ { L1_O8, L2_BLANK, L3_BLANK, L4_MIN }, /* o */ /*0x70*/ { L1_P8, L2_BLANK, L3_BLANK, L4_MIN }, /* p */ /*0x71*/ { L1_Q8, L2_BLANK, L3_BLANK, L4_MIN }, /* q */ /*0x72*/ { L1_R8, L2_BLANK, L3_BLANK, L4_MIN }, /* r */ /*0x73*/ { L1_S8, L2_BLANK, L3_BLANK, L4_MIN }, /* s */ /*0x74*/ { L1_T8, L2_BLANK, L3_BLANK, L4_MIN }, /* t */ /*0x75*/ { L1_U8, L2_BLANK, L3_BLANK, L4_MIN }, /* u */ /*0x76*/ { L1_V8, L2_BLANK, L3_BLANK, L4_MIN }, /* v */ /*0x77*/ { L1_W8, L2_BLANK, L3_BLANK, L4_MIN }, /* w */ /*0x78*/ { L1_X8, L2_BLANK, L3_BLANK, L4_MIN }, /* x */ /*0x79*/ { L1_Y8, L2_BLANK, L3_BLANK, L4_MIN }, /* y */ /*0x7A*/ { L1_Z8, L2_BLANK, L3_BLANK, L4_MIN }, /* z */ /*0x7B*/ { IGNORE, IGNORE, L3_L_BRACE, IGNORE }, /* { */ /*0x7C*/ { IGNORE, IGNORE, L3_V_LINE, IGNORE }, /* | */ /*0x7D*/ { IGNORE, IGNORE, L3_R_BRACE, IGNORE }, /* } */ /*0x7E*/ { IGNORE, IGNORE, L3_TILDE, IGNORE }, /* ~ */ /*0x7F*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x80*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x81*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x82*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x83*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x84*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x85*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x86*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x87*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x88*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x89*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8A*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8B*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8C*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8D*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8E*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x8F*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x90*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x91*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x92*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x93*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x94*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x95*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x96*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x97*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x98*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x99*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9A*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9B*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9C*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9D*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9E*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0x9F*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xA0*/ { IGNORE, IGNORE, L3_NB_SACE, IGNORE }, /*   */ /*0xA1*/ { L1_KO_KAI, L2_BLANK, L3_BLANK, L4_BLK }, /* KO KAI */ /*0xA2*/ { L1_KHO_KHAI, L2_BLANK, L3_BLANK, L4_BLK }, /* KHO KHAI */ /*0xA3*/ { L1_KHO_KHUAT, L2_BLANK, L3_BLANK, L4_BLK }, /* KHO KHUAT */ /*0xA4*/ { L1_KHO_KHWAI, L2_BLANK, L3_BLANK, L4_BLK }, /* KHO KHWAI */ /*0xA5*/ { L1_KHO_KHON, L2_BLANK, L3_BLANK, L4_BLK }, /* KHO KHON */ /*0xA6*/ { L1_KHO_RAKHANG, L2_BLANK, L3_BLANK, L4_BLK }, /* KHO RAKHANG */ /*0xA7*/ { L1_NGO_NGU, L2_BLANK, L3_BLANK, L4_BLK }, /* NGO NGU */ /*0xA8*/ { L1_CHO_CHAN, L2_BLANK, L3_BLANK, L4_BLK }, /* CHO CHAN */ /*0xA9*/ { L1_CHO_CHING, L2_BLANK, L3_BLANK, L4_BLK }, /* CHO CHING */ /*0xAA*/ { L1_CHO_CHANG, L2_BLANK, L3_BLANK, L4_BLK }, /* CHO CHANG */ /*0xAB*/ { L1_SO_SO, L2_BLANK, L3_BLANK, L4_BLK }, /* SO SO */ /*0xAC*/ { L1_CHO_CHOE, L2_BLANK, L3_BLANK, L4_BLK }, /* CHO CHOE */ /*0xAD*/ { L1_YO_YING, L2_BLANK, L3_BLANK, L4_BLK }, /* YO YING */ /*0xAE*/ { L1_DO_CHADA, L2_BLANK, L3_BLANK, L4_BLK }, /* DO CHADA */ /*0xAF*/ { L1_TO_PATAK, L2_BLANK, L3_BLANK, L4_BLK }, /* TO PATAK */ /*0xB0*/ { L1_THO_THAN, L2_BLANK, L3_BLANK, L4_BLK }, /* THO THAN */ /*0xB1*/ { L1_THO_NANGMONTHO, L2_BLANK, L3_BLANK, L4_BLK }, /* THO NANGMONTHO */ /*0xB2*/ { L1_THO_PHUTHAO, L2_BLANK, L3_BLANK, L4_BLK }, /* THO PHUTHAO */ /*0xB3*/ { L1_NO_NEN, L2_BLANK, L3_BLANK, L4_BLK }, /* NO NEN */ /*0xB4*/ { L1_DO_DEK, L2_BLANK, L3_BLANK, L4_BLK }, /* DO DEK */ /*0xB5*/ { L1_TO_TAO, L2_BLANK, L3_BLANK, L4_BLK }, /* TO TAO */ /*0xB6*/ { L1_THO_THUNG, L2_BLANK, L3_BLANK, L4_BLK }, /* THO THUNG */ /*0xB7*/ { L1_THO_THAHAN, L2_BLANK, L3_BLANK, L4_BLK }, /* THO THAHAN */ /*0xB8*/ { L1_THO_THONG, L2_BLANK, L3_BLANK, L4_BLK }, /* THO THONG */ /*0xB9*/ { L1_NO_NU, L2_BLANK, L3_BLANK, L4_BLK }, /* NO NU */ /*0xBA*/ { L1_BO_BAIMAI, L2_BLANK, L3_BLANK, L4_BLK }, /* BO BAIMAI */ /*0xBB*/ { L1_PO_PLA, L2_BLANK, L3_BLANK, L4_BLK }, /* PO PLA */ /*0xBC*/ { L1_PHO_PHUNG, L2_BLANK, L3_BLANK, L4_BLK }, /* PHO PHUNG */ /*0xBD*/ { L1_FO_FA, L2_BLANK, L3_BLANK, L4_BLK }, /* FO FA */ /*0xBE*/ { L1_PHO_PHAN, L2_BLANK, L3_BLANK, L4_BLK }, /* PHO PHAN */ /*0xBF*/ { L1_FO_FAN, L2_BLANK, L3_BLANK, L4_BLK }, /* FO FAN */ /*0xC0*/ { L1_PHO_SAMPHAO, L2_BLANK, L3_BLANK, L4_BLK }, /* PHO SAMPHAO */ /*0xC1*/ { L1_MO_MA, L2_BLANK, L3_BLANK, L4_BLK }, /* MO MA */ /*0xC2*/ { L1_YO_YAK, L2_BLANK, L3_BLANK, L4_BLK }, /* YO YAK */ /*0xC3*/ { L1_RO_RUA, L2_BLANK, L3_BLANK, L4_BLK }, /* RO RUA */ /*0xC4*/ { L1_RU, L2_BLANK, L3_BLANK, L4_BLK }, /* RU */ /*0xC5*/ { L1_LO_LING, L2_BLANK, L3_BLANK, L4_BLK }, /* LO LING */ /*0xC6*/ { L1_LU, L2_BLANK, L3_BLANK, L4_BLK }, /* LU */ /*0xC7*/ { L1_WO_WAEN, L2_BLANK, L3_BLANK, L4_BLK }, /* WO WAEN */ /*0xC8*/ { L1_SO_SALA, L2_BLANK, L3_BLANK, L4_BLK }, /* SO SALA */ /*0xC9*/ { L1_SO_RUSI, L2_BLANK, L3_BLANK, L4_BLK }, /* SO RUSI */ /*0xCA*/ { L1_SO_SUA, L2_BLANK, L3_BLANK, L4_BLK }, /* SO SUA */ /*0xCB*/ { L1_HO_HIP, L2_BLANK, L3_BLANK, L4_BLK }, /* HO HIP */ /*0xCC*/ { L1_LO_CHULA, L2_BLANK, L3_BLANK, L4_BLK }, /* LO CHULA */ /*0xCD*/ { L1_O_ANG, L2_BLANK, L3_BLANK, L4_BLK }, /* O ANG */ /*0xCE*/ { L1_HO_NOKHUK, L2_BLANK, L3_BLANK, L4_BLK }, /* HO NOKHUK */ /*0xCF*/ { IGNORE, IGNORE, L3_PAIYAN_NOI, IGNORE }, /* Ï */ /*0xD0*/ { L1_SARA_A, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA A */ /*0xD1*/ { L1_MAI_HAN_AKAT, L2_BLANK, L3_BLANK, L4_BLK }, /* MAI HAN-AKAT */ /*0xD2*/ { L1_SARA_AA, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA AA */ /*0xD3*/ { L1_SARA_AM, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA AM */ /*0xD4*/ { L1_SARA_I, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA I */ /*0xD5*/ { L1_SARA_II, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA II */ /*0xD6*/ { L1_SARA_UE, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA UE */ /*0xD7*/ { L1_SARA_UEE, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA UEE */ /*0xD8*/ { L1_SARA_U, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA U */ /*0xD9*/ { L1_SARA_UU, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA UU */ /*0xDA*/ { IGNORE, L2_PINTU, L3_BLANK, L4_BLK }, /* Ú */ /*0xDB*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xDC*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xDD*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xDE*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xDF*/ { IGNORE, IGNORE, L3_BAHT, IGNORE }, /* ß */ /*0xE0*/ { L1_SARA_E, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA E */ /*0xE1*/ { L1_SARA_AE, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA AE */ /*0xE2*/ { L1_SARA_O, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA O */ /*0xE3*/ { L1_SARA_AI_MAIMUAN, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA AI MAIMUAN */ /*0xE4*/ { L1_SARA_AI_MAIMALAI, L2_BLANK, L3_BLANK, L4_BLK }, /* SARA AI MAIMALAI */ /*0xE5*/ { L1_SARA_AA, L2_BLANK, L3_BLANK, L4_EXT }, /* LAKKHANG YAO */ /*0xE6*/ { IGNORE, IGNORE, L3_MAI_YAMOK, IGNORE }, /* æ */ /*0xE7*/ { IGNORE, L2_TYKHU, L3_BLANK, L4_BLK }, /* ç */ /*0xE8*/ { IGNORE, L2_TONE1, L3_BLANK, L4_BLK }, /* è */ /*0xE9*/ { IGNORE, L2_TONE2, L3_BLANK, L4_BLK }, /* é */ /*0xEA*/ { IGNORE, L2_TONE3, L3_BLANK, L4_BLK }, /* ê */ /*0xEB*/ { IGNORE, L2_TONE4, L3_BLANK, L4_BLK }, /* ë */ /*0xEC*/ { IGNORE, L2_GARAN, L3_BLANK, L4_BLK }, /* ì */ /*0xED*/ { L1_NKHIT, L2_BLANK, L3_BLANK, L4_BLK }, /* í */ /*0xEE*/ { IGNORE, L2_YAMAK, L3_BLANK, L4_BLK }, /* î */ /*0xEF*/ { IGNORE, IGNORE, L3_FONGMAN, IGNORE }, /* ï */ /*0xF0*/ { L1_08, L2_THAII, L3_BLANK, L4_BLK }, /* ð */ /*0xF1*/ { L1_18, L2_THAII, L3_BLANK, L4_BLK }, /* ñ */ /*0xF2*/ { L1_28, L2_THAII, L3_BLANK, L4_BLK }, /* ò */ /*0xF3*/ { L1_38, L2_THAII, L3_BLANK, L4_BLK }, /* ó */ /*0xF4*/ { L1_48, L2_THAII, L3_BLANK, L4_BLK }, /* ô */ /*0xF5*/ { L1_58, L2_THAII, L3_BLANK, L4_BLK }, /* õ */ /*0xF6*/ { L1_68, L2_THAII, L3_BLANK, L4_BLK }, /* ö */ /*0xF7*/ { L1_78, L2_THAII, L3_BLANK, L4_BLK }, /* ÷ */ /*0xF8*/ { L1_88, L2_THAII, L3_BLANK, L4_BLK }, /* ø */ /*0xF9*/ { L1_98, L2_THAII, L3_BLANK, L4_BLK }, /* ù */ /*0xFA*/ { IGNORE, IGNORE, L3_ANGKHANKHU, IGNORE }, /* ú */ /*0xFB*/ { IGNORE, IGNORE, L3_KHOMUT, IGNORE }, /* û */ /*0xFC*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xFD*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xFE*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ /*0xFF*/ { IGNORE, IGNORE, IGNORE, IGNORE }, /* ***IGNORED*** */ }; thchar_t th_char_weight_(thchar_t c, int level) { if (c < ((sizeof char_weight_tbl_)/(sizeof char_weight_tbl_[0])) && (0 <= level && level < TOT_LEVELS)) { return char_weight_tbl_[c][level]; } return IGNORE; } thchar_t th_char_weight_delim_(int level) { assert(0 <= level && level < TOT_LEVELS); return (thchar_t)(TOT_LEVELS - level); }