www.pudn.com > mmi.rar > BIDICharMap.c


/***************************************************************************** 
*  Copyright Statement: 
*  -------------------- 
*  This software is protected by Copyright and the information contained 
*  herein is confidential. The software may not be copied and the information 
*  contained herein may not be used or disclosed except with the written 
*  permission of MediaTek Inc. (C) 2005 
* 
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON 
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, 
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF 
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. 
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE 
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR 
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH 
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO 
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S 
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. 
* 
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE 
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, 
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, 
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO 
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.  
* 
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE 
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF 
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND 
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER 
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). 
* 
*****************************************************************************/ 
 
/***************************************************************************** 
 * 
 * Filename: 
 * --------- 
 *    bidicharmap.c 
 * 
 * Project: 
 * -------- 
 *   Maui_Software 
 * 
 * Description: 
 * ------------ 
 *   bidirectional algorithm engine  
 * 
 * 
 * Author: 
 * ------- 
 * ------- 
 * 
 *============================================================================ 
 *             HISTORY 
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *------------------------------------------------------------------------------ 
 * removed! 
 * 
 * removed! 
 * removed! 
 * removed! 
 * 
 * removed! 
 * removed! 
 * removed! 
 * 
 *------------------------------------------------------------------------------ 
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *============================================================================ 
 *****************************************************************************/ 
 
/* 
 * Copyright Notice 
 * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W., 
 * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved. 
 * (It is illegal to remove this copyright notice from this software or any 
 * portion of it) 
 */ 
 
/************************************************************** 
 
   FILENAME : BIDICharMap.c 
 
   PURPOSE     : BIDICHAR TYPE MAP 
 
   REMARKS     : nil 
 
   AUTHOR      : 
 
   DATE     :  
 
**************************************************************/ 
 
#include "BidiDef.h" 
 
const BIDICHAR_TYPE_MAP bidiCharTypeMap[] =  
{ 
    {ON, 0x06, 0x0000}, 
    {NSM, 0x04, 0x0006}, 
    {BIDI_B, 0x01, 0x000a}, 
    {ON, 0x02, 0x000b}, 
    {BIDI_B, 0x01, 0x000d}, 
    {ON, 0x05, 0x000e}, 
    {WS, 0x01, 0x0013}, 
    /* MTK Elvis to modify 0x1c ~ 0x1f char type for sms chat */ 
    {ON, 0x08, 0x0014}, 
    {BIDI_L, 0x04, 0x001c}, 
    {WS, 0x01, 0x0020}, 
    {ON, 0x02, 0x0021}, 
    {ET, 0x03, 0x0023}, 
    {ON, 0x05, 0x0026}, 
    {ET, 0x01, 0x002b}, 
    {CS, 0x02, 0x002c}, 
    {ES, 0x02, 0x002e}, 
    {EN, 0x0a, 0x0030}, 
    {CS, 0x01, 0x003a}, 
    {ON, 0x06, 0x003b}, 
    {BIDI_L, 0x1a, 0x0041}, 
    {ON, 0x01, 0x005b}, 
    {BIDI_B, 0x01, 0x005c}, 
    {ON, 0x03, 0x005d}, 
    {NSM, 0x01, 0x0060}, 
    {BIDI_L, 0x1a, 0x0061}, 
    {ON, 0x01, 0x007b}, 
    {S, 0x01, 0x007c}, 
    {ON, 0x03, 0x007d}, 
    {BN, 0x05, 0x0080}, 
    {BIDI_B, 0x01, 0x0085}, 
    {BN, 0x1a, 0x0086}, 
    {CS, 0x01, 0x00a0}, 
    {ON, 0x01, 0x00a1}, 
    {ET, 0x04, 0x00a2}, 
    {ON, 0x04, 0x00a6}, 
    {BIDI_L, 0x01, 0x00aa}, 
    {ON, 0x05, 0x00ab}, 
    {ET, 0x02, 0x00b0}, 
    {EN, 0x02, 0x00b2}, 
    {ON, 0x01, 0x00b4}, 
    {BIDI_L, 0x01, 0x00b5}, 
    {ON, 0x03, 0x00b6}, 
    {EN, 0x01, 0x00b9}, 
    {BIDI_L, 0x01, 0x00ba}, 
    {ON, 0x05, 0x00bb}, 
    {BIDI_L, 0x17, 0x00c0}, 
    {ON, 0x01, 0x00d7}, 
    {BIDI_L, 0x1f, 0x00d8}, 
    {ON, 0x01, 0x00f7}, 
    {BIDI_L, 0x29, 0x00f8}, 
    {BIDI_L, 0x12, 0x0222}, 
    {BIDI_L, 0x5e, 0x0250}, 
    {BIDI_L, 0x09, 0x02b0}, 
    {ON, 0x02, 0x02b9}, 
    {BIDI_L, 0x07, 0x02bb}, 
    {ON, 0x0e, 0x02c2}, 
    {BIDI_L, 0x02, 0x02d0}, 
    {ON, 0x0e, 0x02d2}, 
    {BIDI_L, 0x05, 0x02e0}, 
    {ON, 0x09, 0x02e5}, 
    {BIDI_L, 0x01, 0x02ee}, 
    {NSM, 0x50, 0x0300}, 
    {NSM, 0x10, 0x0360}, 
    {BIDI_L, 0x83, 0x0400}, 
    {NSM, 0x04, 0x0483}, 
    {NSM, 0x02, 0x0488}, 
    {BIDI_L, 0x45, 0x048a}, 
    {BIDI_L, 0x26, 0x04d0}, 
    {BIDI_L, 0x02, 0x04f8}, 
    {BIDI_L, 0x10, 0x0500}, 
    {AL, 0x11, 0x0591}, /* HEBREW */ 
    {AL, 0x17, 0x05a3}, /* HEBREW */ 
    {AL, 0x0A, 0x05bb}, /* HEBREW */ 
    {AL, 0x1B, 0x05d0}, /* HEBREW */ 
    {AL, 0x05, 0x05f0}, /* HEBREW */ 
    {CS, 0x01, 0x060c}, 
    {AL, 0x01, 0x061b}, 
    {AL, 0x01, 0x061f}, 
    {AL, 0x1a, 0x0621}, 
    {AL, 0x0b, 0x0640}, 
    {NSM, 0x0b, 0x064b}, 
    {AN, 0x0a, 0x0660}, 
    {ET, 0x01, 0x066a}, 
    {AN, 0x02, 0x066b}, 
    {AL, 0x03, 0x066d}, 
    {NSM, 0x01, 0x0670}, 
    {AL, 0x65, 0x0671}, 
    {NSM, 0x07, 0x06d6}, 
    {AL, 0x01, 0x06dd}, 
    {NSM, 0x07, 0x06de}, 
    {AL, 0x02, 0x06e5}, 
    {NSM, 0x02, 0x06e7}, 
    {ON, 0x01, 0x06e9}, 
    {NSM, 0x04, 0x06ea}, 
    {EN, 0x0a, 0x06f0}, 
    {AL, 0x05, 0x06fa}, 
    {BIDI_L, 0x30, 0x0e01}, 
    {NSM, 0x01, 0x0e31}, 
    {BIDI_L, 0x02, 0x0e32}, 
    {NSM, 0x07, 0x0e34}, 
    {ET, 0x01, 0x0e3f}, 
    {BIDI_L, 0x07, 0x0e40}, 
    {NSM, 0x08, 0x0e47}, 
    {BIDI_L, 0x0d, 0x0e4f}, 
    {BIDI_L, 0x9c, 0x1e00}, 
    {BIDI_L, 0x5a, 0x1ea0}, 
    {WS, 0x0b, 0x2000}, 
    {BN, 0x03, 0x200b}, 
    {BIDI_L, 0x01, 0x200e}, 
    {BIDI_R, 0x01, 0x200f}, 
    {ON, 0x18, 0x2010}, 
    {WS, 0x01, 0x2028}, 
    {BIDI_B, 0x01, 0x2029}, 
    {LRE, 0x01, 0x202a}, 
    {RLE, 0x01, 0x202b}, 
    {PDF, 0x01, 0x202c}, 
    {LRO, 0x01, 0x202d}, 
    {RLO, 0x01, 0x202e}, 
    {WS, 0x01, 0x202f}, 
    {ET, 0x05, 0x2030}, 
    {ON, 0x1e, 0x2035}, 
    {ON, 0x01, 0x2057}, 
    {WS, 0x01, 0x205f}, 
    {BN, 0x04, 0x2060}, 
    {BN, 0x06, 0x206a}, 
    {EN, 0x01, 0x2070}, 
    {BIDI_L, 0x01, 0x2071}, 
    {EN, 0x06, 0x2074}, 
    {ET, 0x02, 0x207a}, 
    {ON, 0x03, 0x207c}, 
    {BIDI_L, 0x01, 0x207f}, 
    {EN, 0x0a, 0x2080}, 
    {ET, 0x02, 0x208a}, 
    {ON, 0x03, 0x208c}, 
    {ET, 0x12, 0x20a0}, 
    {NSM, 0x1b, 0x20d0}, 
    {ON, 0x02, 0x2100}, 
    {BIDI_L, 0x01, 0x2102}, 
    {ON, 0x04, 0x2103}, 
    {BIDI_L, 0x01, 0x2107}, 
    {ON, 0x02, 0x2108}, 
    {BIDI_L, 0x0a, 0x210a}, 
    {ON, 0x01, 0x2114}, 
    {BIDI_L, 0x01, 0x2115}, 
    {ON, 0x03, 0x2116}, 
    {BIDI_L, 0x05, 0x2119}, 
    {ON, 0x06, 0x211e}, 
    {BIDI_L, 0x01, 0x2124}, 
    {ON, 0x01, 0x2125}, 
    {BIDI_L, 0x01, 0x2126}, 
    {ON, 0x01, 0x2127}, 
    {BIDI_L, 0x01, 0x2128}, 
    {ON, 0x01, 0x2129}, 
    {BIDI_L, 0x04, 0x212a}, 
    {ET, 0x01, 0x212e}, 
    {BIDI_L, 0x03, 0x212f}, 
    {ON, 0x01, 0x2132}, 
    {BIDI_L, 0x07, 0x2133}, 
    {ON, 0x01, 0x213a}, 
    {BIDI_L, 0x03, 0x213d}, 
    {ON, 0x05, 0x2140}, 
    {BIDI_L, 0x05, 0x2145}, 
    {ON, 0x02, 0x214a}, 
    {ON, 0x0d, 0x2153}, 
    {BIDI_L, 0x24, 0x2160}, 
    {ON, 0x82, 0x2190}, 
    {ET, 0x02, 0x2212}, 
    {ON, 0x22, 0x2214}, 
    {BIDI_L, 0x45, 0x2336}, 
    {ON, 0x1a, 0x237b}, 
    {BIDI_L, 0x01, 0x2395}, 
    {ON, 0x39, 0x2396}, 
    {ON, 0x27, 0x2400}, 
    {ON, 0x0b, 0x2440}, 
    {EN, 0x3c, 0x2460}, 
    {BIDI_L, 0x4e, 0x249c}, 
    {EN, 0x01, 0x24ea}, 
    {ON, 0x14, 0x24eb}, 
    {ON, 0x14, 0x2500}, 
    {ON, 0x02, 0x2616}, 
    {ON, 0x65, 0x2619}, 
    {ON, 0x0a, 0x2680}, 
    {ON, 0x04, 0x2701}, 
    {ON, 0x04, 0x2706}, 
    {ON, 0x1c, 0x270c}, 
    {ON, 0x23, 0x2729}, 
    {ON, 0x01, 0x274d}, 
    {ON, 0x04, 0x274f}, 
    {ON, 0x01, 0x2756}, 
    {ON, 0x07, 0x2758}, 
    {ON, 0x34, 0x2761}, 
    {ON, 0x18, 0x2798}, 
    {ON, 0x0e, 0x27b1}, 
    {ON, 0x1c, 0x27d0}, 
    {ON, 0x10, 0x27f0}, 
    {ON, 0x1a, 0x2e80}, 
    {ON, 0x59, 0x2e9b}, 
    {ON, 0xd6, 0x2f00}, 
    {ON, 0x0c, 0x2ff0}, 
    {WS, 0x01, 0x3000}, 
    {ON, 0x04, 0x3001}, 
    {BIDI_L, 0x03, 0x3005}, 
    {ON, 0x19, 0x3008}, 
    {BIDI_L, 0x09, 0x3021}, 
    {NSM, 0x06, 0x302a}, 
    {ON, 0x01, 0x3030}, 
    {BIDI_L, 0x05, 0x3031}, 
    {ON, 0x02, 0x3036}, 
    {BIDI_L, 0x05, 0x3038}, 
    {ON, 0x03, 0x303d}, 
    {BIDI_L, 0x56, 0x3041}, 
    {NSM, 0x02, 0x3099}, 
    {ON, 0x02, 0x309b}, 
    {BIDI_L, 0x03, 0x309d}, 
    {ON, 0x01, 0x30a0}, 
    {BIDI_L, 0x5a, 0x30a1}, 
    {ON, 0x01, 0x30fb}, 
    {BIDI_L, 0x04, 0x30fc}, 
    {BIDI_L, 0x28, 0x3105}, 
    {BIDI_L, 0x5e, 0x3131}, 
    {BIDI_L, 0x28, 0x3190}, 
    {BIDI_L, 0x2d, 0x31f0}, 
    {BIDI_L, 0x24, 0x3220}, 
    {ON, 0x0f, 0x3251}, 
    {BIDI_L, 0x1c, 0x3260}, 
    {BIDI_L, 0x32, 0x327f}, 
    {ON, 0x0f, 0x32b1}, 
    {BIDI_L, 0x0c, 0x32c0}, 
    {BIDI_L, 0x2f, 0x32d0}, 
    {BIDI_L, 0x77, 0x3300}, 
    {BIDI_L, 0x63, 0x337b}, 
    {BIDI_L, 0x1f, 0x33e0}, 
    {BIDI_L, 0x01, 0x3400}, 
    {BIDI_L, 0x01, 0x4db5}, 
    {BIDI_L, 0x01, 0x4e00}, 
    {BIDI_L, 0x01, 0x9fa5}, 
    {BIDI_L, 0x2e, 0xf900}, 
    {BIDI_L, 0x3b, 0xfa30}, 
    {BIDI_L, 0x07, 0xfb00}, 
    {AL, 0x62, 0xfb50}, 
    {AL, 0x6b, 0xfbd3}, 
    {ON, 0x02, 0xfd3e}, 
    {AL, 0x40, 0xfd50}, 
    {AL, 0x36, 0xfd92}, 
    {AL, 0x0d, 0xfdf0}, 
    {NSM, 0x10, 0xfe00}, 
    {NSM, 0x04, 0xfe20}, 
    {ON, 0x17, 0xfe30}, 
    {ON, 0x07, 0xfe49}, 
    {CS, 0x01, 0xfe50}, 
    {ON, 0x01, 0xfe51}, 
    {CS, 0x01, 0xfe52}, 
    {ON, 0x01, 0xfe54}, 
    {CS, 0x01, 0xfe55}, 
    {ON, 0x09, 0xfe56}, 
    {ET, 0x01, 0xfe5f}, 
    {ON, 0x02, 0xfe60}, 
    {ET, 0x02, 0xfe62}, 
    {ON, 0x03, 0xfe64}, 
    {ON, 0x01, 0xfe68}, 
    {ET, 0x02, 0xfe69}, 
    {ON, 0x01, 0xfe6b}, 
    {AL, 0x05, 0xfe70}, 
    {AL, 0x87, 0xfe76}, 
    {BN, 0x01, 0xfeff}, 
    {ON, 0x02, 0xff01}, 
    {ET, 0x03, 0xff03}, 
    {ON, 0x05, 0xff06}, 
    {ET, 0x01, 0xff0b}, 
    {CS, 0x01, 0xff0c}, 
    {ET, 0x01, 0xff0d}, 
    {CS, 0x01, 0xff0e}, 
    {ES, 0x01, 0xff0f}, 
    {EN, 0x0a, 0xff10}, 
    {CS, 0x01, 0xff1a}, 
    {ON, 0x06, 0xff1b}, 
    {BIDI_L, 0x1a, 0xff21}, 
    {ON, 0x06, 0xff3b}, 
    {BIDI_L, 0x1a, 0xff41}, 
    {ON, 0x0b, 0xff5b}, 
    {BIDI_L, 0x59, 0xff66}, 
    {BIDI_L, 0x06, 0xffc2}, 
    {BIDI_L, 0x06, 0xffca}, 
    {BIDI_L, 0x06, 0xffd2}, 
    {BIDI_L, 0x03, 0xffda}, 
    {ET, 0x02, 0xffe0}, 
    {ON, 0x03, 0xffe2}, 
    {ET, 0x02, 0xffe5}, 
    {ON, 0x07, 0xffe8}, 
    {BN, 0x03, 0xfff9}, 
    {ON, 0x02, 0xfffc} 
}; 
const BIDICHAR_MIRROR_MAP bidiCharMirror[] =  
{ 
    {0x0028, 0x0029}, 
    {0x003c, 0x003e}, 
    {0x005b, 0x005d}, 
    {0x007b, 0x007d}, 
    {0x00ab, 0x00bb}, 
    {0x2039, 0x203a}, 
    {0x2045, 0x2046}, 
    {0x207d, 0x207e}, 
    {0x208d, 0x208e}, 
    {0x2208, 0x220b}, 
    {0x2209, 0x220c}, 
    {0x220a, 0x220d}, 
    {0x2215, 0x29f5}, 
    {0x2768, 0x2769}, 
    {0x276a, 0x276b}, 
    {0x276c, 0x276d}, 
    {0x276e, 0x276f}, 
    {0x2770, 0x2771}, 
    {0x2772, 0x2773}, 
    {0x2774, 0x2775}, 
    {0x27d5, 0x27d6}, 
    {0x27dd, 0x27de}, 
    {0x27e2, 0x27e3}, 
    {0x27e4, 0x27e5}, 
    {0x27e6, 0x27e7}, 
    {0x27e8, 0x27e9}, 
    {0x27ea, 0x27eb}, 
    {0x3008, 0x3009}, 
    {0x300a, 0x300b}, 
    {0x300c, 0x300d}, 
    {0x300e, 0x300f}, 
    {0x3010, 0x3011}, 
    {0x3014, 0x3015}, 
    {0x3016, 0x3017}, 
    {0x3018, 0x3019}, 
    {0x301a, 0x301b}, 
    {0xff08, 0xff09}, 
    {0xff1c, 0xff1e}, 
    {0xff3b, 0xff3d}, 
    {0xff5b, 0xff5d}, 
    {0xff5f, 0xff60}, 
    {0xff62, 0xff63} 
}; 
 
U16 nMaxIndexBidiTypeMap = sizeof(bidiCharTypeMap) / sizeof(BIDICHAR_TYPE_MAP); 
U16 nMaxIndexBidiMirror = sizeof(bidiCharMirror) / sizeof(BIDICHAR_MIRROR_MAP);