Back to index

glibc  2.9
cp737.h
Go to the documentation of this file.
00001 /* Mapping table for CP737.
00002    Copyright (C) 1998, 2002 Free Software Foundation, Inc.
00003    This file is part of the GNU C Library.
00004    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
00005 
00006    The GNU C Library is free software; you can redistribute it and/or
00007    modify it under the terms of the GNU Lesser General Public
00008    License as published by the Free Software Foundation; either
00009    version 2.1 of the License, or (at your option) any later version.
00010 
00011    The GNU C Library is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014    Lesser General Public License for more details.
00015 
00016    You should have received a copy of the GNU Lesser General Public
00017    License along with the GNU C Library; if not, write to the Free
00018    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00019    02111-1307 USA.  */
00020 
00021 /* Table to map to UCS4.  It can be generated using
00022    (I know, this is a useless use of cat, but the linebreak requires it):
00023 
00024    cat .../unix/mappings/vendors/micsft/pc/cp737.txt |
00025    sed -e 's/\(0x..\)[[:space:]]*\(0x....\).*$/  [\1] = \2,/p' -e d
00026 
00027  */
00028 static const uint32_t to_ucs4[256] =
00029 {
00030   [0x00] = 0x0000,
00031   [0x01] = 0x0001,
00032   [0x02] = 0x0002,
00033   [0x03] = 0x0003,
00034   [0x04] = 0x0004,
00035   [0x05] = 0x0005,
00036   [0x06] = 0x0006,
00037   [0x07] = 0x0007,
00038   [0x08] = 0x0008,
00039   [0x09] = 0x0009,
00040   [0x0a] = 0x000a,
00041   [0x0b] = 0x000b,
00042   [0x0c] = 0x000c,
00043   [0x0d] = 0x000d,
00044   [0x0e] = 0x000e,
00045   [0x0f] = 0x000f,
00046   [0x10] = 0x0010,
00047   [0x11] = 0x0011,
00048   [0x12] = 0x0012,
00049   [0x13] = 0x0013,
00050   [0x14] = 0x0014,
00051   [0x15] = 0x0015,
00052   [0x16] = 0x0016,
00053   [0x17] = 0x0017,
00054   [0x18] = 0x0018,
00055   [0x19] = 0x0019,
00056   [0x1a] = 0x001a,
00057   [0x1b] = 0x001b,
00058   [0x1c] = 0x001c,
00059   [0x1d] = 0x001d,
00060   [0x1e] = 0x001e,
00061   [0x1f] = 0x001f,
00062   [0x20] = 0x0020,
00063   [0x21] = 0x0021,
00064   [0x22] = 0x0022,
00065   [0x23] = 0x0023,
00066   [0x24] = 0x0024,
00067   [0x25] = 0x0025,
00068   [0x26] = 0x0026,
00069   [0x27] = 0x0027,
00070   [0x28] = 0x0028,
00071   [0x29] = 0x0029,
00072   [0x2a] = 0x002a,
00073   [0x2b] = 0x002b,
00074   [0x2c] = 0x002c,
00075   [0x2d] = 0x002d,
00076   [0x2e] = 0x002e,
00077   [0x2f] = 0x002f,
00078   [0x30] = 0x0030,
00079   [0x31] = 0x0031,
00080   [0x32] = 0x0032,
00081   [0x33] = 0x0033,
00082   [0x34] = 0x0034,
00083   [0x35] = 0x0035,
00084   [0x36] = 0x0036,
00085   [0x37] = 0x0037,
00086   [0x38] = 0x0038,
00087   [0x39] = 0x0039,
00088   [0x3a] = 0x003a,
00089   [0x3b] = 0x003b,
00090   [0x3c] = 0x003c,
00091   [0x3d] = 0x003d,
00092   [0x3e] = 0x003e,
00093   [0x3f] = 0x003f,
00094   [0x40] = 0x0040,
00095   [0x41] = 0x0041,
00096   [0x42] = 0x0042,
00097   [0x43] = 0x0043,
00098   [0x44] = 0x0044,
00099   [0x45] = 0x0045,
00100   [0x46] = 0x0046,
00101   [0x47] = 0x0047,
00102   [0x48] = 0x0048,
00103   [0x49] = 0x0049,
00104   [0x4a] = 0x004a,
00105   [0x4b] = 0x004b,
00106   [0x4c] = 0x004c,
00107   [0x4d] = 0x004d,
00108   [0x4e] = 0x004e,
00109   [0x4f] = 0x004f,
00110   [0x50] = 0x0050,
00111   [0x51] = 0x0051,
00112   [0x52] = 0x0052,
00113   [0x53] = 0x0053,
00114   [0x54] = 0x0054,
00115   [0x55] = 0x0055,
00116   [0x56] = 0x0056,
00117   [0x57] = 0x0057,
00118   [0x58] = 0x0058,
00119   [0x59] = 0x0059,
00120   [0x5a] = 0x005a,
00121   [0x5b] = 0x005b,
00122   [0x5c] = 0x005c,
00123   [0x5d] = 0x005d,
00124   [0x5e] = 0x005e,
00125   [0x5f] = 0x005f,
00126   [0x60] = 0x0060,
00127   [0x61] = 0x0061,
00128   [0x62] = 0x0062,
00129   [0x63] = 0x0063,
00130   [0x64] = 0x0064,
00131   [0x65] = 0x0065,
00132   [0x66] = 0x0066,
00133   [0x67] = 0x0067,
00134   [0x68] = 0x0068,
00135   [0x69] = 0x0069,
00136   [0x6a] = 0x006a,
00137   [0x6b] = 0x006b,
00138   [0x6c] = 0x006c,
00139   [0x6d] = 0x006d,
00140   [0x6e] = 0x006e,
00141   [0x6f] = 0x006f,
00142   [0x70] = 0x0070,
00143   [0x71] = 0x0071,
00144   [0x72] = 0x0072,
00145   [0x73] = 0x0073,
00146   [0x74] = 0x0074,
00147   [0x75] = 0x0075,
00148   [0x76] = 0x0076,
00149   [0x77] = 0x0077,
00150   [0x78] = 0x0078,
00151   [0x79] = 0x0079,
00152   [0x7a] = 0x007a,
00153   [0x7b] = 0x007b,
00154   [0x7c] = 0x007c,
00155   [0x7d] = 0x007d,
00156   [0x7e] = 0x007e,
00157   [0x7f] = 0x007f,
00158   [0x80] = 0x0391,
00159   [0x81] = 0x0392,
00160   [0x82] = 0x0393,
00161   [0x83] = 0x0394,
00162   [0x84] = 0x0395,
00163   [0x85] = 0x0396,
00164   [0x86] = 0x0397,
00165   [0x87] = 0x0398,
00166   [0x88] = 0x0399,
00167   [0x89] = 0x039a,
00168   [0x8a] = 0x039b,
00169   [0x8b] = 0x039c,
00170   [0x8c] = 0x039d,
00171   [0x8d] = 0x039e,
00172   [0x8e] = 0x039f,
00173   [0x8f] = 0x03a0,
00174   [0x90] = 0x03a1,
00175   [0x91] = 0x03a3,
00176   [0x92] = 0x03a4,
00177   [0x93] = 0x03a5,
00178   [0x94] = 0x03a6,
00179   [0x95] = 0x03a7,
00180   [0x96] = 0x03a8,
00181   [0x97] = 0x03a9,
00182   [0x98] = 0x03b1,
00183   [0x99] = 0x03b2,
00184   [0x9a] = 0x03b3,
00185   [0x9b] = 0x03b4,
00186   [0x9c] = 0x03b5,
00187   [0x9d] = 0x03b6,
00188   [0x9e] = 0x03b7,
00189   [0x9f] = 0x03b8,
00190   [0xa0] = 0x03b9,
00191   [0xa1] = 0x03ba,
00192   [0xa2] = 0x03bb,
00193   [0xa3] = 0x03bc,
00194   [0xa4] = 0x03bd,
00195   [0xa5] = 0x03be,
00196   [0xa6] = 0x03bf,
00197   [0xa7] = 0x03c0,
00198   [0xa8] = 0x03c1,
00199   [0xa9] = 0x03c3,
00200   [0xaa] = 0x03c2,
00201   [0xab] = 0x03c4,
00202   [0xac] = 0x03c5,
00203   [0xad] = 0x03c6,
00204   [0xae] = 0x03c7,
00205   [0xaf] = 0x03c8,
00206   [0xb0] = 0x2591,
00207   [0xb1] = 0x2592,
00208   [0xb2] = 0x2593,
00209   [0xb3] = 0x2502,
00210   [0xb4] = 0x2524,
00211   [0xb5] = 0x2561,
00212   [0xb6] = 0x2562,
00213   [0xb7] = 0x2556,
00214   [0xb8] = 0x2555,
00215   [0xb9] = 0x2563,
00216   [0xba] = 0x2551,
00217   [0xbb] = 0x2557,
00218   [0xbc] = 0x255d,
00219   [0xbd] = 0x255c,
00220   [0xbe] = 0x255b,
00221   [0xbf] = 0x2510,
00222   [0xc0] = 0x2514,
00223   [0xc1] = 0x2534,
00224   [0xc2] = 0x252c,
00225   [0xc3] = 0x251c,
00226   [0xc4] = 0x2500,
00227   [0xc5] = 0x253c,
00228   [0xc6] = 0x255e,
00229   [0xc7] = 0x255f,
00230   [0xc8] = 0x255a,
00231   [0xc9] = 0x2554,
00232   [0xca] = 0x2569,
00233   [0xcb] = 0x2566,
00234   [0xcc] = 0x2560,
00235   [0xcd] = 0x2550,
00236   [0xce] = 0x256c,
00237   [0xcf] = 0x2567,
00238   [0xd0] = 0x2568,
00239   [0xd1] = 0x2564,
00240   [0xd2] = 0x2565,
00241   [0xd3] = 0x2559,
00242   [0xd4] = 0x2558,
00243   [0xd5] = 0x2552,
00244   [0xd6] = 0x2553,
00245   [0xd7] = 0x256b,
00246   [0xd8] = 0x256a,
00247   [0xd9] = 0x2518,
00248   [0xda] = 0x250c,
00249   [0xdb] = 0x2588,
00250   [0xdc] = 0x2584,
00251   [0xdd] = 0x258c,
00252   [0xde] = 0x2590,
00253   [0xdf] = 0x2580,
00254   [0xe0] = 0x03c9,
00255   [0xe1] = 0x03ac,
00256   [0xe2] = 0x03ad,
00257   [0xe3] = 0x03ae,
00258   [0xe4] = 0x03ca,
00259   [0xe5] = 0x03af,
00260   [0xe6] = 0x03cc,
00261   [0xe7] = 0x03cd,
00262   [0xe8] = 0x03cb,
00263   [0xe9] = 0x03ce,
00264   [0xea] = 0x0386,
00265   [0xeb] = 0x0388,
00266   [0xec] = 0x0389,
00267   [0xed] = 0x038a,
00268   [0xee] = 0x038c,
00269   [0xef] = 0x038e,
00270   [0xf0] = 0x038f,
00271   [0xf1] = 0x00b1,
00272   [0xf2] = 0x2265,
00273   [0xf3] = 0x2264,
00274   [0xf4] = 0x03aa,
00275   [0xf5] = 0x03ab,
00276   [0xf6] = 0x00f7,
00277   [0xf7] = 0x2248,
00278   [0xf8] = 0x00b0,
00279   [0xf9] = 0x2219,
00280   [0xfa] = 0x00b7,
00281   [0xfb] = 0x221a,
00282   [0xfc] = 0x207f,
00283   [0xfd] = 0x00b2,
00284   [0xfe] = 0x25a0,
00285   [0xff] = 0x00a0,
00286 };
00287 
00288 
00289 /* Index table for mapping from UCS4.  The table can be generated with
00290 
00291    cat .../unix/mappings/vendors/micsft/pc/cp737.txt |
00292    awk '/^0x/ { if (NF > 2) print $2; }' | perl gap.pl
00293 
00294    where gap.pl is the file in this directory.
00295  */
00296 static struct gap from_idx[] =
00297 {
00298   { .start = 0x0000, .end = 0x007f, .idx =     0 },
00299   { .start = 0x00a0, .end = 0x00a0, .idx =   -32 },
00300   { .start = 0x00b0, .end = 0x00b7, .idx =   -47 },
00301   { .start = 0x00f7, .end = 0x00f7, .idx =  -110 },
00302   { .start = 0x0386, .end = 0x03ce, .idx =  -764 },
00303   { .start = 0x207f, .end = 0x207f, .idx = -8108 },
00304   { .start = 0x2219, .end = 0x221a, .idx = -8517 },
00305   { .start = 0x2248, .end = 0x2248, .idx = -8562 },
00306   { .start = 0x2264, .end = 0x2265, .idx = -8589 },
00307   { .start = 0x2500, .end = 0x2502, .idx = -9255 },
00308   { .start = 0x250c, .end = 0x251c, .idx = -9264 },
00309   { .start = 0x2524, .end = 0x2524, .idx = -9271 },
00310   { .start = 0x252c, .end = 0x252c, .idx = -9278 },
00311   { .start = 0x2534, .end = 0x2534, .idx = -9285 },
00312   { .start = 0x253c, .end = 0x253c, .idx = -9292 },
00313   { .start = 0x2550, .end = 0x256c, .idx = -9311 },
00314   { .start = 0x2580, .end = 0x2593, .idx = -9330 },
00315   { .start = 0x25a0, .end = 0x25a0, .idx = -9342 },
00316   { .start = 0xffff, .end = 0xffff, .idx =     0 }
00317 };
00318 
00319 /* Table accessed through above index table.  It can be generated using:
00320 
00321    cat .../unix/mappings/vendors/micsft/pc/cp737.txt |
00322    awk '/^0x/ { if (NF > 2) print $2, $1; }' | perl gaptab.pl
00323 
00324    where gaptab.pl is the file in this directory.
00325  */
00326 static const char from_ucs4[] =
00327 {
00328   '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
00329   '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
00330   '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
00331   '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
00332   '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
00333   '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
00334   '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
00335   '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
00336   '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
00337   '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
00338   '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
00339   '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
00340   '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
00341   '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
00342   '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
00343   '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
00344   '\xff', '\xf8', '\xf1', '\xfd', '\x00', '\x00', '\x00', '\x00',
00345   '\xfa', '\xf6', '\xea', '\x00', '\xeb', '\xec', '\xed', '\x00',
00346   '\xee', '\x00', '\xef', '\xf0', '\x00', '\x80', '\x81', '\x82',
00347   '\x83', '\x84', '\x85', '\x86', '\x87', '\x88', '\x89', '\x8a',
00348   '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', '\x90', '\x00', '\x91',
00349   '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', '\xf4', '\xf5',
00350   '\xe1', '\xe2', '\xe3', '\xe5', '\x00', '\x98', '\x99', '\x9a',
00351   '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', '\xa0', '\xa1', '\xa2',
00352   '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xaa', '\xa9',
00353   '\xab', '\xac', '\xad', '\xae', '\xaf', '\xe0', '\xe4', '\xe8',
00354   '\xe6', '\xe7', '\xe9', '\xfc', '\xf9', '\xfb', '\xf7', '\xf3',
00355   '\xf2', '\xc4', '\x00', '\xb3', '\xda', '\x00', '\x00', '\x00',
00356   '\xbf', '\x00', '\x00', '\x00', '\xc0', '\x00', '\x00', '\x00',
00357   '\xd9', '\x00', '\x00', '\x00', '\xc3', '\xb4', '\xc2', '\xc1',
00358   '\xc5', '\xcd', '\xba', '\xd5', '\xd6', '\xc9', '\xb8', '\xb7',
00359   '\xbb', '\xd4', '\xd3', '\xc8', '\xbe', '\xbd', '\xbc', '\xc6',
00360   '\xc7', '\xcc', '\xb5', '\xb6', '\xb9', '\xd1', '\xd2', '\xcb',
00361   '\xcf', '\xd0', '\xca', '\xd8', '\xd7', '\xce', '\xdf', '\x00',
00362   '\x00', '\x00', '\xdc', '\x00', '\x00', '\x00', '\xdb', '\x00',
00363   '\x00', '\x00', '\xdd', '\x00', '\x00', '\x00', '\xde', '\xb0',
00364   '\xb1', '\xb2', '\xfe',
00365 };