diff --git a/src/font/charset-arabic.c b/src/font/charset-arabic.c index 30ba2b8f..1e16f4a2 100644 --- a/src/font/charset-arabic.c +++ b/src/font/charset-arabic.c @@ -1,39 +1,39 @@ /* - * This file is part of MiniGUI, a mature cross-platform windowing + * This file is part of MiniGUI, a mature cross-platform windowing * and Graphics User Interface (GUI) support system for embedded systems * and smart IoT devices. - * + * * Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd. * Copyright (C) 1998~2002, WEI Yongming - * + * * This program 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 3 of the License, or * (at your option) any later version. - * + * * This program 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 this program. If not, see . - * + * * Or, - * + * * As this program is a library, any link to this program must follow * GNU General Public License version 3 (GPLv3). If you cannot accept * GPLv3, you need to be licensed from FMSoft. - * + * * If you have got a commercial license of this program, please use it * under the terms and conditions of the commercial license. - * + * * For more information about the commercial license, please refer to * . */ /* ** charset.c: The charset's arabic operation set. -** +** ** Created by houhuihua at 2008/01/23 */ #ifdef _MGCHARSET_ARABIC @@ -123,19 +123,19 @@ static unsigned short iso8859_68x_unicode_map [] = 0xFEEF, 0xFE94, 0xFEB2, 0xFEB6, /*0x8D~0x90*/ 0xFEBA, 0xFEBE, 0xFEC2, 0xFEC8, /*0x93~0x94*/ 0xFECC, 0xFECA, 0xFED0, 0xFECE, - 0xFED4, 0xFED8, 0xFEDC, 0xFEEC, + 0xFED4, 0xFED8, 0xFEDC, 0xFEEC, 0xFEEA, 0xFEF1, 0xFE89, 0x0020, /*two cell ligature.*/ - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /*0xA1~0xA4*/ + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /*0xA1~0xA4*/ 0xFFFF, 0xFFFF, 0xFFFF, /*0xA5~0xA7*/ 0xFE70, 0xFE72, 0xFE74, 0xFE76, /*0xA8~0xAB*/ 0xFE78, 0xFE7A, 0xFE7C, 0xFE7E, /*0xAC~0xAF*/ 0x0660, 0x0661, 0x0662, 0x0663, /*0~9*/ - 0x0664, 0x0665, 0x0666, 0x0667, - 0x0668, 0x0669, 0x060C, 0x061B, + 0x0664, 0x0665, 0x0666, 0x0667, + 0x0668, 0x0669, 0x060C, 0x061B, 0xFE71, 0xFE72, 0xFE74, 0x061F, /*0xBD~0xBF*/ - + 0xFE8B, 0xFE80, /*0xC0,0xC1*/ 0xFE81, 0xFE83, 0xFE85, 0xFE87, /*0xC2~0xC5*/ 0xFE8A, 0xFE8D, 0xFE8F, 0xFE93, /*0xC6~0xC9*/ @@ -160,16 +160,16 @@ static unsigned short iso8859_68x_unicode_map [] = 0xFE86, 0xFE88, 0xFE8C, 0xFE8E, /*0x104~0x107*/ 0xFE90, 0xFE96, 0xFE9A, 0xFE9E, /*0x108~0x10B*/ 0xFEA2, 0xFEA6, 0xFEAA, 0xFEAC, /*0x10C~0x10F*/ - + 0xFEAE, 0xFEB0, 0xFEC3, 0xFEC7, /*0x110~0x113*/ 0xFED2, 0xFED6, 0xFEDA, 0xFEDE, /*0x114~0x117*/ 0xFEE2, 0xFEE6, 0xFEEA, 0xFEEE, /*0x118~0x11B*/ 0xFEF0, 0xFEF2, 0xFE92, 0xFE98, /*0x11C~0x11F*/ - + 0xFE9C, 0xFEA0, 0xFEA4, 0xFEA8, /*0x120~0x123*/ 0xFEB4, 0xFEB8, 0xFEBC, 0xFEC0, /*0x124~0x127*/ 0xFEE0, 0xFEE4, 0xFEE8, 0xFEF4, /*0x128~0x12B*/ - + 0xFEFB, 0xFEFC, 0xFEF5, 0xFEF6, /*0x12C~0x12F*/ 0xFEF7, 0xFEF8, 0xFEF9, 0xFEFA, /*0x130~0x133*/ }; @@ -180,7 +180,7 @@ static Uchar32 iso8859_6_conv_to_uc32 (Glyph32 glyph_value) return (Glyph32) (glyph_value); else if (glyph_value <= MAX_GLYPH_VALUE ) return (Glyph32) iso8859_68x_unicode_map[glyph_value - 0x81]; - else + else return 0xFFFF; } @@ -359,7 +359,7 @@ static int fontset_68x_get_tadweel_glyph(unsigned char c, unsigned char next, in { int ligature = -1; if(c == SHADDA){ - /* TADWEEL combine with two vowel except SUKUN + /* TADWEEL combine with two vowel except SUKUN * can not combine with SHADDA.*/ switch(next){ case FATHATAN: *ignore = 2; ligature = 0x87; break; @@ -389,7 +389,7 @@ static int fontset_68x_get_tadweel_glyph(unsigned char c, unsigned char next, in } #ifndef _DEBUG -static +static #endif int get_ligature(const unsigned char* mchar, int len, BOOL prev_affects_joining, int* ignore) { @@ -399,10 +399,10 @@ int get_ligature(const unsigned char* mchar, int len, BOOL prev_affects_joining, if(ignore) *ignore = 0; cur_char = *mchar; - + ligature = fontset_68x_get_punpoint_glyph(cur_char); if(ligature > 0) return ligature; - + if(len == 1){ if (ISARABIC_VOWEL(cur_char)){ ligature = fontset_68x_get_vowel_glyph(cur_char); @@ -418,7 +418,7 @@ int get_ligature(const unsigned char* mchar, int len, BOOL prev_affects_joining, } else if (cur_char == LAM) { /* LAM+ALEF+HAMAZ+MADDA ligature. */ ligature = fontset_68x_get_ligature_glyph(next, prev_affects_joining, ignore); - } + } else if(cur_char == TADWEEL){ /* TADWEEL combine with VOWEL*/ if(len > 2) next_next = *(mchar+2); else next_next = 0; @@ -447,7 +447,7 @@ static int iso8859_6_len_first_char (const unsigned char* mstr, int len) return 2; else if (ignore == 2) return 3; - else + else return 1; } @@ -469,121 +469,121 @@ static unsigned int iso8859_6_glyph_type (Glyph32 glyph_value) } static Uint32 __mg_iso8859_68x_type[] = { - /*0x00~0x0f*/ - BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, - BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, - BIDI_TYPE_BN, BIDI_TYPE_SS, BIDI_TYPE_BS, BIDI_TYPE_SS, + /*0x00~0x0f*/ + BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, + BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, + BIDI_TYPE_BN, BIDI_TYPE_SS, BIDI_TYPE_BS, BIDI_TYPE_SS, BIDI_TYPE_WS, BIDI_TYPE_BS, BIDI_TYPE_BN, BIDI_TYPE_BN, - /*0x10~0x1f*/ - BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, - BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, - BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, + /*0x10~0x1f*/ + BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, + BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, + BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BN, BIDI_TYPE_BS, BIDI_TYPE_BS, BIDI_TYPE_BS, BIDI_TYPE_SS, - /*0x20~0x2f*/ - BIDI_TYPE_WS, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ET, - BIDI_TYPE_ET, BIDI_TYPE_ET, BIDI_TYPE_ON, BIDI_TYPE_ON, - BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ES, + /*0x20~0x2f*/ + BIDI_TYPE_WS, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ET, + BIDI_TYPE_ET, BIDI_TYPE_ET, BIDI_TYPE_ON, BIDI_TYPE_ON, + BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ES, BIDI_TYPE_CS, BIDI_TYPE_ES, BIDI_TYPE_CS, BIDI_TYPE_CS, - /*0x30~0x3f*/ - BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, - BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, - BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_CS, BIDI_TYPE_ON, + /*0x30~0x3f*/ + BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, + BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_EN, + BIDI_TYPE_EN, BIDI_TYPE_EN, BIDI_TYPE_CS, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, - /*0x40~0x4f*/ + /*0x40~0x4f*/ BIDI_TYPE_ON, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, - /*0x50~0x6f*/ + /*0x50~0x6f*/ BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, - BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_ON, + BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, - /*0x60~0x6f*/ + /*0x60~0x6f*/ BIDI_TYPE_ON, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, - /*0x70~0x7f*/ + /*0x70~0x7f*/ BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, - BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_ON, + BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_LTR, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_ON, BIDI_TYPE_BN, - /*0x80~0x8f*/ - BIDI_TYPE_ON, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - - /*0x90~0x9f*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0x80~0x8f*/ + BIDI_TYPE_ON, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0xa0~0xaf*/ + /*0x90~0x9f*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + + /*0xa0~0xaf*/ BIDI_TYPE_WS, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, BIDI_TYPE_NSM, - /*0xb0~0xbf*/ - BIDI_TYPE_BN, BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, - BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, - BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_CS, BIDI_TYPE_CS, + /*0xb0~0xbf*/ + BIDI_TYPE_BN, BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, + BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_AN, + BIDI_TYPE_AN, BIDI_TYPE_AN, BIDI_TYPE_CS, BIDI_TYPE_CS, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_CS, - /*0xc0~0xcf*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0xc0~0xcf*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0xd0~0xdf*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0xd0~0xdf*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0xe0~0xef*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, + /*0xe0~0xef*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, /*0xf0~0xff*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_ON, - /*0x100~0x10f*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0x100~0x10f*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0x110~0x11f*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0x110~0x11f*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0x120~0x12f*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0x120~0x12f*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, - /*0x130~0x133*/ - BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, + /*0x130~0x133*/ + BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, BIDI_TYPE_AL, }; static unsigned int iso8859_6_bidi_glyph_type (Glyph32 glyph_value) @@ -652,7 +652,11 @@ static int get_next_char(const unsigned char* mchar, int len) return next_char; } -Glyph32 iso8859_6_char_glyph_value (const unsigned char* prev_mchar, int prev_len, const unsigned char* mchar, int len) +#ifndef _DEBUG +static +#endif +Glyph32 iso8859_6_char_glyph_value (const unsigned char* prev_mchar, + int prev_len, const unsigned char* mchar, int len) { BOOL next_affects_joining = FALSE, prev_affects_joining = FALSE; int char_index, prev_index; @@ -666,27 +670,27 @@ Glyph32 iso8859_6_char_glyph_value (const unsigned char* prev_mchar, int prev_le char_index = get_table_index(*mchar); /*current glyph has no transfiguration and has no ligature*/ - if (char_index < 0 && !ISARABIC_PUNC(*mchar) + if (char_index < 0 && !ISARABIC_PUNC(*mchar) && !ISARABIC_VOWEL(*mchar) && !(*mchar == TADWEEL)) { return *mchar; } - if(prev_mchar){ + if (prev_mchar) { prev_index = get_table_index(*prev_mchar); - prev_affects_joining = ( prev_index >= 0 || is_char_transparent(*prev_mchar)) && (shape_info[prev_index].medial); + prev_affects_joining = (prev_index >= 0 || is_char_transparent(*prev_mchar)) && (shape_info[prev_index].medial); // NUV prev_char = *prev_mchar; /*houhh 20080505, check if ligature. */ if(prev_affects_joining) { ligature = get_ligature(prev_mchar, prev_len, 1, &ignore); - if(ligature > 0) - prev_affects_joining = 0; + if(ligature > 0) + prev_affects_joining = 0; } } /* processing ligature first.*/ ligature = get_ligature(mchar, len, prev_affects_joining, &ignore); - if (ligature > 0) + if (ligature > 0) return ligature; /* if not ligature char, get it's relative shape from shape_info table.*/ @@ -698,27 +702,27 @@ Glyph32 iso8859_6_char_glyph_value (const unsigned char* prev_mchar, int prev_le return shape_info[char_index].isolated; } /* 2.only next char affect,if has Initial,return Initial; else return Isolated */ - else if ((!prev_affects_joining) && (next_affects_joining)) { + else if ((!prev_affects_joining) && (next_affects_joining)) { initial = shape_info[char_index].initial; - if (initial) + if (initial) return initial; - else - return shape_info[char_index].isolated; - } - /* 3.prev and next char affect all,if has Medial, return Medial; else Isolated */ - else if ((prev_affects_joining) && (next_affects_joining)) { - medial = shape_info[char_index].medial; - if (medial) - return medial; - else + else return shape_info[char_index].isolated; - } + } + /* 3.prev and next char affect all,if has Medial, return Medial; else Isolated */ + else if ((prev_affects_joining) && (next_affects_joining)) { + medial = shape_info[char_index].medial; + if (medial) + return medial; + else + return shape_info[char_index].isolated; + } /* 4.only prev char affect,if has Final, return Final; else Isolated */ - else if ((prev_affects_joining) && (!next_affects_joining)) { + else if ((prev_affects_joining) && (!next_affects_joining)) { final = shape_info[char_index].final; if (final) return final; - else + else return shape_info[char_index].isolated; } @@ -760,15 +764,15 @@ static const unsigned char* iso8859_6_get_next_word (const unsigned char* mstr, word_info->len++; } } - + return mstr + word_info->len + word_info->nr_delimiters; //return sb_get_next_word(mstr, mstrlen, word_info); } -/*if cur_len>1, search ligature shape, +/*if cur_len>1, search ligature shape, * else search letter or phonetic symbol shape*/ -static Glyph32 iso8859_6_glyph_shape (const unsigned char* cur_mchar, +static Glyph32 iso8859_6_glyph_shape (const unsigned char* cur_mchar, int cur_len, int shape_type) { Glyph32 glyph_value = -1; @@ -815,7 +819,7 @@ static Glyph32 iso8859_6_glyph_shape (const unsigned char* cur_mchar, } } - if (glyph_value == 0) + if (glyph_value == 0) glyph_value =-1; return glyph_value; @@ -864,7 +868,7 @@ static CHARSETOPS CharsetOps_iso8859_6 = { }; #ifdef _DEBUG -int test_glyph_value (int char_index, Glyph32 glyph_value) +int iso8859_6_test_glyph_value (int char_index, Glyph32 glyph_value) { int i = 0; for (i = 0; i #include +#define DEBUG + #include "common.h" #ifdef _MGFONT_VBF @@ -177,6 +179,8 @@ static int get_glyph_bbox (LOGFONT* logfont, DEVFONT* devfont, int offset; offset = glyph_value - vbf_info->first_glyph; + _DBG_PRINTF("%s: GV(%x) OFFSET(%d)\n", + __FUNCTION__, glyph_value, offset); if (px) { tempint = vbf_info->bbox[offset].x; diff --git a/src/newgdi/bidi.c b/src/newgdi/bidi.c index 303cde59..e7401d47 100644 --- a/src/newgdi/bidi.c +++ b/src/newgdi/bidi.c @@ -496,7 +496,7 @@ int _gdi_reorder_text (PDC pdc, const unsigned char* text, int text_len, i = _gdi_output_visual_glyphs (pdc, logical_glyphs, nr_glyphs, direction, cb_one_glyph, context); } - else if(!direction){ + else if (!direction) { /* not need reorder glyphs, right to left, should alloc * glyphs range. */ logical_glyphs = _gdi_get_glyphs_string(pdc, text, text_len, @@ -516,7 +516,7 @@ int _gdi_reorder_text (PDC pdc, const unsigned char* text, int text_len, free(logical_glyphs); } } - else{ + else { if (!direction) { /* right to left, reverse text.*/ for (i = text_len - 1; i >= 0; i--) { if (!(glyph_value = sbc_devfont->charset_ops->char_glyph_value @@ -526,7 +526,7 @@ int _gdi_reorder_text (PDC pdc, const unsigned char* text, int text_len, glyph_type = sbc_devfont->charset_ops->glyph_type (glyph_value); - if(!cb_one_glyph (context, glyph_value, glyph_type)) + if (!cb_one_glyph (context, glyph_value, glyph_type)) break; } }