BIDICharMap.c
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:12k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *    bidicharmap.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui_Software
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   bidirectional algorithm engine 
  48.  *
  49.  *
  50.  * Author:
  51.  * -------
  52.  * -------
  53.  *
  54.  *============================================================================
  55.  *             HISTORY
  56.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  57.  *------------------------------------------------------------------------------
  58.  * removed!
  59.  *
  60.  * removed!
  61.  * removed!
  62.  * removed!
  63.  *
  64.  * removed!
  65.  * removed!
  66.  * removed!
  67.  *
  68.  *------------------------------------------------------------------------------
  69.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  70.  *============================================================================
  71.  *****************************************************************************/
  72. /*
  73.  * Copyright Notice
  74.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  75.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  76.  * (It is illegal to remove this copyright notice from this software or any
  77.  * portion of it)
  78.  */
  79. /**************************************************************
  80.    FILENAME : BIDICharMap.c
  81.    PURPOSE     : BIDICHAR TYPE MAP
  82.    REMARKS     : nil
  83.    AUTHOR      :
  84.    DATE     : 
  85. **************************************************************/
  86. #include "BidiDef.h"
  87. const BIDICHAR_TYPE_MAP bidiCharTypeMap[] = 
  88. {
  89.     {ON, 0x06, 0x0000},
  90.     {NSM, 0x04, 0x0006},
  91.     {BIDI_B, 0x01, 0x000a},
  92.     {ON, 0x02, 0x000b},
  93.     {BIDI_B, 0x01, 0x000d},
  94.     {ON, 0x05, 0x000e},
  95.     {WS, 0x01, 0x0013},
  96.     /* MTK Elvis to modify 0x1c ~ 0x1f char type for sms chat */
  97.     {ON, 0x08, 0x0014},
  98.     {BIDI_L, 0x04, 0x001c},
  99.     {WS, 0x01, 0x0020},
  100.     {ON, 0x02, 0x0021},
  101.     {ET, 0x03, 0x0023},
  102.     {ON, 0x05, 0x0026},
  103.     {ET, 0x01, 0x002b},
  104.     {CS, 0x02, 0x002c},
  105.     {ES, 0x02, 0x002e},
  106.     {EN, 0x0a, 0x0030},
  107.     {CS, 0x01, 0x003a},
  108.     {ON, 0x06, 0x003b},
  109.     {BIDI_L, 0x1a, 0x0041},
  110.     {ON, 0x01, 0x005b},
  111.     {BIDI_B, 0x01, 0x005c},
  112.     {ON, 0x03, 0x005d},
  113.     {NSM, 0x01, 0x0060},
  114.     {BIDI_L, 0x1a, 0x0061},
  115.     {ON, 0x01, 0x007b},
  116.     {S, 0x01, 0x007c},
  117.     {ON, 0x03, 0x007d},
  118.     {BN, 0x05, 0x0080},
  119.     {BIDI_B, 0x01, 0x0085},
  120.     {BN, 0x1a, 0x0086},
  121.     {CS, 0x01, 0x00a0},
  122.     {ON, 0x01, 0x00a1},
  123.     {ET, 0x04, 0x00a2},
  124.     {ON, 0x04, 0x00a6},
  125.     {BIDI_L, 0x01, 0x00aa},
  126.     {ON, 0x05, 0x00ab},
  127.     {ET, 0x02, 0x00b0},
  128.     {EN, 0x02, 0x00b2},
  129.     {ON, 0x01, 0x00b4},
  130.     {BIDI_L, 0x01, 0x00b5},
  131.     {ON, 0x03, 0x00b6},
  132.     {EN, 0x01, 0x00b9},
  133.     {BIDI_L, 0x01, 0x00ba},
  134.     {ON, 0x05, 0x00bb},
  135.     {BIDI_L, 0x17, 0x00c0},
  136.     {ON, 0x01, 0x00d7},
  137.     {BIDI_L, 0x1f, 0x00d8},
  138.     {ON, 0x01, 0x00f7},
  139.     {BIDI_L, 0x29, 0x00f8},
  140.     {BIDI_L, 0x12, 0x0222},
  141.     {BIDI_L, 0x5e, 0x0250},
  142.     {BIDI_L, 0x09, 0x02b0},
  143.     {ON, 0x02, 0x02b9},
  144.     {BIDI_L, 0x07, 0x02bb},
  145.     {ON, 0x0e, 0x02c2},
  146.     {BIDI_L, 0x02, 0x02d0},
  147.     {ON, 0x0e, 0x02d2},
  148.     {BIDI_L, 0x05, 0x02e0},
  149.     {ON, 0x09, 0x02e5},
  150.     {BIDI_L, 0x01, 0x02ee},
  151.     {NSM, 0x50, 0x0300},
  152.     {NSM, 0x10, 0x0360},
  153.     {BIDI_L, 0x83, 0x0400},
  154.     {NSM, 0x04, 0x0483},
  155.     {NSM, 0x02, 0x0488},
  156.     {BIDI_L, 0x45, 0x048a},
  157.     {BIDI_L, 0x26, 0x04d0},
  158.     {BIDI_L, 0x02, 0x04f8},
  159.     {BIDI_L, 0x10, 0x0500},
  160.     {AL, 0x11, 0x0591}, /* HEBREW */
  161.     {AL, 0x17, 0x05a3}, /* HEBREW */
  162.     {AL, 0x0A, 0x05bb}, /* HEBREW */
  163.     {AL, 0x1B, 0x05d0}, /* HEBREW */
  164.     {AL, 0x05, 0x05f0}, /* HEBREW */
  165.     {CS, 0x01, 0x060c},
  166.     {AL, 0x01, 0x061b},
  167.     {AL, 0x01, 0x061f},
  168.     {AL, 0x1a, 0x0621},
  169.     {AL, 0x0b, 0x0640},
  170.     {NSM, 0x0b, 0x064b},
  171.     {AN, 0x0a, 0x0660},
  172.     {ET, 0x01, 0x066a},
  173.     {AN, 0x02, 0x066b},
  174.     {AL, 0x03, 0x066d},
  175.     {NSM, 0x01, 0x0670},
  176.     {AL, 0x65, 0x0671},
  177.     {NSM, 0x07, 0x06d6},
  178.     {AL, 0x01, 0x06dd},
  179.     {NSM, 0x07, 0x06de},
  180.     {AL, 0x02, 0x06e5},
  181.     {NSM, 0x02, 0x06e7},
  182.     {ON, 0x01, 0x06e9},
  183.     {NSM, 0x04, 0x06ea},
  184.     {EN, 0x0a, 0x06f0},
  185.     {AL, 0x05, 0x06fa},
  186.     {BIDI_L, 0x30, 0x0e01},
  187.     {NSM, 0x01, 0x0e31},
  188.     {BIDI_L, 0x02, 0x0e32},
  189.     {NSM, 0x07, 0x0e34},
  190.     {ET, 0x01, 0x0e3f},
  191.     {BIDI_L, 0x07, 0x0e40},
  192.     {NSM, 0x08, 0x0e47},
  193.     {BIDI_L, 0x0d, 0x0e4f},
  194.     {BIDI_L, 0x9c, 0x1e00},
  195.     {BIDI_L, 0x5a, 0x1ea0},
  196.     {WS, 0x0b, 0x2000},
  197.     {BN, 0x03, 0x200b},
  198.     {BIDI_L, 0x01, 0x200e},
  199.     {BIDI_R, 0x01, 0x200f},
  200.     {ON, 0x18, 0x2010},
  201.     {WS, 0x01, 0x2028},
  202.     {BIDI_B, 0x01, 0x2029},
  203.     {LRE, 0x01, 0x202a},
  204.     {RLE, 0x01, 0x202b},
  205.     {PDF, 0x01, 0x202c},
  206.     {LRO, 0x01, 0x202d},
  207.     {RLO, 0x01, 0x202e},
  208.     {WS, 0x01, 0x202f},
  209.     {ET, 0x05, 0x2030},
  210.     {ON, 0x1e, 0x2035},
  211.     {ON, 0x01, 0x2057},
  212.     {WS, 0x01, 0x205f},
  213.     {BN, 0x04, 0x2060},
  214.     {BN, 0x06, 0x206a},
  215.     {EN, 0x01, 0x2070},
  216.     {BIDI_L, 0x01, 0x2071},
  217.     {EN, 0x06, 0x2074},
  218.     {ET, 0x02, 0x207a},
  219.     {ON, 0x03, 0x207c},
  220.     {BIDI_L, 0x01, 0x207f},
  221.     {EN, 0x0a, 0x2080},
  222.     {ET, 0x02, 0x208a},
  223.     {ON, 0x03, 0x208c},
  224.     {ET, 0x12, 0x20a0},
  225.     {NSM, 0x1b, 0x20d0},
  226.     {ON, 0x02, 0x2100},
  227.     {BIDI_L, 0x01, 0x2102},
  228.     {ON, 0x04, 0x2103},
  229.     {BIDI_L, 0x01, 0x2107},
  230.     {ON, 0x02, 0x2108},
  231.     {BIDI_L, 0x0a, 0x210a},
  232.     {ON, 0x01, 0x2114},
  233.     {BIDI_L, 0x01, 0x2115},
  234.     {ON, 0x03, 0x2116},
  235.     {BIDI_L, 0x05, 0x2119},
  236.     {ON, 0x06, 0x211e},
  237.     {BIDI_L, 0x01, 0x2124},
  238.     {ON, 0x01, 0x2125},
  239.     {BIDI_L, 0x01, 0x2126},
  240.     {ON, 0x01, 0x2127},
  241.     {BIDI_L, 0x01, 0x2128},
  242.     {ON, 0x01, 0x2129},
  243.     {BIDI_L, 0x04, 0x212a},
  244.     {ET, 0x01, 0x212e},
  245.     {BIDI_L, 0x03, 0x212f},
  246.     {ON, 0x01, 0x2132},
  247.     {BIDI_L, 0x07, 0x2133},
  248.     {ON, 0x01, 0x213a},
  249.     {BIDI_L, 0x03, 0x213d},
  250.     {ON, 0x05, 0x2140},
  251.     {BIDI_L, 0x05, 0x2145},
  252.     {ON, 0x02, 0x214a},
  253.     {ON, 0x0d, 0x2153},
  254.     {BIDI_L, 0x24, 0x2160},
  255.     {ON, 0x82, 0x2190},
  256.     {ET, 0x02, 0x2212},
  257.     {ON, 0x22, 0x2214},
  258.     {BIDI_L, 0x45, 0x2336},
  259.     {ON, 0x1a, 0x237b},
  260.     {BIDI_L, 0x01, 0x2395},
  261.     {ON, 0x39, 0x2396},
  262.     {ON, 0x27, 0x2400},
  263.     {ON, 0x0b, 0x2440},
  264.     {EN, 0x3c, 0x2460},
  265.     {BIDI_L, 0x4e, 0x249c},
  266.     {EN, 0x01, 0x24ea},
  267.     {ON, 0x14, 0x24eb},
  268.     {ON, 0x14, 0x2500},
  269.     {ON, 0x02, 0x2616},
  270.     {ON, 0x65, 0x2619},
  271.     {ON, 0x0a, 0x2680},
  272.     {ON, 0x04, 0x2701},
  273.     {ON, 0x04, 0x2706},
  274.     {ON, 0x1c, 0x270c},
  275.     {ON, 0x23, 0x2729},
  276.     {ON, 0x01, 0x274d},
  277.     {ON, 0x04, 0x274f},
  278.     {ON, 0x01, 0x2756},
  279.     {ON, 0x07, 0x2758},
  280.     {ON, 0x34, 0x2761},
  281.     {ON, 0x18, 0x2798},
  282.     {ON, 0x0e, 0x27b1},
  283.     {ON, 0x1c, 0x27d0},
  284.     {ON, 0x10, 0x27f0},
  285.     {ON, 0x1a, 0x2e80},
  286.     {ON, 0x59, 0x2e9b},
  287.     {ON, 0xd6, 0x2f00},
  288.     {ON, 0x0c, 0x2ff0},
  289.     {WS, 0x01, 0x3000},
  290.     {ON, 0x04, 0x3001},
  291.     {BIDI_L, 0x03, 0x3005},
  292.     {ON, 0x19, 0x3008},
  293.     {BIDI_L, 0x09, 0x3021},
  294.     {NSM, 0x06, 0x302a},
  295.     {ON, 0x01, 0x3030},
  296.     {BIDI_L, 0x05, 0x3031},
  297.     {ON, 0x02, 0x3036},
  298.     {BIDI_L, 0x05, 0x3038},
  299.     {ON, 0x03, 0x303d},
  300.     {BIDI_L, 0x56, 0x3041},
  301.     {NSM, 0x02, 0x3099},
  302.     {ON, 0x02, 0x309b},
  303.     {BIDI_L, 0x03, 0x309d},
  304.     {ON, 0x01, 0x30a0},
  305.     {BIDI_L, 0x5a, 0x30a1},
  306.     {ON, 0x01, 0x30fb},
  307.     {BIDI_L, 0x04, 0x30fc},
  308.     {BIDI_L, 0x28, 0x3105},
  309.     {BIDI_L, 0x5e, 0x3131},
  310.     {BIDI_L, 0x28, 0x3190},
  311.     {BIDI_L, 0x2d, 0x31f0},
  312.     {BIDI_L, 0x24, 0x3220},
  313.     {ON, 0x0f, 0x3251},
  314.     {BIDI_L, 0x1c, 0x3260},
  315.     {BIDI_L, 0x32, 0x327f},
  316.     {ON, 0x0f, 0x32b1},
  317.     {BIDI_L, 0x0c, 0x32c0},
  318.     {BIDI_L, 0x2f, 0x32d0},
  319.     {BIDI_L, 0x77, 0x3300},
  320.     {BIDI_L, 0x63, 0x337b},
  321.     {BIDI_L, 0x1f, 0x33e0},
  322.     {BIDI_L, 0x01, 0x3400},
  323.     {BIDI_L, 0x01, 0x4db5},
  324.     {BIDI_L, 0x01, 0x4e00},
  325.     {BIDI_L, 0x01, 0x9fa5},
  326.     {BIDI_L, 0x2e, 0xf900},
  327.     {BIDI_L, 0x3b, 0xfa30},
  328.     {BIDI_L, 0x07, 0xfb00},
  329.     {AL, 0x62, 0xfb50},
  330.     {AL, 0x6b, 0xfbd3},
  331.     {ON, 0x02, 0xfd3e},
  332.     {AL, 0x40, 0xfd50},
  333.     {AL, 0x36, 0xfd92},
  334.     {AL, 0x0d, 0xfdf0},
  335.     {NSM, 0x10, 0xfe00},
  336.     {NSM, 0x04, 0xfe20},
  337.     {ON, 0x17, 0xfe30},
  338.     {ON, 0x07, 0xfe49},
  339.     {CS, 0x01, 0xfe50},
  340.     {ON, 0x01, 0xfe51},
  341.     {CS, 0x01, 0xfe52},
  342.     {ON, 0x01, 0xfe54},
  343.     {CS, 0x01, 0xfe55},
  344.     {ON, 0x09, 0xfe56},
  345.     {ET, 0x01, 0xfe5f},
  346.     {ON, 0x02, 0xfe60},
  347.     {ET, 0x02, 0xfe62},
  348.     {ON, 0x03, 0xfe64},
  349.     {ON, 0x01, 0xfe68},
  350.     {ET, 0x02, 0xfe69},
  351.     {ON, 0x01, 0xfe6b},
  352.     {AL, 0x05, 0xfe70},
  353.     {AL, 0x87, 0xfe76},
  354.     {BN, 0x01, 0xfeff},
  355.     {ON, 0x02, 0xff01},
  356.     {ET, 0x03, 0xff03},
  357.     {ON, 0x05, 0xff06},
  358.     {ET, 0x01, 0xff0b},
  359.     {CS, 0x01, 0xff0c},
  360.     {ET, 0x01, 0xff0d},
  361.     {CS, 0x01, 0xff0e},
  362.     {ES, 0x01, 0xff0f},
  363.     {EN, 0x0a, 0xff10},
  364.     {CS, 0x01, 0xff1a},
  365.     {ON, 0x06, 0xff1b},
  366.     {BIDI_L, 0x1a, 0xff21},
  367.     {ON, 0x06, 0xff3b},
  368.     {BIDI_L, 0x1a, 0xff41},
  369.     {ON, 0x0b, 0xff5b},
  370.     {BIDI_L, 0x59, 0xff66},
  371.     {BIDI_L, 0x06, 0xffc2},
  372.     {BIDI_L, 0x06, 0xffca},
  373.     {BIDI_L, 0x06, 0xffd2},
  374.     {BIDI_L, 0x03, 0xffda},
  375.     {ET, 0x02, 0xffe0},
  376.     {ON, 0x03, 0xffe2},
  377.     {ET, 0x02, 0xffe5},
  378.     {ON, 0x07, 0xffe8},
  379.     {BN, 0x03, 0xfff9},
  380.     {ON, 0x02, 0xfffc}
  381. };
  382. const BIDICHAR_MIRROR_MAP bidiCharMirror[] = 
  383. {
  384.     {0x0028, 0x0029},
  385.     {0x003c, 0x003e},
  386.     {0x005b, 0x005d},
  387.     {0x007b, 0x007d},
  388.     {0x00ab, 0x00bb},
  389.     {0x2039, 0x203a},
  390.     {0x2045, 0x2046},
  391.     {0x207d, 0x207e},
  392.     {0x208d, 0x208e},
  393.     {0x2208, 0x220b},
  394.     {0x2209, 0x220c},
  395.     {0x220a, 0x220d},
  396.     {0x2215, 0x29f5},
  397.     {0x2768, 0x2769},
  398.     {0x276a, 0x276b},
  399.     {0x276c, 0x276d},
  400.     {0x276e, 0x276f},
  401.     {0x2770, 0x2771},
  402.     {0x2772, 0x2773},
  403.     {0x2774, 0x2775},
  404.     {0x27d5, 0x27d6},
  405.     {0x27dd, 0x27de},
  406.     {0x27e2, 0x27e3},
  407.     {0x27e4, 0x27e5},
  408.     {0x27e6, 0x27e7},
  409.     {0x27e8, 0x27e9},
  410.     {0x27ea, 0x27eb},
  411.     {0x3008, 0x3009},
  412.     {0x300a, 0x300b},
  413.     {0x300c, 0x300d},
  414.     {0x300e, 0x300f},
  415.     {0x3010, 0x3011},
  416.     {0x3014, 0x3015},
  417.     {0x3016, 0x3017},
  418.     {0x3018, 0x3019},
  419.     {0x301a, 0x301b},
  420.     {0xff08, 0xff09},
  421.     {0xff1c, 0xff1e},
  422.     {0xff3b, 0xff3d},
  423.     {0xff5b, 0xff5d},
  424.     {0xff5f, 0xff60},
  425.     {0xff62, 0xff63}
  426. };
  427. U16 nMaxIndexBidiTypeMap = sizeof(bidiCharTypeMap) / sizeof(BIDICHAR_TYPE_MAP);
  428. U16 nMaxIndexBidiMirror = sizeof(bidiCharMirror) / sizeof(BIDICHAR_MIRROR_MAP);