Back to index

lightning-sunbird  0.9+nobinonly
jamoclusters.h
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is Mozilla Communicator client code.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Jungshik Shin <jshin@mailaps.org>.
00018  * Portions created by the Initial Developer are Copyright (C) 2003
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either the GNU General Public License Version 2 or later (the "GPL"), or
00025  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 /* 
00038  * The mapping table converting a sequence of 'basic' jamos to a cluster jamo.
00039  * There are 4 groups in the table. Group 1 and Group 2 are obtained by the 
00040  * direct translation of  Hangul Jamo compatibility decomposition mapping 
00041  * found in  Unicode 2.0 data  table at 
00042  * ftp://ftp.unicode.org/Public/2.0-update  to  
00043  * JamoNormMap type struct.  Group 3 and Group 4 are derived from Group 1
00044  * entries mapping a sequence of three Jamos to a cluster Jamo. In Group 3 and
00045  * Group 4, the first two Jamos or the last two Jamos in Group 1 are combined
00046  * together, if possible, to form a new 'basic' Jamo that, in turn is mapped
00047  * along with the last Jamo (in case of Group 3) or the first Jamo (in Group 4)
00048  * to a cluster jamo. 
00049  *
00050  * The full list is available at http://jshin.net/i18n/korean/jamocomp.html.
00051  */
00052 
00053 // To reduce memory footprint, array elements are shifted by 0x1100
00054 // from their actual positions at 0x1100.
00055   
00056 // group 1: cluster jamos made of three basic jamos sorted for binary search 
00057 
00058 const static JamoNormMap gJamoClustersGroup1[] =
00059 {
00060   {{0x07, 0x07, 0x0b}, 0x2c},
00061   {{0x07, 0x09, 0x00}, 0x22},
00062   {{0x07, 0x09, 0x03}, 0x23},
00063   {{0x07, 0x09, 0x07}, 0x24},
00064   {{0x07, 0x09, 0x09}, 0x25},
00065   {{0x07, 0x09, 0x0c}, 0x26},
00066   {{0x09, 0x07, 0x00}, 0x33},
00067   {{0x09, 0x09, 0x09}, 0x34},
00068   {{0x69, 0x61, 0x75}, 0x6b},
00069   {{0x69, 0x65, 0x75}, 0x80},
00070   {{0x69, 0x67, 0x75}, 0x81},
00071   {{0x6d, 0x63, 0x75}, 0x85},
00072   {{0x6e, 0x61, 0x75}, 0x8a},
00073   {{0x6e, 0x65, 0x73}, 0x8b},
00074   {{0x6e, 0x65, 0x75}, 0x70},
00075   {{0x6e, 0x67, 0x75}, 0x8c},
00076   {{0x72, 0x65, 0x75}, 0x90},
00077   {{0x72, 0x67, 0x75}, 0x92},
00078   {{0x73, 0x75, 0x6e}, 0x97},
00079   {{0xa8, 0xba, 0xa8}, 0xc4},
00080   {{0xaf, 0xa8, 0xba}, 0xcc},
00081   {{0xaf, 0xae, 0xc2}, 0xcf},
00082   {{0xaf, 0xb7, 0xa8}, 0xd1},
00083   {{0xaf, 0xb7, 0xba}, 0xd2},
00084   {{0xaf, 0xb8, 0xba}, 0xd3},
00085   {{0xaf, 0xb8, 0xbc}, 0xd5},
00086   {{0xaf, 0xb8, 0xc2}, 0xd4},
00087   {{0xaf, 0xba, 0xba}, 0xd6},
00088   {{0xb7, 0xba, 0xba}, 0xde},
00089   {{0xbc, 0xa8, 0xa8}, 0xed}
00090 };
00091 
00092 const static JamoNormMap gJamoClustersGroup234[] =
00093 {
00094   {{0x00, 0x00,    0}, 0x01},
00095   {{0x02, 0x00,    0}, 0x13},
00096   {{0x02, 0x02,    0}, 0x14},
00097   {{0x02, 0x03,    0}, 0x15},
00098   {{0x02, 0x07,    0}, 0x16},
00099   {{0x03, 0x00,    0}, 0x17},
00100   {{0x03, 0x03,    0}, 0x04},
00101   {{0x05, 0x02,    0}, 0x18},
00102   {{0x05, 0x05,    0}, 0x19},
00103   {{0x05, 0x0b,    0}, 0x1b},
00104   {{0x05, 0x12,    0}, 0x1a},
00105   {{0x06, 0x07,    0}, 0x1c},
00106   {{0x06, 0x0b,    0}, 0x1d},
00107   {{0x07, 0x00,    0}, 0x1e},
00108   {{0x07, 0x02,    0}, 0x1f},
00109   {{0x07, 0x03,    0}, 0x20},
00110   {{0x07, 0x07,    0}, 0x08},
00111   {{0x07, 0x09,    0}, 0x21},
00112   {{0x07, 0x0a,    0}, 0x25},
00113   {{0x07, 0x0b,    0}, 0x2b},
00114   {{0x07, 0x0c,    0}, 0x27},
00115   {{0x07, 0x0e,    0}, 0x28},
00116   {{0x07, 0x10,    0}, 0x29},
00117   {{0x07, 0x11,    0}, 0x2a},
00118   {{0x07, 0x2b,    0}, 0x2c},
00119   {{0x07, 0x2d,    0}, 0x22},
00120   {{0x07, 0x2f,    0}, 0x23},
00121   {{0x07, 0x32,    0}, 0x24},
00122   {{0x07, 0x36,    0}, 0x26},
00123   {{0x08, 0x0b,    0}, 0x2c},
00124   {{0x09, 0x00,    0}, 0x2d},
00125   {{0x09, 0x02,    0}, 0x2e},
00126   {{0x09, 0x03,    0}, 0x2f},
00127   {{0x09, 0x05,    0}, 0x30},
00128   {{0x09, 0x06,    0}, 0x31},
00129   {{0x09, 0x07,    0}, 0x32},
00130   {{0x09, 0x09,    0}, 0x0a},
00131   {{0x09, 0x0a,    0}, 0x34},
00132   {{0x09, 0x0b,    0}, 0x35},
00133   {{0x09, 0x0c,    0}, 0x36},
00134   {{0x09, 0x0e,    0}, 0x37},
00135   {{0x09, 0x0f,    0}, 0x38},
00136   {{0x09, 0x10,    0}, 0x39},
00137   {{0x09, 0x11,    0}, 0x3a},
00138   {{0x09, 0x12,    0}, 0x3b},
00139   {{0x09, 0x1e,    0}, 0x33},
00140   {{0x0a, 0x09,    0}, 0x34},
00141   {{0x0b, 0x00,    0}, 0x41},
00142   {{0x0b, 0x03,    0}, 0x42},
00143   {{0x0b, 0x06,    0}, 0x43},
00144   {{0x0b, 0x07,    0}, 0x44},
00145   {{0x0b, 0x09,    0}, 0x45},
00146   {{0x0b, 0x0b,    0}, 0x47},
00147   {{0x0b, 0x0c,    0}, 0x48},
00148   {{0x0b, 0x0e,    0}, 0x49},
00149   {{0x0b, 0x10,    0}, 0x4a},
00150   {{0x0b, 0x11,    0}, 0x4b},
00151   {{0x0b, 0x40,    0}, 0x46},
00152   {{0x0c, 0x0b,    0}, 0x4d},
00153   {{0x0c, 0x0c,    0}, 0x0d},
00154   {{0x0e, 0x0f,    0}, 0x52},
00155   {{0x0e, 0x12,    0}, 0x53},
00156   {{0x11, 0x07,    0}, 0x56},
00157   {{0x11, 0x0b,    0}, 0x57},
00158   {{0x12, 0x12,    0}, 0x58},
00159   {{0x21, 0x00,    0}, 0x22},
00160   {{0x21, 0x03,    0}, 0x23},
00161   {{0x21, 0x07,    0}, 0x24},
00162   {{0x21, 0x09,    0}, 0x25},
00163   {{0x21, 0x0c,    0}, 0x26},
00164   {{0x32, 0x00,    0}, 0x33},
00165   {{0x3c, 0x3c,    0}, 0x3d},
00166   {{0x3e, 0x3e,    0}, 0x3f},
00167   {{0x4e, 0x4e,    0}, 0x4f},
00168   {{0x50, 0x50,    0}, 0x51},
00169   {{0x61, 0x69,    0}, 0x76},
00170   {{0x61, 0x6e,    0}, 0x77},
00171   {{0x61, 0x75,    0}, 0x62},
00172   {{0x63, 0x69,    0}, 0x78},
00173   {{0x63, 0x6d,    0}, 0x79},
00174   {{0x63, 0x75,    0}, 0x64},
00175   {{0x65, 0x69,    0}, 0x7a},
00176   {{0x65, 0x6e,    0}, 0x7b},
00177   {{0x65, 0x73,    0}, 0x7c},
00178   {{0x65, 0x75,    0}, 0x66},
00179   {{0x67, 0x69,    0}, 0x7d},
00180   {{0x67, 0x6e,    0}, 0x7e},
00181   {{0x67, 0x75,    0}, 0x68},
00182   {{0x69, 0x61,    0}, 0x6a},
00183   {{0x69, 0x62,    0}, 0x6b},
00184   {{0x69, 0x65,    0}, 0x7f},
00185   {{0x69, 0x66,    0}, 0x80},
00186   {{0x69, 0x68,    0}, 0x81},
00187   {{0x69, 0x69,    0}, 0x82},
00188   {{0x69, 0x6e,    0}, 0x83},
00189   {{0x69, 0x75,    0}, 0x6c},
00190   {{0x6a, 0x75,    0}, 0x6b},
00191   {{0x6d, 0x63,    0}, 0x84},
00192   {{0x6d, 0x64,    0}, 0x85},
00193   {{0x6d, 0x67,    0}, 0x86},
00194   {{0x6d, 0x69,    0}, 0x87},
00195   {{0x6d, 0x75,    0}, 0x88},
00196   {{0x6e, 0x61,    0}, 0x89},
00197   {{0x6e, 0x62,    0}, 0x8a},
00198   {{0x6e, 0x65,    0}, 0x6f},
00199   {{0x6e, 0x66,    0}, 0x70},
00200   {{0x6e, 0x68,    0}, 0x8c},
00201   {{0x6e, 0x6e,    0}, 0x8d},
00202   {{0x6e, 0x75,    0}, 0x71},
00203   {{0x6e, 0x7c,    0}, 0x8b},
00204   {{0x6f, 0x73,    0}, 0x8b},
00205   {{0x6f, 0x75,    0}, 0x70},
00206   {{0x72, 0x61,    0}, 0x8e},
00207   {{0x72, 0x65,    0}, 0x8f},
00208   {{0x72, 0x66,    0}, 0x90},
00209   {{0x72, 0x67,    0}, 0x91},
00210   {{0x72, 0x68,    0}, 0x92},
00211   {{0x72, 0x6e,    0}, 0x93},
00212   {{0x72, 0x75,    0}, 0x94},
00213   {{0x73, 0x6e,    0}, 0x95},
00214   {{0x73, 0x73,    0}, 0x96},
00215   {{0x73, 0x75,    0}, 0x74},
00216   {{0x73, 0x9b,    0}, 0x97},
00217   {{0x74, 0x6e,    0}, 0x97},
00218   {{0x75, 0x61,    0}, 0x98},
00219   {{0x75, 0x63,    0}, 0x99},
00220   {{0x75, 0x69,    0}, 0x9a},
00221   {{0x75, 0x6e,    0}, 0x9b},
00222   {{0x75, 0x73,    0}, 0x9c},
00223   {{0x75, 0x9e,    0}, 0x9d},
00224   {{0x7f, 0x75,    0}, 0x80},
00225   {{0x84, 0x75,    0}, 0x85},
00226   {{0x89, 0x75,    0}, 0x8a},
00227   {{0x8f, 0x75,    0}, 0x90},
00228   {{0x91, 0x75,    0}, 0x92},
00229   {{0x9e, 0x65,    0}, 0x9f},
00230   {{0x9e, 0x6e,    0}, 0xa0},
00231   {{0x9e, 0x75,    0}, 0xa1},
00232   {{0x9e, 0x9e,    0}, 0xa2},
00233   {{0xa8, 0xa8,    0}, 0xa9},
00234   {{0xa8, 0xaf,    0}, 0xc3},
00235   {{0xa8, 0xba,    0}, 0xaa},
00236   {{0xa8, 0xe7,    0}, 0xc4},
00237   {{0xaa, 0xa8,    0}, 0xc4},
00238   {{0xab, 0xa8,    0}, 0xc5},
00239   {{0xab, 0xae,    0}, 0xc6},
00240   {{0xab, 0xba,    0}, 0xc7},
00241   {{0xab, 0xbd,    0}, 0xac},
00242   {{0xab, 0xc0,    0}, 0xc9},
00243   {{0xab, 0xc2,    0}, 0xad},
00244   {{0xab, 0xeb,    0}, 0xc8},
00245   {{0xae, 0xa8,    0}, 0xca},
00246   {{0xae, 0xaf,    0}, 0xcb},
00247   {{0xaf, 0xa8,    0}, 0xb0},
00248   {{0xaf, 0xaa,    0}, 0xcc},
00249   {{0xaf, 0xab,    0}, 0xcd},
00250   {{0xaf, 0xae,    0}, 0xce},
00251   {{0xaf, 0xaf,    0}, 0xd0},
00252   {{0xaf, 0xb7,    0}, 0xb1},
00253   {{0xaf, 0xb8,    0}, 0xb2},
00254   {{0xaf, 0xb9,    0}, 0xd3},
00255   {{0xaf, 0xba,    0}, 0xb3},
00256   {{0xaf, 0xbb,    0}, 0xd6},
00257   {{0xaf, 0xbf,    0}, 0xd8},
00258   {{0xaf, 0xc0,    0}, 0xb4},
00259   {{0xaf, 0xc1,    0}, 0xb5},
00260   {{0xaf, 0xc2,    0}, 0xb6},
00261   {{0xaf, 0xda,    0}, 0xd1},
00262   {{0xaf, 0xdd,    0}, 0xd2},
00263   {{0xaf, 0xe5,    0}, 0xd4},
00264   {{0xaf, 0xe6,    0}, 0xd5},
00265   {{0xaf, 0xeb,    0}, 0xd7},
00266   {{0xaf, 0xf9,    0}, 0xd9},
00267   {{0xb0, 0xba,    0}, 0xcc},
00268   {{0xb1, 0xa8,    0}, 0xd1},
00269   {{0xb1, 0xba,    0}, 0xd2},
00270   {{0xb2, 0xba,    0}, 0xd3},
00271   {{0xb2, 0xbc,    0}, 0xd5},
00272   {{0xb2, 0xc2,    0}, 0xd4},
00273   {{0xb3, 0xba,    0}, 0xd6},
00274   {{0xb7, 0xa8,    0}, 0xda},
00275   {{0xb7, 0xaf,    0}, 0xdb},
00276   {{0xb7, 0xb8,    0}, 0xdc},
00277   {{0xb7, 0xba,    0}, 0xdd},
00278   {{0xb7, 0xbb,    0}, 0xde},
00279   {{0xb7, 0xbc,    0}, 0xe2},
00280   {{0xb7, 0xbe,    0}, 0xe0},
00281   {{0xb7, 0xc2,    0}, 0xe1},
00282   {{0xb7, 0xeb,    0}, 0xdf},
00283   {{0xb8, 0xaf,    0}, 0xe3},
00284   {{0xb8, 0xba,    0}, 0xb9},
00285   {{0xb8, 0xbc,    0}, 0xe6},
00286   {{0xb8, 0xc1,    0}, 0xe4},
00287   {{0xb8, 0xc2,    0}, 0xe5},
00288   {{0xba, 0xa8,    0}, 0xe7},
00289   {{0xba, 0xae,    0}, 0xe8},
00290   {{0xba, 0xaf,    0}, 0xe9},
00291   {{0xba, 0xb8,    0}, 0xea},
00292   {{0xba, 0xba,    0}, 0xbb},
00293   {{0xbc, 0xa8,    0}, 0xec},
00294   {{0xbc, 0xa9,    0}, 0xed},
00295   {{0xbc, 0xbc,    0}, 0xee},
00296   {{0xbc, 0xbf,    0}, 0xef},
00297   {{0xc1, 0xb8,    0}, 0xf3},
00298   {{0xc1, 0xbc,    0}, 0xf4},
00299   {{0xc2, 0xab,    0}, 0xf5},
00300   {{0xc2, 0xaf,    0}, 0xf6},
00301   {{0xc2, 0xb7,    0}, 0xf7},
00302   {{0xc2, 0xb8,    0}, 0xf8},
00303   {{0xce, 0xc2,    0}, 0xcf},
00304   {{0xdd, 0xba,    0}, 0xde},
00305   {{0xec, 0xa8,    0}, 0xed},
00306   {{0xf0, 0xba,    0}, 0xf1},
00307   {{0xf0, 0xeb,    0}, 0xf2}
00308 };
00309 
00324 const static JamoNormMap gExtLcClustersGroup1[]=
00325 {
00326   {{0x05, 0x00, 0x00}, 0x6a}, // U+1105 U+1100 U+1100 => lc # 0x6a
00327   {{0x05, 0x03, 0x03}, 0x6c}, // U+1105 U+1103 U+1103 => lc # 0x6c
00328   {{0x05, 0x07, 0x07}, 0x6f}, // U+1105 U+1107 U+1107 => lc # 0x6f
00329   {{0x05, 0x07, 0x0b}, 0x70}, // U+1105 U+1107 U+110b => lc # 0x70
00330   {{0x07, 0x09, 0x10}, 0x77}, // U+1107 U+1109 U+1110 => lc # 0x77
00331   {{0x09, 0x09, 0x07}, 0x7a}, // U+1109 U+1109 U+1107 => lc # 0x7a
00332   {{0x0c, 0x0c, 0x12}, 0x7d}, // U+110c U+110c U+1112 => lc # 0x7d
00333 };
00334 
00335 const static JamoNormMap gExtLcClustersGroup2[]=
00336 {
00337   {{0x00, 0x03,    0}, 0x60}, // U+1100 U+1103        => lc # 0x60
00338   {{0x02, 0x09,    0}, 0x61}, // U+1102 U+1109        => lc # 0x61
00339   {{0x02, 0x0c,    0}, 0x62}, // U+1102 U+110c        => lc # 0x62
00340   {{0x02, 0x12,    0}, 0x63}, // U+1102 U+1112        => lc # 0x63
00341   {{0x03, 0x05,    0}, 0x64}, // U+1103 U+1105        => lc # 0x64
00342   {{0x03, 0x06,    0}, 0x65}, // U+1103 U+1106        => lc # 0x65
00343   {{0x03, 0x07,    0}, 0x66}, // U+1103 U+1107        => lc # 0x66
00344   {{0x03, 0x09,    0}, 0x67}, // U+1103 U+1109        => lc # 0x67
00345   {{0x03, 0x0c,    0}, 0x68}, // U+1103 U+110c        => lc # 0x68
00346   {{0x05, 0x00,    0}, 0x69}, // U+1105 U+1100        => lc # 0x69
00347   {{0x05, 0x01,    0}, 0x6a}, // U+1105 U+1101        => lc # 0x6a
00348   {{0x05, 0x03,    0}, 0x6b}, // U+1105 U+1103        => lc # 0x6b
00349   {{0x05, 0x04,    0}, 0x6c}, // U+1105 U+1104        => lc # 0x6c
00350   {{0x05, 0x06,    0}, 0x6d}, // U+1105 U+1106        => lc # 0x6d
00351   {{0x05, 0x07,    0}, 0x6e}, // U+1105 U+1107        => lc # 0x6e
00352   {{0x05, 0x08,    0}, 0x6f}, // U+1105 U+1108        => lc # 0x6f
00353   {{0x05, 0x09,    0}, 0x71}, // U+1105 U+1109        => lc # 0x71
00354   {{0x05, 0x0c,    0}, 0x72}, // U+1105 U+110c        => lc # 0x72
00355   {{0x05, 0x0f,    0}, 0x73}, // U+1105 U+110f        => lc # 0x73
00356   {{0x05, 0x2b,    0}, 0x70}, // U+1105 U+112b        => lc # 0x70
00357   {{0x06, 0x00,    0}, 0x74}, // U+1106 U+1100        => lc # 0x74
00358   {{0x06, 0x03,    0}, 0x75}, // U+1106 U+1103        => lc # 0x75
00359   {{0x06, 0x09,    0}, 0x76}, // U+1106 U+1109        => lc # 0x76
00360   {{0x07, 0x0f,    0}, 0x78}, // U+1107 U+110f        => lc # 0x78
00361   {{0x07, 0x12,    0}, 0x79}, // U+1107 U+1112        => lc # 0x79
00362   {{0x0a, 0x07,    0}, 0x7a}, // U+110a U+1107        => lc # 0x7a
00363   {{0x0b, 0x05,    0}, 0x7b}, // U+110b U+1105        => lc # 0x7b
00364   {{0x0b, 0x12,    0}, 0x7c}, // U+110b U+1112        => lc # 0x7c
00365   {{0x0d, 0x12,    0}, 0x7d}, // U+110d U+1112        => lc # 0x7d
00366   {{0x10, 0x10,    0}, 0x7e}, // U+1110 U+1110        => lc # 0x7e
00367   {{0x11, 0x12,    0}, 0x7f}, // U+1111 U+1112        => lc # 0x7f
00368   {{0x12, 0x09,    0}, 0x80}, // U+1112 U+1109        => lc # 0x80
00369   {{0x59, 0x59,    0}, 0x81}, // U+1159 U+1159        => lc # 0x81
00370 };
00371 
00379 const static JamoNormMap gExtVoClustersGroup1[]=
00380 {
00381   {{0x09, 0x03, 0x15}, 0x47}, // U+1169 U+1163 U+1175 => vowel # 0x47
00382   {{0x09, 0x0e, 0x3e}, 0x49}, // U+1169 U+116e U+119e => vowel # 0x49
00383   {{0x0d, 0x01, 0x15}, 0x4b}, // U+116d U+1161 U+1175 => vowel # 0x4b
00384   {{0x0e, 0x15, 0x15}, 0x4e}, // U+116e U+1175 U+1175 => vowel # 0x4e
00385   {{0x12, 0x01, 0x15}, 0x4f}, // U+1172 U+1161 U+1175 => vowel # 0x4f
00386   {{0x13, 0x05, 0x15}, 0x53}, // U+1173 U+1165 U+1175 => vowel # 0x53
00387   {{0x15, 0x03, 0x09}, 0x55}, // U+1175 U+1163 U+1169 => vowel # 0x55
00388   {{0x15, 0x03, 0x15}, 0x56}, // U+1175 U+1163 U+1175 => vowel # 0x56
00389   {{0x15, 0x07, 0x15}, 0x58}, // U+1175 U+1167 U+1175 => vowel # 0x58
00390   {{0x15, 0x09, 0x3e}, 0x59}, // U+1175 U+1169 U+119e => vowel # 0x59
00391   {{0x3e, 0x05, 0x15}, 0x5e}, // U+119e U+1165 U+1175 => vowel # 0x5e
00392 };
00393 
00394 const static JamoNormMap gExtVoClustersGroup2[]=
00395 {
00396   {{0x01, 0x13,    0}, 0x43}, // U+1161 U+1173        => vowel # 0x43
00397   {{0x03, 0x0e,    0}, 0x44}, // U+1163 U+116e        => vowel # 0x44
00398   {{0x07, 0x03,    0}, 0x45}, // U+1167 U+1163        => vowel # 0x45
00399   {{0x09, 0x03,    0}, 0x46}, // U+1169 U+1163        => vowel # 0x46
00400   {{0x09, 0x04,    0}, 0x47}, // U+1169 U+1164        => vowel # 0x47
00401   {{0x09, 0x07,    0}, 0x48}, // U+1169 U+1167        => vowel # 0x48
00402   {{0x0d, 0x01,    0}, 0x4a}, // U+116d U+1161        => vowel # 0x4a
00403   {{0x0d, 0x02,    0}, 0x4b}, // U+116d U+1162        => vowel # 0x4b
00404   {{0x0d, 0x05,    0}, 0x4c}, // U+116d U+1165        => vowel # 0x4c
00405   {{0x0e, 0x07,    0}, 0x4d}, // U+116e U+1167        => vowel # 0x4d
00406   {{0x11, 0x15,    0}, 0x4e}, // U+1171 U+1175        => vowel # 0x4e
00407   {{0x12, 0x02,    0}, 0x4f}, // U+1172 U+1162        => vowel # 0x4f
00408   {{0x12, 0x09,    0}, 0x50}, // U+1172 U+1169        => vowel # 0x50
00409   {{0x13, 0x01,    0}, 0x51}, // U+1173 U+1161        => vowel # 0x51
00410   {{0x13, 0x05,    0}, 0x52}, // U+1173 U+1165        => vowel # 0x52
00411   {{0x13, 0x06,    0}, 0x53}, // U+1173 U+1166        => vowel # 0x53
00412   {{0x13, 0x09,    0}, 0x54}, // U+1173 U+1169        => vowel # 0x54
00413   {{0x15, 0x04,    0}, 0x56}, // U+1175 U+1164        => vowel # 0x56
00414   {{0x15, 0x07,    0}, 0x57}, // U+1175 U+1167        => vowel # 0x57
00415   {{0x15, 0x08,    0}, 0x58}, // U+1175 U+1168        => vowel # 0x58
00416   {{0x15, 0x0d,    0}, 0x5a}, // U+1175 U+116d        => vowel # 0x5a
00417   {{0x15, 0x12,    0}, 0x5b}, // U+1175 U+1172        => vowel # 0x5b
00418   {{0x15, 0x15,    0}, 0x5c}, // U+1175 U+1175        => vowel # 0x5c
00419   {{0x23, 0x3e,    0}, 0x49}, // U+1183 U+119e        => vowel # 0x49
00420   {{0x2e, 0x15,    0}, 0x4f}, // U+118e U+1175        => vowel # 0x4f
00421   {{0x3a, 0x3e,    0}, 0x59}, // U+119a U+119e        => vowel # 0x59
00422   {{0x3e, 0x01,    0}, 0x5d}, // U+119e U+1161        => vowel # 0x5d
00423   {{0x3e, 0x06,    0}, 0x5e}, // U+119e U+1166        => vowel # 0x5e
00424   {{0x3f, 0x15,    0}, 0x5e}, // U+119f U+1175        => vowel # 0x5e
00425 };
00426 
00434 const static JamoNormMap gExtTcClustersGroup1[]=
00435 {
00436   {{0x06, 0x06, 0x10}, 0x5b}, // U+11ae U+11ae U+11b8 => tc # 0x5b
00437   {{0x06, 0x12, 0x00}, 0x5e}, // U+11ae U+11ba U+11a8 => tc # 0x5e
00438   {{0x07, 0x00, 0x00}, 0x62}, // U+11af U+11a8 U+11a8 => tc # 0x62
00439   {{0x07, 0x00, 0x1a}, 0x63}, // U+11af U+11a8 U+11c2 => tc # 0x63
00440   {{0x07, 0x07, 0x17}, 0x64}, // U+11af U+11af U+11bf => tc # 0x64
00441   {{0x07, 0x0f, 0x1a}, 0x65}, // U+11af U+11b7 U+11c2 => tc # 0x65
00442   {{0x07, 0x10, 0x06}, 0x66}, // U+11af U+11b8 U+11ae => tc # 0x66
00443   {{0x07, 0x10, 0x19}, 0x67}, // U+11af U+11b8 U+11c1 => tc # 0x67
00444   {{0x07, 0x51, 0x1a}, 0x69}, // U+11af U+11f9 U+11c2 => tc # 0x69
00445   {{0x0f, 0x03, 0x03}, 0x6c}, // U+11b7 U+11ab U+11ab => tc # 0x6c
00446   {{0x0f, 0x10, 0x12}, 0x6e}, // U+11b7 U+11b8 U+11ba => tc # 0x6e
00447   {{0x10, 0x07, 0x19}, 0x71}, // U+11b8 U+11af U+11c1 => tc # 0x71
00448   {{0x10, 0x12, 0x06}, 0x74}, // U+11b8 U+11ba U+11ae => tc # 0x74
00449   {{0x12, 0x10, 0x14}, 0x78}, // U+11ba U+11b8 U+11bc => tc # 0x78
00450   {{0x12, 0x12, 0x00}, 0x79}, // U+11ba U+11ba U+11a8 => tc # 0x79
00451   {{0x12, 0x12, 0x06}, 0x7a}, // U+11ba U+11ba U+11ae => tc # 0x7a
00452   {{0x15, 0x10, 0x10}, 0x89}, // U+11bd U+11b8 U+11b8 => tc # 0x89
00453   {{0x43, 0x10, 0x14}, 0x81}, // U+11eb U+11b8 U+11bc => tc # 0x81
00454 };
00455 
00456 const static JamoNormMap gExtTcClustersGroup2[]=
00457 {
00458   {{0x00, 0x03,    0}, 0x52}, // U+11a8 U+11ab        => tc # 0x52
00459   {{0x00, 0x10,    0}, 0x53}, // U+11a8 U+11b8        => tc # 0x53
00460   {{0x00, 0x16,    0}, 0x54}, // U+11a8 U+11be        => tc # 0x54
00461   {{0x00, 0x17,    0}, 0x55}, // U+11a8 U+11bf        => tc # 0x55
00462   {{0x00, 0x1a,    0}, 0x56}, // U+11a8 U+11c2        => tc # 0x56
00463   {{0x03, 0x03,    0}, 0x57}, // U+11ab U+11ab        => tc # 0x57
00464   {{0x03, 0x07,    0}, 0x58}, // U+11ab U+11af        => tc # 0x58
00465   {{0x03, 0x16,    0}, 0x59}, // U+11ab U+11be        => tc # 0x59
00466   {{0x06, 0x06,    0}, 0x5a}, // U+11ae U+11ae        => tc # 0x5a
00467   {{0x06, 0x10,    0}, 0x5c}, // U+11ae U+11b8        => tc # 0x5c
00468   {{0x06, 0x12,    0}, 0x5d}, // U+11ae U+11ba        => tc # 0x5d
00469   {{0x06, 0x15,    0}, 0x5f}, // U+11ae U+11bd        => tc # 0x5f
00470   {{0x06, 0x16,    0}, 0x60}, // U+11ae U+11be        => tc # 0x60
00471   {{0x06, 0x18,    0}, 0x61}, // U+11ae U+11c0        => tc # 0x61
00472   {{0x06, 0x3f,    0}, 0x5e}, // U+11ae U+11e7        => tc # 0x5e
00473   {{0x07, 0x01,    0}, 0x62}, // U+11af U+11a9        => tc # 0x62
00474   {{0x07, 0x14,    0}, 0x6a}, // U+11af U+11bc        => tc # 0x6a
00475   {{0x07, 0x30,    0}, 0x64}, // U+11af U+11d8        => tc # 0x64
00476   {{0x07, 0x39,    0}, 0x65}, // U+11af U+11e1        => tc # 0x65
00477   {{0x07, 0x3c,    0}, 0x67}, // U+11af U+11e4        => tc # 0x67
00478   {{0x07, 0x48,    0}, 0x68}, // U+11af U+11f0        => tc # 0x68
00479   {{0x08, 0x00,    0}, 0x62}, // U+11b0 U+11a8        => tc # 0x62
00480   {{0x08, 0x1a,    0}, 0x63}, // U+11b0 U+11c2        => tc # 0x63
00481   {{0x09, 0x1a,    0}, 0x65}, // U+11b1 U+11c2        => tc # 0x65
00482   {{0x0a, 0x06,    0}, 0x66}, // U+11b2 U+11ae        => tc # 0x66
00483   {{0x0a, 0x19,    0}, 0x67}, // U+11b2 U+11c1        => tc # 0x67
00484   {{0x0f, 0x03,    0}, 0x6b}, // U+11b7 U+11ab        => tc # 0x6b
00485   {{0x0f, 0x0f,    0}, 0x6d}, // U+11b7 U+11b7        => tc # 0x6d
00486   {{0x0f, 0x11,    0}, 0x6e}, // U+11b7 U+11b9        => tc # 0x6e
00487   {{0x0f, 0x15,    0}, 0x6f}, // U+11b7 U+11bd        => tc # 0x6f
00488   {{0x10, 0x06,    0}, 0x70}, // U+11b8 U+11ae        => tc # 0x70
00489   {{0x10, 0x0f,    0}, 0x72}, // U+11b8 U+11b7        => tc # 0x72
00490   {{0x10, 0x10,    0}, 0x73}, // U+11b8 U+11b8        => tc # 0x73
00491   {{0x10, 0x15,    0}, 0x75}, // U+11b8 U+11bd        => tc # 0x75
00492   {{0x10, 0x16,    0}, 0x76}, // U+11b8 U+11be        => tc # 0x76
00493   {{0x10, 0x40,    0}, 0x74}, // U+11b8 U+11e8        => tc # 0x74
00494   {{0x11, 0x06,    0}, 0x74}, // U+11b9 U+11ae        => tc # 0x74
00495   {{0x12, 0x0f,    0}, 0x77}, // U+11ba U+11b7        => tc # 0x77
00496   {{0x12, 0x15,    0}, 0x7c}, // U+11ba U+11bd        => tc # 0x7c
00497   {{0x12, 0x16,    0}, 0x7d}, // U+11ba U+11be        => tc # 0x7d
00498   {{0x12, 0x18,    0}, 0x7e}, // U+11ba U+11c0        => tc # 0x7e
00499   {{0x12, 0x1a,    0}, 0x7f}, // U+11ba U+11c2        => tc # 0x7f
00500   {{0x12, 0x3e,    0}, 0x78}, // U+11ba U+11e6        => tc # 0x78
00501   {{0x12, 0x3f,    0}, 0x79}, // U+11ba U+11e7        => tc # 0x79
00502   {{0x12, 0x40,    0}, 0x7a}, // U+11ba U+11e8        => tc # 0x7a
00503   {{0x12, 0x43,    0}, 0x7b}, // U+11ba U+11eb        => tc # 0x7b
00504   {{0x13, 0x00,    0}, 0x79}, // U+11bb U+11a8        => tc # 0x79
00505   {{0x13, 0x06,    0}, 0x7a}, // U+11bb U+11ae        => tc # 0x7a
00506   {{0x14, 0x0f,    0}, 0x82}, // U+11bc U+11b7        => tc # 0x82
00507   {{0x14, 0x12,    0}, 0x83}, // U+11bc U+11ba        => tc # 0x83
00508   {{0x14, 0x1a,    0}, 0x84}, // U+11bc U+11c2        => tc # 0x84
00509   {{0x15, 0x10,    0}, 0x88}, // U+11bd U+11b8        => tc # 0x88
00510   {{0x15, 0x15,    0}, 0x8a}, // U+11bd U+11bd        => tc # 0x8a
00511   {{0x19, 0x14,    0}, 0x8c}, // U+11c1 U+11bc        => tc # 0x8c
00512   {{0x19, 0x18,    0}, 0x8b}, // U+11c1 U+11c0        => tc # 0x8b
00513   {{0x28, 0x17,    0}, 0x64}, // U+11d0 U+11bf        => tc # 0x64
00514   {{0x31, 0x1a,    0}, 0x69}, // U+11d9 U+11c2        => tc # 0x69
00515   {{0x34, 0x12,    0}, 0x6e}, // U+11dc U+11ba        => tc # 0x6e
00516   {{0x3b, 0x19,    0}, 0x71}, // U+11e3 U+11c1        => tc # 0x71
00517   {{0x42, 0x14,    0}, 0x78}, // U+11ea U+11bc        => tc # 0x78
00518   {{0x43, 0x10,    0}, 0x80}, // U+11eb U+11b8        => tc # 0x80
00519   {{0x43, 0x3e,    0}, 0x81}, // U+11eb U+11e6        => tc # 0x81
00520   {{0x48, 0x00,    0}, 0x85}, // U+11f0 U+11a8        => tc # 0x85
00521   {{0x48, 0x17,    0}, 0x86}, // U+11f0 U+11bf        => tc # 0x86
00522   {{0x48, 0x1a,    0}, 0x87}, // U+11f0 U+11c2        => tc # 0x87
00523 };