This commit is contained in:
Vincent Wei
2019-03-10 13:21:08 +08:00
parent fdc449335d
commit 11865764da
4 changed files with 182 additions and 30 deletions
+6 -4
View File
@@ -2,7 +2,7 @@ SUBDIRS = in-core
noinst_LTLIBRARIES = libfont.la
SRC_FILES = charset.c charset-arabic.c mgbidi.c \
SRC_FILES = charset.c charset-arabic.c \
unicode-comp.c unicode-script.c language-code.c \
sysfont.c logfont.c devfont.c fontname.c \
rawbitmap.c varbitmap.c qpf.c upf.c \
@@ -11,13 +11,15 @@ SRC_FILES = charset.c charset-arabic.c mgbidi.c \
ujisunimap.c sjisunimap.c euckrunimap.c \
textops.c mapunitogb.c mapunitogbk.c mapunitobig5.c mapunitogb18030.c \
bitmapfont.c scripteasy.c \
unicode-emoji.c
unicode-emoji.c \
mgbidi.c
HDR_FILES = charset.h rawbitmap.h varbitmap.h freetype2.h qpf.h se_minigui.h \
upf.h bitmapfont.h unicode-bidi-tables.h \
unicode-tables.h unicode-break-tables.h unicode-script-table.h \
unicode-decomp.h unicode-comp.h mgbidi.h \
unicode-emoji-tables.h unicode-arabic-shaping-tables.h
unicode-decomp.h unicode-comp.h \
unicode-emoji-tables.h \
mgbidi.h mgbidi-bidi-types-list.h mgbidi-joining-types-list.h
EXTRA_DIST = convgbmap.c jisunimap.c $(SRC_FILES) $(HDR_FILES) \
makefile.ng makefile.msvc
+118
View File
@@ -0,0 +1,118 @@
/*
* 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~2019, 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 <http://www.gnu.org/licenses/>.
*
* 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
* <http://www.minigui.com/en/about/licensing-policy/>.
*/
/*
** mgbidi-bidi-types-list.h:
**
** The list of BIDI types
**
** Created by WEI Yongming at 2019/03/08
**
** This implementation is based on LGPL'd FriBidi:
**
** https://github.com/fribidi/fribidi
**
** Authors:
** Behdad Esfahbod, 2001, 2002, 2004
** Dov Grobgeld, 1999, 2000, 2017
**
** Copyright (C) 2004 Sharif FarsiWeb, Inc
** Copyright (C) 2001,2002 Behdad Esfahbod
** Copyright (C) 1999,2000,2017 Dov Grobgeld
*/
#ifndef _MGBIDI_ADD_TYPE
# define _MGBIDI_ADD_TYPE(x,y)
#endif
#ifndef _MGBIDI_ADD_ALIAS
# define _MGBIDI_ADD_ALIAS(x1,x2)
#endif
#if !defined(_MGBIDI_PAR_TYPES) || defined(_MGBIDI_ALL_TYPES)
_MGBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right letter */
_MGBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left letter */
_MGBIDI_ADD_TYPE (AL, 'A') /* Arabic Letter */
_MGBIDI_ADD_TYPE (EN, '1') /* European Numeral */
_MGBIDI_ADD_TYPE (AN, '9') /* Arabic Numeral */
_MGBIDI_ADD_TYPE (ES, 'w') /* European number Separator */
_MGBIDI_ADD_TYPE (ET, 'w') /* European number Terminator */
_MGBIDI_ADD_TYPE (CS, 'w') /* Common Separator */
_MGBIDI_ADD_TYPE (NSM, '`') /* Non Spacing Mark */
_MGBIDI_ADD_TYPE (BN, 'b') /* Boundary Neutral */
_MGBIDI_ADD_TYPE (BS, 'B') /* Block Separator */
_MGBIDI_ADD_TYPE (SS, 'S') /* Segment Separator */
_MGBIDI_ADD_TYPE (WS, '_') /* WhiteSpace */
_MGBIDI_ADD_TYPE (ON, 'n') /* Other Neutral */
_MGBIDI_ADD_TYPE (LRE, '+') /* Left-to-Right Embedding */
_MGBIDI_ADD_TYPE (RLE, '+') /* Right-to-Left Embedding */
_MGBIDI_ADD_TYPE (LRO, '+') /* Left-to-Right Override */
_MGBIDI_ADD_TYPE (RLO, '+') /* Right-to-Left Override */
_MGBIDI_ADD_TYPE (PDF, '-') /* Pop Directional Flag */
_MGBIDI_ADD_TYPE (LRI, '+') /* Left-to-Right Isolate */
_MGBIDI_ADD_TYPE (RLI, '+') /* Right-to-Left Isolate */
_MGBIDI_ADD_TYPE (FSI, '+') /* First-Strong Isolate */
_MGBIDI_ADD_TYPE (PDI, '-') /* Pop Directional Isolate */
#if defined(_MGBIDI_ADD_ALIAS)
_MGBIDI_ADD_ALIAS (L, LTR)
_MGBIDI_ADD_ALIAS (R, RTL)
_MGBIDI_ADD_ALIAS (B, BS)
_MGBIDI_ADD_ALIAS (S, SS)
#endif /* _MGBIDI_ADD_ALIAS */
#if defined(_MGBIDI_SENTINEL_TYPE) || defined(_MGBIDI_ALL_TYPES)
_MGBIDI_ADD_TYPE (SENTINEL, '$') /* SENTINEL */
#endif /* _MGBIDI_SENTINEL_TYPES || _MGBIDI_ALL_TYPES*/
#endif /* !_MGBIDI_PAR_TYPES || _MGBIDI_ALL_TYPES */
#if defined(_MGBIDI_PAR_TYPES) || defined(_MGBIDI_ALL_TYPES)
# if !defined(_MGBIDI_ALL_TYPES)
_MGBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right paragraph */
_MGBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left paragraph */
_MGBIDI_ADD_TYPE (ON, 'n') /* directiOn-Neutral paragraph */
# endif /* !_MGBIDI_ALL_TYPES */
_MGBIDI_ADD_TYPE (WLTR, 'l') /* Weak Left To Right paragraph */
_MGBIDI_ADD_TYPE (WRTL, 'r') /* Weak Right To Left paragraph */
#endif /* _MGBIDI_PAR_TYPES || _MGBIDI_ALL_TYPES*/
#if defined(_MGBIDI_ENUM_TYPES)
typedef enum {
# define _MGBIDI_ADD_TYPE _MGBIDI_ENUM_ADD_TYPE
# include "mgbidi-bidi-types-list.h"
# undef _MGBIDI_ADD_TYPE
_MGBIDI_TYPES_MAX
} _MGBIDI_ENUM_TYPES
#endif /* _MGBIDI_ENUM_TYPES */
+57
View File
@@ -0,0 +1,57 @@
/*
* 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~2019, 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 <http://www.gnu.org/licenses/>.
*
* 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
* <http://www.minigui.com/en/about/licensing-policy/>.
*/
/*
** mgbidi-joining-types-list.h:
**
** The list of joining types
**
** Created by WEI Yongming at 2019/03/08
**
** This implementation is based on LGPL'd FriBidi:
**
** https://github.com/fribidi/fribidi
*/
#ifndef _MGBIDI_ADD_TYPE
# define _MGBIDI_ADD_TYPE(x,y)
#endif
_MGBIDI_ADD_TYPE (U, '|') /* nUn-joining, e.g. Full Stop */
_MGBIDI_ADD_TYPE (R, '<') /* Right-joining, e.g. Arabic Letter Dal */
_MGBIDI_ADD_TYPE (D, '+') /* Dual-joining, e.g. Arabic Letter Ain */
_MGBIDI_ADD_TYPE (C, '-') /* join-Causing, e.g. Tatweel, ZWJ */
_MGBIDI_ADD_TYPE (T, '^') /* Transparent, e.g. Arabic Fatha */
_MGBIDI_ADD_TYPE (L, '>') /* Left-joining, i.e. fictional */
_MGBIDI_ADD_TYPE (G, '~') /* iGnored, e.g. LRE, RLE, ZWNBSP */
+1 -26
View File
@@ -494,32 +494,7 @@ static const char *gbidi_get_bidi_type_name(BidiType t)
switch ((int)t) {
# define _BIDI_ADD_TYPE(TYPE,SYMBOL) case BIDI_TYPE_##TYPE: return #TYPE;
# define _BIDI_ALL_TYPES
_BIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right letter */
_BIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left letter */
_BIDI_ADD_TYPE (AL, 'A') /* Arabic Letter */
_BIDI_ADD_TYPE (EN, '1') /* European Numeral */
_BIDI_ADD_TYPE (AN, '9') /* Arabic Numeral */
_BIDI_ADD_TYPE (ES, 'w') /* European number Separator */
_BIDI_ADD_TYPE (ET, 'w') /* European number Terminator */
_BIDI_ADD_TYPE (CS, 'w') /* Common Separator */
_BIDI_ADD_TYPE (NSM, '`') /* Non Spacing Mark */
_BIDI_ADD_TYPE (BN, 'b') /* Boundary Neutral */
_BIDI_ADD_TYPE (BS, 'B') /* Block Separator */
_BIDI_ADD_TYPE (SS, 'S') /* Segment Separator */
_BIDI_ADD_TYPE (WS, '_') /* WhiteSpace */
_BIDI_ADD_TYPE (ON, 'n') /* Other Neutral */
_BIDI_ADD_TYPE (LRE, '+') /* Left-to-Right Embedding */
_BIDI_ADD_TYPE (RLE, '+') /* Right-to-Left Embedding */
_BIDI_ADD_TYPE (LRO, '+') /* Left-to-Right Override */
_BIDI_ADD_TYPE (RLO, '+') /* Right-to-Left Override */
_BIDI_ADD_TYPE (PDF, '-') /* Pop Directional Flag */
_BIDI_ADD_TYPE (LRI, '+') /* Left-to-Right Isolate */
_BIDI_ADD_TYPE (RLI, '+') /* Right-to-Left Isolate */
_BIDI_ADD_TYPE (FSI, '+') /* First-Strong Isolate */
_BIDI_ADD_TYPE (PDI, '-') /* Pop Directional Isolate */
_BIDI_ADD_TYPE (WLTR, 'l') /* Weak Left To Right paragraph */
_BIDI_ADD_TYPE (WRTL, 'r') /* Weak Right To Left paragraph */
_BIDI_ADD_TYPE (SENTINEL, '$') /* SENTINEL */
# include "mgbidi-bidi-types-list.h"
# undef _BIDI_ALL_TYPES
# undef _BIDI_ADD_TYPE
default: