mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-29 18:48:09 +08:00
support unicode bidirectional algorithm
This commit is contained in:
parent
fe42c8c7a8
commit
76b0955cd0
10
3rd/fribidi/SConscript
Normal file
10
3rd/fribidi/SConscript
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import os
|
||||||
|
import platform
|
||||||
|
|
||||||
|
env=DefaultEnvironment().Clone()
|
||||||
|
LIB_DIR=os.environ['LIB_DIR'];
|
||||||
|
|
||||||
|
SOURCES=Glob("*.c")
|
||||||
|
|
||||||
|
env.Library(os.path.join(LIB_DIR, 'fribidi'), SOURCES)
|
||||||
|
|
94
3rd/fribidi/arabic-misc.tab.i
Normal file
94
3rd/fribidi/arabic-misc.tab.i
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/* The tables in this file should all be sorted on their first item. */
|
||||||
|
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
|
||||||
|
const PairMap mandatory_liga_table[] = {
|
||||||
|
{{0xFEDF, 0xFE82}, 0xFEF5},
|
||||||
|
{{0xFEDF, 0xFE84}, 0xFEF7},
|
||||||
|
{{0xFEDF, 0xFE88}, 0xFEF9},
|
||||||
|
{{0xFEDF, 0xFE8E}, 0xFEFB},
|
||||||
|
{{0xFEE0, 0xFE82}, 0xFEF6},
|
||||||
|
{{0xFEE0, 0xFE84}, 0xFEF8},
|
||||||
|
{{0xFEE0, 0xFE88}, 0xFEFA},
|
||||||
|
{{0xFEE0, 0xFE8E}, 0xFEFC},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const PairMap console_liga_table[] = {
|
||||||
|
{{0x0640, 0xFC60}, 0xFCF2},
|
||||||
|
{{0x0640, 0xFC61}, 0xFCF3},
|
||||||
|
{{0x0640, 0xFC62}, 0xFCF4},
|
||||||
|
{{0x0640, 0xFE70}, 0xFE71},
|
||||||
|
{{0x0640, 0xFE76}, 0xFE77},
|
||||||
|
{{0x0640, 0xFE78}, 0xFE79},
|
||||||
|
{{0x0640, 0xFE7A}, 0xFE7B},
|
||||||
|
{{0x0640, 0xFE7C}, 0xFE7D},
|
||||||
|
{{0x0640, 0xFE7E}, 0xFE7F},
|
||||||
|
{{0xFBE8, 0x0654}, 0xFE8B},
|
||||||
|
{{0xFBE9, 0x0654}, 0xFE8C},
|
||||||
|
{{0xFBFC, 0x0654}, 0xFE89},
|
||||||
|
{{0xFBFC, 0x0670}, 0xFC5D},
|
||||||
|
{{0xFBFD, 0x0654}, 0xFE8A},
|
||||||
|
{{0xFBFD, 0x0670}, 0xFC90},
|
||||||
|
{{0xFE7C, 0x0670}, 0xFC63},
|
||||||
|
{{0xFE7C, 0xFE72}, 0xFC5E},
|
||||||
|
{{0xFE7C, 0xFE74}, 0xFC5F},
|
||||||
|
{{0xFE7C, 0xFE76}, 0xFC60},
|
||||||
|
{{0xFE7C, 0xFE78}, 0xFC61},
|
||||||
|
{{0xFE7C, 0xFE7A}, 0xFC62},
|
||||||
|
{{0xFE7D, 0xFE76}, 0xFCF2},
|
||||||
|
{{0xFE7D, 0xFE77}, 0xFCF2},
|
||||||
|
{{0xFE7D, 0xFE78}, 0xFCF3},
|
||||||
|
{{0xFE7D, 0xFE79}, 0xFCF3},
|
||||||
|
{{0xFE7D, 0xFE7A}, 0xFCF4},
|
||||||
|
{{0xFE7D, 0xFE7B}, 0xFCF4},
|
||||||
|
{{0xFE8D, 0x0653}, 0xFE81},
|
||||||
|
{{0xFE8D, 0x0654}, 0xFE83},
|
||||||
|
{{0xFE8D, 0x0655}, 0xFE87},
|
||||||
|
{{0xFE8D, 0xFE70}, 0xFD3D},
|
||||||
|
{{0xFE8E, 0x0653}, 0xFE82},
|
||||||
|
{{0xFE8E, 0x0654}, 0xFE84},
|
||||||
|
{{0xFE8E, 0x0655}, 0xFE88},
|
||||||
|
{{0xFE8E, 0xFE70}, 0xFD3C},
|
||||||
|
{{0xFEE9, 0x0654}, 0xFBA4},
|
||||||
|
{{0xFEEA, 0x0654}, 0xFBA5},
|
||||||
|
{{0xFEED, 0x0654}, 0xFE85},
|
||||||
|
{{0xFEEE, 0x0654}, 0xFE86},
|
||||||
|
{{0xFEEF, 0x0654}, 0xFE89},
|
||||||
|
{{0xFEEF, 0x0670}, 0xFC5D},
|
||||||
|
{{0xFEF0, 0x0654}, 0xFE8A},
|
||||||
|
{{0xFEF0, 0x0670}, 0xFC90},
|
||||||
|
{{0xFEF1, 0x0654}, 0xFE89},
|
||||||
|
{{0xFEF1, 0x0670}, 0xFC5D},
|
||||||
|
{{0xFEF2, 0x0654}, 0xFE8A},
|
||||||
|
{{0xFEF2, 0x0670}, 0xFC90},
|
||||||
|
{{0xFEF3, 0x0654}, 0xFE8B},
|
||||||
|
{{0xFEF4, 0x0654}, 0xFE8C},
|
||||||
|
{{0xFEFB, 0x0653}, 0xFEF5},
|
||||||
|
{{0xFEFB, 0x0654}, 0xFEF7},
|
||||||
|
{{0xFEFB, 0x0655}, 0xFEF9},
|
||||||
|
{{0xFEFC, 0x0653}, 0xFEF6},
|
||||||
|
{{0xFEFC, 0x0654}, 0xFEF8},
|
||||||
|
{{0xFEFC, 0x0655}, 0xFEFA},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const FriBidiChar NSMShap[][4] = {
|
||||||
|
{0xFE70, 0xFE71, 0xFE70, 0xFE71,},
|
||||||
|
{0xFE72, 0xFE72, 0xFE72, 0xFE72,},
|
||||||
|
{0xFE74, 0xFE74, 0xFE74, 0xFE74,},
|
||||||
|
{0xFE76, 0xFE77, 0xFE76, 0xFE77,},
|
||||||
|
{0xFE78, 0xFE79, 0xFE78, 0xFE79,},
|
||||||
|
{0xFE7A, 0xFE7B, 0xFE7A, 0xFE7B,},
|
||||||
|
{0xFE7C, 0xFE7D, 0xFE7C, 0xFE7D,},
|
||||||
|
{0xFE7E, 0xFE7F, 0xFE7E, 0xFE7F,},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
#ifndef FRIBIDI_ACCESS_SHAPE_TABLE
|
||||||
|
# define FRIBIDI_ACCESS_SHAPE_TABLE(table,min,max,x,shape) \
|
||||||
|
(((x)<(min)||(x)>(max))?(x):(table)[(x)-(min)][(shape)])
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FRIBIDI_GET_ARABIC_SHAPE_NSM(x,shape) FRIBIDI_ACCESS_SHAPE_TABLE(NSMShap, 0x064B, 0x0652, (x), (shape))
|
205
3rd/fribidi/arabic-shaping.tab.i
Normal file
205
3rd/fribidi/arabic-shaping.tab.i
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
/* arabic-shaping.tab.i
|
||||||
|
* generated by gen-arabic-shaping-tab (GNU FriBidi 1.0.10)
|
||||||
|
* from the files UnicodeData.txt, (null) of Unicode version 11.0.0. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
use FRIBIDI_GET_ARABIC_SHAPE_PRES(key,shape) to access your table
|
||||||
|
|
||||||
|
required memory: 2864
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
|
||||||
|
static const FriBidiChar ArShap[179][4] = {
|
||||||
|
{0xfe80,0x0621,0x0621,0x0621,},
|
||||||
|
{0xfe81,0xfe82,0x0622,0x0622,},
|
||||||
|
{0xfe83,0xfe84,0x0623,0x0623,},
|
||||||
|
{0xfe85,0xfe86,0x0624,0x0624,},
|
||||||
|
{0xfe87,0xfe88,0x0625,0x0625,},
|
||||||
|
{0xfe89,0xfe8a,0xfe8b,0xfe8c,},
|
||||||
|
{0xfe8d,0xfe8e,0x0627,0x0627,},
|
||||||
|
{0xfe8f,0xfe90,0xfe91,0xfe92,},
|
||||||
|
{0xfe93,0xfe94,0x0629,0x0629,},
|
||||||
|
{0xfe95,0xfe96,0xfe97,0xfe98,},
|
||||||
|
{0xfe99,0xfe9a,0xfe9b,0xfe9c,},
|
||||||
|
{0xfe9d,0xfe9e,0xfe9f,0xfea0,},
|
||||||
|
{0xfea1,0xfea2,0xfea3,0xfea4,},
|
||||||
|
{0xfea5,0xfea6,0xfea7,0xfea8,},
|
||||||
|
{0xfea9,0xfeaa,0x062f,0x062f,},
|
||||||
|
{0xfeab,0xfeac,0x0630,0x0630,},
|
||||||
|
{0xfead,0xfeae,0x0631,0x0631,},
|
||||||
|
{0xfeaf,0xfeb0,0x0632,0x0632,},
|
||||||
|
{0xfeb1,0xfeb2,0xfeb3,0xfeb4,},
|
||||||
|
{0xfeb5,0xfeb6,0xfeb7,0xfeb8,},
|
||||||
|
{0xfeb9,0xfeba,0xfebb,0xfebc,},
|
||||||
|
{0xfebd,0xfebe,0xfebf,0xfec0,},
|
||||||
|
{0xfec1,0xfec2,0xfec3,0xfec4,},
|
||||||
|
{0xfec5,0xfec6,0xfec7,0xfec8,},
|
||||||
|
{0xfec9,0xfeca,0xfecb,0xfecc,},
|
||||||
|
{0xfecd,0xfece,0xfecf,0xfed0,},
|
||||||
|
{0x063b,0x063b,0x063b,0x063b,},
|
||||||
|
{0x063c,0x063c,0x063c,0x063c,},
|
||||||
|
{0x063d,0x063d,0x063d,0x063d,},
|
||||||
|
{0x063e,0x063e,0x063e,0x063e,},
|
||||||
|
{0x063f,0x063f,0x063f,0x063f,},
|
||||||
|
{0x0640,0x0640,0x0640,0x0640,},
|
||||||
|
{0xfed1,0xfed2,0xfed3,0xfed4,},
|
||||||
|
{0xfed5,0xfed6,0xfed7,0xfed8,},
|
||||||
|
{0xfed9,0xfeda,0xfedb,0xfedc,},
|
||||||
|
{0xfedd,0xfede,0xfedf,0xfee0,},
|
||||||
|
{0xfee1,0xfee2,0xfee3,0xfee4,},
|
||||||
|
{0xfee5,0xfee6,0xfee7,0xfee8,},
|
||||||
|
{0xfee9,0xfeea,0xfeeb,0xfeec,},
|
||||||
|
{0xfeed,0xfeee,0x0648,0x0648,},
|
||||||
|
{0xfeef,0xfef0,0xfbe8,0xfbe9,},
|
||||||
|
{0xfef1,0xfef2,0xfef3,0xfef4,},
|
||||||
|
{0x064b,0x064b,0x064b,0x064b,},
|
||||||
|
{0x064c,0x064c,0x064c,0x064c,},
|
||||||
|
{0x064d,0x064d,0x064d,0x064d,},
|
||||||
|
{0x064e,0x064e,0x064e,0x064e,},
|
||||||
|
{0x064f,0x064f,0x064f,0x064f,},
|
||||||
|
{0x0650,0x0650,0x0650,0x0650,},
|
||||||
|
{0x0651,0x0651,0x0651,0x0651,},
|
||||||
|
{0x0652,0x0652,0x0652,0x0652,},
|
||||||
|
{0x0653,0x0653,0x0653,0x0653,},
|
||||||
|
{0x0654,0x0654,0x0654,0x0654,},
|
||||||
|
{0x0655,0x0655,0x0655,0x0655,},
|
||||||
|
{0x0656,0x0656,0x0656,0x0656,},
|
||||||
|
{0x0657,0x0657,0x0657,0x0657,},
|
||||||
|
{0x0658,0x0658,0x0658,0x0658,},
|
||||||
|
{0x0659,0x0659,0x0659,0x0659,},
|
||||||
|
{0x065a,0x065a,0x065a,0x065a,},
|
||||||
|
{0x065b,0x065b,0x065b,0x065b,},
|
||||||
|
{0x065c,0x065c,0x065c,0x065c,},
|
||||||
|
{0x065d,0x065d,0x065d,0x065d,},
|
||||||
|
{0x065e,0x065e,0x065e,0x065e,},
|
||||||
|
{0x065f,0x065f,0x065f,0x065f,},
|
||||||
|
{0x0660,0x0660,0x0660,0x0660,},
|
||||||
|
{0x0661,0x0661,0x0661,0x0661,},
|
||||||
|
{0x0662,0x0662,0x0662,0x0662,},
|
||||||
|
{0x0663,0x0663,0x0663,0x0663,},
|
||||||
|
{0x0664,0x0664,0x0664,0x0664,},
|
||||||
|
{0x0665,0x0665,0x0665,0x0665,},
|
||||||
|
{0x0666,0x0666,0x0666,0x0666,},
|
||||||
|
{0x0667,0x0667,0x0667,0x0667,},
|
||||||
|
{0x0668,0x0668,0x0668,0x0668,},
|
||||||
|
{0x0669,0x0669,0x0669,0x0669,},
|
||||||
|
{0x066a,0x066a,0x066a,0x066a,},
|
||||||
|
{0x066b,0x066b,0x066b,0x066b,},
|
||||||
|
{0x066c,0x066c,0x066c,0x066c,},
|
||||||
|
{0x066d,0x066d,0x066d,0x066d,},
|
||||||
|
{0x066e,0x066e,0x066e,0x066e,},
|
||||||
|
{0x066f,0x066f,0x066f,0x066f,},
|
||||||
|
{0x0670,0x0670,0x0670,0x0670,},
|
||||||
|
{0xfb50,0xfb51,0x0671,0x0671,},
|
||||||
|
{0x0672,0x0672,0x0672,0x0672,},
|
||||||
|
{0x0673,0x0673,0x0673,0x0673,},
|
||||||
|
{0x0674,0x0674,0x0674,0x0674,},
|
||||||
|
{0x0675,0x0675,0x0675,0x0675,},
|
||||||
|
{0x0676,0x0676,0x0676,0x0676,},
|
||||||
|
{0xfbdd,0x0677,0x0677,0x0677,},
|
||||||
|
{0x0678,0x0678,0x0678,0x0678,},
|
||||||
|
{0xfb66,0xfb67,0xfb68,0xfb69,},
|
||||||
|
{0xfb5e,0xfb5f,0xfb60,0xfb61,},
|
||||||
|
{0xfb52,0xfb53,0xfb54,0xfb55,},
|
||||||
|
{0x067c,0x067c,0x067c,0x067c,},
|
||||||
|
{0x067d,0x067d,0x067d,0x067d,},
|
||||||
|
{0xfb56,0xfb57,0xfb58,0xfb59,},
|
||||||
|
{0xfb62,0xfb63,0xfb64,0xfb65,},
|
||||||
|
{0xfb5a,0xfb5b,0xfb5c,0xfb5d,},
|
||||||
|
{0x0681,0x0681,0x0681,0x0681,},
|
||||||
|
{0x0682,0x0682,0x0682,0x0682,},
|
||||||
|
{0xfb76,0xfb77,0xfb78,0xfb79,},
|
||||||
|
{0xfb72,0xfb73,0xfb74,0xfb75,},
|
||||||
|
{0x0685,0x0685,0x0685,0x0685,},
|
||||||
|
{0xfb7a,0xfb7b,0xfb7c,0xfb7d,},
|
||||||
|
{0xfb7e,0xfb7f,0xfb80,0xfb81,},
|
||||||
|
{0xfb88,0xfb89,0x0688,0x0688,},
|
||||||
|
{0x0689,0x0689,0x0689,0x0689,},
|
||||||
|
{0x068a,0x068a,0x068a,0x068a,},
|
||||||
|
{0x068b,0x068b,0x068b,0x068b,},
|
||||||
|
{0xfb84,0xfb85,0x068c,0x068c,},
|
||||||
|
{0xfb82,0xfb83,0x068d,0x068d,},
|
||||||
|
{0xfb86,0xfb87,0x068e,0x068e,},
|
||||||
|
{0x068f,0x068f,0x068f,0x068f,},
|
||||||
|
{0x0690,0x0690,0x0690,0x0690,},
|
||||||
|
{0xfb8c,0xfb8d,0x0691,0x0691,},
|
||||||
|
{0x0692,0x0692,0x0692,0x0692,},
|
||||||
|
{0x0693,0x0693,0x0693,0x0693,},
|
||||||
|
{0x0694,0x0694,0x0694,0x0694,},
|
||||||
|
{0x0695,0x0695,0x0695,0x0695,},
|
||||||
|
{0x0696,0x0696,0x0696,0x0696,},
|
||||||
|
{0x0697,0x0697,0x0697,0x0697,},
|
||||||
|
{0xfb8a,0xfb8b,0x0698,0x0698,},
|
||||||
|
{0x0699,0x0699,0x0699,0x0699,},
|
||||||
|
{0x069a,0x069a,0x069a,0x069a,},
|
||||||
|
{0x069b,0x069b,0x069b,0x069b,},
|
||||||
|
{0x069c,0x069c,0x069c,0x069c,},
|
||||||
|
{0x069d,0x069d,0x069d,0x069d,},
|
||||||
|
{0x069e,0x069e,0x069e,0x069e,},
|
||||||
|
{0x069f,0x069f,0x069f,0x069f,},
|
||||||
|
{0x06a0,0x06a0,0x06a0,0x06a0,},
|
||||||
|
{0x06a1,0x06a1,0x06a1,0x06a1,},
|
||||||
|
{0x06a2,0x06a2,0x06a2,0x06a2,},
|
||||||
|
{0x06a3,0x06a3,0x06a3,0x06a3,},
|
||||||
|
{0xfb6a,0xfb6b,0xfb6c,0xfb6d,},
|
||||||
|
{0x06a5,0x06a5,0x06a5,0x06a5,},
|
||||||
|
{0xfb6e,0xfb6f,0xfb70,0xfb71,},
|
||||||
|
{0x06a7,0x06a7,0x06a7,0x06a7,},
|
||||||
|
{0x06a8,0x06a8,0x06a8,0x06a8,},
|
||||||
|
{0xfb8e,0xfb8f,0xfb90,0xfb91,},
|
||||||
|
{0x06aa,0x06aa,0x06aa,0x06aa,},
|
||||||
|
{0x06ab,0x06ab,0x06ab,0x06ab,},
|
||||||
|
{0x06ac,0x06ac,0x06ac,0x06ac,},
|
||||||
|
{0xfbd3,0xfbd4,0xfbd5,0xfbd6,},
|
||||||
|
{0x06ae,0x06ae,0x06ae,0x06ae,},
|
||||||
|
{0xfb92,0xfb93,0xfb94,0xfb95,},
|
||||||
|
{0x06b0,0x06b0,0x06b0,0x06b0,},
|
||||||
|
{0xfb9a,0xfb9b,0xfb9c,0xfb9d,},
|
||||||
|
{0x06b2,0x06b2,0x06b2,0x06b2,},
|
||||||
|
{0xfb96,0xfb97,0xfb98,0xfb99,},
|
||||||
|
{0x06b4,0x06b4,0x06b4,0x06b4,},
|
||||||
|
{0x06b5,0x06b5,0x06b5,0x06b5,},
|
||||||
|
{0x06b6,0x06b6,0x06b6,0x06b6,},
|
||||||
|
{0x06b7,0x06b7,0x06b7,0x06b7,},
|
||||||
|
{0x06b8,0x06b8,0x06b8,0x06b8,},
|
||||||
|
{0x06b9,0x06b9,0x06b9,0x06b9,},
|
||||||
|
{0xfb9e,0xfb9f,0x06ba,0x06ba,},
|
||||||
|
{0xfba0,0xfba1,0xfba2,0xfba3,},
|
||||||
|
{0x06bc,0x06bc,0x06bc,0x06bc,},
|
||||||
|
{0x06bd,0x06bd,0x06bd,0x06bd,},
|
||||||
|
{0xfbaa,0xfbab,0xfbac,0xfbad,},
|
||||||
|
{0x06bf,0x06bf,0x06bf,0x06bf,},
|
||||||
|
{0xfba4,0xfba5,0x06c0,0x06c0,},
|
||||||
|
{0xfba6,0xfba7,0xfba8,0xfba9,},
|
||||||
|
{0x06c2,0x06c2,0x06c2,0x06c2,},
|
||||||
|
{0x06c3,0x06c3,0x06c3,0x06c3,},
|
||||||
|
{0x06c4,0x06c4,0x06c4,0x06c4,},
|
||||||
|
{0xfbe0,0xfbe1,0x06c5,0x06c5,},
|
||||||
|
{0xfbd9,0xfbda,0x06c6,0x06c6,},
|
||||||
|
{0xfbd7,0xfbd8,0x06c7,0x06c7,},
|
||||||
|
{0xfbdb,0xfbdc,0x06c8,0x06c8,},
|
||||||
|
{0xfbe2,0xfbe3,0x06c9,0x06c9,},
|
||||||
|
{0x06ca,0x06ca,0x06ca,0x06ca,},
|
||||||
|
{0xfbde,0xfbdf,0x06cb,0x06cb,},
|
||||||
|
{0xfbfc,0xfbfd,0xfbfe,0xfbff,},
|
||||||
|
{0x06cd,0x06cd,0x06cd,0x06cd,},
|
||||||
|
{0x06ce,0x06ce,0x06ce,0x06ce,},
|
||||||
|
{0x06cf,0x06cf,0x06cf,0x06cf,},
|
||||||
|
{0xfbe4,0xfbe5,0xfbe6,0xfbe7,},
|
||||||
|
{0x06d1,0x06d1,0x06d1,0x06d1,},
|
||||||
|
{0xfbae,0xfbaf,0x06d2,0x06d2,},
|
||||||
|
{0xfbb0,0xfbb1,0x06d3,0x06d3,},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
#ifndef FRIBIDI_ACCESS_SHAPE_TABLE
|
||||||
|
# define FRIBIDI_ACCESS_SHAPE_TABLE(table,min,max,x,shape) \
|
||||||
|
(((x)<(min)||(x)>(max))?(x):(table)[(x)-(min)][(shape)])
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FRIBIDI_GET_ARABIC_SHAPE_PRES(x,shape) FRIBIDI_ACCESS_SHAPE_TABLE(ArShap, 0x0621, 0x06d3, (x), (shape))
|
||||||
|
|
||||||
|
/* End of generated arabic-shaping.tab.i */
|
6195
3rd/fribidi/bidi-type.tab.i
Normal file
6195
3rd/fribidi/bidi-type.tab.i
Normal file
File diff suppressed because it is too large
Load Diff
54
3rd/fribidi/bidi-types.h
Normal file
54
3rd/fribidi/bidi-types.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* bidi-types.h - define internal bidi types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _BIDI_TYPES_H
|
||||||
|
#define _BIDI_TYPES_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include <fribidi-types.h>
|
||||||
|
#include <fribidi-bidi-types.h>
|
||||||
|
|
||||||
|
#include <fribidi-begindecls.h>
|
||||||
|
|
||||||
|
#define FRIBIDI_LEVEL_INVALID FRIBIDI_BIDI_MAX_RESOLVED_LEVELS
|
||||||
|
#define FRIBIDI_SENTINEL -1
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
char
|
||||||
|
fribidi_char_from_bidi_type (
|
||||||
|
FriBidiCharType t /* input bidi type */
|
||||||
|
) FRIBIDI_GNUC_HIDDEN;
|
||||||
|
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
#include <fribidi-enddecls.h>
|
||||||
|
|
||||||
|
#endif /* !_BIDI_TYPES_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
623
3rd/fribidi/brackets-type.tab.i
Normal file
623
3rd/fribidi/brackets-type.tab.i
Normal file
@ -0,0 +1,623 @@
|
|||||||
|
/* brackets-type.tab.i
|
||||||
|
* generated by gen-brackets-type-tab (GNU FriBidi 1.0.10)
|
||||||
|
* from the file BidiBrackets.txt of Unicode version 11.0.0. */
|
||||||
|
|
||||||
|
#define PACKTAB_UINT8 uint8_t
|
||||||
|
#define PACKTAB_UINT16 uint16_t
|
||||||
|
#define PACKTAB_UINT32 uint32_t
|
||||||
|
|
||||||
|
/*
|
||||||
|
generated by packtab.c version 3
|
||||||
|
|
||||||
|
use FRIBIDI_GET_BRACKET_TYPE(key) to access your table
|
||||||
|
|
||||||
|
assumed sizeof(int8_t): 1
|
||||||
|
required memory: 2816
|
||||||
|
lookups: 2
|
||||||
|
partition shape: Brt[512][128]
|
||||||
|
different table entries: 1 14
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
|
||||||
|
static const int8_t BrtLev1[128*14] = {
|
||||||
|
#define BrtLev1_0000 0x0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,
|
||||||
|
#define BrtLev1_0080 0x80
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_0F00 0x100
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,1,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_1680 0x180
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_2000 0x200
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,
|
||||||
|
#define BrtLev1_2080 0x280
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_2300 0x300
|
||||||
|
0,0,0,0,0,0,0,0,3,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_2700 0x380
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,3,1,3,1,3,1,3,1,3,1,3,1,3,1,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_2780 0x400
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,3,1,3,1,3,1,3,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_2980 0x480
|
||||||
|
0,0,0,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,1,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,0,
|
||||||
|
#define BrtLev1_2E00 0x500
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,3,1,3,1,3,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_3000 0x580
|
||||||
|
0,0,0,0,0,0,0,0,3,1,3,1,3,1,3,1,3,1,0,0,3,1,3,1,3,1,3,1,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_FE00 0x600
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,1,3,1,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
#define BrtLev1_FF00 0x680
|
||||||
|
0,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,3,
|
||||||
|
1,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const PACKTAB_UINT16 BrtLev0[512*1] = {
|
||||||
|
#define BrtLev0_0000 0x0
|
||||||
|
BrtLev1_0000, /* 0000..007F */
|
||||||
|
BrtLev1_0080, /* 0080..00FF */
|
||||||
|
BrtLev1_0080, /* 0100..017F */
|
||||||
|
BrtLev1_0080, /* 0180..01FF */
|
||||||
|
BrtLev1_0080, /* 0200..027F */
|
||||||
|
BrtLev1_0080, /* 0280..02FF */
|
||||||
|
BrtLev1_0080, /* 0300..037F */
|
||||||
|
BrtLev1_0080, /* 0380..03FF */
|
||||||
|
BrtLev1_0080, /* 0400..047F */
|
||||||
|
BrtLev1_0080, /* 0480..04FF */
|
||||||
|
BrtLev1_0080, /* 0500..057F */
|
||||||
|
BrtLev1_0080, /* 0580..05FF */
|
||||||
|
BrtLev1_0080, /* 0600..067F */
|
||||||
|
BrtLev1_0080, /* 0680..06FF */
|
||||||
|
BrtLev1_0080, /* 0700..077F */
|
||||||
|
BrtLev1_0080, /* 0780..07FF */
|
||||||
|
BrtLev1_0080, /* 0800..087F */
|
||||||
|
BrtLev1_0080, /* 0880..08FF */
|
||||||
|
BrtLev1_0080, /* 0900..097F */
|
||||||
|
BrtLev1_0080, /* 0980..09FF */
|
||||||
|
BrtLev1_0080, /* 0A00..0A7F */
|
||||||
|
BrtLev1_0080, /* 0A80..0AFF */
|
||||||
|
BrtLev1_0080, /* 0B00..0B7F */
|
||||||
|
BrtLev1_0080, /* 0B80..0BFF */
|
||||||
|
BrtLev1_0080, /* 0C00..0C7F */
|
||||||
|
BrtLev1_0080, /* 0C80..0CFF */
|
||||||
|
BrtLev1_0080, /* 0D00..0D7F */
|
||||||
|
BrtLev1_0080, /* 0D80..0DFF */
|
||||||
|
BrtLev1_0080, /* 0E00..0E7F */
|
||||||
|
BrtLev1_0080, /* 0E80..0EFF */
|
||||||
|
BrtLev1_0F00, /* 0F00..0F7F */
|
||||||
|
BrtLev1_0080, /* 0F80..0FFF */
|
||||||
|
BrtLev1_0080, /* 1000..107F */
|
||||||
|
BrtLev1_0080, /* 1080..10FF */
|
||||||
|
BrtLev1_0080, /* 1100..117F */
|
||||||
|
BrtLev1_0080, /* 1180..11FF */
|
||||||
|
BrtLev1_0080, /* 1200..127F */
|
||||||
|
BrtLev1_0080, /* 1280..12FF */
|
||||||
|
BrtLev1_0080, /* 1300..137F */
|
||||||
|
BrtLev1_0080, /* 1380..13FF */
|
||||||
|
BrtLev1_0080, /* 1400..147F */
|
||||||
|
BrtLev1_0080, /* 1480..14FF */
|
||||||
|
BrtLev1_0080, /* 1500..157F */
|
||||||
|
BrtLev1_0080, /* 1580..15FF */
|
||||||
|
BrtLev1_0080, /* 1600..167F */
|
||||||
|
BrtLev1_1680, /* 1680..16FF */
|
||||||
|
BrtLev1_0080, /* 1700..177F */
|
||||||
|
BrtLev1_0080, /* 1780..17FF */
|
||||||
|
BrtLev1_0080, /* 1800..187F */
|
||||||
|
BrtLev1_0080, /* 1880..18FF */
|
||||||
|
BrtLev1_0080, /* 1900..197F */
|
||||||
|
BrtLev1_0080, /* 1980..19FF */
|
||||||
|
BrtLev1_0080, /* 1A00..1A7F */
|
||||||
|
BrtLev1_0080, /* 1A80..1AFF */
|
||||||
|
BrtLev1_0080, /* 1B00..1B7F */
|
||||||
|
BrtLev1_0080, /* 1B80..1BFF */
|
||||||
|
BrtLev1_0080, /* 1C00..1C7F */
|
||||||
|
BrtLev1_0080, /* 1C80..1CFF */
|
||||||
|
BrtLev1_0080, /* 1D00..1D7F */
|
||||||
|
BrtLev1_0080, /* 1D80..1DFF */
|
||||||
|
BrtLev1_0080, /* 1E00..1E7F */
|
||||||
|
BrtLev1_0080, /* 1E80..1EFF */
|
||||||
|
BrtLev1_0080, /* 1F00..1F7F */
|
||||||
|
BrtLev1_0080, /* 1F80..1FFF */
|
||||||
|
BrtLev1_2000, /* 2000..207F */
|
||||||
|
BrtLev1_2080, /* 2080..20FF */
|
||||||
|
BrtLev1_0080, /* 2100..217F */
|
||||||
|
BrtLev1_0080, /* 2180..21FF */
|
||||||
|
BrtLev1_0080, /* 2200..227F */
|
||||||
|
BrtLev1_0080, /* 2280..22FF */
|
||||||
|
BrtLev1_2300, /* 2300..237F */
|
||||||
|
BrtLev1_0080, /* 2380..23FF */
|
||||||
|
BrtLev1_0080, /* 2400..247F */
|
||||||
|
BrtLev1_0080, /* 2480..24FF */
|
||||||
|
BrtLev1_0080, /* 2500..257F */
|
||||||
|
BrtLev1_0080, /* 2580..25FF */
|
||||||
|
BrtLev1_0080, /* 2600..267F */
|
||||||
|
BrtLev1_0080, /* 2680..26FF */
|
||||||
|
BrtLev1_2700, /* 2700..277F */
|
||||||
|
BrtLev1_2780, /* 2780..27FF */
|
||||||
|
BrtLev1_0080, /* 2800..287F */
|
||||||
|
BrtLev1_0080, /* 2880..28FF */
|
||||||
|
BrtLev1_0080, /* 2900..297F */
|
||||||
|
BrtLev1_2980, /* 2980..29FF */
|
||||||
|
BrtLev1_0080, /* 2A00..2A7F */
|
||||||
|
BrtLev1_0080, /* 2A80..2AFF */
|
||||||
|
BrtLev1_0080, /* 2B00..2B7F */
|
||||||
|
BrtLev1_0080, /* 2B80..2BFF */
|
||||||
|
BrtLev1_0080, /* 2C00..2C7F */
|
||||||
|
BrtLev1_0080, /* 2C80..2CFF */
|
||||||
|
BrtLev1_0080, /* 2D00..2D7F */
|
||||||
|
BrtLev1_0080, /* 2D80..2DFF */
|
||||||
|
BrtLev1_2E00, /* 2E00..2E7F */
|
||||||
|
BrtLev1_0080, /* 2E80..2EFF */
|
||||||
|
BrtLev1_0080, /* 2F00..2F7F */
|
||||||
|
BrtLev1_0080, /* 2F80..2FFF */
|
||||||
|
BrtLev1_3000, /* 3000..307F */
|
||||||
|
BrtLev1_0080, /* 3080..30FF */
|
||||||
|
BrtLev1_0080, /* 3100..317F */
|
||||||
|
BrtLev1_0080, /* 3180..31FF */
|
||||||
|
BrtLev1_0080, /* 3200..327F */
|
||||||
|
BrtLev1_0080, /* 3280..32FF */
|
||||||
|
BrtLev1_0080, /* 3300..337F */
|
||||||
|
BrtLev1_0080, /* 3380..33FF */
|
||||||
|
BrtLev1_0080, /* 3400..347F */
|
||||||
|
BrtLev1_0080, /* 3480..34FF */
|
||||||
|
BrtLev1_0080, /* 3500..357F */
|
||||||
|
BrtLev1_0080, /* 3580..35FF */
|
||||||
|
BrtLev1_0080, /* 3600..367F */
|
||||||
|
BrtLev1_0080, /* 3680..36FF */
|
||||||
|
BrtLev1_0080, /* 3700..377F */
|
||||||
|
BrtLev1_0080, /* 3780..37FF */
|
||||||
|
BrtLev1_0080, /* 3800..387F */
|
||||||
|
BrtLev1_0080, /* 3880..38FF */
|
||||||
|
BrtLev1_0080, /* 3900..397F */
|
||||||
|
BrtLev1_0080, /* 3980..39FF */
|
||||||
|
BrtLev1_0080, /* 3A00..3A7F */
|
||||||
|
BrtLev1_0080, /* 3A80..3AFF */
|
||||||
|
BrtLev1_0080, /* 3B00..3B7F */
|
||||||
|
BrtLev1_0080, /* 3B80..3BFF */
|
||||||
|
BrtLev1_0080, /* 3C00..3C7F */
|
||||||
|
BrtLev1_0080, /* 3C80..3CFF */
|
||||||
|
BrtLev1_0080, /* 3D00..3D7F */
|
||||||
|
BrtLev1_0080, /* 3D80..3DFF */
|
||||||
|
BrtLev1_0080, /* 3E00..3E7F */
|
||||||
|
BrtLev1_0080, /* 3E80..3EFF */
|
||||||
|
BrtLev1_0080, /* 3F00..3F7F */
|
||||||
|
BrtLev1_0080, /* 3F80..3FFF */
|
||||||
|
BrtLev1_0080, /* 4000..407F */
|
||||||
|
BrtLev1_0080, /* 4080..40FF */
|
||||||
|
BrtLev1_0080, /* 4100..417F */
|
||||||
|
BrtLev1_0080, /* 4180..41FF */
|
||||||
|
BrtLev1_0080, /* 4200..427F */
|
||||||
|
BrtLev1_0080, /* 4280..42FF */
|
||||||
|
BrtLev1_0080, /* 4300..437F */
|
||||||
|
BrtLev1_0080, /* 4380..43FF */
|
||||||
|
BrtLev1_0080, /* 4400..447F */
|
||||||
|
BrtLev1_0080, /* 4480..44FF */
|
||||||
|
BrtLev1_0080, /* 4500..457F */
|
||||||
|
BrtLev1_0080, /* 4580..45FF */
|
||||||
|
BrtLev1_0080, /* 4600..467F */
|
||||||
|
BrtLev1_0080, /* 4680..46FF */
|
||||||
|
BrtLev1_0080, /* 4700..477F */
|
||||||
|
BrtLev1_0080, /* 4780..47FF */
|
||||||
|
BrtLev1_0080, /* 4800..487F */
|
||||||
|
BrtLev1_0080, /* 4880..48FF */
|
||||||
|
BrtLev1_0080, /* 4900..497F */
|
||||||
|
BrtLev1_0080, /* 4980..49FF */
|
||||||
|
BrtLev1_0080, /* 4A00..4A7F */
|
||||||
|
BrtLev1_0080, /* 4A80..4AFF */
|
||||||
|
BrtLev1_0080, /* 4B00..4B7F */
|
||||||
|
BrtLev1_0080, /* 4B80..4BFF */
|
||||||
|
BrtLev1_0080, /* 4C00..4C7F */
|
||||||
|
BrtLev1_0080, /* 4C80..4CFF */
|
||||||
|
BrtLev1_0080, /* 4D00..4D7F */
|
||||||
|
BrtLev1_0080, /* 4D80..4DFF */
|
||||||
|
BrtLev1_0080, /* 4E00..4E7F */
|
||||||
|
BrtLev1_0080, /* 4E80..4EFF */
|
||||||
|
BrtLev1_0080, /* 4F00..4F7F */
|
||||||
|
BrtLev1_0080, /* 4F80..4FFF */
|
||||||
|
BrtLev1_0080, /* 5000..507F */
|
||||||
|
BrtLev1_0080, /* 5080..50FF */
|
||||||
|
BrtLev1_0080, /* 5100..517F */
|
||||||
|
BrtLev1_0080, /* 5180..51FF */
|
||||||
|
BrtLev1_0080, /* 5200..527F */
|
||||||
|
BrtLev1_0080, /* 5280..52FF */
|
||||||
|
BrtLev1_0080, /* 5300..537F */
|
||||||
|
BrtLev1_0080, /* 5380..53FF */
|
||||||
|
BrtLev1_0080, /* 5400..547F */
|
||||||
|
BrtLev1_0080, /* 5480..54FF */
|
||||||
|
BrtLev1_0080, /* 5500..557F */
|
||||||
|
BrtLev1_0080, /* 5580..55FF */
|
||||||
|
BrtLev1_0080, /* 5600..567F */
|
||||||
|
BrtLev1_0080, /* 5680..56FF */
|
||||||
|
BrtLev1_0080, /* 5700..577F */
|
||||||
|
BrtLev1_0080, /* 5780..57FF */
|
||||||
|
BrtLev1_0080, /* 5800..587F */
|
||||||
|
BrtLev1_0080, /* 5880..58FF */
|
||||||
|
BrtLev1_0080, /* 5900..597F */
|
||||||
|
BrtLev1_0080, /* 5980..59FF */
|
||||||
|
BrtLev1_0080, /* 5A00..5A7F */
|
||||||
|
BrtLev1_0080, /* 5A80..5AFF */
|
||||||
|
BrtLev1_0080, /* 5B00..5B7F */
|
||||||
|
BrtLev1_0080, /* 5B80..5BFF */
|
||||||
|
BrtLev1_0080, /* 5C00..5C7F */
|
||||||
|
BrtLev1_0080, /* 5C80..5CFF */
|
||||||
|
BrtLev1_0080, /* 5D00..5D7F */
|
||||||
|
BrtLev1_0080, /* 5D80..5DFF */
|
||||||
|
BrtLev1_0080, /* 5E00..5E7F */
|
||||||
|
BrtLev1_0080, /* 5E80..5EFF */
|
||||||
|
BrtLev1_0080, /* 5F00..5F7F */
|
||||||
|
BrtLev1_0080, /* 5F80..5FFF */
|
||||||
|
BrtLev1_0080, /* 6000..607F */
|
||||||
|
BrtLev1_0080, /* 6080..60FF */
|
||||||
|
BrtLev1_0080, /* 6100..617F */
|
||||||
|
BrtLev1_0080, /* 6180..61FF */
|
||||||
|
BrtLev1_0080, /* 6200..627F */
|
||||||
|
BrtLev1_0080, /* 6280..62FF */
|
||||||
|
BrtLev1_0080, /* 6300..637F */
|
||||||
|
BrtLev1_0080, /* 6380..63FF */
|
||||||
|
BrtLev1_0080, /* 6400..647F */
|
||||||
|
BrtLev1_0080, /* 6480..64FF */
|
||||||
|
BrtLev1_0080, /* 6500..657F */
|
||||||
|
BrtLev1_0080, /* 6580..65FF */
|
||||||
|
BrtLev1_0080, /* 6600..667F */
|
||||||
|
BrtLev1_0080, /* 6680..66FF */
|
||||||
|
BrtLev1_0080, /* 6700..677F */
|
||||||
|
BrtLev1_0080, /* 6780..67FF */
|
||||||
|
BrtLev1_0080, /* 6800..687F */
|
||||||
|
BrtLev1_0080, /* 6880..68FF */
|
||||||
|
BrtLev1_0080, /* 6900..697F */
|
||||||
|
BrtLev1_0080, /* 6980..69FF */
|
||||||
|
BrtLev1_0080, /* 6A00..6A7F */
|
||||||
|
BrtLev1_0080, /* 6A80..6AFF */
|
||||||
|
BrtLev1_0080, /* 6B00..6B7F */
|
||||||
|
BrtLev1_0080, /* 6B80..6BFF */
|
||||||
|
BrtLev1_0080, /* 6C00..6C7F */
|
||||||
|
BrtLev1_0080, /* 6C80..6CFF */
|
||||||
|
BrtLev1_0080, /* 6D00..6D7F */
|
||||||
|
BrtLev1_0080, /* 6D80..6DFF */
|
||||||
|
BrtLev1_0080, /* 6E00..6E7F */
|
||||||
|
BrtLev1_0080, /* 6E80..6EFF */
|
||||||
|
BrtLev1_0080, /* 6F00..6F7F */
|
||||||
|
BrtLev1_0080, /* 6F80..6FFF */
|
||||||
|
BrtLev1_0080, /* 7000..707F */
|
||||||
|
BrtLev1_0080, /* 7080..70FF */
|
||||||
|
BrtLev1_0080, /* 7100..717F */
|
||||||
|
BrtLev1_0080, /* 7180..71FF */
|
||||||
|
BrtLev1_0080, /* 7200..727F */
|
||||||
|
BrtLev1_0080, /* 7280..72FF */
|
||||||
|
BrtLev1_0080, /* 7300..737F */
|
||||||
|
BrtLev1_0080, /* 7380..73FF */
|
||||||
|
BrtLev1_0080, /* 7400..747F */
|
||||||
|
BrtLev1_0080, /* 7480..74FF */
|
||||||
|
BrtLev1_0080, /* 7500..757F */
|
||||||
|
BrtLev1_0080, /* 7580..75FF */
|
||||||
|
BrtLev1_0080, /* 7600..767F */
|
||||||
|
BrtLev1_0080, /* 7680..76FF */
|
||||||
|
BrtLev1_0080, /* 7700..777F */
|
||||||
|
BrtLev1_0080, /* 7780..77FF */
|
||||||
|
BrtLev1_0080, /* 7800..787F */
|
||||||
|
BrtLev1_0080, /* 7880..78FF */
|
||||||
|
BrtLev1_0080, /* 7900..797F */
|
||||||
|
BrtLev1_0080, /* 7980..79FF */
|
||||||
|
BrtLev1_0080, /* 7A00..7A7F */
|
||||||
|
BrtLev1_0080, /* 7A80..7AFF */
|
||||||
|
BrtLev1_0080, /* 7B00..7B7F */
|
||||||
|
BrtLev1_0080, /* 7B80..7BFF */
|
||||||
|
BrtLev1_0080, /* 7C00..7C7F */
|
||||||
|
BrtLev1_0080, /* 7C80..7CFF */
|
||||||
|
BrtLev1_0080, /* 7D00..7D7F */
|
||||||
|
BrtLev1_0080, /* 7D80..7DFF */
|
||||||
|
BrtLev1_0080, /* 7E00..7E7F */
|
||||||
|
BrtLev1_0080, /* 7E80..7EFF */
|
||||||
|
BrtLev1_0080, /* 7F00..7F7F */
|
||||||
|
BrtLev1_0080, /* 7F80..7FFF */
|
||||||
|
BrtLev1_0080, /* 8000..807F */
|
||||||
|
BrtLev1_0080, /* 8080..80FF */
|
||||||
|
BrtLev1_0080, /* 8100..817F */
|
||||||
|
BrtLev1_0080, /* 8180..81FF */
|
||||||
|
BrtLev1_0080, /* 8200..827F */
|
||||||
|
BrtLev1_0080, /* 8280..82FF */
|
||||||
|
BrtLev1_0080, /* 8300..837F */
|
||||||
|
BrtLev1_0080, /* 8380..83FF */
|
||||||
|
BrtLev1_0080, /* 8400..847F */
|
||||||
|
BrtLev1_0080, /* 8480..84FF */
|
||||||
|
BrtLev1_0080, /* 8500..857F */
|
||||||
|
BrtLev1_0080, /* 8580..85FF */
|
||||||
|
BrtLev1_0080, /* 8600..867F */
|
||||||
|
BrtLev1_0080, /* 8680..86FF */
|
||||||
|
BrtLev1_0080, /* 8700..877F */
|
||||||
|
BrtLev1_0080, /* 8780..87FF */
|
||||||
|
BrtLev1_0080, /* 8800..887F */
|
||||||
|
BrtLev1_0080, /* 8880..88FF */
|
||||||
|
BrtLev1_0080, /* 8900..897F */
|
||||||
|
BrtLev1_0080, /* 8980..89FF */
|
||||||
|
BrtLev1_0080, /* 8A00..8A7F */
|
||||||
|
BrtLev1_0080, /* 8A80..8AFF */
|
||||||
|
BrtLev1_0080, /* 8B00..8B7F */
|
||||||
|
BrtLev1_0080, /* 8B80..8BFF */
|
||||||
|
BrtLev1_0080, /* 8C00..8C7F */
|
||||||
|
BrtLev1_0080, /* 8C80..8CFF */
|
||||||
|
BrtLev1_0080, /* 8D00..8D7F */
|
||||||
|
BrtLev1_0080, /* 8D80..8DFF */
|
||||||
|
BrtLev1_0080, /* 8E00..8E7F */
|
||||||
|
BrtLev1_0080, /* 8E80..8EFF */
|
||||||
|
BrtLev1_0080, /* 8F00..8F7F */
|
||||||
|
BrtLev1_0080, /* 8F80..8FFF */
|
||||||
|
BrtLev1_0080, /* 9000..907F */
|
||||||
|
BrtLev1_0080, /* 9080..90FF */
|
||||||
|
BrtLev1_0080, /* 9100..917F */
|
||||||
|
BrtLev1_0080, /* 9180..91FF */
|
||||||
|
BrtLev1_0080, /* 9200..927F */
|
||||||
|
BrtLev1_0080, /* 9280..92FF */
|
||||||
|
BrtLev1_0080, /* 9300..937F */
|
||||||
|
BrtLev1_0080, /* 9380..93FF */
|
||||||
|
BrtLev1_0080, /* 9400..947F */
|
||||||
|
BrtLev1_0080, /* 9480..94FF */
|
||||||
|
BrtLev1_0080, /* 9500..957F */
|
||||||
|
BrtLev1_0080, /* 9580..95FF */
|
||||||
|
BrtLev1_0080, /* 9600..967F */
|
||||||
|
BrtLev1_0080, /* 9680..96FF */
|
||||||
|
BrtLev1_0080, /* 9700..977F */
|
||||||
|
BrtLev1_0080, /* 9780..97FF */
|
||||||
|
BrtLev1_0080, /* 9800..987F */
|
||||||
|
BrtLev1_0080, /* 9880..98FF */
|
||||||
|
BrtLev1_0080, /* 9900..997F */
|
||||||
|
BrtLev1_0080, /* 9980..99FF */
|
||||||
|
BrtLev1_0080, /* 9A00..9A7F */
|
||||||
|
BrtLev1_0080, /* 9A80..9AFF */
|
||||||
|
BrtLev1_0080, /* 9B00..9B7F */
|
||||||
|
BrtLev1_0080, /* 9B80..9BFF */
|
||||||
|
BrtLev1_0080, /* 9C00..9C7F */
|
||||||
|
BrtLev1_0080, /* 9C80..9CFF */
|
||||||
|
BrtLev1_0080, /* 9D00..9D7F */
|
||||||
|
BrtLev1_0080, /* 9D80..9DFF */
|
||||||
|
BrtLev1_0080, /* 9E00..9E7F */
|
||||||
|
BrtLev1_0080, /* 9E80..9EFF */
|
||||||
|
BrtLev1_0080, /* 9F00..9F7F */
|
||||||
|
BrtLev1_0080, /* 9F80..9FFF */
|
||||||
|
BrtLev1_0080, /* A000..A07F */
|
||||||
|
BrtLev1_0080, /* A080..A0FF */
|
||||||
|
BrtLev1_0080, /* A100..A17F */
|
||||||
|
BrtLev1_0080, /* A180..A1FF */
|
||||||
|
BrtLev1_0080, /* A200..A27F */
|
||||||
|
BrtLev1_0080, /* A280..A2FF */
|
||||||
|
BrtLev1_0080, /* A300..A37F */
|
||||||
|
BrtLev1_0080, /* A380..A3FF */
|
||||||
|
BrtLev1_0080, /* A400..A47F */
|
||||||
|
BrtLev1_0080, /* A480..A4FF */
|
||||||
|
BrtLev1_0080, /* A500..A57F */
|
||||||
|
BrtLev1_0080, /* A580..A5FF */
|
||||||
|
BrtLev1_0080, /* A600..A67F */
|
||||||
|
BrtLev1_0080, /* A680..A6FF */
|
||||||
|
BrtLev1_0080, /* A700..A77F */
|
||||||
|
BrtLev1_0080, /* A780..A7FF */
|
||||||
|
BrtLev1_0080, /* A800..A87F */
|
||||||
|
BrtLev1_0080, /* A880..A8FF */
|
||||||
|
BrtLev1_0080, /* A900..A97F */
|
||||||
|
BrtLev1_0080, /* A980..A9FF */
|
||||||
|
BrtLev1_0080, /* AA00..AA7F */
|
||||||
|
BrtLev1_0080, /* AA80..AAFF */
|
||||||
|
BrtLev1_0080, /* AB00..AB7F */
|
||||||
|
BrtLev1_0080, /* AB80..ABFF */
|
||||||
|
BrtLev1_0080, /* AC00..AC7F */
|
||||||
|
BrtLev1_0080, /* AC80..ACFF */
|
||||||
|
BrtLev1_0080, /* AD00..AD7F */
|
||||||
|
BrtLev1_0080, /* AD80..ADFF */
|
||||||
|
BrtLev1_0080, /* AE00..AE7F */
|
||||||
|
BrtLev1_0080, /* AE80..AEFF */
|
||||||
|
BrtLev1_0080, /* AF00..AF7F */
|
||||||
|
BrtLev1_0080, /* AF80..AFFF */
|
||||||
|
BrtLev1_0080, /* B000..B07F */
|
||||||
|
BrtLev1_0080, /* B080..B0FF */
|
||||||
|
BrtLev1_0080, /* B100..B17F */
|
||||||
|
BrtLev1_0080, /* B180..B1FF */
|
||||||
|
BrtLev1_0080, /* B200..B27F */
|
||||||
|
BrtLev1_0080, /* B280..B2FF */
|
||||||
|
BrtLev1_0080, /* B300..B37F */
|
||||||
|
BrtLev1_0080, /* B380..B3FF */
|
||||||
|
BrtLev1_0080, /* B400..B47F */
|
||||||
|
BrtLev1_0080, /* B480..B4FF */
|
||||||
|
BrtLev1_0080, /* B500..B57F */
|
||||||
|
BrtLev1_0080, /* B580..B5FF */
|
||||||
|
BrtLev1_0080, /* B600..B67F */
|
||||||
|
BrtLev1_0080, /* B680..B6FF */
|
||||||
|
BrtLev1_0080, /* B700..B77F */
|
||||||
|
BrtLev1_0080, /* B780..B7FF */
|
||||||
|
BrtLev1_0080, /* B800..B87F */
|
||||||
|
BrtLev1_0080, /* B880..B8FF */
|
||||||
|
BrtLev1_0080, /* B900..B97F */
|
||||||
|
BrtLev1_0080, /* B980..B9FF */
|
||||||
|
BrtLev1_0080, /* BA00..BA7F */
|
||||||
|
BrtLev1_0080, /* BA80..BAFF */
|
||||||
|
BrtLev1_0080, /* BB00..BB7F */
|
||||||
|
BrtLev1_0080, /* BB80..BBFF */
|
||||||
|
BrtLev1_0080, /* BC00..BC7F */
|
||||||
|
BrtLev1_0080, /* BC80..BCFF */
|
||||||
|
BrtLev1_0080, /* BD00..BD7F */
|
||||||
|
BrtLev1_0080, /* BD80..BDFF */
|
||||||
|
BrtLev1_0080, /* BE00..BE7F */
|
||||||
|
BrtLev1_0080, /* BE80..BEFF */
|
||||||
|
BrtLev1_0080, /* BF00..BF7F */
|
||||||
|
BrtLev1_0080, /* BF80..BFFF */
|
||||||
|
BrtLev1_0080, /* C000..C07F */
|
||||||
|
BrtLev1_0080, /* C080..C0FF */
|
||||||
|
BrtLev1_0080, /* C100..C17F */
|
||||||
|
BrtLev1_0080, /* C180..C1FF */
|
||||||
|
BrtLev1_0080, /* C200..C27F */
|
||||||
|
BrtLev1_0080, /* C280..C2FF */
|
||||||
|
BrtLev1_0080, /* C300..C37F */
|
||||||
|
BrtLev1_0080, /* C380..C3FF */
|
||||||
|
BrtLev1_0080, /* C400..C47F */
|
||||||
|
BrtLev1_0080, /* C480..C4FF */
|
||||||
|
BrtLev1_0080, /* C500..C57F */
|
||||||
|
BrtLev1_0080, /* C580..C5FF */
|
||||||
|
BrtLev1_0080, /* C600..C67F */
|
||||||
|
BrtLev1_0080, /* C680..C6FF */
|
||||||
|
BrtLev1_0080, /* C700..C77F */
|
||||||
|
BrtLev1_0080, /* C780..C7FF */
|
||||||
|
BrtLev1_0080, /* C800..C87F */
|
||||||
|
BrtLev1_0080, /* C880..C8FF */
|
||||||
|
BrtLev1_0080, /* C900..C97F */
|
||||||
|
BrtLev1_0080, /* C980..C9FF */
|
||||||
|
BrtLev1_0080, /* CA00..CA7F */
|
||||||
|
BrtLev1_0080, /* CA80..CAFF */
|
||||||
|
BrtLev1_0080, /* CB00..CB7F */
|
||||||
|
BrtLev1_0080, /* CB80..CBFF */
|
||||||
|
BrtLev1_0080, /* CC00..CC7F */
|
||||||
|
BrtLev1_0080, /* CC80..CCFF */
|
||||||
|
BrtLev1_0080, /* CD00..CD7F */
|
||||||
|
BrtLev1_0080, /* CD80..CDFF */
|
||||||
|
BrtLev1_0080, /* CE00..CE7F */
|
||||||
|
BrtLev1_0080, /* CE80..CEFF */
|
||||||
|
BrtLev1_0080, /* CF00..CF7F */
|
||||||
|
BrtLev1_0080, /* CF80..CFFF */
|
||||||
|
BrtLev1_0080, /* D000..D07F */
|
||||||
|
BrtLev1_0080, /* D080..D0FF */
|
||||||
|
BrtLev1_0080, /* D100..D17F */
|
||||||
|
BrtLev1_0080, /* D180..D1FF */
|
||||||
|
BrtLev1_0080, /* D200..D27F */
|
||||||
|
BrtLev1_0080, /* D280..D2FF */
|
||||||
|
BrtLev1_0080, /* D300..D37F */
|
||||||
|
BrtLev1_0080, /* D380..D3FF */
|
||||||
|
BrtLev1_0080, /* D400..D47F */
|
||||||
|
BrtLev1_0080, /* D480..D4FF */
|
||||||
|
BrtLev1_0080, /* D500..D57F */
|
||||||
|
BrtLev1_0080, /* D580..D5FF */
|
||||||
|
BrtLev1_0080, /* D600..D67F */
|
||||||
|
BrtLev1_0080, /* D680..D6FF */
|
||||||
|
BrtLev1_0080, /* D700..D77F */
|
||||||
|
BrtLev1_0080, /* D780..D7FF */
|
||||||
|
BrtLev1_0080, /* D800..D87F */
|
||||||
|
BrtLev1_0080, /* D880..D8FF */
|
||||||
|
BrtLev1_0080, /* D900..D97F */
|
||||||
|
BrtLev1_0080, /* D980..D9FF */
|
||||||
|
BrtLev1_0080, /* DA00..DA7F */
|
||||||
|
BrtLev1_0080, /* DA80..DAFF */
|
||||||
|
BrtLev1_0080, /* DB00..DB7F */
|
||||||
|
BrtLev1_0080, /* DB80..DBFF */
|
||||||
|
BrtLev1_0080, /* DC00..DC7F */
|
||||||
|
BrtLev1_0080, /* DC80..DCFF */
|
||||||
|
BrtLev1_0080, /* DD00..DD7F */
|
||||||
|
BrtLev1_0080, /* DD80..DDFF */
|
||||||
|
BrtLev1_0080, /* DE00..DE7F */
|
||||||
|
BrtLev1_0080, /* DE80..DEFF */
|
||||||
|
BrtLev1_0080, /* DF00..DF7F */
|
||||||
|
BrtLev1_0080, /* DF80..DFFF */
|
||||||
|
BrtLev1_0080, /* E000..E07F */
|
||||||
|
BrtLev1_0080, /* E080..E0FF */
|
||||||
|
BrtLev1_0080, /* E100..E17F */
|
||||||
|
BrtLev1_0080, /* E180..E1FF */
|
||||||
|
BrtLev1_0080, /* E200..E27F */
|
||||||
|
BrtLev1_0080, /* E280..E2FF */
|
||||||
|
BrtLev1_0080, /* E300..E37F */
|
||||||
|
BrtLev1_0080, /* E380..E3FF */
|
||||||
|
BrtLev1_0080, /* E400..E47F */
|
||||||
|
BrtLev1_0080, /* E480..E4FF */
|
||||||
|
BrtLev1_0080, /* E500..E57F */
|
||||||
|
BrtLev1_0080, /* E580..E5FF */
|
||||||
|
BrtLev1_0080, /* E600..E67F */
|
||||||
|
BrtLev1_0080, /* E680..E6FF */
|
||||||
|
BrtLev1_0080, /* E700..E77F */
|
||||||
|
BrtLev1_0080, /* E780..E7FF */
|
||||||
|
BrtLev1_0080, /* E800..E87F */
|
||||||
|
BrtLev1_0080, /* E880..E8FF */
|
||||||
|
BrtLev1_0080, /* E900..E97F */
|
||||||
|
BrtLev1_0080, /* E980..E9FF */
|
||||||
|
BrtLev1_0080, /* EA00..EA7F */
|
||||||
|
BrtLev1_0080, /* EA80..EAFF */
|
||||||
|
BrtLev1_0080, /* EB00..EB7F */
|
||||||
|
BrtLev1_0080, /* EB80..EBFF */
|
||||||
|
BrtLev1_0080, /* EC00..EC7F */
|
||||||
|
BrtLev1_0080, /* EC80..ECFF */
|
||||||
|
BrtLev1_0080, /* ED00..ED7F */
|
||||||
|
BrtLev1_0080, /* ED80..EDFF */
|
||||||
|
BrtLev1_0080, /* EE00..EE7F */
|
||||||
|
BrtLev1_0080, /* EE80..EEFF */
|
||||||
|
BrtLev1_0080, /* EF00..EF7F */
|
||||||
|
BrtLev1_0080, /* EF80..EFFF */
|
||||||
|
BrtLev1_0080, /* F000..F07F */
|
||||||
|
BrtLev1_0080, /* F080..F0FF */
|
||||||
|
BrtLev1_0080, /* F100..F17F */
|
||||||
|
BrtLev1_0080, /* F180..F1FF */
|
||||||
|
BrtLev1_0080, /* F200..F27F */
|
||||||
|
BrtLev1_0080, /* F280..F2FF */
|
||||||
|
BrtLev1_0080, /* F300..F37F */
|
||||||
|
BrtLev1_0080, /* F380..F3FF */
|
||||||
|
BrtLev1_0080, /* F400..F47F */
|
||||||
|
BrtLev1_0080, /* F480..F4FF */
|
||||||
|
BrtLev1_0080, /* F500..F57F */
|
||||||
|
BrtLev1_0080, /* F580..F5FF */
|
||||||
|
BrtLev1_0080, /* F600..F67F */
|
||||||
|
BrtLev1_0080, /* F680..F6FF */
|
||||||
|
BrtLev1_0080, /* F700..F77F */
|
||||||
|
BrtLev1_0080, /* F780..F7FF */
|
||||||
|
BrtLev1_0080, /* F800..F87F */
|
||||||
|
BrtLev1_0080, /* F880..F8FF */
|
||||||
|
BrtLev1_0080, /* F900..F97F */
|
||||||
|
BrtLev1_0080, /* F980..F9FF */
|
||||||
|
BrtLev1_0080, /* FA00..FA7F */
|
||||||
|
BrtLev1_0080, /* FA80..FAFF */
|
||||||
|
BrtLev1_0080, /* FB00..FB7F */
|
||||||
|
BrtLev1_0080, /* FB80..FBFF */
|
||||||
|
BrtLev1_0080, /* FC00..FC7F */
|
||||||
|
BrtLev1_0080, /* FC80..FCFF */
|
||||||
|
BrtLev1_0080, /* FD00..FD7F */
|
||||||
|
BrtLev1_0080, /* FD80..FDFF */
|
||||||
|
BrtLev1_FE00, /* FE00..FE7F */
|
||||||
|
BrtLev1_0080, /* FE80..FEFF */
|
||||||
|
BrtLev1_FF00, /* FF00..FF7F */
|
||||||
|
BrtLev1_0080, /* FF80..FFFF */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
#define FRIBIDI_GET_BRACKET_TYPE(x) \
|
||||||
|
((x) >= 0x10000 ? 0 : \
|
||||||
|
BrtLev1[((x) & 0x7f) + \
|
||||||
|
BrtLev0[((x) >> 7)]])
|
||||||
|
|
||||||
|
#undef PACKTAB_UINT8
|
||||||
|
#undef PACKTAB_UINT16
|
||||||
|
#undef PACKTAB_UINT32
|
||||||
|
|
||||||
|
/* End of generated brackets-type.tab.i */
|
1118
3rd/fribidi/brackets.tab.i
Normal file
1118
3rd/fribidi/brackets.tab.i
Normal file
File diff suppressed because it is too large
Load Diff
133
3rd/fribidi/common.h
Normal file
133
3rd/fribidi/common.h
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* common.h - common include for library sources
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _COMMON_H
|
||||||
|
#define _COMMON_H
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <fribidi-common.h>
|
||||||
|
|
||||||
|
#ifndef false
|
||||||
|
# define false (0)
|
||||||
|
# endif /* !false */
|
||||||
|
# ifndef true
|
||||||
|
# define true (!false)
|
||||||
|
# endif /* !true */
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define NULL (0L)
|
||||||
|
# else /* !__cplusplus */
|
||||||
|
# define NULL ((void*) 0)
|
||||||
|
# endif /* !__cplusplus */
|
||||||
|
#endif /* !NULL */
|
||||||
|
|
||||||
|
/* fribidi_malloc and fribidi_free should be used instead of malloc and free.
|
||||||
|
* No need to include any headers. */
|
||||||
|
#ifndef fribidi_malloc
|
||||||
|
# if HAVE_STDLIB_H
|
||||||
|
# ifndef __FRIBIDI_DOC
|
||||||
|
# include <stdlib.h>
|
||||||
|
# endif /* __FRIBIDI_DOC */
|
||||||
|
# define fribidi_malloc malloc
|
||||||
|
# else /* !HAVE_STDLIB_H */
|
||||||
|
# define fribidi_malloc (void *) malloc
|
||||||
|
# endif /* !HAVE_STDLIB_H */
|
||||||
|
# define fribidi_free free
|
||||||
|
#else /* fribidi_malloc */
|
||||||
|
# ifndef fribidi_free
|
||||||
|
# error "You should define fribidi_free too when you define fribidi_malloc."
|
||||||
|
# endif /* !fribidi_free */
|
||||||
|
#endif /* fribidi_malloc */
|
||||||
|
|
||||||
|
#ifdef HAVE_STRING_H
|
||||||
|
# if !STDC_HEADERS && HAVE_MEMORY_H
|
||||||
|
# include <memory.h>
|
||||||
|
# endif
|
||||||
|
# include <string.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_STRINGS_H
|
||||||
|
# include <strings.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* FRIBIDI_BEGIN_STMT should be used at the beginning of your macro
|
||||||
|
* definitions that are to behave like simple statements. Use
|
||||||
|
* FRIBIDI_END_STMT at the end of the macro after the semicolon or brace. */
|
||||||
|
#ifndef FRIBIDI_BEGIN_STMT
|
||||||
|
# define FRIBIDI_BEGIN_STMT do {
|
||||||
|
# define FRIBIDI_END_STMT } while (0)
|
||||||
|
#endif /* !FRIBIDI_BEGIN_STMT */
|
||||||
|
|
||||||
|
/* LIKEYLY and UNLIKELY are used to give a hint on branch prediction to the
|
||||||
|
* compiler. */
|
||||||
|
#ifndef LIKELY
|
||||||
|
# if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
|
||||||
|
# define FRIBIDI_BOOLEAN_EXPR(expr) \
|
||||||
|
__extension__ ({ \
|
||||||
|
int fribidi_bool_var; \
|
||||||
|
if (expr) \
|
||||||
|
fribidi_bool_var = 1; \
|
||||||
|
else \
|
||||||
|
fribidi_bool_var = 0; \
|
||||||
|
fribidi_bool_var; \
|
||||||
|
})
|
||||||
|
# define LIKELY(expr) (__builtin_expect (FRIBIDI_BOOLEAN_EXPR(expr), 1))
|
||||||
|
# define UNLIKELY(expr) (__builtin_expect (FRIBIDI_BOOLEAN_EXPR(expr), 0))
|
||||||
|
# else
|
||||||
|
# define LIKELY
|
||||||
|
# define UNLIKELY
|
||||||
|
# endif /* _GNUC_ */
|
||||||
|
#endif /* !LIKELY */
|
||||||
|
|
||||||
|
#ifndef FRIBIDI_EMPTY_STMT
|
||||||
|
# define FRIBIDI_EMPTY_STMT FRIBIDI_BEGIN_STMT (void) 0; FRIBIDI_END_STMT
|
||||||
|
#endif /* !FRIBIDI_EMPTY_STMT */
|
||||||
|
|
||||||
|
#ifdef HAVE_STRINGIZE
|
||||||
|
# define STRINGIZE(symbol) #symbol
|
||||||
|
#else /* !HAVE_STRINGIZE */
|
||||||
|
# error "No stringize operator available?"
|
||||||
|
#endif /* !HAVE_STRINGIZE */
|
||||||
|
|
||||||
|
/* As per recommendation of GNU Coding Standards. */
|
||||||
|
#ifndef _GNU_SOURCE
|
||||||
|
# define _GNU_SOURCE
|
||||||
|
#endif /* !_GNU_SOURCE */
|
||||||
|
|
||||||
|
/* We respect our own rules. */
|
||||||
|
#ifndef FRIBIDI_NO_DEPRECATED
|
||||||
|
# define FRIBIDI_NO_DEPRECATED
|
||||||
|
#endif /* !FRIBIDI_NO_DEPRECATED */
|
||||||
|
|
||||||
|
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
|
#endif /* !_COMMON_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
115
3rd/fribidi/debug.h
Normal file
115
3rd/fribidi/debug.h
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* debug.h - debug-only interfaces
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _DEBUG_H
|
||||||
|
#define _DEBUG_H
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-types.h>
|
||||||
|
|
||||||
|
#include <fribidi-begindecls.h>
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
/* These definitions should only be used in DEBUG mode: */
|
||||||
|
#ifndef __LINE__
|
||||||
|
# define __LINE__ 0
|
||||||
|
#endif /* !__LINE__ */
|
||||||
|
#ifndef __FILE__
|
||||||
|
# define __FILE__ "unknown"
|
||||||
|
#endif /* !__FILE__ */
|
||||||
|
|
||||||
|
#ifndef FRIBIDI_FPRINTF
|
||||||
|
# ifndef __FRIBIDI_DOC
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif /* !__FRIBIDI_DOC */
|
||||||
|
# define FRIBIDI_FPRINTF fprintf
|
||||||
|
# define FRIBIDI_STDERR_ stderr,
|
||||||
|
#endif /* !FRIBIDI_FPRINTF */
|
||||||
|
|
||||||
|
#ifndef MSG
|
||||||
|
#define MSG(s) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
FRIBIDI_FPRINTF(FRIBIDI_STDERR_ s); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#define MSG2(s, t) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
FRIBIDI_FPRINTF(FRIBIDI_STDERR_ s, t); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#define MSG3(s, t, u) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
FRIBIDI_FPRINTF(FRIBIDI_STDERR_ s, t, u); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#define MSG5(s, t, u, v, w) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
FRIBIDI_FPRINTF(FRIBIDI_STDERR_ s, t, u, v, w); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#define MSG6(s, t, u, v, w, z) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
FRIBIDI_FPRINTF(FRIBIDI_STDERR_ s, t, u, v, w, z); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#endif /* !MSG */
|
||||||
|
|
||||||
|
#ifndef DBG
|
||||||
|
# define DBG(s) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
if (fribidi_debug_status()) { MSG(FRIBIDI ": " s "\n"); } \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
# define DBG2(s, t) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
if (fribidi_debug_status()) { MSG2(FRIBIDI ": " s "\n", t); } \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#endif /* !DBG */
|
||||||
|
|
||||||
|
#ifndef fribidi_assert
|
||||||
|
# define fribidi_assert(cond) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
if (!(cond)) { \
|
||||||
|
DBG(__FILE__ ":" STRINGIZE(__LINE__) ": " \
|
||||||
|
"assertion failed (" STRINGIZE(cond) ")"); \
|
||||||
|
} \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
#endif /* !fribidi_assert */
|
||||||
|
|
||||||
|
#else /* !DEBUG */
|
||||||
|
|
||||||
|
#ifndef DBG
|
||||||
|
# define DBG(s) FRIBIDI_EMPTY_STMT
|
||||||
|
# define DBG2(s, t) FRIBIDI_EMPTY_STMT
|
||||||
|
#endif /* !DBG */
|
||||||
|
#ifndef fribidi_assert
|
||||||
|
# define fribidi_assert(cond) FRIBIDI_EMPTY_STMT
|
||||||
|
#endif /* !fribidi_assert */
|
||||||
|
|
||||||
|
#endif /* !DEBUG */
|
||||||
|
|
||||||
|
#include <fribidi-enddecls.h>
|
||||||
|
|
||||||
|
#endif /* !_DEBUG_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
211
3rd/fribidi/fribidi-arabic.c
Normal file
211
3rd/fribidi/fribidi-arabic.c
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
/* fribidi-arabic.c - Arabic shaping
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2005
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_STDLIB_H
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include <fribidi-arabic.h>
|
||||||
|
#include <fribidi-unicode.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _PairMap {
|
||||||
|
FriBidiChar pair[2], to;
|
||||||
|
} PairMap;
|
||||||
|
|
||||||
|
|
||||||
|
#define FRIBIDI_ACCESS_SHAPE_TABLE(table,min,max,x,shape) (table), (min), (max)
|
||||||
|
# define FRIBIDI_ACCESS_SHAPE_TABLE_REAL(table,min,max,x,shape) \
|
||||||
|
(((x)<(min)||(x)>(max))?(x):(table)[(x)-(min)][(shape)])
|
||||||
|
|
||||||
|
#include "arabic-shaping.tab.i"
|
||||||
|
#include "arabic-misc.tab.i"
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
fribidi_shape_arabic_joining (
|
||||||
|
/* input */
|
||||||
|
const FriBidiChar table[][4],
|
||||||
|
FriBidiChar min,
|
||||||
|
FriBidiChar max,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
const FriBidiArabicProp *ar_props,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiChar *str
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
if (FRIBIDI_ARAB_SHAPES(ar_props[i]))
|
||||||
|
str[i] = FRIBIDI_ACCESS_SHAPE_TABLE_REAL (table, min, max, str[i], FRIBIDI_JOIN_SHAPE (ar_props[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
comp_PairMap (const void *pa, const void *pb)
|
||||||
|
{
|
||||||
|
PairMap *a = (PairMap *)pa;
|
||||||
|
PairMap *b = (PairMap *)pb;
|
||||||
|
|
||||||
|
if (a->pair[0] != b->pair[0])
|
||||||
|
return a->pair[0] < b->pair[0] ? -1 : +1;
|
||||||
|
else
|
||||||
|
return a->pair[1] < b->pair[1] ? -1 :
|
||||||
|
a->pair[1] > b->pair[1] ? +1 :
|
||||||
|
0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
fribidi_bsearch (const void *key, const void *base,
|
||||||
|
unsigned int nmemb, unsigned int size,
|
||||||
|
int (*compar)(const void *_key, const void *_item))
|
||||||
|
{
|
||||||
|
int min = 0, max = (int) nmemb - 1;
|
||||||
|
while (min <= max)
|
||||||
|
{
|
||||||
|
int mid = ((unsigned int) min + (unsigned int) max) / 2;
|
||||||
|
const void *p = (const void *) (((const char *) base) + (mid * size));
|
||||||
|
int c = compar (key, p);
|
||||||
|
if (c < 0)
|
||||||
|
max = mid - 1;
|
||||||
|
else if (c > 0)
|
||||||
|
min = mid + 1;
|
||||||
|
else
|
||||||
|
return (void *) p;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FriBidiChar
|
||||||
|
find_pair_match (const PairMap *table, int size, FriBidiChar first, FriBidiChar second)
|
||||||
|
{
|
||||||
|
PairMap *match;
|
||||||
|
PairMap x;
|
||||||
|
x.pair[0] = first;
|
||||||
|
x.pair[1] = second;
|
||||||
|
x.to = 0;
|
||||||
|
match = fribidi_bsearch (&x, table, size, sizeof (table[0]), comp_PairMap);
|
||||||
|
return match ? match->to : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PAIR_MATCH(table,len,first,second) \
|
||||||
|
((first)<(table[0].pair[0])||(first)>(table[len-1].pair[0])?0: \
|
||||||
|
find_pair_match(table, len, first, second))
|
||||||
|
|
||||||
|
static void
|
||||||
|
fribidi_shape_arabic_ligature (
|
||||||
|
/* input */
|
||||||
|
const PairMap *table,
|
||||||
|
int size,
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiArabicProp *ar_props,
|
||||||
|
FriBidiChar *str
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* TODO: This doesn't form ligatures for even-level Arabic text.
|
||||||
|
* no big problem though. */
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
|
||||||
|
for (i = 0; i < len - 1; i++) {
|
||||||
|
register FriBidiChar c;
|
||||||
|
if (FRIBIDI_LEVEL_IS_RTL(embedding_levels[i]) &&
|
||||||
|
embedding_levels[i] == embedding_levels[i+1] &&
|
||||||
|
(c = PAIR_MATCH(table, size, str[i], str[i+1])))
|
||||||
|
{
|
||||||
|
str[i] = FRIBIDI_CHAR_FILL;
|
||||||
|
FRIBIDI_SET_BITS(ar_props[i], FRIBIDI_MASK_LIGATURED);
|
||||||
|
str[i+1] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DO_LIGATURING(table, levels, len, ar_props, str) \
|
||||||
|
fribidi_shape_arabic_ligature ((table), sizeof(table)/sizeof((table)[0]), levels, len, ar_props, str)
|
||||||
|
|
||||||
|
#define DO_SHAPING(tablemacro, len, ar_props, str) \
|
||||||
|
fribidi_shape_arabic_joining (tablemacro(,), len, ar_props, str);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_shape_arabic (
|
||||||
|
/* input */
|
||||||
|
FriBidiFlags flags,
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiArabicProp *ar_props,
|
||||||
|
FriBidiChar *str
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DBG ("in fribidi_shape_arabic");
|
||||||
|
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0 || !str) return;
|
||||||
|
|
||||||
|
DBG ("in fribidi_shape");
|
||||||
|
|
||||||
|
fribidi_assert (ar_props);
|
||||||
|
|
||||||
|
if (FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_ARAB_PRES))
|
||||||
|
{
|
||||||
|
DO_SHAPING (FRIBIDI_GET_ARABIC_SHAPE_PRES, len, ar_props, str);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_ARAB_LIGA))
|
||||||
|
{
|
||||||
|
DO_LIGATURING (mandatory_liga_table, embedding_levels, len, ar_props, str);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE))
|
||||||
|
{
|
||||||
|
DO_LIGATURING (console_liga_table, embedding_levels, len, ar_props, str);
|
||||||
|
DO_SHAPING (FRIBIDI_GET_ARABIC_SHAPE_NSM, len, ar_props, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
81
3rd/fribidi/fribidi-arabic.h
Normal file
81
3rd/fribidi/fribidi-arabic.h
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/* fribidi-arabic.h - do Arabic shaping to presentation forms
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2005
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_ARABIC_H
|
||||||
|
#define _FRIBIDI_ARABIC_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-flags.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
#include "fribidi-joining.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_shape_arabic - do Arabic shaping
|
||||||
|
*
|
||||||
|
* The actual shaping that is done depends on the flags set. Only flags
|
||||||
|
* starting with FRIBIDI_FLAG_SHAPE_ARAB_ affect this function.
|
||||||
|
* Currently these are:
|
||||||
|
*
|
||||||
|
* * FRIBIDI_FLAG_SHAPE_MIRRORING: Do mirroring.
|
||||||
|
* * FRIBIDI_FLAG_SHAPE_ARAB_PRES: Shape Arabic characters to their
|
||||||
|
* presentation form glyphs.
|
||||||
|
* * FRIBIDI_FLAG_SHAPE_ARAB_LIGA: Form mandatory Arabic ligatures.
|
||||||
|
* * FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE: Perform additional Arabic shaping
|
||||||
|
* suitable for text rendered on
|
||||||
|
* grid terminals with no mark
|
||||||
|
* rendering capabilities.
|
||||||
|
*
|
||||||
|
* Of the above, FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE is only used in special
|
||||||
|
* cases, but the rest are recommended in any environment that doesn't have
|
||||||
|
* other means for doing Arabic shaping. The set of extra flags that enable
|
||||||
|
* this level of Arabic support has a shortcut named FRIBIDI_FLAGS_ARABIC.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_shape_arabic (
|
||||||
|
FriBidiFlags flags, /* shaping flags */
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiArabicProp *ar_props, /* input/output Arabic properties as
|
||||||
|
* computed by fribidi_join_arabic */
|
||||||
|
FriBidiChar *str /* string to shape */
|
||||||
|
);
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_ARABIC_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
3
3rd/fribidi/fribidi-begindecls.h
Normal file
3
3rd/fribidi/fribidi-begindecls.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#ifdef FRIBIDI_BEGIN_DECLS
|
||||||
|
FRIBIDI_BEGIN_DECLS
|
||||||
|
#endif /* FRIBIDI_BEGIN_DECLS */
|
96
3rd/fribidi/fribidi-bidi-types-list.h
Normal file
96
3rd/fribidi/fribidi-bidi-types-list.h
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#ifndef __FRIBIDI_DOC
|
||||||
|
/* FriBidi
|
||||||
|
* fribidi-bidi-types-list.h - list of bidi types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
#endif /* !__FRIBIDI_DOC */
|
||||||
|
#ifndef _FRIBIDI_ADD_TYPE
|
||||||
|
# define _FRIBIDI_ADD_TYPE(x,y)
|
||||||
|
#endif
|
||||||
|
#ifndef _FRIBIDI_ADD_ALIAS
|
||||||
|
# define _FRIBIDI_ADD_ALIAS(x1,x2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_FRIBIDI_PAR_TYPES) || defined(_FRIBIDI_ALL_TYPES)
|
||||||
|
|
||||||
|
_FRIBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right letter */
|
||||||
|
_FRIBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left letter */
|
||||||
|
_FRIBIDI_ADD_TYPE (AL, 'A') /* Arabic Letter */
|
||||||
|
_FRIBIDI_ADD_TYPE (EN, '1') /* European Numeral */
|
||||||
|
_FRIBIDI_ADD_TYPE (AN, '9') /* Arabic Numeral */
|
||||||
|
_FRIBIDI_ADD_TYPE (ES, 'w') /* European number Separator */
|
||||||
|
_FRIBIDI_ADD_TYPE (ET, 'w') /* European number Terminator */
|
||||||
|
_FRIBIDI_ADD_TYPE (CS, 'w') /* Common Separator */
|
||||||
|
_FRIBIDI_ADD_TYPE (NSM, '`') /* Non Spacing Mark */
|
||||||
|
_FRIBIDI_ADD_TYPE (BN, 'b') /* Boundary Neutral */
|
||||||
|
_FRIBIDI_ADD_TYPE (BS, 'B') /* Block Separator */
|
||||||
|
_FRIBIDI_ADD_TYPE (SS, 'S') /* Segment Separator */
|
||||||
|
_FRIBIDI_ADD_TYPE (WS, '_') /* WhiteSpace */
|
||||||
|
_FRIBIDI_ADD_TYPE (ON, 'n') /* Other Neutral */
|
||||||
|
_FRIBIDI_ADD_TYPE (LRE, '+') /* Left-to-Right Embedding */
|
||||||
|
_FRIBIDI_ADD_TYPE (RLE, '+') /* Right-to-Left Embedding */
|
||||||
|
_FRIBIDI_ADD_TYPE (LRO, '+') /* Left-to-Right Override */
|
||||||
|
_FRIBIDI_ADD_TYPE (RLO, '+') /* Right-to-Left Override */
|
||||||
|
_FRIBIDI_ADD_TYPE (PDF, '-') /* Pop Directional Flag */
|
||||||
|
_FRIBIDI_ADD_TYPE (LRI, '+') /* Left-to-Right Isolate */
|
||||||
|
_FRIBIDI_ADD_TYPE (RLI, '+') /* Right-to-Left Isolate */
|
||||||
|
_FRIBIDI_ADD_TYPE (FSI, '+') /* First-Strong Isolate */
|
||||||
|
_FRIBIDI_ADD_TYPE (PDI, '-') /* Pop Directional Isolate */
|
||||||
|
|
||||||
|
#if defined(_FRIBIDI_ADD_ALIAS)
|
||||||
|
_FRIBIDI_ADD_ALIAS (L, LTR)
|
||||||
|
_FRIBIDI_ADD_ALIAS (R, RTL)
|
||||||
|
_FRIBIDI_ADD_ALIAS (B, BS)
|
||||||
|
_FRIBIDI_ADD_ALIAS (S, SS)
|
||||||
|
#endif /* _FRIBIDI_ADD_ALIAS */
|
||||||
|
|
||||||
|
#if defined(_FRIBIDI_SENTINEL_TYPE) || defined(_FRIBIDI_ALL_TYPES)
|
||||||
|
_FRIBIDI_ADD_TYPE (SENTINEL, '$') /* SENTINEL */
|
||||||
|
#endif /* _FRIBIDI_SENTINEL_TYPES || _FRIBIDI_ALL_TYPES*/
|
||||||
|
#endif /* !_FRIBIDI_PAR_TYPES || _FRIBIDI_ALL_TYPES */
|
||||||
|
|
||||||
|
#if defined(_FRIBIDI_PAR_TYPES) || defined(_FRIBIDI_ALL_TYPES)
|
||||||
|
# if !defined(_FRIBIDI_ALL_TYPES)
|
||||||
|
_FRIBIDI_ADD_TYPE (LTR, 'L') /* Left-To-Right paragraph */
|
||||||
|
_FRIBIDI_ADD_TYPE (RTL, 'R') /* Right-To-Left paragraph */
|
||||||
|
_FRIBIDI_ADD_TYPE (ON, 'n') /* directiOn-Neutral paragraph */
|
||||||
|
# endif /* !_FRIBIDI_ALL_TYPES */
|
||||||
|
_FRIBIDI_ADD_TYPE (WLTR, 'l') /* Weak Left To Right paragraph */
|
||||||
|
_FRIBIDI_ADD_TYPE (WRTL, 'r') /* Weak Right To Left paragraph */
|
||||||
|
#endif /* _FRIBIDI_PAR_TYPES || _FRIBIDI_ALL_TYPES*/
|
||||||
|
|
||||||
|
#if defined(_FRIBIDI_ENUM_TYPES)
|
||||||
|
typedef enum {
|
||||||
|
# define _FRIBIDI_ADD_TYPE _FRIBIDI_ENUM_ADD_TYPE
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
_FRIBIDI_TYPES_MAX
|
||||||
|
} _FRIBIDI_ENUM_TYPES
|
||||||
|
#endif /* _FRIBIDI_ENUM_TYPES */
|
||||||
|
|
||||||
|
#ifndef __FRIBIDI_DOC
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
#endif /* !__FRIBIDI_DOC */
|
119
3rd/fribidi/fribidi-bidi-types.c
Normal file
119
3rd/fribidi/fribidi-bidi-types.c
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-bidi-types.c - character bidi types
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-bidi-types.h>
|
||||||
|
|
||||||
|
#include "bidi-types.h"
|
||||||
|
|
||||||
|
enum FriBidiCharTypeLinearEnum
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) TYPE,
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
_FRIBIDI_NUM_TYPES
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "bidi-type.tab.i"
|
||||||
|
|
||||||
|
/* Map FriBidiCharTypeLinearEnum to FriBidiCharType. */
|
||||||
|
static const FriBidiCharType linear_enum_to_char_type[] = {
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) FRIBIDI_TYPE_##TYPE,
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
};
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_bidi_type (
|
||||||
|
/* input */
|
||||||
|
FriBidiChar ch
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return linear_enum_to_char_type[FRIBIDI_GET_BIDI_TYPE (ch)];
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_get_bidi_types (
|
||||||
|
/* input */
|
||||||
|
const FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* output */
|
||||||
|
FriBidiCharType *btypes
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i = len;
|
||||||
|
for (; i; i--)
|
||||||
|
{
|
||||||
|
*btypes++ = linear_enum_to_char_type[FRIBIDI_GET_BIDI_TYPE (*str)];
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY const char *
|
||||||
|
fribidi_get_bidi_type_name (
|
||||||
|
/* input */
|
||||||
|
FriBidiCharType t
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch ((int)t)
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) case FRIBIDI_TYPE_##TYPE: return STRINGIZE(TYPE);
|
||||||
|
# define _FRIBIDI_ALL_TYPES
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ALL_TYPES
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
default:
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
char
|
||||||
|
fribidi_char_from_bidi_type (
|
||||||
|
/* input */
|
||||||
|
FriBidiCharType t
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch ((int)t)
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) case FRIBIDI_TYPE_##TYPE: return SYMBOL;
|
||||||
|
# define _FRIBIDI_ALL_TYPES
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ALL_TYPES
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
default:
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
405
3rd/fribidi/fribidi-bidi-types.h
Normal file
405
3rd/fribidi/fribidi-bidi-types.h
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-bidi-types.h - character bidi types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_BIDI_TYPES_H
|
||||||
|
#define _FRIBIDI_BIDI_TYPES_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
typedef signed char FriBidiLevel;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define bit masks that bidi types are based on, each mask has
|
||||||
|
* only one bit set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* RTL mask better be the least significant bit. */
|
||||||
|
#define FRIBIDI_MASK_RTL 0x00000001L /* Is right to left */
|
||||||
|
#define FRIBIDI_MASK_ARABIC 0x00000002L /* Is arabic */
|
||||||
|
|
||||||
|
/* Each char can be only one of the three following. */
|
||||||
|
#define FRIBIDI_MASK_STRONG 0x00000010L /* Is strong */
|
||||||
|
#define FRIBIDI_MASK_WEAK 0x00000020L /* Is weak */
|
||||||
|
#define FRIBIDI_MASK_NEUTRAL 0x00000040L /* Is neutral */
|
||||||
|
#define FRIBIDI_MASK_SENTINEL 0x00000080L /* Is sentinel */
|
||||||
|
/* Sentinels are not valid chars, just identify the start/end of strings. */
|
||||||
|
|
||||||
|
/* Each char can be only one of the six following. */
|
||||||
|
#define FRIBIDI_MASK_LETTER 0x00000100L /* Is letter: L, R, AL */
|
||||||
|
#define FRIBIDI_MASK_NUMBER 0x00000200L /* Is number: EN, AN */
|
||||||
|
#define FRIBIDI_MASK_NUMSEPTER 0x00000400L /* Is separator or terminator: ES, ET, CS */
|
||||||
|
#define FRIBIDI_MASK_SPACE 0x00000800L /* Is space: BN, BS, SS, WS */
|
||||||
|
#define FRIBIDI_MASK_EXPLICIT 0x00001000L /* Is explicit mark: LRE, RLE, LRO, RLO, PDF */
|
||||||
|
#define FRIBIDI_MASK_ISOLATE 0x00008000L /* Is isolate mark: LRI, RLI, FSI, PDI */
|
||||||
|
|
||||||
|
/* Can be set only if FRIBIDI_MASK_SPACE is also set. */
|
||||||
|
#define FRIBIDI_MASK_SEPARATOR 0x00002000L /* Is text separator: BS, SS */
|
||||||
|
/* Can be set only if FRIBIDI_MASK_EXPLICIT is also set. */
|
||||||
|
#define FRIBIDI_MASK_OVERRIDE 0x00004000L /* Is explicit override: LRO, RLO */
|
||||||
|
#define FRIBIDI_MASK_FIRST 0x02000000L /* Whether direction is determined by first strong */
|
||||||
|
|
||||||
|
|
||||||
|
/* The following exist to make types pairwise different, some of them can
|
||||||
|
* be removed but are here because of efficiency (make queries faster). */
|
||||||
|
|
||||||
|
#define FRIBIDI_MASK_ES 0x00010000L
|
||||||
|
#define FRIBIDI_MASK_ET 0x00020000L
|
||||||
|
#define FRIBIDI_MASK_CS 0x00040000L
|
||||||
|
|
||||||
|
#define FRIBIDI_MASK_NSM 0x00080000L
|
||||||
|
#define FRIBIDI_MASK_BN 0x00100000L
|
||||||
|
|
||||||
|
#define FRIBIDI_MASK_BS 0x00200000L
|
||||||
|
#define FRIBIDI_MASK_SS 0x00400000L
|
||||||
|
#define FRIBIDI_MASK_WS 0x00800000L
|
||||||
|
|
||||||
|
/* We reserve a single bit for user's private use: we will never use it. */
|
||||||
|
#define FRIBIDI_MASK_PRIVATE 0x01000000L
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define values for FriBidiCharType
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Strong types */
|
||||||
|
|
||||||
|
/* Left-To-Right letter */
|
||||||
|
#define FRIBIDI_TYPE_LTR_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER )
|
||||||
|
/* Right-To-Left letter */
|
||||||
|
#define FRIBIDI_TYPE_RTL_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER \
|
||||||
|
| FRIBIDI_MASK_RTL)
|
||||||
|
/* Arabic Letter */
|
||||||
|
#define FRIBIDI_TYPE_AL_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_LETTER \
|
||||||
|
| FRIBIDI_MASK_RTL | FRIBIDI_MASK_ARABIC )
|
||||||
|
/* Left-to-Right Embedding */
|
||||||
|
#define FRIBIDI_TYPE_LRE_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT)
|
||||||
|
/* Right-to-Left Embedding */
|
||||||
|
#define FRIBIDI_TYPE_RLE_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \
|
||||||
|
| FRIBIDI_MASK_RTL )
|
||||||
|
/* Left-to-Right Override */
|
||||||
|
#define FRIBIDI_TYPE_LRO_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \
|
||||||
|
| FRIBIDI_MASK_OVERRIDE )
|
||||||
|
/* Right-to-Left Override */
|
||||||
|
#define FRIBIDI_TYPE_RLO_VAL ( FRIBIDI_MASK_STRONG | FRIBIDI_MASK_EXPLICIT \
|
||||||
|
| FRIBIDI_MASK_RTL | FRIBIDI_MASK_OVERRIDE )
|
||||||
|
|
||||||
|
/* Weak types */
|
||||||
|
|
||||||
|
/* Pop Directional Flag*/
|
||||||
|
#define FRIBIDI_TYPE_PDF_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_EXPLICIT )
|
||||||
|
/* European Numeral */
|
||||||
|
#define FRIBIDI_TYPE_EN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMBER )
|
||||||
|
/* Arabic Numeral */
|
||||||
|
#define FRIBIDI_TYPE_AN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMBER \
|
||||||
|
| FRIBIDI_MASK_ARABIC )
|
||||||
|
/* European number Separator */
|
||||||
|
#define FRIBIDI_TYPE_ES_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \
|
||||||
|
| FRIBIDI_MASK_ES )
|
||||||
|
/* European number Terminator */
|
||||||
|
#define FRIBIDI_TYPE_ET_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \
|
||||||
|
| FRIBIDI_MASK_ET )
|
||||||
|
/* Common Separator */
|
||||||
|
#define FRIBIDI_TYPE_CS_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NUMSEPTER \
|
||||||
|
| FRIBIDI_MASK_CS )
|
||||||
|
/* Non Spacing Mark */
|
||||||
|
#define FRIBIDI_TYPE_NSM_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_NSM )
|
||||||
|
/* Boundary Neutral */
|
||||||
|
#define FRIBIDI_TYPE_BN_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_SPACE \
|
||||||
|
| FRIBIDI_MASK_BN )
|
||||||
|
|
||||||
|
/* Neutral types */
|
||||||
|
|
||||||
|
/* Block Separator */
|
||||||
|
#define FRIBIDI_TYPE_BS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \
|
||||||
|
| FRIBIDI_MASK_SEPARATOR | FRIBIDI_MASK_BS )
|
||||||
|
/* Segment Separator */
|
||||||
|
#define FRIBIDI_TYPE_SS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \
|
||||||
|
| FRIBIDI_MASK_SEPARATOR | FRIBIDI_MASK_SS )
|
||||||
|
/* WhiteSpace */
|
||||||
|
#define FRIBIDI_TYPE_WS_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_SPACE \
|
||||||
|
| FRIBIDI_MASK_WS )
|
||||||
|
/* Other Neutral */
|
||||||
|
#define FRIBIDI_TYPE_ON_VAL ( FRIBIDI_MASK_NEUTRAL )
|
||||||
|
|
||||||
|
|
||||||
|
/* The following are used in specifying paragraph direction only. */
|
||||||
|
|
||||||
|
/* Weak Left-To-Right */
|
||||||
|
#define FRIBIDI_TYPE_WLTR_VAL ( FRIBIDI_MASK_WEAK )
|
||||||
|
/* Weak Right-To-Left */
|
||||||
|
#define FRIBIDI_TYPE_WRTL_VAL ( FRIBIDI_MASK_WEAK | FRIBIDI_MASK_RTL )
|
||||||
|
|
||||||
|
/* start or end of text (run list) SENTINEL. Only used internally */
|
||||||
|
#define FRIBIDI_TYPE_SENTINEL ( FRIBIDI_MASK_SENTINEL )
|
||||||
|
|
||||||
|
/* Private types for applications. More private types can be obtained by
|
||||||
|
* summing up from this one. */
|
||||||
|
#define FRIBIDI_TYPE_PRIVATE ( FRIBIDI_MASK_PRIVATE )
|
||||||
|
|
||||||
|
|
||||||
|
/* New types in Unicode 6.3 */
|
||||||
|
|
||||||
|
/* Left-to-Right Isolate */
|
||||||
|
#define FRIBIDI_TYPE_LRI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE )
|
||||||
|
/* Right-to-Left Isolate */
|
||||||
|
#define FRIBIDI_TYPE_RLI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_RTL )
|
||||||
|
/* First strong isolate */
|
||||||
|
#define FRIBIDI_TYPE_FSI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_FIRST )
|
||||||
|
|
||||||
|
/* Pop Directional Isolate*/
|
||||||
|
#define FRIBIDI_TYPE_PDI_VAL ( FRIBIDI_MASK_NEUTRAL | FRIBIDI_MASK_WEAK | FRIBIDI_MASK_ISOLATE )
|
||||||
|
|
||||||
|
/* Define Enums only if sizeof(int) == 4 (UTF-32), and not compiling C++.
|
||||||
|
* The problem with C++ is that then casts between int32 and enum will fail!
|
||||||
|
*/
|
||||||
|
#if defined(__FRIBIDI_DOC) || (FRIBIDI_SIZEOF_INT+0 == 4 && !defined(__cplusplus))
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \
|
||||||
|
FRIBIDI_TYPE_##TYPE = FRIBIDI_TYPE_##TYPE##_VAL,
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
_FRIBIDI_TYPE_SENTINEL = FRIBIDI_TYPE_SENTINEL /* Don't use this */
|
||||||
|
} FriBidiCharType;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_PAR_TYPES
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \
|
||||||
|
FRIBIDI_PAR_##TYPE = FRIBIDI_TYPE_##TYPE##_VAL,
|
||||||
|
# include "fribidi-bidi-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
# undef _FRIBIDI_PAR_TYPES
|
||||||
|
_FRIBIDI_PAR_SENTINEL = FRIBIDI_TYPE_SENTINEL /* Don't use this */
|
||||||
|
} FriBidiParType;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
typedef uint32_t FriBidiCharType;
|
||||||
|
# define FRIBIDI_TYPE_LTR FRIBIDI_TYPE_LTR_VAL
|
||||||
|
# define FRIBIDI_TYPE_RTL FRIBIDI_TYPE_RTL_VAL
|
||||||
|
# define FRIBIDI_TYPE_AL FRIBIDI_TYPE_AL_VAL
|
||||||
|
# define FRIBIDI_TYPE_EN FRIBIDI_TYPE_EN_VAL
|
||||||
|
# define FRIBIDI_TYPE_AN FRIBIDI_TYPE_AN_VAL
|
||||||
|
# define FRIBIDI_TYPE_ES FRIBIDI_TYPE_ES_VAL
|
||||||
|
# define FRIBIDI_TYPE_ET FRIBIDI_TYPE_ET_VAL
|
||||||
|
# define FRIBIDI_TYPE_CS FRIBIDI_TYPE_CS_VAL
|
||||||
|
# define FRIBIDI_TYPE_NSM FRIBIDI_TYPE_NSM_VAL
|
||||||
|
# define FRIBIDI_TYPE_BN FRIBIDI_TYPE_BN_VAL
|
||||||
|
# define FRIBIDI_TYPE_BS FRIBIDI_TYPE_BS_VAL
|
||||||
|
# define FRIBIDI_TYPE_SS FRIBIDI_TYPE_SS_VAL
|
||||||
|
# define FRIBIDI_TYPE_WS FRIBIDI_TYPE_WS_VAL
|
||||||
|
# define FRIBIDI_TYPE_ON FRIBIDI_TYPE_ON_VAL
|
||||||
|
# define FRIBIDI_TYPE_LRE FRIBIDI_TYPE_LRE_VAL
|
||||||
|
# define FRIBIDI_TYPE_RLE FRIBIDI_TYPE_RLE_VAL
|
||||||
|
# define FRIBIDI_TYPE_LRO FRIBIDI_TYPE_LRO_VAL
|
||||||
|
# define FRIBIDI_TYPE_RLO FRIBIDI_TYPE_RLO_VAL
|
||||||
|
# define FRIBIDI_TYPE_PDF FRIBIDI_TYPE_PDF_VAL
|
||||||
|
# define FRIBIDI_TYPE_LRI FRIBIDI_TYPE_LRI_VAL
|
||||||
|
# define FRIBIDI_TYPE_RLI FRIBIDI_TYPE_RLI_VAL
|
||||||
|
# define FRIBIDI_TYPE_FSI FRIBIDI_TYPE_FSI_VAL
|
||||||
|
# define FRIBIDI_TYPE_PDI FRIBIDI_TYPE_PDI_VAL
|
||||||
|
|
||||||
|
typedef uint32_t FriBidiParType;
|
||||||
|
# define FRIBIDI_PAR_LTR FRIBIDI_TYPE_LTR_VAL
|
||||||
|
# define FRIBIDI_PAR_RTL FRIBIDI_TYPE_RTL_VAL
|
||||||
|
# define FRIBIDI_PAR_ON FRIBIDI_TYPE_ON_VAL
|
||||||
|
# define FRIBIDI_PAR_WLTR FRIBIDI_TYPE_WLTR_VAL
|
||||||
|
# define FRIBIDI_PAR_WRTL FRIBIDI_TYPE_WRTL_VAL
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Please don't use these two type names, use FRIBIDI_PAR_* form instead. */
|
||||||
|
#define FRIBIDI_TYPE_WLTR FRIBIDI_PAR_WLTR
|
||||||
|
#define FRIBIDI_TYPE_WRTL FRIBIDI_PAR_WRTL
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defining macros for needed queries, It is fully dependent on the
|
||||||
|
* implementation of FriBidiCharType.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Is right-to-left level? */
|
||||||
|
#define FRIBIDI_LEVEL_IS_RTL(lev) ((lev) & 1)
|
||||||
|
|
||||||
|
/* Return the bidi type corresponding to the direction of the level number,
|
||||||
|
FRIBIDI_TYPE_LTR for evens and FRIBIDI_TYPE_RTL for odds. */
|
||||||
|
#define FRIBIDI_LEVEL_TO_DIR(lev) \
|
||||||
|
(FRIBIDI_LEVEL_IS_RTL (lev) ? FRIBIDI_TYPE_RTL : FRIBIDI_TYPE_LTR)
|
||||||
|
|
||||||
|
/* Return the minimum level of the direction, 0 for FRIBIDI_TYPE_LTR and
|
||||||
|
1 for FRIBIDI_TYPE_RTL and FRIBIDI_TYPE_AL. */
|
||||||
|
#define FRIBIDI_DIR_TO_LEVEL(dir) \
|
||||||
|
((FriBidiLevel) (FRIBIDI_IS_RTL (dir) ? 1 : 0))
|
||||||
|
|
||||||
|
/* Is right to left: RTL, AL, RLE, RLO? */
|
||||||
|
#define FRIBIDI_IS_RTL(p) ((p) & FRIBIDI_MASK_RTL)
|
||||||
|
/* Is arabic: AL, AN? */
|
||||||
|
#define FRIBIDI_IS_ARABIC(p) ((p) & FRIBIDI_MASK_ARABIC)
|
||||||
|
|
||||||
|
/* Is strong? */
|
||||||
|
#define FRIBIDI_IS_STRONG(p) ((p) & FRIBIDI_MASK_STRONG)
|
||||||
|
/* Is weak? */
|
||||||
|
#define FRIBIDI_IS_WEAK(p) ((p) & FRIBIDI_MASK_WEAK)
|
||||||
|
/* Is neutral? */
|
||||||
|
#define FRIBIDI_IS_NEUTRAL(p) ((p) & FRIBIDI_MASK_NEUTRAL)
|
||||||
|
/* Is sentinel? */
|
||||||
|
#define FRIBIDI_IS_SENTINEL(p) ((p) & FRIBIDI_MASK_SENTINEL)
|
||||||
|
|
||||||
|
/* Is letter: L, R, AL? */
|
||||||
|
#define FRIBIDI_IS_LETTER(p) ((p) & FRIBIDI_MASK_LETTER)
|
||||||
|
/* Is number: EN, AN? */
|
||||||
|
#define FRIBIDI_IS_NUMBER(p) ((p) & FRIBIDI_MASK_NUMBER)
|
||||||
|
/* Is number separator or terminator: ES, ET, CS? */
|
||||||
|
#define FRIBIDI_IS_NUMBER_SEPARATOR_OR_TERMINATOR(p) \
|
||||||
|
((p) & FRIBIDI_MASK_NUMSEPTER)
|
||||||
|
/* Is space: BN, BS, SS, WS? */
|
||||||
|
#define FRIBIDI_IS_SPACE(p) ((p) & FRIBIDI_MASK_SPACE)
|
||||||
|
/* Is explicit mark: LRE, RLE, LRO, RLO, PDF? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT(p) ((p) & FRIBIDI_MASK_EXPLICIT)
|
||||||
|
/* Is isolator */
|
||||||
|
#define FRIBIDI_IS_ISOLATE(p) ((p) & FRIBIDI_MASK_ISOLATE)
|
||||||
|
|
||||||
|
/* Is text separator: BS, SS? */
|
||||||
|
#define FRIBIDI_IS_SEPARATOR(p) ((p) & FRIBIDI_MASK_SEPARATOR)
|
||||||
|
|
||||||
|
/* Is explicit override: LRO, RLO? */
|
||||||
|
#define FRIBIDI_IS_OVERRIDE(p) ((p) & FRIBIDI_MASK_OVERRIDE)
|
||||||
|
|
||||||
|
/* Some more: */
|
||||||
|
|
||||||
|
/* Is left to right letter: LTR? */
|
||||||
|
#define FRIBIDI_IS_LTR_LETTER(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL) == FRIBIDI_MASK_LETTER)
|
||||||
|
|
||||||
|
/* Is right to left letter: RTL, AL? */
|
||||||
|
#define FRIBIDI_IS_RTL_LETTER(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL) \
|
||||||
|
== (FRIBIDI_MASK_LETTER | FRIBIDI_MASK_RTL))
|
||||||
|
|
||||||
|
/* Is ES or CS: ES, CS? */
|
||||||
|
#define FRIBIDI_IS_ES_OR_CS(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_ES | FRIBIDI_MASK_CS))
|
||||||
|
|
||||||
|
/* Is explicit or BN: LRE, RLE, LRO, RLO, PDF, BN? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT_OR_BN(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN))
|
||||||
|
|
||||||
|
/* Is explicit or BN or NSM: LRE, RLE, LRO, RLO, PDF, BN, NSM? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT_OR_BN_OR_NSM(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN | FRIBIDI_MASK_NSM))
|
||||||
|
|
||||||
|
/* Is explicit or BN or NSM: LRE, RLE, LRO, RLO, PDF, BN, NSM? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT_OR_ISOLATE_OR_BN_OR_NSM(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_ISOLATE | FRIBIDI_MASK_BN | FRIBIDI_MASK_NSM))
|
||||||
|
|
||||||
|
/* Is explicit or BN or WS: LRE, RLE, LRO, RLO, PDF, BN, WS? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT_OR_BN_OR_WS(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_BN | FRIBIDI_MASK_WS))
|
||||||
|
|
||||||
|
/* Is explicit or separator or BN or WS: LRE, RLE, LRO, RLO, PDF, BS, SS, BN, WS? */
|
||||||
|
#define FRIBIDI_IS_EXPLICIT_OR_SEPARATOR_OR_BN_OR_WS(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_EXPLICIT | FRIBIDI_MASK_SEPARATOR \
|
||||||
|
| FRIBIDI_MASK_BN | FRIBIDI_MASK_WS))
|
||||||
|
|
||||||
|
/* Is private-use type for application? */
|
||||||
|
#define FRIBIDI_IS_PRIVATE(p) ((p) & FRIBIDI_MASK_PRIVATE)
|
||||||
|
|
||||||
|
/* Define some conversions. */
|
||||||
|
|
||||||
|
/* Change numbers to RTL: EN,AN -> RTL. */
|
||||||
|
#define FRIBIDI_CHANGE_NUMBER_TO_RTL(p) \
|
||||||
|
(FRIBIDI_IS_NUMBER(p) ? FRIBIDI_TYPE_RTL : (p))
|
||||||
|
|
||||||
|
/* Override status of an explicit mark:
|
||||||
|
* LRO,LRE->LTR, RLO,RLE->RTL, otherwise->ON. */
|
||||||
|
#define FRIBIDI_EXPLICIT_TO_OVERRIDE_DIR(p) \
|
||||||
|
(FRIBIDI_IS_OVERRIDE(p) ? FRIBIDI_LEVEL_TO_DIR(FRIBIDI_DIR_TO_LEVEL(p)) \
|
||||||
|
: FRIBIDI_TYPE_ON)
|
||||||
|
|
||||||
|
/* Weaken type for paragraph fallback purposes:
|
||||||
|
* LTR->WLTR, RTL->WRTL. */
|
||||||
|
#define FRIBIDI_WEAK_PARAGRAPH(p) (FRIBIDI_PAR_WLTR | ((p) & FRIBIDI_MASK_RTL))
|
||||||
|
|
||||||
|
|
||||||
|
/* Functions finally */
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_get_bidi_type - get character bidi type
|
||||||
|
*
|
||||||
|
* This function returns the bidi type of a character as defined in Table 3.7
|
||||||
|
* Bidirectional Character Types of the Unicode Bidirectional Algorithm
|
||||||
|
* available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types, using
|
||||||
|
* data provided in file UnicodeData.txt of the Unicode Character Database
|
||||||
|
* available at http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
|
||||||
|
*
|
||||||
|
* There are a few macros defined in fribidi-bidi-types.h for querying a bidi
|
||||||
|
* type.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_bidi_type (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
) FRIBIDI_GNUC_CONST;
|
||||||
|
|
||||||
|
/* fribidi_get_bidi_types - get bidi types for an string of characters
|
||||||
|
*
|
||||||
|
* This function finds the bidi types of an string of characters. See
|
||||||
|
* fribidi_get_bidi_type() for more information about the bidi types returned
|
||||||
|
* by this function.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void fribidi_get_bidi_types (
|
||||||
|
const FriBidiChar *str, /* input string */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiCharType *btypes /* output bidi types */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_get_bidi_type_name - get bidi type name
|
||||||
|
*
|
||||||
|
* This function returns the bidi type name of a character type. The
|
||||||
|
* returned string is a static string and should not be freed.
|
||||||
|
*
|
||||||
|
* The type names are the same as ones defined in Table 3.7 Bidirectional
|
||||||
|
* Character Types of the Unicode Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types, with a
|
||||||
|
* few modifications: L->LTR, R->RTL, B->BS, S->SS.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY const char *fribidi_get_bidi_type_name (
|
||||||
|
FriBidiCharType t /* input bidi type */
|
||||||
|
) FRIBIDI_GNUC_CONST;
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_BIDI_TYPES_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
1569
3rd/fribidi/fribidi-bidi.c
Normal file
1569
3rd/fribidi/fribidi-bidi.c
Normal file
File diff suppressed because it is too large
Load Diff
142
3rd/fribidi/fribidi-bidi.h
Normal file
142
3rd/fribidi/fribidi-bidi.h
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-bidi.h - bidirectional algorithm
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999,2000 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_BIDI_H
|
||||||
|
#define _FRIBIDI_BIDI_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-flags.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* fribidi_get_par_direction - get base paragraph direction
|
||||||
|
*
|
||||||
|
* This function finds the base direction of a single paragraph,
|
||||||
|
* as defined by rule P2 of the Unicode Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#P2.
|
||||||
|
*
|
||||||
|
* You typically do not need this function as
|
||||||
|
* fribidi_get_par_embedding_levels() knows how to compute base direction
|
||||||
|
* itself, but you may need this to implement a more sophisticated paragraph
|
||||||
|
* direction handling. Note that you can pass more than a paragraph to this
|
||||||
|
* function and the direction of the first non-neutral paragraph is returned,
|
||||||
|
* which is a very good heuristic to set direction of the neutral paragraphs
|
||||||
|
* at the beginning of text. For other neutral paragraphs, you better use the
|
||||||
|
* direction of the previous paragraph.
|
||||||
|
*
|
||||||
|
* Returns: Base pargraph direction. No weak paragraph direction is returned,
|
||||||
|
* only LTR, RTL, or ON.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiParType fribidi_get_par_direction (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len /* input string length */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_get_par_embedding_levels_ex - get bidi embedding levels of a paragraph
|
||||||
|
*
|
||||||
|
* This function finds the bidi embedding levels of a single paragraph,
|
||||||
|
* as defined by the Unicode Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/. This function implements rules P2 to
|
||||||
|
* I1 inclusive, and parts 1 to 3 of L1, except for rule X9 which is
|
||||||
|
* implemented in fribidi_remove_bidi_marks(). Part 4 of L1 is implemented
|
||||||
|
* in fribidi_reorder_line().
|
||||||
|
*
|
||||||
|
* There are a few macros defined in fribidi-bidi-types.h to work with this
|
||||||
|
* embedding levels.
|
||||||
|
*
|
||||||
|
* Returns: Maximum level found plus one, or zero if any error occurred
|
||||||
|
* (memory allocation failure most probably).
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_get_par_embedding_levels_ex (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiBracketType *bracket_types, /* input list of bracket types as returned by
|
||||||
|
fribidi_get_bracket_types() */
|
||||||
|
const FriBidiStrIndex len, /* input string length of the paragraph */
|
||||||
|
FriBidiParType *pbase_dir, /* requested and resolved paragraph
|
||||||
|
* base direction */
|
||||||
|
FriBidiLevel *embedding_levels /* output list of embedding levels */
|
||||||
|
) FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
/* fribidi_reorder_line - reorder a line of logical string to visual
|
||||||
|
*
|
||||||
|
* This function reorders the characters in a line of text from logical to
|
||||||
|
* final visual order. This function implements part 4 of rule L1, and rules
|
||||||
|
* L2 and L3 of the Unicode Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels.
|
||||||
|
*
|
||||||
|
* As a side effect it also sets position maps if not NULL.
|
||||||
|
*
|
||||||
|
* You should provide the resolved paragraph direction and embedding levels as
|
||||||
|
* set by fribidi_get_par_embedding_levels(). Also note that the embedding
|
||||||
|
* levels may change a bit. To be exact, the embedding level of any sequence
|
||||||
|
* of white space at the end of line is reset to the paragraph embedding level
|
||||||
|
* (That is part 4 of rule L1).
|
||||||
|
*
|
||||||
|
* Note that the bidi types and embedding levels are not reordered. You can
|
||||||
|
* reorder these (or any other) arrays using the map later. The user is
|
||||||
|
* responsible to initialize map to something sensible, like an identity
|
||||||
|
* mapping, or pass NULL if no map is needed.
|
||||||
|
*
|
||||||
|
* There is an optional part to this function, which is whether non-spacing
|
||||||
|
* marks for right-to-left parts of the text should be reordered to come after
|
||||||
|
* their base characters in the visual string or not. Most rendering engines
|
||||||
|
* expect this behavior, but console-based systems for example do not like it.
|
||||||
|
* This is controlled by the FRIBIDI_FLAG_REORDER_NSM flag. The flag is on
|
||||||
|
* in FRIBIDI_FLAGS_DEFAULT.
|
||||||
|
*
|
||||||
|
* Returns: Maximum level found in this line plus one, or zero if any error
|
||||||
|
* occurred (memory allocation failure most probably).
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel fribidi_reorder_line (
|
||||||
|
FriBidiFlags flags, /* reorder flags */
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len, /* input length of the line */
|
||||||
|
const FriBidiStrIndex off, /* input offset of the beginning of the line
|
||||||
|
in the paragraph */
|
||||||
|
const FriBidiParType base_dir, /* resolved paragraph base direction */
|
||||||
|
FriBidiLevel *embedding_levels, /* input list of embedding levels,
|
||||||
|
as returned by
|
||||||
|
fribidi_get_par_embedding_levels */
|
||||||
|
FriBidiChar *visual_str, /* visual string to reorder */
|
||||||
|
FriBidiStrIndex *map /* a map of string indices which is reordered
|
||||||
|
* to reflect where each glyph ends up. */
|
||||||
|
) FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_BIDI_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
107
3rd/fribidi/fribidi-brackets.c
Normal file
107
3rd/fribidi/fribidi-brackets.c
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
/* fribidi-brackets.c - get bracketed character
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001, 2002, 2004 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999, 2000, 2017 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000, 2017
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-brackets.h>
|
||||||
|
|
||||||
|
#include "brackets.tab.i"
|
||||||
|
#include "brackets-type.tab.i"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define FRIBIDI_TYPE_BRACKET_OPEN 2
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiBracketType
|
||||||
|
fribidi_get_bracket (
|
||||||
|
/* input */
|
||||||
|
FriBidiChar ch
|
||||||
|
)
|
||||||
|
{
|
||||||
|
FriBidiBracketType bracket_type;
|
||||||
|
register uint8_t char_type = FRIBIDI_GET_BRACKET_TYPE (ch);
|
||||||
|
|
||||||
|
/* The bracket type from the table may be:
|
||||||
|
0 - Not a bracket
|
||||||
|
1 - a bracket
|
||||||
|
2 - closing.
|
||||||
|
|
||||||
|
This will be recodeded into the FriBidiBracketType as having a
|
||||||
|
bracket_id = 0 if the character is not a bracket.
|
||||||
|
*/
|
||||||
|
fribidi_boolean is_open = false;
|
||||||
|
|
||||||
|
if (char_type == 0)
|
||||||
|
bracket_type = FRIBIDI_NO_BRACKET;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
is_open = (char_type & FRIBIDI_TYPE_BRACKET_OPEN) != 0;
|
||||||
|
bracket_type = FRIBIDI_GET_BRACKETS (ch) & FRIBIDI_BRACKET_ID_MASK;
|
||||||
|
}
|
||||||
|
if (is_open)
|
||||||
|
bracket_type |= FRIBIDI_BRACKET_OPEN_MASK;
|
||||||
|
|
||||||
|
return bracket_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_get_bracket_types (
|
||||||
|
/* input */
|
||||||
|
const FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
const FriBidiCharType *types,
|
||||||
|
/* output */
|
||||||
|
FriBidiBracketType *btypes
|
||||||
|
)
|
||||||
|
{
|
||||||
|
FriBidiStrIndex i;
|
||||||
|
for (i=0; i<len; i++)
|
||||||
|
{
|
||||||
|
/* Optimization that bracket must be of types ON */
|
||||||
|
if (*types == FRIBIDI_TYPE_ON)
|
||||||
|
*btypes = fribidi_get_bracket (*str);
|
||||||
|
else
|
||||||
|
*btypes = FRIBIDI_NO_BRACKET;
|
||||||
|
|
||||||
|
btypes++;
|
||||||
|
types++;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
89
3rd/fribidi/fribidi-brackets.h
Normal file
89
3rd/fribidi/fribidi-brackets.h
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/* fribidi-brackets.h - get bracket character property
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001, 2002, 2004 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999, 2000, 2017 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000, 2017
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_BRACKETS_H
|
||||||
|
#define _FRIBIDI_BRACKETS_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* fribidi_get_bracket - get bracketed character
|
||||||
|
*
|
||||||
|
* This function finds the bracketed equivalent of a character as defined in
|
||||||
|
* the file BidiBrackets.txt of the Unicode Character Database available at
|
||||||
|
* http://www.unicode.org/Public/UNIDATA/BidiBrackets.txt.
|
||||||
|
*
|
||||||
|
* If the input character is a declared as a brackets character in the
|
||||||
|
* Unicode standard and has a bracketed equivalent. The matching bracketed
|
||||||
|
* character is put in the output, otherwise the input character itself is
|
||||||
|
* put.
|
||||||
|
*
|
||||||
|
* Returns: The bracket type of the character. Use the
|
||||||
|
* FRIBIDI_IS_BRACKET(FriBidiBracketType) to test if it is a valid
|
||||||
|
* property.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiBracketType fribidi_get_bracket (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_get_bracket_types - get bracketed characters
|
||||||
|
*
|
||||||
|
* This function finds the bracketed characters of an string of characters.
|
||||||
|
* See fribidi_get_bracket() for more information about the bracketed
|
||||||
|
* characters returned by this function.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_get_bracket_types (
|
||||||
|
const FriBidiChar *str, /* input string */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
const FriBidiCharType *types, /* input bidi types */
|
||||||
|
FriBidiBracketType *btypes /* output bracketed characters */
|
||||||
|
);
|
||||||
|
|
||||||
|
#define FRIBIDI_BRACKET_OPEN_MASK 0x80000000
|
||||||
|
#define FRIBIDI_BRACKET_ID_MASK 0x7fffffff
|
||||||
|
#define FRIBIDI_IS_BRACKET_OPEN(bt) ((bt & FRIBIDI_BRACKET_OPEN_MASK)>0)
|
||||||
|
#define FRIBIDI_BRACKET_ID(bt) ((bt & FRIBIDI_BRACKET_ID_MASK))
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_BRACKETS_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
158
3rd/fribidi/fribidi-common.h
Normal file
158
3rd/fribidi/fribidi-common.h
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-common.h - common include for library headers
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_COMMON_H
|
||||||
|
#define _FRIBIDI_COMMON_H
|
||||||
|
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
#ifdef DONT_HAVE_FRIBIDI_CONFIG_H
|
||||||
|
# define FRIBIDI "fribidi"
|
||||||
|
# define FRIBIDI_NAME "fribidi"
|
||||||
|
# define FRIBIDI_VERSION "unknown"
|
||||||
|
# define FRIBIDI_BUGREPORT "unknown"
|
||||||
|
# define FRIBIDI_INTERFACE_VERSION_STRING "unknown"
|
||||||
|
#else /* !DONT_HAVE_FRIBIDI_CONFIG_H */
|
||||||
|
# include "fribidi-config.h"
|
||||||
|
#endif /* !DONT_HAVE_FRIBIDI_CONFIG_H */
|
||||||
|
|
||||||
|
#ifdef HAVE_FRIBIDI_CUSTOM_H
|
||||||
|
# include <fribidi-custom.h>
|
||||||
|
#endif /* HAVE_FRIBIDI_CUSTOM_H */
|
||||||
|
|
||||||
|
|
||||||
|
/* FRIBIDI_ENTRY is a macro used to declare library entry points. */
|
||||||
|
#ifndef FRIBIDI_LIB_STATIC
|
||||||
|
# ifdef _WIN32
|
||||||
|
# ifdef FRIBIDI_BUILD
|
||||||
|
# define FRIBIDI_ENTRY __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define FRIBIDI_ENTRY __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# elif (defined(__SUNPRO_C) || defined(__SUNPRO_CC))
|
||||||
|
# define FRIBIDI_ENTRY __global
|
||||||
|
# else
|
||||||
|
# if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__ICC)
|
||||||
|
# define FRIBIDI_ENTRY __attribute__ ((visibility("default")))
|
||||||
|
# else
|
||||||
|
# define FRIBIDI_ENTRY
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# ifndef FRIBIDI_ENTRY
|
||||||
|
# define FRIBIDI_ENTRY
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FRIBIDI_EXTERN extern
|
||||||
|
|
||||||
|
#ifdef __ICC
|
||||||
|
#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma ("warning (push)") \
|
||||||
|
_Pragma ("warning (disable:1478)")
|
||||||
|
#define FRIBIDI_END_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma ("warning (pop)")
|
||||||
|
#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
|
||||||
|
#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma ("GCC diagnostic push") \
|
||||||
|
_Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
|
||||||
|
#define FRIBIDI_END_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma ("GCC diagnostic pop")
|
||||||
|
#elif defined (_MSC_VER) && (_MSC_VER >= 1500)
|
||||||
|
#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \
|
||||||
|
__pragma (warning (push)) \
|
||||||
|
__pragma (warning (disable : 4996))
|
||||||
|
#define FRIBIDI_END_IGNORE_DEPRECATIONS \
|
||||||
|
__pragma (warning (pop))
|
||||||
|
#elif defined (__clang__)
|
||||||
|
#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma("clang diagnostic push") \
|
||||||
|
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
|
||||||
|
#define FRIBIDI_END_IGNORE_DEPRECATIONS \
|
||||||
|
_Pragma("clang diagnostic pop")
|
||||||
|
#else
|
||||||
|
#define FRIBIDI_BEGIN_IGNORE_DEPRECATIONS
|
||||||
|
#define FRIBIDI_END_IGNORE_DEPRECATIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(__GNUC__) && (__GNUC__ > 2)) && ! defined(_WIN32)
|
||||||
|
# define FRIBIDI_GNUC_WARN_UNUSED __attribute__((__warn_unused_result__))
|
||||||
|
# define FRIBIDI_GNUC_MALLOC __attribute__((__malloc__))
|
||||||
|
# define FRIBIDI_GNUC_HIDDEN __attribute__((__visibility__ ("hidden")))
|
||||||
|
# define FRIBIDI_GNUC_CONST __attribute__((__const__))
|
||||||
|
# define FRIBIDI_GNUC_DEPRECATED __attribute__((__unused__))
|
||||||
|
#else /* __GNUC__ */
|
||||||
|
# define FRIBIDI_GNUC_WARN_UNUSED
|
||||||
|
# define FRIBIDI_GNUC_MALLOC
|
||||||
|
# define FRIBIDI_GNUC_HIDDEN
|
||||||
|
# define FRIBIDI_GNUC_CONST
|
||||||
|
# define FRIBIDI_GNUC_DEPRECATED
|
||||||
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
/* FRIBIDI_BEGIN_DECLS should be used at the beginning of your declarations,
|
||||||
|
* so that C++ compilers don't mangle their names. Use FRIBIDI_END_DECLS at
|
||||||
|
* the end of C declarations. */
|
||||||
|
#ifndef FRIBIDI_BEGIN_DECLS
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define FRIBIDI_BEGIN_DECLS extern "C" {
|
||||||
|
# define FRIBIDI_END_DECLS }
|
||||||
|
# else /* !__cplusplus */
|
||||||
|
# define FRIBIDI_BEGIN_DECLS /* empty */
|
||||||
|
# define FRIBIDI_END_DECLS /* empty */
|
||||||
|
# endif /* !__cplusplus */
|
||||||
|
#endif /* !FRIBIDI_BEGIN_DECLS */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_debug_status - get current debug state
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY int fribidi_debug_status (
|
||||||
|
void
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_set_debug - set debug state
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY int
|
||||||
|
fribidi_set_debug (
|
||||||
|
int state /* new state to set */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_COMMON_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
26
3rd/fribidi/fribidi-config.h
Normal file
26
3rd/fribidi/fribidi-config.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* lib/fribidi-config.h. Generated from fribidi-config.h.in by configure. */
|
||||||
|
/* Not copyrighted, in public domain. */
|
||||||
|
#ifndef FRIBIDI_CONFIG_H
|
||||||
|
#define FRIBIDI_CONFIG_H
|
||||||
|
|
||||||
|
#define FRIBIDI "fribidi"
|
||||||
|
#define FRIBIDI_NAME "GNU FriBidi"
|
||||||
|
#define FRIBIDI_BUGREPORT "https://github.com/fribidi/fribidi/issues/new"
|
||||||
|
|
||||||
|
#define FRIBIDI_VERSION "1.0.10"
|
||||||
|
#define FRIBIDI_MAJOR_VERSION 1
|
||||||
|
#define FRIBIDI_MINOR_VERSION 0
|
||||||
|
#define FRIBIDI_MICRO_VERSION 10
|
||||||
|
#define FRIBIDI_INTERFACE_VERSION 4
|
||||||
|
#define FRIBIDI_INTERFACE_VERSION_STRING "4"
|
||||||
|
|
||||||
|
/* The size of a `int', as computed by sizeof. */
|
||||||
|
#define FRIBIDI_SIZEOF_INT 4
|
||||||
|
|
||||||
|
/* Define if fribidi was built with MSVC */
|
||||||
|
#undef FRIBIDI_BUILT_WITH_MSVC
|
||||||
|
|
||||||
|
#define HAVE_STRINGIZE 1
|
||||||
|
#define FRIBIDI_LIB_STATIC 1
|
||||||
|
|
||||||
|
#endif /* FRIBIDI_CONFIG_H */
|
23
3rd/fribidi/fribidi-config.h.in
Normal file
23
3rd/fribidi/fribidi-config.h.in
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* @configure_input@ */
|
||||||
|
/* Not copyrighted, in public domain. */
|
||||||
|
#ifndef FRIBIDI_CONFIG_H
|
||||||
|
#define FRIBIDI_CONFIG_H
|
||||||
|
|
||||||
|
#define FRIBIDI "@PACKAGE@"
|
||||||
|
#define FRIBIDI_NAME "@PACKAGE_NAME@"
|
||||||
|
#define FRIBIDI_BUGREPORT "@PACKAGE_BUGREPORT@"
|
||||||
|
|
||||||
|
#define FRIBIDI_VERSION "@FRIBIDI_VERSION@"
|
||||||
|
#define FRIBIDI_MAJOR_VERSION @FRIBIDI_MAJOR_VERSION@
|
||||||
|
#define FRIBIDI_MINOR_VERSION @FRIBIDI_MINOR_VERSION@
|
||||||
|
#define FRIBIDI_MICRO_VERSION @FRIBIDI_MICRO_VERSION@
|
||||||
|
#define FRIBIDI_INTERFACE_VERSION @FRIBIDI_INTERFACE_VERSION@
|
||||||
|
#define FRIBIDI_INTERFACE_VERSION_STRING "@FRIBIDI_INTERFACE_VERSION@"
|
||||||
|
|
||||||
|
/* The size of a `int', as computed by sizeof. */
|
||||||
|
#define FRIBIDI_SIZEOF_INT @SIZEOF_INT@
|
||||||
|
|
||||||
|
/* Define if fribidi was built with MSVC */
|
||||||
|
@FRIBIDI_MSVC_BUILD_PLACEHOLDER@
|
||||||
|
|
||||||
|
#endif /* FRIBIDI_CONFIG_H */
|
134
3rd/fribidi/fribidi-deprecated.c
Normal file
134
3rd/fribidi/fribidi-deprecated.c
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-deprecated.c - deprecated interfaces.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999,2000 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#undef FRIBIDI_NO_DEPRECATED
|
||||||
|
|
||||||
|
#include <fribidi-deprecated.h>
|
||||||
|
#include <fribidi.h>
|
||||||
|
|
||||||
|
#ifdef FRIBIDI_NO_DEPRECATED
|
||||||
|
#else
|
||||||
|
|
||||||
|
static FriBidiFlags flags = FRIBIDI_FLAGS_DEFAULT | FRIBIDI_FLAGS_ARABIC;
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_set_mirroring (
|
||||||
|
/* input */
|
||||||
|
fribidi_boolean state
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FRIBIDI_ADJUST_AND_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_MIRRORING, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_mirroring_status (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_MIRRORING);
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_set_reorder_nsm (
|
||||||
|
/* input */
|
||||||
|
fribidi_boolean state
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FRIBIDI_ADJUST_AND_TEST_BITS (flags, FRIBIDI_FLAG_REORDER_NSM, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
fribidi_boolean
|
||||||
|
fribidi_reorder_nsm_status (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_REORDER_NSM);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_log2vis_get_embedding_levels (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len, /* input string length of the paragraph */
|
||||||
|
FriBidiParType *pbase_dir, /* requested and resolved paragraph
|
||||||
|
* base direction */
|
||||||
|
FriBidiLevel *embedding_levels /* output list of embedding levels */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return fribidi_get_par_embedding_levels_ex (bidi_types, NULL, len, pbase_dir, embedding_levels);
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_type (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return fribidi_get_bidi_type (ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_type_internal (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return fribidi_get_bidi_type (ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_get_par_embedding_levels (
|
||||||
|
/* input */
|
||||||
|
const FriBidiCharType *bidi_types,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiParType *pbase_dir,
|
||||||
|
/* output */
|
||||||
|
FriBidiLevel *embedding_levels
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return fribidi_get_par_embedding_levels_ex (/* input */
|
||||||
|
bidi_types,
|
||||||
|
NULL, /* No bracket_types */
|
||||||
|
len,
|
||||||
|
/* input and output */
|
||||||
|
pbase_dir,
|
||||||
|
/* output */
|
||||||
|
embedding_levels);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !FRIBIDI_NO_DEPRECATED */
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
175
3rd/fribidi/fribidi-deprecated.h
Normal file
175
3rd/fribidi/fribidi-deprecated.h
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-deprecated.h - Deprecated interfaces
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004, 2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2004, 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_DEPRECATED_H
|
||||||
|
#define _FRIBIDI_DEPRECATED_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_mirroring_status - get current mirroring status
|
||||||
|
*
|
||||||
|
* This function is deprecated and only used with other deprecated functions.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean fribidi_mirroring_status (
|
||||||
|
void
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
/* fribidi_set_mirroring - set mirroring on or off
|
||||||
|
*
|
||||||
|
* This function is used to turn character mirroring on or off.
|
||||||
|
* Character mirroring is the act of replacing a mirrorable glyph
|
||||||
|
* (character), eg. left parenthesis, with the matching glyph,
|
||||||
|
* eg. right parenthesis, in a right-to-left resolved context.
|
||||||
|
* If your rendering engine does mirroring itself, you may want to
|
||||||
|
* turn it off here.
|
||||||
|
*
|
||||||
|
* This flag is on by default.
|
||||||
|
* This function is deprecated and only used with other deprecated functions.
|
||||||
|
*
|
||||||
|
* Returns: the new mirroring status.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean fribidi_set_mirroring (
|
||||||
|
fribidi_boolean state /* new state to set */
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_reorder_nsm_status - get current marks reordering status
|
||||||
|
*
|
||||||
|
* This function is deprecated and only used with other deprecated functions.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean fribidi_reorder_nsm_status (
|
||||||
|
void
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
/* fribidi_set_reorder_nsm - set marks reordering on or off
|
||||||
|
*
|
||||||
|
* This function is used to turn non-spacing marks reordering on or
|
||||||
|
* off. Reordering non-spacing marks is the act of placing non-spacing
|
||||||
|
* marks (bidi class NSM) after their base character in a right-to-left
|
||||||
|
* resolved context. If your rendering engine expects non-spacing marks
|
||||||
|
* always after the base character in the memory representation of the
|
||||||
|
* visual string, you need this option on. An example of where people
|
||||||
|
* may need it off is when rendering in the console when non-spacing
|
||||||
|
* marks cannot be applied on top of the base character.
|
||||||
|
*
|
||||||
|
* This flag is on by default.
|
||||||
|
* This function is deprecated and only used with other deprecated functions.
|
||||||
|
*
|
||||||
|
* Returns: the new marks reordering status.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean fribidi_set_reorder_nsm (
|
||||||
|
fribidi_boolean state /* new state to set */
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_log2vis_get_embedding_levels - get embedding levels
|
||||||
|
*
|
||||||
|
* Deprecated. Replaced by fribidi_get_par_embedding_levels_ex.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_log2vis_get_embedding_levels (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len, /* input string length of the paragraph */
|
||||||
|
FriBidiParType *pbase_dir, /* requested and resolved paragraph
|
||||||
|
* base direction */
|
||||||
|
FriBidiLevel *embedding_levels /* output list of embedding levels */
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
/* fribidi_get_type - get character bidi type
|
||||||
|
*
|
||||||
|
* Deprecated. Replaced by fribidi_get_bidi_type.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_type (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
/* fribidi_get_type_internal - get character bidi type
|
||||||
|
*
|
||||||
|
* Deprecated. Replaced by fribidi_get_bidi_type.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiCharType
|
||||||
|
fribidi_get_type_internal (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
) FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
/* fribidi_get_par_embedding_levels - get bidi embedding levels of a paragraph
|
||||||
|
*
|
||||||
|
* Deprecated interface to fribidi_get_par_embedding_levels_ex(). Refer to
|
||||||
|
* it for documentation.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_get_par_embedding_levels (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len, /* input string length of the paragraph */
|
||||||
|
FriBidiParType *pbase_dir, /* requested and resolved paragraph
|
||||||
|
* base direction */
|
||||||
|
FriBidiLevel *embedding_levels /* output list of embedding levels */
|
||||||
|
)
|
||||||
|
FRIBIDI_GNUC_WARN_UNUSED FRIBIDI_GNUC_DEPRECATED;
|
||||||
|
|
||||||
|
#define UNI_MAX_BIDI_LEVEL FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL
|
||||||
|
#define UNI_LRM FRIBIDI_CHAR_LRM
|
||||||
|
#define UNI_RLM FRIBIDI_CHAR_RLM
|
||||||
|
#define UNI_LRE FRIBIDI_CHAR_LRE
|
||||||
|
#define UNI_RLE FRIBIDI_CHAR_RLE
|
||||||
|
#define UNI_LRO FRIBIDI_CHAR_LRO
|
||||||
|
#define UNI_RLO FRIBIDI_CHAR_RLO
|
||||||
|
#define UNI_LS FRIBIDI_CHAR_LS
|
||||||
|
#define UNI_PS FRIBIDI_CHAR_PS
|
||||||
|
#define UNI_ZWNJ FRIBIDI_CHAR_ZWNJ
|
||||||
|
#define UNI_ZWJ FRIBIDI_CHAR_ZWJ
|
||||||
|
#define UNI_HEBREW_ALEF FRIBIDI_CHAR_HEBREW_ALEF
|
||||||
|
#define UNI_ARABIC_ALEF FRIBIDI_CHAR_ARABIC_ALEF
|
||||||
|
#define UNI_ARABIC_ZERO FRIBIDI_CHAR_ARABIC_ZERO
|
||||||
|
#define UNI_FARSI_ZERO FRIBIDI_CHAR_PERSIAN_ZERO
|
||||||
|
|
||||||
|
#define FRIBIDI_TYPE_WL FRIBIDI_PAR_WLTR
|
||||||
|
#define FRIBIDI_TYPE_WR FRIBIDI_PAR_WRTL
|
||||||
|
#define FRIBIDI_TYPE_L FRIBIDI_PAR_LTR
|
||||||
|
#define FRIBIDI_TYPE_R FRIBIDI_PAR_RTL
|
||||||
|
#define FRIBIDI_TYPE_N FRIBIDI_PAR_ON
|
||||||
|
#define FRIBIDI_TYPE_B FRIBIDI_TYPE_BS
|
||||||
|
#define FRIBIDI_TYPE_S FRIBIDI_TYPE_SS
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_DEPRECATED_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
3
3rd/fribidi/fribidi-enddecls.h
Normal file
3
3rd/fribidi/fribidi-enddecls.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#ifdef FRIBIDI_END_DECLS
|
||||||
|
FRIBIDI_END_DECLS
|
||||||
|
#endif /* FRIBIDI_END_DECLS */
|
72
3rd/fribidi/fribidi-flags.h
Normal file
72
3rd/fribidi/fribidi-flags.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-flags.h - option flags
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_FLAGS_H
|
||||||
|
#define _FRIBIDI_FLAGS_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
typedef uint32_t FriBidiFlags;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define option flags that various functions use. Each mask has
|
||||||
|
* only one bit set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FRIBIDI_FLAG_SHAPE_MIRRORING 0x00000001
|
||||||
|
#define FRIBIDI_FLAG_REORDER_NSM 0x00000002
|
||||||
|
|
||||||
|
#define FRIBIDI_FLAG_SHAPE_ARAB_PRES 0x00000100
|
||||||
|
#define FRIBIDI_FLAG_SHAPE_ARAB_LIGA 0x00000200
|
||||||
|
#define FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE 0x00000400
|
||||||
|
|
||||||
|
#define FRIBIDI_FLAG_REMOVE_BIDI 0x00010000
|
||||||
|
#define FRIBIDI_FLAG_REMOVE_JOINING 0x00020000
|
||||||
|
#define FRIBIDI_FLAG_REMOVE_SPECIALS 0x00040000
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* And their combinations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FRIBIDI_FLAGS_DEFAULT ( \
|
||||||
|
FRIBIDI_FLAG_SHAPE_MIRRORING | \
|
||||||
|
FRIBIDI_FLAG_REORDER_NSM | \
|
||||||
|
FRIBIDI_FLAG_REMOVE_SPECIALS )
|
||||||
|
|
||||||
|
#define FRIBIDI_FLAGS_ARABIC ( \
|
||||||
|
FRIBIDI_FLAG_SHAPE_ARAB_PRES | \
|
||||||
|
FRIBIDI_FLAG_SHAPE_ARAB_LIGA )
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_FLAGS_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
44
3rd/fribidi/fribidi-joining-types-list.h
Normal file
44
3rd/fribidi/fribidi-joining-types-list.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#ifndef __FRIBIDI_DOC
|
||||||
|
/* FriBidi
|
||||||
|
* fribidi-joining-types-list.h - list of joining types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2004 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
#endif /* !__FRIBIDI_DOC */
|
||||||
|
#ifndef _FRIBIDI_ADD_TYPE
|
||||||
|
# define _FRIBIDI_ADD_TYPE(x,y)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_FRIBIDI_ADD_TYPE (U, '|') /* nUn-joining, e.g. Full Stop */
|
||||||
|
_FRIBIDI_ADD_TYPE (R, '<') /* Right-joining, e.g. Arabic Letter Dal */
|
||||||
|
_FRIBIDI_ADD_TYPE (D, '+') /* Dual-joining, e.g. Arabic Letter Ain */
|
||||||
|
_FRIBIDI_ADD_TYPE (C, '-') /* join-Causing, e.g. Tatweel, ZWJ */
|
||||||
|
_FRIBIDI_ADD_TYPE (T, '^') /* Transparent, e.g. Arabic Fatha */
|
||||||
|
_FRIBIDI_ADD_TYPE (L, '>') /* Left-joining, i.e. fictional */
|
||||||
|
_FRIBIDI_ADD_TYPE (G, '~') /* iGnored, e.g. LRE, RLE, ZWNBSP */
|
||||||
|
|
||||||
|
#ifndef __FRIBIDI_DOC
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
#endif /* !__FRIBIDI_DOC */
|
112
3rd/fribidi/fribidi-joining-types.c
Normal file
112
3rd/fribidi/fribidi-joining-types.c
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-joining-types.c - character joining types
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-joining-types.h>
|
||||||
|
|
||||||
|
#include "joining-types.h"
|
||||||
|
|
||||||
|
enum FriBidiJoiningTypeShortEnum
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) TYPE = FRIBIDI_JOINING_TYPE_##TYPE,
|
||||||
|
# include "fribidi-joining-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
_FRIBIDI_NUM_TYPES
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "joining-type.tab.i"
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiJoiningType
|
||||||
|
fribidi_get_joining_type (
|
||||||
|
/* input */
|
||||||
|
FriBidiChar ch
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FRIBIDI_GET_JOINING_TYPE (ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_get_joining_types (
|
||||||
|
/* input */
|
||||||
|
const FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* output */
|
||||||
|
FriBidiJoiningType *jtypes
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i = len;
|
||||||
|
for (; i; i--)
|
||||||
|
{
|
||||||
|
*jtypes++ = FRIBIDI_GET_JOINING_TYPE (*str);
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY const char *
|
||||||
|
fribidi_get_joining_type_name (
|
||||||
|
/* input */
|
||||||
|
FriBidiJoiningType j
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch (j)
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) case FRIBIDI_JOINING_TYPE_##TYPE: return STRINGIZE(TYPE);
|
||||||
|
# include "fribidi-joining-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
default:
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
char
|
||||||
|
fribidi_char_from_joining_type (
|
||||||
|
/* input */
|
||||||
|
FriBidiJoiningType j,
|
||||||
|
fribidi_boolean visual
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* switch left and right if on visual run */
|
||||||
|
if (visual & ((FRIBIDI_JOINS_RIGHT (j) && !FRIBIDI_JOINS_LEFT (j)) |
|
||||||
|
(!FRIBIDI_JOINS_RIGHT (j) && FRIBIDI_JOINS_LEFT (j))))
|
||||||
|
j ^= FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT;
|
||||||
|
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \
|
||||||
|
if (FRIBIDI_IS_JOINING_TYPE_##TYPE(j)) return SYMBOL;
|
||||||
|
# include "fribidi-joining-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
249
3rd/fribidi/fribidi-joining-types.h
Normal file
249
3rd/fribidi/fribidi-joining-types.h
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-joining-types.h - character joining types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_JOINING_TYPES_H
|
||||||
|
#define _FRIBIDI_JOINING_TYPES_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define bit masks that joining types are based on, each mask has
|
||||||
|
* only one bit set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FRIBIDI_MASK_JOINS_RIGHT 0x01 /* May join to right */
|
||||||
|
#define FRIBIDI_MASK_JOINS_LEFT 0x02 /* May join to right */
|
||||||
|
#define FRIBIDI_MASK_ARAB_SHAPES 0x04 /* May Arabic shape */
|
||||||
|
#define FRIBIDI_MASK_TRANSPARENT 0x08 /* Is transparent */
|
||||||
|
#define FRIBIDI_MASK_IGNORED 0x10 /* Is ignored */
|
||||||
|
#define FRIBIDI_MASK_LIGATURED 0x20 /* Is ligatured */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define values for FriBidiJoiningType
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* nUn-joining */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_U_VAL ( 0 )
|
||||||
|
|
||||||
|
/* Right-joining */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_R_VAL \
|
||||||
|
( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_ARAB_SHAPES )
|
||||||
|
|
||||||
|
/* Dual-joining */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_D_VAL \
|
||||||
|
( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \
|
||||||
|
| FRIBIDI_MASK_ARAB_SHAPES )
|
||||||
|
|
||||||
|
/* join-Causing */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_C_VAL \
|
||||||
|
( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT )
|
||||||
|
|
||||||
|
/* Left-joining */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_L_VAL \
|
||||||
|
( FRIBIDI_MASK_JOINS_LEFT | FRIBIDI_MASK_ARAB_SHAPES )
|
||||||
|
|
||||||
|
/* Transparent */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_T_VAL \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_ARAB_SHAPES )
|
||||||
|
|
||||||
|
/* iGnored */
|
||||||
|
#define FRIBIDI_JOINING_TYPE_G_VAL ( FRIBIDI_MASK_IGNORED )
|
||||||
|
|
||||||
|
|
||||||
|
enum _FriBidiJoiningTypeEnum
|
||||||
|
{
|
||||||
|
# define _FRIBIDI_ADD_TYPE(TYPE,SYMBOL) \
|
||||||
|
FRIBIDI_JOINING_TYPE_##TYPE = FRIBIDI_JOINING_TYPE_##TYPE##_VAL,
|
||||||
|
# include "fribidi-joining-types-list.h"
|
||||||
|
# undef _FRIBIDI_ADD_TYPE
|
||||||
|
_FRIBIDI_JOINING_TYPE_JUNK /* Don't use this */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __FRIBIDI_DOC
|
||||||
|
typedef enum _FriBidiJoiningTypeEnum FriBidiJoiningType;
|
||||||
|
#else /* !__FRIBIDI_DOC */
|
||||||
|
typedef uint8_t FriBidiJoiningType;
|
||||||
|
#endif /* !__FRIBIDI_DOC */
|
||||||
|
|
||||||
|
/* FriBidiArabicProp is essentially the same type as FriBidiJoiningType, but
|
||||||
|
* not limited to the few values returned by fribidi_get_joining_type. */
|
||||||
|
typedef uint8_t FriBidiArabicProp;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The equivalent of JoiningType values for ArabicProp
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Primary Arabic Joining Classes (Table 8-2) */
|
||||||
|
|
||||||
|
/* nUn-joining */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_U(p) \
|
||||||
|
( 0 == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) )
|
||||||
|
|
||||||
|
/* Right-joining */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_R(p) \
|
||||||
|
( FRIBIDI_MASK_JOINS_RIGHT == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) )
|
||||||
|
|
||||||
|
/* Dual-joining */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_D(p) \
|
||||||
|
( ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \
|
||||||
|
| FRIBIDI_MASK_ARAB_SHAPES ) == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \
|
||||||
|
| FRIBIDI_MASK_ARAB_SHAPES ) ) )
|
||||||
|
|
||||||
|
/* join-Causing */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_C(p) \
|
||||||
|
( ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT \
|
||||||
|
| FRIBIDI_MASK_ARAB_SHAPES ) ) )
|
||||||
|
|
||||||
|
/* Left-joining */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_L(p) \
|
||||||
|
( FRIBIDI_MASK_JOINS_LEFT == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ) ) )
|
||||||
|
|
||||||
|
/* Transparent */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_T(p) \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED ) ) )
|
||||||
|
|
||||||
|
/* iGnored */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_G(p) \
|
||||||
|
( FRIBIDI_MASK_IGNORED == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED ) ) )
|
||||||
|
|
||||||
|
/* and for Derived Arabic Joining Classes (Table 8-3) */
|
||||||
|
|
||||||
|
/* Right join-Causing */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_RC(p) \
|
||||||
|
( FRIBIDI_MASK_JOINS_RIGHT == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_RIGHT ) ) )
|
||||||
|
|
||||||
|
/* Left join-Causing */
|
||||||
|
#define FRIBIDI_IS_JOINING_TYPE_LC(p) \
|
||||||
|
( FRIBIDI_MASK_JOINS_LEFT == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_JOINS_LEFT ) ) )
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defining macros for needed queries, It is fully dependent on the
|
||||||
|
* implementation of FriBidiJoiningType.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Joins to right: R, D, C? */
|
||||||
|
#define FRIBIDI_JOINS_RIGHT(p) ((p) & FRIBIDI_MASK_JOINS_RIGHT)
|
||||||
|
|
||||||
|
/* Joins to left: L, D, C? */
|
||||||
|
#define FRIBIDI_JOINS_LEFT(p) ((p) & FRIBIDI_MASK_JOINS_LEFT)
|
||||||
|
|
||||||
|
/* May shape: R, D, L, T? */
|
||||||
|
#define FRIBIDI_ARAB_SHAPES(p) ((p) & FRIBIDI_MASK_ARAB_SHAPES)
|
||||||
|
|
||||||
|
/* Is skipped in joining: T, G? */
|
||||||
|
#define FRIBIDI_IS_JOIN_SKIPPED(p) \
|
||||||
|
((p) & (FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED))
|
||||||
|
|
||||||
|
/* Is base that will be shaped: R, D, L? */
|
||||||
|
#define FRIBIDI_IS_JOIN_BASE_SHAPES(p) \
|
||||||
|
( FRIBIDI_MASK_ARAB_SHAPES == ( (p) & \
|
||||||
|
( FRIBIDI_MASK_TRANSPARENT | FRIBIDI_MASK_IGNORED \
|
||||||
|
| FRIBIDI_MASK_ARAB_SHAPES ) ) )
|
||||||
|
|
||||||
|
#define FRIBIDI_JOINS_PRECEDING_MASK(level) \
|
||||||
|
(FRIBIDI_LEVEL_IS_RTL (level) ? FRIBIDI_MASK_JOINS_RIGHT \
|
||||||
|
: FRIBIDI_MASK_JOINS_LEFT)
|
||||||
|
|
||||||
|
#define FRIBIDI_JOINS_FOLLOWING_MASK(level) \
|
||||||
|
(FRIBIDI_LEVEL_IS_RTL (level) ? FRIBIDI_MASK_JOINS_LEFT \
|
||||||
|
: FRIBIDI_MASK_JOINS_RIGHT)
|
||||||
|
|
||||||
|
#define FRIBIDI_JOIN_SHAPE(p) \
|
||||||
|
((p) & ( FRIBIDI_MASK_JOINS_RIGHT | FRIBIDI_MASK_JOINS_LEFT ))
|
||||||
|
|
||||||
|
/* Functions finally */
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_get_joining_type - get character joining type
|
||||||
|
*
|
||||||
|
* This function returns the joining type of a character as defined in Table
|
||||||
|
* 8-2 Primary Arabic Joining Classes of the Unicode standard available at
|
||||||
|
* http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462, using data
|
||||||
|
* provided in file ArabicShaping.txt and UnicodeData.txt of the Unicode
|
||||||
|
* Character Database available at
|
||||||
|
* http://www.unicode.org/Public/UNIDATA/ArabicShaping.txt and
|
||||||
|
* http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
|
||||||
|
*
|
||||||
|
* There are a few macros defined in fribidi-joining-types.h for querying a
|
||||||
|
* joining type.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiJoiningType
|
||||||
|
fribidi_get_joining_type (
|
||||||
|
FriBidiChar ch /* input character */
|
||||||
|
) FRIBIDI_GNUC_CONST;
|
||||||
|
|
||||||
|
/* fribidi_get_joining_types - get joining types for an string of characters
|
||||||
|
*
|
||||||
|
* This function finds the joining types of an string of characters. See
|
||||||
|
* fribidi_get_joining_type for more information about the joining types
|
||||||
|
* returned by this function.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void fribidi_get_joining_types (
|
||||||
|
const FriBidiChar *str, /* input string */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiJoiningType *jtypes /* output joining types */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_get_joining_type_name - get joining type name
|
||||||
|
*
|
||||||
|
* This function returns the joining type name of a joining type. The
|
||||||
|
* returned string is a static string and should not be freed.
|
||||||
|
*
|
||||||
|
* The type names are the same as ones defined in Table 8-2 Primary Arabic
|
||||||
|
* Joining Classes of the Unicode standard available at
|
||||||
|
* http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY const char *fribidi_get_joining_type_name (
|
||||||
|
FriBidiJoiningType j /* input joining type */
|
||||||
|
) FRIBIDI_GNUC_CONST;
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_JOINING_TYPES_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
186
3rd/fribidi/fribidi-joining.c
Normal file
186
3rd/fribidi/fribidi-joining.c
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-joining.h - Arabic joining algorithm
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2004 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-joining.h>
|
||||||
|
|
||||||
|
#include "bidi-types.h"
|
||||||
|
#include "joining-types.h"
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
/*======================================================================
|
||||||
|
* For debugging, define some functions for printing joining types and
|
||||||
|
* properties.
|
||||||
|
*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_joining_types (
|
||||||
|
/* input */
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
const FriBidiJoiningType *jtypes
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
|
||||||
|
fribidi_assert (jtypes);
|
||||||
|
|
||||||
|
MSG (" Join. types: ");
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
MSG2 ("%c", fribidi_char_from_joining_type (jtypes[i],
|
||||||
|
!FRIBIDI_LEVEL_IS_RTL
|
||||||
|
(embedding_levels[i])));
|
||||||
|
MSG ("\n");
|
||||||
|
}
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
#define FRIBIDI_CONSISTENT_LEVEL(i) \
|
||||||
|
(FRIBIDI_IS_EXPLICIT_OR_BN (bidi_types[(i)]) \
|
||||||
|
? FRIBIDI_SENTINEL \
|
||||||
|
: embedding_levels[(i)])
|
||||||
|
|
||||||
|
#define FRIBIDI_LEVELS_MATCH(i, j) \
|
||||||
|
((i) == (j) || (i) == FRIBIDI_SENTINEL || (j) == FRIBIDI_SENTINEL)
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_join_arabic (
|
||||||
|
/* input */
|
||||||
|
const FriBidiCharType *bidi_types,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiArabicProp *ar_props
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0) return;
|
||||||
|
|
||||||
|
DBG ("in fribidi_join_arabic");
|
||||||
|
|
||||||
|
fribidi_assert (bidi_types);
|
||||||
|
fribidi_assert (embedding_levels);
|
||||||
|
fribidi_assert (ar_props);
|
||||||
|
|
||||||
|
# if DEBUG
|
||||||
|
if UNLIKELY
|
||||||
|
(fribidi_debug_status ())
|
||||||
|
{
|
||||||
|
print_joining_types (embedding_levels, len, ar_props);
|
||||||
|
}
|
||||||
|
# endif /* DEBUG */
|
||||||
|
|
||||||
|
/* The joining algorithm turned out very very dirty :(. That's what happens
|
||||||
|
* when you follow the standard which has never been implemented closely
|
||||||
|
* before.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 8.2 Arabic - Cursive Joining */
|
||||||
|
DBG ("Arabic cursive joining");
|
||||||
|
{
|
||||||
|
/* The following do not need to be initialized as long as joins is
|
||||||
|
* initialized to false. We just do to turn off compiler warnings. */
|
||||||
|
register FriBidiStrIndex saved = 0;
|
||||||
|
register FriBidiLevel saved_level = FRIBIDI_SENTINEL;
|
||||||
|
register fribidi_boolean saved_shapes = false;
|
||||||
|
register FriBidiArabicProp saved_joins_following_mask = 0;
|
||||||
|
|
||||||
|
register fribidi_boolean joins = false;
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
if (!FRIBIDI_IS_JOINING_TYPE_G (ar_props[i]))
|
||||||
|
{
|
||||||
|
register fribidi_boolean disjoin = false;
|
||||||
|
register fribidi_boolean shapes = FRIBIDI_ARAB_SHAPES (ar_props[i]);
|
||||||
|
register FriBidiLevel level = FRIBIDI_CONSISTENT_LEVEL (i);
|
||||||
|
|
||||||
|
if (joins && !FRIBIDI_LEVELS_MATCH (saved_level, level))
|
||||||
|
{
|
||||||
|
disjoin = true;
|
||||||
|
joins = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FRIBIDI_IS_JOIN_SKIPPED (ar_props[i]))
|
||||||
|
{
|
||||||
|
register const FriBidiArabicProp joins_preceding_mask =
|
||||||
|
FRIBIDI_JOINS_PRECEDING_MASK (level);
|
||||||
|
|
||||||
|
if (!joins)
|
||||||
|
{
|
||||||
|
if (shapes)
|
||||||
|
FRIBIDI_UNSET_BITS (ar_props[i], joins_preceding_mask);
|
||||||
|
}
|
||||||
|
else if (!FRIBIDI_TEST_BITS (ar_props[i], joins_preceding_mask))
|
||||||
|
{
|
||||||
|
disjoin = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex j;
|
||||||
|
/* This is a FriBidi extension: we set joining properties
|
||||||
|
* for skipped characters in between, so we can put NSMs on tatweel
|
||||||
|
* later if we want. Useful on console for example.
|
||||||
|
*/
|
||||||
|
for (j = saved + 1; j < i; j++)
|
||||||
|
FRIBIDI_SET_BITS (ar_props[j], joins_preceding_mask | saved_joins_following_mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (disjoin && saved_shapes)
|
||||||
|
FRIBIDI_UNSET_BITS (ar_props[saved], saved_joins_following_mask);
|
||||||
|
|
||||||
|
if (!FRIBIDI_IS_JOIN_SKIPPED (ar_props[i]))
|
||||||
|
{
|
||||||
|
saved = i;
|
||||||
|
saved_level = level;
|
||||||
|
saved_shapes = shapes;
|
||||||
|
saved_joins_following_mask =
|
||||||
|
FRIBIDI_JOINS_FOLLOWING_MASK (level);
|
||||||
|
joins =
|
||||||
|
FRIBIDI_TEST_BITS (ar_props[i], saved_joins_following_mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((joins) && saved_shapes)
|
||||||
|
FRIBIDI_UNSET_BITS (ar_props[saved], saved_joins_following_mask);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# if DEBUG
|
||||||
|
if UNLIKELY
|
||||||
|
(fribidi_debug_status ())
|
||||||
|
{
|
||||||
|
print_joining_types (embedding_levels, len, ar_props);
|
||||||
|
}
|
||||||
|
# endif /* DEBUG */
|
||||||
|
|
||||||
|
DBG ("leaving fribidi_join_arabic");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
74
3rd/fribidi/fribidi-joining.h
Normal file
74
3rd/fribidi/fribidi-joining.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-joining.h - Arabic joining algorithm
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2004 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_JOINING_H
|
||||||
|
#define _FRIBIDI_JOINING_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
#include "fribidi-joining-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* fribidi_join_arabic - do Arabic joining
|
||||||
|
*
|
||||||
|
* This function does the Arabic joining algorithm. Means, given Arabic
|
||||||
|
* joining types of the characters in ar_props (don't worry,
|
||||||
|
* FriBidiJoiningType can be casted to FriBidiArabicProp automagically), this
|
||||||
|
* function modifies this properties to grasp the effect of neighboring
|
||||||
|
* characters. You probably need this information later to do Arabic shaping.
|
||||||
|
*
|
||||||
|
* This function implements rules R1 to R7 inclusive (all rules) of the Arabic
|
||||||
|
* Cursive Joining algorithm of the Unicode standard as available at
|
||||||
|
* http://www.unicode.org/versions/Unicode4.0.0/ch08.pdf#G7462. It also
|
||||||
|
* interacts correctly with the bidirection algorithm as defined in Section
|
||||||
|
* 3.5 Shaping of the Unicode Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#Shaping.
|
||||||
|
*
|
||||||
|
* There are a few macros defined in fribidi-joining-types.h for querying the
|
||||||
|
* Arabic properties computed by this function.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void fribidi_join_arabic (
|
||||||
|
const FriBidiCharType *bidi_types, /* input list of bidi types as
|
||||||
|
returned by
|
||||||
|
fribidi_get_bidi_types() */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
const FriBidiLevel *embedding_levels, /* input list of embedding
|
||||||
|
levels, as returned by
|
||||||
|
fribidi_get_par_embedding_levels */
|
||||||
|
FriBidiArabicProp *ar_props /* Arabic properties to analyze, initialized by
|
||||||
|
joining types, as returned by
|
||||||
|
fribidi_get_joining_types */
|
||||||
|
);
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_JOINING_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
90
3rd/fribidi/fribidi-mirroring.c
Normal file
90
3rd/fribidi/fribidi-mirroring.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/* fribidi-mirroring.c - get mirrored character
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001, 2002, 2004 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999, 2000, 2017 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-mirroring.h>
|
||||||
|
|
||||||
|
#include "mirroring.tab.i"
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_get_mirror_char (
|
||||||
|
/* input */
|
||||||
|
FriBidiChar ch,
|
||||||
|
/* output */
|
||||||
|
FriBidiChar *mirrored_ch
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiChar result;
|
||||||
|
result = FRIBIDI_GET_MIRRORING (ch);
|
||||||
|
if (mirrored_ch)
|
||||||
|
*mirrored_ch = result;
|
||||||
|
return ch != result ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_shape_mirroring (
|
||||||
|
/* input */
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiChar *str
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
|
||||||
|
DBG ("in fribidi_shape_mirroring");
|
||||||
|
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0 || !str) return;
|
||||||
|
|
||||||
|
fribidi_assert (embedding_levels);
|
||||||
|
|
||||||
|
/* L4. Mirror all characters that are in odd levels and have mirrors. */
|
||||||
|
for (i = len - 1; i >= 0; i--)
|
||||||
|
if (FRIBIDI_LEVEL_IS_RTL (embedding_levels[i]))
|
||||||
|
{
|
||||||
|
FriBidiChar mirrored_ch;
|
||||||
|
|
||||||
|
if (fribidi_get_mirror_char (str[i], &mirrored_ch))
|
||||||
|
str[i] = mirrored_ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
86
3rd/fribidi/fribidi-mirroring.h
Normal file
86
3rd/fribidi/fribidi-mirroring.h
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/* fribidi-mirroring.h - get mirrored character
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001, 2002, 2004 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999, 2000, 2017 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This file is part of GNU FriBidi.
|
||||||
|
*
|
||||||
|
* GNU FriBidi is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GNU FriBidi 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with GNU FriBidi; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com> or write to
|
||||||
|
* Sharif FarsiWeb, Inc., PO Box 13445-389, Tehran, Iran.
|
||||||
|
*
|
||||||
|
* Author(s):
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_MIRRORING_H
|
||||||
|
#define _FRIBIDI_MIRRORING_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* fribidi_get_mirror_char - get mirrored character
|
||||||
|
*
|
||||||
|
* This function finds the mirrored equivalent of a character as defined in
|
||||||
|
* the file BidiMirroring.txt of the Unicode Character Database available at
|
||||||
|
* http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt.
|
||||||
|
*
|
||||||
|
* If the input character is a declared as a mirroring character in the
|
||||||
|
* Unicode standard and has a mirrored equivalent. The matching mirrored
|
||||||
|
* character is put in the output, otherwise the input character itself is
|
||||||
|
* put.
|
||||||
|
*
|
||||||
|
* Returns: if the character has a mirroring equivalent or not.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean fribidi_get_mirror_char (
|
||||||
|
FriBidiChar ch, /* input character */
|
||||||
|
FriBidiChar *mirrored_ch /* output mirrored character */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* fribidi_shape_mirroring - do mirroring shaping
|
||||||
|
*
|
||||||
|
* This functions replaces mirroring characters on right-to-left embeddings in
|
||||||
|
* string with their mirrored equivalent as returned by
|
||||||
|
* fribidi_get_mirror_char().
|
||||||
|
*
|
||||||
|
* This function implements rule L4 of the Unicode Bidirectional Algorithm
|
||||||
|
* available at http://www.unicode.org/reports/tr9/#L4.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void fribidi_shape_mirroring (
|
||||||
|
const FriBidiLevel *embedding_levels, /* input list of embedding
|
||||||
|
levels, as returned by
|
||||||
|
fribidi_get_par_embedding_levels */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiChar *str /* string to shape */
|
||||||
|
);
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_MIRRORING_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* Local Variables:
|
||||||
|
* mode: c
|
||||||
|
* c-basic-offset: 2
|
||||||
|
* indent-tabs-mode: t
|
||||||
|
* tab-width: 8
|
||||||
|
* End:
|
||||||
|
* vim: textwidth=78: autoindent: cindent: shiftwidth=2: tabstop=8:
|
||||||
|
*/
|
333
3rd/fribidi/fribidi-run.c
Normal file
333
3rd/fribidi/fribidi-run.c
Normal file
@ -0,0 +1,333 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-run.c - text run data type
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-bidi-types.h>
|
||||||
|
|
||||||
|
#include "run.h"
|
||||||
|
#include "bidi-types.h"
|
||||||
|
|
||||||
|
FriBidiRun *
|
||||||
|
new_run (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiRun *run;
|
||||||
|
|
||||||
|
run = fribidi_malloc (sizeof (FriBidiRun));
|
||||||
|
|
||||||
|
if LIKELY
|
||||||
|
(run)
|
||||||
|
{
|
||||||
|
run->len = run->pos = run->level = run->isolate_level = 0;
|
||||||
|
run->next = run->prev = run->prev_isolate = run->next_isolate = NULL;
|
||||||
|
}
|
||||||
|
return run;
|
||||||
|
}
|
||||||
|
|
||||||
|
FriBidiRun *
|
||||||
|
new_run_list (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiRun *run;
|
||||||
|
|
||||||
|
run = new_run ();
|
||||||
|
|
||||||
|
if LIKELY
|
||||||
|
(run)
|
||||||
|
{
|
||||||
|
run->type = FRIBIDI_TYPE_SENTINEL;
|
||||||
|
run->level = FRIBIDI_SENTINEL;
|
||||||
|
run->pos = FRIBIDI_SENTINEL;
|
||||||
|
run->len = FRIBIDI_SENTINEL;
|
||||||
|
run->next = run->prev = run;
|
||||||
|
}
|
||||||
|
|
||||||
|
return run;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
free_run_list (
|
||||||
|
FriBidiRun *run_list
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (!run_list)
|
||||||
|
return;
|
||||||
|
|
||||||
|
fribidi_validate_run_list (run_list);
|
||||||
|
|
||||||
|
{
|
||||||
|
register FriBidiRun *pp;
|
||||||
|
|
||||||
|
pp = run_list;
|
||||||
|
pp->prev->next = NULL;
|
||||||
|
while LIKELY
|
||||||
|
(pp)
|
||||||
|
{
|
||||||
|
register FriBidiRun *p;
|
||||||
|
|
||||||
|
p = pp;
|
||||||
|
pp = pp->next;
|
||||||
|
fribidi_free (p);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FriBidiRun *
|
||||||
|
run_list_encode_bidi_types (
|
||||||
|
/* input */
|
||||||
|
const FriBidiCharType *bidi_types,
|
||||||
|
const FriBidiBracketType *bracket_types,
|
||||||
|
const FriBidiStrIndex len
|
||||||
|
)
|
||||||
|
{
|
||||||
|
FriBidiRun *list, *last;
|
||||||
|
register FriBidiRun *run = NULL;
|
||||||
|
FriBidiStrIndex i;
|
||||||
|
|
||||||
|
fribidi_assert (bidi_types);
|
||||||
|
|
||||||
|
/* Create the list sentinel */
|
||||||
|
list = new_run_list ();
|
||||||
|
if UNLIKELY
|
||||||
|
(!list) return NULL;
|
||||||
|
last = list;
|
||||||
|
|
||||||
|
/* Scan over the character types */
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
register FriBidiCharType char_type = bidi_types[i];
|
||||||
|
register FriBidiBracketType bracket_type = FRIBIDI_NO_BRACKET;
|
||||||
|
if (bracket_types)
|
||||||
|
bracket_type = bracket_types[i];
|
||||||
|
|
||||||
|
if (char_type != last->type
|
||||||
|
|| bracket_type != FRIBIDI_NO_BRACKET /* Always separate bracket into single char runs! */
|
||||||
|
|| last->bracket_type != FRIBIDI_NO_BRACKET
|
||||||
|
|| FRIBIDI_IS_ISOLATE(char_type)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
run = new_run ();
|
||||||
|
if UNLIKELY
|
||||||
|
(!run) break;
|
||||||
|
run->type = char_type;
|
||||||
|
run->pos = i;
|
||||||
|
last->len = run->pos - last->pos;
|
||||||
|
last->next = run;
|
||||||
|
run->prev = last;
|
||||||
|
run->bracket_type = bracket_type;
|
||||||
|
last = run;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the circle */
|
||||||
|
last->len = len - last->pos;
|
||||||
|
last->next = list;
|
||||||
|
list->prev = last;
|
||||||
|
|
||||||
|
if UNLIKELY
|
||||||
|
(!run)
|
||||||
|
{
|
||||||
|
/* Memory allocation failed */
|
||||||
|
free_run_list (list);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fribidi_validate_run_list (list);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* override the run list 'base', with the runs in the list 'over', to
|
||||||
|
reinsert the previously-removed explicit codes (at X9) from
|
||||||
|
'explicits_list' back into 'type_rl_list' for example. This is used at the
|
||||||
|
end of I2 to restore the explicit marks, and also to reset the character
|
||||||
|
types of characters at L1.
|
||||||
|
|
||||||
|
it is assumed that the 'pos' of the first element in 'base' list is not
|
||||||
|
more than the 'pos' of the first element of the 'over' list, and the
|
||||||
|
'pos' of the last element of the 'base' list is not less than the 'pos'
|
||||||
|
of the last element of the 'over' list. these two conditions are always
|
||||||
|
satisfied for the two usages mentioned above.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
frees the over list.
|
||||||
|
|
||||||
|
Todo:
|
||||||
|
use some explanatory names instead of p, q, ...
|
||||||
|
rewrite comment above to remove references to special usage.
|
||||||
|
*/
|
||||||
|
fribidi_boolean
|
||||||
|
shadow_run_list (
|
||||||
|
/* input */
|
||||||
|
FriBidiRun *base,
|
||||||
|
FriBidiRun *over,
|
||||||
|
fribidi_boolean preserve_length
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiRun *p = base, *q, *r, *s, *t;
|
||||||
|
register FriBidiStrIndex pos = 0, pos2;
|
||||||
|
fribidi_boolean status = false;
|
||||||
|
|
||||||
|
fribidi_validate_run_list (base);
|
||||||
|
fribidi_validate_run_list (over);
|
||||||
|
|
||||||
|
for_run_list (q, over)
|
||||||
|
{
|
||||||
|
if UNLIKELY
|
||||||
|
(!q->len || q->pos < pos) continue;
|
||||||
|
pos = q->pos;
|
||||||
|
while (p->next->type != FRIBIDI_TYPE_SENTINEL && p->next->pos <= pos)
|
||||||
|
p = p->next;
|
||||||
|
/* now p is the element that q must be inserted 'in'. */
|
||||||
|
pos2 = pos + q->len;
|
||||||
|
r = p;
|
||||||
|
while (r->next->type != FRIBIDI_TYPE_SENTINEL && r->next->pos < pos2)
|
||||||
|
r = r->next;
|
||||||
|
if (preserve_length)
|
||||||
|
r->len += q->len;
|
||||||
|
/* now r is the last element that q affects. */
|
||||||
|
if LIKELY
|
||||||
|
(p == r)
|
||||||
|
{
|
||||||
|
/* split p into at most 3 intervals, and insert q in the place of
|
||||||
|
the second interval, set r to be the third part. */
|
||||||
|
/* third part needed? */
|
||||||
|
if (p->pos + p->len > pos2)
|
||||||
|
{
|
||||||
|
r = new_run ();
|
||||||
|
if UNLIKELY
|
||||||
|
(!r) goto out;
|
||||||
|
p->next->prev = r;
|
||||||
|
r->next = p->next;
|
||||||
|
r->level = p->level;
|
||||||
|
r->isolate_level = p->isolate_level;
|
||||||
|
r->type = p->type;
|
||||||
|
r->len = p->pos + p->len - pos2;
|
||||||
|
r->pos = pos2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
r = r->next;
|
||||||
|
|
||||||
|
if LIKELY
|
||||||
|
(p->pos + p->len >= pos)
|
||||||
|
{
|
||||||
|
/* first part needed? */
|
||||||
|
if (p->pos < pos)
|
||||||
|
/* cut the end of p. */
|
||||||
|
p->len = pos - p->pos;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t = p;
|
||||||
|
p = p->prev;
|
||||||
|
fribidi_free (t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if LIKELY
|
||||||
|
(p->pos + p->len >= pos)
|
||||||
|
{
|
||||||
|
/* p needed? */
|
||||||
|
if (p->pos < pos)
|
||||||
|
/* cut the end of p. */
|
||||||
|
p->len = pos - p->pos;
|
||||||
|
else
|
||||||
|
p = p->prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* r needed? */
|
||||||
|
if (r->pos + r->len > pos2)
|
||||||
|
{
|
||||||
|
/* cut the beginning of r. */
|
||||||
|
r->len = r->pos + r->len - pos2;
|
||||||
|
r->pos = pos2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
r = r->next;
|
||||||
|
|
||||||
|
/* remove the elements between p and r. */
|
||||||
|
for (s = p->next; s != r;)
|
||||||
|
{
|
||||||
|
t = s;
|
||||||
|
s = s->next;
|
||||||
|
fribidi_free (t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* before updating the next and prev runs to point to the inserted q,
|
||||||
|
we must remember the next element of q in the 'over' list.
|
||||||
|
*/
|
||||||
|
t = q;
|
||||||
|
q = q->prev;
|
||||||
|
delete_node (t);
|
||||||
|
p->next = t;
|
||||||
|
t->prev = p;
|
||||||
|
t->next = r;
|
||||||
|
r->prev = t;
|
||||||
|
}
|
||||||
|
status = true;
|
||||||
|
|
||||||
|
fribidi_validate_run_list (base);
|
||||||
|
|
||||||
|
out:
|
||||||
|
free_run_list (over);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
void
|
||||||
|
fribidi_validate_run_list (
|
||||||
|
FriBidiRun *run_list /* input run list */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiRun *q;
|
||||||
|
|
||||||
|
fribidi_assert (run_list);
|
||||||
|
fribidi_assert (run_list->next);
|
||||||
|
fribidi_assert (run_list->next->prev == run_list);
|
||||||
|
fribidi_assert (run_list->type == FRIBIDI_TYPE_SENTINEL);
|
||||||
|
for_run_list (q, run_list)
|
||||||
|
{
|
||||||
|
fribidi_assert (q->next);
|
||||||
|
fribidi_assert (q->next->prev == q);
|
||||||
|
}
|
||||||
|
fribidi_assert (q == run_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !DEBUG */
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
63
3rd/fribidi/fribidi-shape.c
Normal file
63
3rd/fribidi/fribidi-shape.c
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-shape.c - shaping
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi-shape.h>
|
||||||
|
#include <fribidi-mirroring.h>
|
||||||
|
#include <fribidi-arabic.h>
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY void
|
||||||
|
fribidi_shape (
|
||||||
|
/* input */
|
||||||
|
FriBidiFlags flags,
|
||||||
|
const FriBidiLevel *embedding_levels,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiArabicProp *ar_props,
|
||||||
|
FriBidiChar *str
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0 || !str) return;
|
||||||
|
|
||||||
|
DBG ("in fribidi_shape");
|
||||||
|
|
||||||
|
fribidi_assert (embedding_levels);
|
||||||
|
|
||||||
|
if (ar_props)
|
||||||
|
fribidi_shape_arabic (flags, embedding_levels, len, ar_props, str);
|
||||||
|
|
||||||
|
if (FRIBIDI_TEST_BITS (flags, FRIBIDI_FLAG_SHAPE_MIRRORING))
|
||||||
|
fribidi_shape_mirroring (embedding_levels, len, str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
71
3rd/fribidi/fribidi-shape.h
Normal file
71
3rd/fribidi/fribidi-shape.h
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-shape.h - shaping
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004, 2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2004, 2005 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_SHAPE_H
|
||||||
|
#define _FRIBIDI_SHAPE_H
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-flags.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
#include "fribidi-joining-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_shape - do bidi-aware shaping
|
||||||
|
*
|
||||||
|
* This function does all shaping work that depends on the resolved embedding
|
||||||
|
* levels of the characters. Currently it does mirroring and Arabic shaping,
|
||||||
|
* but the list may grow in the future. This function is a wrapper around
|
||||||
|
* fribidi_shape_mirroring and fribidi_shape_arabic.
|
||||||
|
*
|
||||||
|
* The flags parameter specifies which shapings are applied. The only flags
|
||||||
|
* affecting the functionality of this function are those beginning with
|
||||||
|
* FRIBIDI_FLAG_SHAPE_. Of these, only FRIBIDI_FLAG_SHAPE_MIRRORING is on
|
||||||
|
* in FRIBIDI_FLAGS_DEFAULT. For details of the Arabic-specific flags see
|
||||||
|
* fribidi_shape_arabic. If ar_props is NULL, no Arabic shaping is performed.
|
||||||
|
*
|
||||||
|
* Feel free to do your own shaping before or after calling this function,
|
||||||
|
* but you should take care of embedding levels yourself then.
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY void fribidi_shape (
|
||||||
|
FriBidiFlags flags, /* shaping flags */
|
||||||
|
const FriBidiLevel *embedding_levels, /* input list of embedding
|
||||||
|
levels, as returned by
|
||||||
|
fribidi_get_par_embedding_levels */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiArabicProp *ar_props, /* input/output Arabic properties as
|
||||||
|
* computed by fribidi_join_arabic */
|
||||||
|
FriBidiChar *str /* string to shape */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_SHAPE_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
79
3rd/fribidi/fribidi-types.h
Normal file
79
3rd/fribidi/fribidi-types.h
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-types.h - define data types for the rest of the library
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_TYPES_H
|
||||||
|
#define _FRIBIDI_TYPES_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
|
||||||
|
# if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \
|
||||||
|
defined (_sgi) || defined (__sun) || defined (sun) || \
|
||||||
|
defined (__digital__) || defined (__HP_cc)
|
||||||
|
# include <inttypes.h>
|
||||||
|
# elif defined (_AIX)
|
||||||
|
# include <sys/inttypes.h>
|
||||||
|
# else
|
||||||
|
# include <stdint.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef int fribidi_boolean;
|
||||||
|
|
||||||
|
typedef wchar_t FriBidiChar;
|
||||||
|
typedef int FriBidiStrIndex;
|
||||||
|
|
||||||
|
/* The MSB is used to indicate an opening bracket */
|
||||||
|
typedef FriBidiChar FriBidiBracketType;
|
||||||
|
|
||||||
|
/* Use FRIBIDI_NO_BRACKET for assigning to a non-bracket */
|
||||||
|
#define FRIBIDI_NO_BRACKET 0
|
||||||
|
|
||||||
|
/* A few macros for working with bits */
|
||||||
|
|
||||||
|
#define FRIBIDI_TEST_BITS(x, mask) (((x) & (mask)) ? 1 : 0)
|
||||||
|
|
||||||
|
#define FRIBIDI_INCLUDE_BITS(x, mask) ((x) | (mask))
|
||||||
|
|
||||||
|
#define FRIBIDI_EXCLUDE_BITS(x, mask) ((x) & ~(mask))
|
||||||
|
|
||||||
|
#define FRIBIDI_SET_BITS(x, mask) ((x) |= (mask))
|
||||||
|
|
||||||
|
#define FRIBIDI_UNSET_BITS(x, mask) ((x) &= ~(mask))
|
||||||
|
|
||||||
|
#define FRIBIDI_ADJUST_BITS(x, mask, cond) \
|
||||||
|
((x) = ((x) & ~(mask)) | ((cond) ? (mask) : 0))
|
||||||
|
|
||||||
|
#define FRIBIDI_ADJUST_AND_TEST_BITS(x, mask, cond) \
|
||||||
|
FRIBIDI_TEST_BITS(FRIBIDI_ADJUST_BITS((x), (mask), (cond)), (mask))
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_TYPES_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
10
3rd/fribidi/fribidi-unicode-version.h
Normal file
10
3rd/fribidi/fribidi-unicode-version.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/* fribidi-unicode-version.h
|
||||||
|
* generated by gen-unicode-version (GNU FriBidi 1.0.10)
|
||||||
|
* from the file ReadMe.txt */
|
||||||
|
|
||||||
|
#define FRIBIDI_UNICODE_VERSION "11.0.0"
|
||||||
|
#define FRIBIDI_UNICODE_MAJOR_VERSION 11
|
||||||
|
#define FRIBIDI_UNICODE_MINOR_VERSION 0
|
||||||
|
#define FRIBIDI_UNICODE_MICRO_VERSION 0
|
||||||
|
|
||||||
|
/* End of generated fribidi-unicode-version.h */
|
105
3rd/fribidi/fribidi-unicode.h
Normal file
105
3rd/fribidi/fribidi-unicode.h
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi-unicode.h - general Unicode definitions
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_UNICODE_H
|
||||||
|
#define _FRIBIDI_UNICODE_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* We do not support surrogates yet */
|
||||||
|
#define FRIBIDI_UNICODE_CHARS (sizeof(FriBidiChar) >= 4 ? 0x110000 : 0xFFFE)
|
||||||
|
|
||||||
|
/* Unicode version - FRIBIDI_UNICODE_VERSION */
|
||||||
|
#ifdef DONT_HAVE_FRIBIDI_UNICODE_VERSION_H
|
||||||
|
# define FRIBIDI_UNICODE_VERSION "unknown"
|
||||||
|
#else /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */
|
||||||
|
# include "fribidi-unicode-version.h"
|
||||||
|
#endif /* !DONT_HAVE_FRIBIDI_UNICODE_VERSION_H */
|
||||||
|
|
||||||
|
/* An string containing the version the Unicode standard implemented,
|
||||||
|
* in the form of "x.y.z", or "unknown". */
|
||||||
|
FRIBIDI_ENTRY FRIBIDI_EXTERN const char *fribidi_unicode_version;
|
||||||
|
|
||||||
|
|
||||||
|
/* Unicode Bidirectional Algorithm definitions: */
|
||||||
|
|
||||||
|
/* Number of types defined in the bidi algorithm */
|
||||||
|
#define FRIBIDI_BIDI_NUM_TYPES 19
|
||||||
|
|
||||||
|
/* The maximum embedding level value assigned by explicit marks */
|
||||||
|
#define FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL 125
|
||||||
|
|
||||||
|
/* The maximum *number* of different resolved embedding levels: 0-126 */
|
||||||
|
#define FRIBIDI_BIDI_MAX_RESOLVED_LEVELS 127
|
||||||
|
|
||||||
|
/* The maximum *number* of nested brackets: 0-63 */
|
||||||
|
#define FRIBIDI_BIDI_MAX_NESTED_BRACKET_PAIRS 63
|
||||||
|
|
||||||
|
/* A few Unicode characters: */
|
||||||
|
|
||||||
|
/* Bidirectional marks */
|
||||||
|
#define FRIBIDI_CHAR_LRM 0x200E
|
||||||
|
#define FRIBIDI_CHAR_RLM 0x200F
|
||||||
|
#define FRIBIDI_CHAR_LRE 0x202A
|
||||||
|
#define FRIBIDI_CHAR_RLE 0x202B
|
||||||
|
#define FRIBIDI_CHAR_PDF 0x202C
|
||||||
|
#define FRIBIDI_CHAR_LRO 0x202D
|
||||||
|
#define FRIBIDI_CHAR_RLO 0x202E
|
||||||
|
#define FRIBIDI_CHAR_LRI 0x2066
|
||||||
|
#define FRIBIDI_CHAR_RLI 0x2067
|
||||||
|
#define FRIBIDI_CHAR_FSI 0x2068
|
||||||
|
#define FRIBIDI_CHAR_PDI 0x2069
|
||||||
|
|
||||||
|
/* Line and Paragraph Separators */
|
||||||
|
#define FRIBIDI_CHAR_LS 0x2028
|
||||||
|
#define FRIBIDI_CHAR_PS 0x2029
|
||||||
|
|
||||||
|
/* Arabic Joining marks */
|
||||||
|
#define FRIBIDI_CHAR_ZWNJ 0x200C
|
||||||
|
#define FRIBIDI_CHAR_ZWJ 0x200D
|
||||||
|
|
||||||
|
/* Hebrew and Arabic */
|
||||||
|
#define FRIBIDI_CHAR_HEBREW_ALEF 0x05D0
|
||||||
|
#define FRIBIDI_CHAR_ARABIC_ALEF 0x0627
|
||||||
|
#define FRIBIDI_CHAR_ARABIC_ZERO 0x0660
|
||||||
|
#define FRIBIDI_CHAR_PERSIAN_ZERO 0x06F0
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
#define FRIBIDI_CHAR_ZWNBSP 0xFEFF
|
||||||
|
|
||||||
|
/* Char we place for a deleted slot, to delete later */
|
||||||
|
#define FRIBIDI_CHAR_FILL FRIBIDI_CHAR_ZWNBSP
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_UNICODE_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
318
3rd/fribidi/fribidi.c
Normal file
318
3rd/fribidi/fribidi.c
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi.c - Unicode bidirectional and Arabic joining/shaping algorithms
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999,2000 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include <fribidi.h>
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
static int flag_debug = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_debug_status (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
return flag_debug;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY fribidi_boolean
|
||||||
|
fribidi_set_debug (
|
||||||
|
/* input */
|
||||||
|
fribidi_boolean state
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
return flag_debug = state;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiStrIndex
|
||||||
|
fribidi_remove_bidi_marks (
|
||||||
|
FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
FriBidiStrIndex *positions_to_this,
|
||||||
|
FriBidiStrIndex *position_from_this_list,
|
||||||
|
FriBidiLevel *embedding_levels
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i, j = 0;
|
||||||
|
fribidi_boolean private_from_this = false;
|
||||||
|
fribidi_boolean status = false;
|
||||||
|
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0)
|
||||||
|
{
|
||||||
|
status = true;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
DBG ("in fribidi_remove_bidi_marks");
|
||||||
|
|
||||||
|
fribidi_assert (str);
|
||||||
|
|
||||||
|
/* If to_this is not NULL, we must have from_this as well. If it is
|
||||||
|
not given by the caller, we have to make a private instance of it. */
|
||||||
|
if (positions_to_this && !position_from_this_list)
|
||||||
|
{
|
||||||
|
position_from_this_list = fribidi_malloc (sizeof
|
||||||
|
(position_from_this_list[0]) *
|
||||||
|
len);
|
||||||
|
if UNLIKELY
|
||||||
|
(!position_from_this_list) goto out;
|
||||||
|
private_from_this = true;
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
position_from_this_list[positions_to_this[i]] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
if (!FRIBIDI_IS_EXPLICIT_OR_BN (fribidi_get_bidi_type (str[i]))
|
||||||
|
&& !FRIBIDI_IS_ISOLATE (fribidi_get_bidi_type (str[i]))
|
||||||
|
&& str[i] != FRIBIDI_CHAR_LRM && str[i] != FRIBIDI_CHAR_RLM)
|
||||||
|
{
|
||||||
|
str[j] = str[i];
|
||||||
|
if (embedding_levels)
|
||||||
|
embedding_levels[j] = embedding_levels[i];
|
||||||
|
if (position_from_this_list)
|
||||||
|
position_from_this_list[j] = position_from_this_list[i];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert the from_this list to to_this */
|
||||||
|
if (positions_to_this)
|
||||||
|
{
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
positions_to_this[i] = -1;
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
positions_to_this[position_from_this_list[i]] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = true;
|
||||||
|
|
||||||
|
out:
|
||||||
|
|
||||||
|
if (private_from_this)
|
||||||
|
fribidi_free (position_from_this_list);
|
||||||
|
|
||||||
|
return status ? j : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Local array size, used for stack-based local arrays */
|
||||||
|
#define LOCAL_LIST_SIZE 128
|
||||||
|
static FriBidiFlags flags = FRIBIDI_FLAGS_DEFAULT | FRIBIDI_FLAGS_ARABIC;
|
||||||
|
|
||||||
|
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel
|
||||||
|
fribidi_log2vis (
|
||||||
|
/* input */
|
||||||
|
const FriBidiChar *str,
|
||||||
|
const FriBidiStrIndex len,
|
||||||
|
/* input and output */
|
||||||
|
FriBidiParType *pbase_dir,
|
||||||
|
/* output */
|
||||||
|
FriBidiChar *visual_str,
|
||||||
|
FriBidiStrIndex *positions_L_to_V,
|
||||||
|
FriBidiStrIndex *positions_V_to_L,
|
||||||
|
FriBidiLevel *embedding_levels
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register FriBidiStrIndex i;
|
||||||
|
FriBidiLevel max_level = 0;
|
||||||
|
fribidi_boolean private_V_to_L = false;
|
||||||
|
fribidi_boolean private_embedding_levels = false;
|
||||||
|
fribidi_boolean status = false;
|
||||||
|
FriBidiArabicProp local_ar_props[LOCAL_LIST_SIZE];
|
||||||
|
FriBidiArabicProp *ar_props = NULL;
|
||||||
|
FriBidiLevel local_embedding_levels[LOCAL_LIST_SIZE];
|
||||||
|
FriBidiCharType local_bidi_types[LOCAL_LIST_SIZE];
|
||||||
|
FriBidiCharType *bidi_types = NULL;
|
||||||
|
FriBidiBracketType local_bracket_types[LOCAL_LIST_SIZE];
|
||||||
|
FriBidiBracketType *bracket_types = NULL;
|
||||||
|
FriBidiStrIndex local_positions_V_to_L[LOCAL_LIST_SIZE];
|
||||||
|
|
||||||
|
if UNLIKELY
|
||||||
|
(len == 0)
|
||||||
|
{
|
||||||
|
status = true;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
DBG ("in fribidi_log2vis");
|
||||||
|
|
||||||
|
fribidi_assert (str);
|
||||||
|
fribidi_assert (pbase_dir);
|
||||||
|
|
||||||
|
if (len < LOCAL_LIST_SIZE)
|
||||||
|
bidi_types = local_bidi_types;
|
||||||
|
else
|
||||||
|
bidi_types = fribidi_malloc (len * sizeof bidi_types[0]);
|
||||||
|
if (!bidi_types)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
fribidi_get_bidi_types (str, len, bidi_types);
|
||||||
|
|
||||||
|
if (len < LOCAL_LIST_SIZE)
|
||||||
|
bracket_types = local_bracket_types;
|
||||||
|
else
|
||||||
|
bracket_types = fribidi_malloc (len * sizeof bracket_types[0]);
|
||||||
|
|
||||||
|
if (!bracket_types)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
fribidi_get_bracket_types (str, len, bidi_types,
|
||||||
|
/* output */
|
||||||
|
bracket_types);
|
||||||
|
if (!embedding_levels)
|
||||||
|
{
|
||||||
|
if (len < LOCAL_LIST_SIZE)
|
||||||
|
embedding_levels = local_embedding_levels;
|
||||||
|
else
|
||||||
|
embedding_levels = fribidi_malloc (len * sizeof embedding_levels[0]);
|
||||||
|
if (!embedding_levels)
|
||||||
|
goto out;
|
||||||
|
private_embedding_levels = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
max_level = fribidi_get_par_embedding_levels_ex (bidi_types,
|
||||||
|
bracket_types,
|
||||||
|
len,
|
||||||
|
pbase_dir,
|
||||||
|
embedding_levels) - 1;
|
||||||
|
if UNLIKELY
|
||||||
|
(max_level < 0) goto out;
|
||||||
|
|
||||||
|
/* If l2v is to be calculated we must have v2l as well. If it is not
|
||||||
|
given by the caller, we have to make a private instance of it. */
|
||||||
|
if (positions_L_to_V && !positions_V_to_L)
|
||||||
|
{
|
||||||
|
if (len < LOCAL_LIST_SIZE)
|
||||||
|
positions_V_to_L = local_positions_V_to_L;
|
||||||
|
else
|
||||||
|
positions_V_to_L =
|
||||||
|
(FriBidiStrIndex *) fribidi_malloc (sizeof (FriBidiStrIndex) * len);
|
||||||
|
if (!positions_V_to_L)
|
||||||
|
goto out;
|
||||||
|
private_V_to_L = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set up the ordering array to identity order */
|
||||||
|
if (positions_V_to_L)
|
||||||
|
{
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
positions_V_to_L[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (visual_str)
|
||||||
|
{
|
||||||
|
/* Using memcpy instead
|
||||||
|
for (i = len - 1; i >= 0; i--)
|
||||||
|
visual_str[i] = str[i];
|
||||||
|
*/
|
||||||
|
memcpy (visual_str, str, len * sizeof (*visual_str));
|
||||||
|
|
||||||
|
/* Arabic joining */
|
||||||
|
if (len < LOCAL_LIST_SIZE)
|
||||||
|
ar_props = local_ar_props;
|
||||||
|
else
|
||||||
|
ar_props = fribidi_malloc (len * sizeof ar_props[0]);
|
||||||
|
fribidi_get_joining_types (str, len, ar_props);
|
||||||
|
fribidi_join_arabic (bidi_types, len, embedding_levels, ar_props);
|
||||||
|
|
||||||
|
fribidi_shape (flags, embedding_levels, len, ar_props, visual_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* line breaking goes here, but we assume one line in this function */
|
||||||
|
|
||||||
|
/* and this should be called once per line, but again, we assume one
|
||||||
|
* line in this deprecated function */
|
||||||
|
status =
|
||||||
|
fribidi_reorder_line (flags, bidi_types, len, 0, *pbase_dir,
|
||||||
|
embedding_levels, visual_str,
|
||||||
|
positions_V_to_L);
|
||||||
|
|
||||||
|
/* Convert the v2l list to l2v */
|
||||||
|
if (positions_L_to_V)
|
||||||
|
{
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
positions_L_to_V[i] = -1;
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
positions_L_to_V[positions_V_to_L[i]] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
|
|
||||||
|
if (private_V_to_L && positions_V_to_L != local_positions_V_to_L)
|
||||||
|
fribidi_free (positions_V_to_L);
|
||||||
|
|
||||||
|
if (private_embedding_levels && embedding_levels != local_embedding_levels)
|
||||||
|
fribidi_free (embedding_levels);
|
||||||
|
|
||||||
|
if (ar_props && ar_props != local_ar_props)
|
||||||
|
fribidi_free (ar_props);
|
||||||
|
|
||||||
|
if (bidi_types && bidi_types != local_bidi_types)
|
||||||
|
fribidi_free (bidi_types);
|
||||||
|
|
||||||
|
if (bracket_types && bracket_types != local_bracket_types)
|
||||||
|
fribidi_free (bracket_types);
|
||||||
|
|
||||||
|
return status ? max_level + 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *fribidi_unicode_version = FRIBIDI_UNICODE_VERSION;
|
||||||
|
|
||||||
|
const char *fribidi_version_info =
|
||||||
|
"(" FRIBIDI_NAME ") " FRIBIDI_VERSION "\n"
|
||||||
|
"interface version " FRIBIDI_INTERFACE_VERSION_STRING ",\n"
|
||||||
|
"Unicode Character Database version " FRIBIDI_UNICODE_VERSION ",\n"
|
||||||
|
"Configure options"
|
||||||
|
#ifdef DEBUG
|
||||||
|
" --enable-debug"
|
||||||
|
#endif /* DEBUG */
|
||||||
|
".\n\n"
|
||||||
|
"Copyright (C) 2004 Sharif FarsiWeb, Inc.\n"
|
||||||
|
"Copyright (C) 2001, 2002, 2004, 2005 Behdad Esfahbod\n"
|
||||||
|
"Copyright (C) 1999, 2000, 2017, 2018, 2019 Dov Grobgeld\n"
|
||||||
|
FRIBIDI_NAME " comes with NO WARRANTY, to the extent permitted by law.\n"
|
||||||
|
"You may redistribute copies of " FRIBIDI_NAME " under\n"
|
||||||
|
"the terms of the GNU Lesser General Public License.\n"
|
||||||
|
"For more information about these matters, see the file named COPYING.\n\n"
|
||||||
|
"Written by Behdad Esfahbod and Dov Grobgeld.\n";
|
||||||
|
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
128
3rd/fribidi/fribidi.h
Normal file
128
3rd/fribidi/fribidi.h
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* fribidi.h - Unicode bidirectional and Arabic joining/shaping algorithms
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _FRIBIDI_H
|
||||||
|
#define _FRIBIDI_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include "fribidi-unicode.h"
|
||||||
|
#include "fribidi-types.h"
|
||||||
|
#include "fribidi-flags.h"
|
||||||
|
#include "fribidi-bidi-types.h"
|
||||||
|
#include "fribidi-bidi.h"
|
||||||
|
#include "fribidi-joining-types.h"
|
||||||
|
#include "fribidi-joining.h"
|
||||||
|
#include "fribidi-mirroring.h"
|
||||||
|
#include "fribidi-brackets.h"
|
||||||
|
#include "fribidi-arabic.h"
|
||||||
|
#include "fribidi-shape.h"
|
||||||
|
|
||||||
|
#include "fribidi-begindecls.h"
|
||||||
|
|
||||||
|
/* fribidi_remove_bidi_marks - remove bidi marks out of an string
|
||||||
|
*
|
||||||
|
* This function removes the bidi and boundary-neutral marks out of an string
|
||||||
|
* and the accompanying lists. It implements rule X9 of the Unicode
|
||||||
|
* Bidirectional Algorithm available at
|
||||||
|
* http://www.unicode.org/reports/tr9/#X9, with the exception that it removes
|
||||||
|
* U+200E LEFT-TO-RIGHT MARK and U+200F RIGHT-TO-LEFT MARK too.
|
||||||
|
*
|
||||||
|
* If any of the input lists are NULL, the list is skipped. If str is the
|
||||||
|
* visual string, then positions_to_this is positions_L_to_V and
|
||||||
|
* position_from_this_list is positions_V_to_L; if str is the logical
|
||||||
|
* string, the other way. Moreover, the position maps should be filled with
|
||||||
|
* valid entries.
|
||||||
|
*
|
||||||
|
* A position map pointing to a removed character is filled with \(mi1. By the
|
||||||
|
* way, you should not use embedding_levels if str is visual string.
|
||||||
|
*
|
||||||
|
* For best results this function should be run on a whole paragraph, not
|
||||||
|
* lines; but feel free to do otherwise if you know what you are doing.
|
||||||
|
*
|
||||||
|
* Returns: New length of the string, or \(mi1 if an error occurred (memory
|
||||||
|
* allocation failure most probably).
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiStrIndex
|
||||||
|
fribidi_remove_bidi_marks (
|
||||||
|
FriBidiChar *str, /* input string to clean */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiStrIndex *positions_to_this, /* list mapping positions to the
|
||||||
|
order used in str */
|
||||||
|
FriBidiStrIndex *position_from_this_list, /* list mapping positions from the
|
||||||
|
order used in str */
|
||||||
|
FriBidiLevel *embedding_levels /* list of embedding levels */
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/* fribidi_log2vis - get visual string
|
||||||
|
*
|
||||||
|
* This function converts the logical input string to the visual output
|
||||||
|
* strings as specified by the Unicode Bidirectional Algorithm. As a side
|
||||||
|
* effect it also generates mapping lists between the two strings, and the
|
||||||
|
* list of embedding levels as defined by the algorithm.
|
||||||
|
*
|
||||||
|
* If NULL is passed as any of the the lists, the list is ignored and not
|
||||||
|
* filled.
|
||||||
|
*
|
||||||
|
* Note that this function handles one-line paragraphs. For multi-
|
||||||
|
* paragraph texts it is necessary to first split the text into
|
||||||
|
* separate paragraphs and then carry over the resolved pbase_dir
|
||||||
|
* between the subsequent invocations.
|
||||||
|
*
|
||||||
|
* Returns: Maximum level found plus one, or zero if any error occurred
|
||||||
|
* (memory allocation failure most probably).
|
||||||
|
*/
|
||||||
|
FRIBIDI_ENTRY FriBidiLevel fribidi_log2vis (
|
||||||
|
const FriBidiChar *str, /* input logical string */
|
||||||
|
const FriBidiStrIndex len, /* input string length */
|
||||||
|
FriBidiParType *pbase_dir, /* requested and resolved paragraph
|
||||||
|
* base direction */
|
||||||
|
FriBidiChar *visual_str, /* output visual string */
|
||||||
|
FriBidiStrIndex *positions_L_to_V, /* output mapping from logical to
|
||||||
|
* visual string positions */
|
||||||
|
FriBidiStrIndex *positions_V_to_L, /* output mapping from visual string
|
||||||
|
* back to the logical string
|
||||||
|
* positions */
|
||||||
|
FriBidiLevel *embedding_levels /* output list of embedding levels */
|
||||||
|
);
|
||||||
|
|
||||||
|
/* End of functions */
|
||||||
|
|
||||||
|
#ifdef FRIBIDI_NO_DEPRECATED
|
||||||
|
#else
|
||||||
|
# include "fribidi-deprecated.h"
|
||||||
|
#endif /* !FRIBIDI_NO_DEPRECATED */
|
||||||
|
|
||||||
|
|
||||||
|
/* An string containing the version information of the library. */
|
||||||
|
FRIBIDI_ENTRY FRIBIDI_EXTERN const char *fribidi_version_info;
|
||||||
|
|
||||||
|
#include "fribidi-enddecls.h"
|
||||||
|
|
||||||
|
#endif /* !_FRIBIDI_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
4749
3rd/fribidi/joining-type.tab.i
Normal file
4749
3rd/fribidi/joining-type.tab.i
Normal file
File diff suppressed because it is too large
Load Diff
52
3rd/fribidi/joining-types.h
Normal file
52
3rd/fribidi/joining-types.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* joining-types.h - define internal joining types
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Behdad Esfahbod, 2004
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
|
||||||
|
* Copyright (C) 2004 Behdad Esfahbod
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _JOINING_TYPES_H
|
||||||
|
#define _JOINING_TYPES_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include <fribidi-types.h>
|
||||||
|
#include <fribidi-joining-types.h>
|
||||||
|
|
||||||
|
#include <fribidi-begindecls.h>
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
char
|
||||||
|
fribidi_char_from_joining_type (
|
||||||
|
FriBidiJoiningType j, /* input joining type */
|
||||||
|
fribidi_boolean visual /* in visual context or logical? */
|
||||||
|
) FRIBIDI_GNUC_HIDDEN;
|
||||||
|
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
#include <fribidi-enddecls.h>
|
||||||
|
|
||||||
|
#endif /* !_JOINING_TYPES_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
1151
3rd/fribidi/mirroring.tab.i
Normal file
1151
3rd/fribidi/mirroring.tab.i
Normal file
File diff suppressed because it is too large
Load Diff
146
3rd/fribidi/run.h
Normal file
146
3rd/fribidi/run.h
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/* FriBidi
|
||||||
|
* run.h - text run data type
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Behdad Esfahbod, 2001, 2002, 2004
|
||||||
|
* Dov Grobgeld, 1999, 2000
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 Sharif FarsiWeb, Inc
|
||||||
|
* Copyright (C) 2001,2002 Behdad Esfahbod
|
||||||
|
* Copyright (C) 1999,2000 Dov Grobgeld
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this library, in a file named COPYING; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
* For licensing issues, contact <fribidi.license@gmail.com>.
|
||||||
|
*/
|
||||||
|
#ifndef _RUN_H
|
||||||
|
#define _RUN_H
|
||||||
|
|
||||||
|
#include "fribidi-common.h"
|
||||||
|
|
||||||
|
#include <fribidi-common.h>
|
||||||
|
|
||||||
|
#include <fribidi-types.h>
|
||||||
|
#include <fribidi-bidi-types.h>
|
||||||
|
|
||||||
|
#include <fribidi-begindecls.h>
|
||||||
|
|
||||||
|
typedef struct _FriBidiRunStruct FriBidiRun;
|
||||||
|
|
||||||
|
struct _FriBidiRunStruct
|
||||||
|
{
|
||||||
|
FriBidiRun *prev;
|
||||||
|
FriBidiRun *next;
|
||||||
|
|
||||||
|
FriBidiStrIndex pos, len;
|
||||||
|
FriBidiCharType type;
|
||||||
|
FriBidiLevel level;
|
||||||
|
FriBidiLevel isolate_level;
|
||||||
|
FriBidiBracketType bracket_type;
|
||||||
|
|
||||||
|
/* Additional links for connecting the isolate tree */
|
||||||
|
FriBidiRun *prev_isolate, *next_isolate;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
FriBidiRun *
|
||||||
|
new_run (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
FRIBIDI_GNUC_HIDDEN FRIBIDI_GNUC_MALLOC FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
FriBidiRun *new_run_list (
|
||||||
|
void
|
||||||
|
)
|
||||||
|
FRIBIDI_GNUC_HIDDEN FRIBIDI_GNUC_MALLOC FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
void free_run_list (
|
||||||
|
FriBidiRun *run_list
|
||||||
|
) FRIBIDI_GNUC_HIDDEN;
|
||||||
|
|
||||||
|
FriBidiRun *run_list_encode_bidi_types (
|
||||||
|
const FriBidiCharType *bidi_types,
|
||||||
|
const FriBidiBracketType *bracket_types,
|
||||||
|
const FriBidiStrIndex len
|
||||||
|
)
|
||||||
|
FRIBIDI_GNUC_HIDDEN FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
fribidi_boolean shadow_run_list (
|
||||||
|
FriBidiRun *base,
|
||||||
|
FriBidiRun *over,
|
||||||
|
fribidi_boolean preserve_length
|
||||||
|
)
|
||||||
|
FRIBIDI_GNUC_HIDDEN FRIBIDI_GNUC_WARN_UNUSED;
|
||||||
|
|
||||||
|
|
||||||
|
#define swap(a,b) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
void *t; \
|
||||||
|
(t) = (a); \
|
||||||
|
(a) = (b); \
|
||||||
|
(b) = (t); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
|
||||||
|
#define merge_lists(a,b) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
swap((a)->prev->next, (b)->prev->next); \
|
||||||
|
swap((a)->prev, (b)->prev); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
|
||||||
|
#define delete_node(x) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
(x)->prev->next = (x)->next; \
|
||||||
|
(x)->next->prev = (x)->prev; \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
|
||||||
|
#define insert_node_before(x, list) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
(x)->prev = (list)->prev; \
|
||||||
|
(list)->prev->next = (x); \
|
||||||
|
(x)->next = (list); \
|
||||||
|
(list)->prev = (x); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
|
||||||
|
#define move_node_before(x, list) \
|
||||||
|
FRIBIDI_BEGIN_STMT \
|
||||||
|
if ((x)->prev) { \
|
||||||
|
delete_node(x); \
|
||||||
|
} \
|
||||||
|
insert_node_before((x), (list)); \
|
||||||
|
FRIBIDI_END_STMT
|
||||||
|
|
||||||
|
#define for_run_list(x, list) \
|
||||||
|
for ((x) = (list)->next; (x)->type != FRIBIDI_TYPE_SENTINEL; (x) = (x)->next)
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
|
||||||
|
void fribidi_validate_run_list (
|
||||||
|
FriBidiRun *run_list /* input run list */
|
||||||
|
) FRIBIDI_GNUC_HIDDEN;
|
||||||
|
|
||||||
|
#else /* !DEBUG */
|
||||||
|
|
||||||
|
#define fribidi_validate_run_list(run_list) fribidi_assert(run_list)
|
||||||
|
|
||||||
|
#endif /* !DEBUG */
|
||||||
|
|
||||||
|
#include <fribidi-enddecls.h>
|
||||||
|
|
||||||
|
#endif /* !_RUN_H */
|
||||||
|
/* Editor directions:
|
||||||
|
* vim:textwidth=78:tabstop=8:shiftwidth=2:autoindent:cindent
|
||||||
|
*/
|
@ -24,6 +24,7 @@ SConscriptFiles=awtk.NANOVG_BACKEND_PROJS + [
|
|||||||
'3rd/libunibreak/SConscript',
|
'3rd/libunibreak/SConscript',
|
||||||
'3rd/lz4/SConscript',
|
'3rd/lz4/SConscript',
|
||||||
'3rd/miniz/SConscript',
|
'3rd/miniz/SConscript',
|
||||||
|
'3rd/fribidi/SConscript',
|
||||||
'src/SConscript',
|
'src/SConscript',
|
||||||
'src/conf_io/SConscript',
|
'src/conf_io/SConscript',
|
||||||
'src/streams/SConscript',
|
'src/streams/SConscript',
|
||||||
|
@ -35,7 +35,7 @@ TK_3RD_ROOT = joinPath(TK_ROOT, '3rd')
|
|||||||
TK_TOOLS_ROOT = joinPath(TK_ROOT, 'tools')
|
TK_TOOLS_ROOT = joinPath(TK_ROOT, 'tools')
|
||||||
TK_DEMO_ROOT = joinPath(TK_ROOT, 'demos')
|
TK_DEMO_ROOT = joinPath(TK_ROOT, 'demos')
|
||||||
GTEST_ROOT = joinPath(TK_ROOT, '3rd/gtest/googletest')
|
GTEST_ROOT = joinPath(TK_ROOT, '3rd/gtest/googletest')
|
||||||
AWTK_STATIC_LIBS=['awtk_global', 'extwidgets', 'widgets', 'base', 'gpinyin', 'streams', 'conf_io', 'ubjson', 'compressors', 'miniz', 'tkc', 'linebreak']
|
AWTK_STATIC_LIBS=['awtk_global', 'extwidgets', 'widgets', 'base', 'gpinyin', 'streams', 'conf_io', 'ubjson', 'compressors', 'fribidi', 'miniz', 'tkc', 'linebreak']
|
||||||
|
|
||||||
#INPUT_ENGINE='null'
|
#INPUT_ENGINE='null'
|
||||||
#INPUT_ENGINE='spinyin'
|
#INPUT_ENGINE='spinyin'
|
||||||
@ -84,6 +84,7 @@ COMMON_CCFLAGS=' -DTK_ROOT=\\\"'+TK_ROOT+'\\\" '
|
|||||||
#COMMON_CCFLAGS=COMMON_CCFLAGS+' -DENABLE_MEM_LEAK_CHECK=1 '
|
#COMMON_CCFLAGS=COMMON_CCFLAGS+' -DENABLE_MEM_LEAK_CHECK=1 '
|
||||||
|
|
||||||
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DENABLE_CURSOR=1 '
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DENABLE_CURSOR=1 '
|
||||||
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_TEXT_BIDI=1 '
|
||||||
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_DATA_READER_WRITER=1 '
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_DATA_READER_WRITER=1 '
|
||||||
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_EVENT_RECORDER_PLAYER=1 '
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_EVENT_RECORDER_PLAYER=1 '
|
||||||
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_ASSET_LOADER -DWITH_FS_RES -DWITH_ASSET_LOADER_ZIP '
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_ASSET_LOADER -DWITH_FS_RES -DWITH_ASSET_LOADER_ZIP '
|
||||||
@ -187,7 +188,7 @@ elif OS_NAME == 'Linux':
|
|||||||
|
|
||||||
OS_LINKFLAGS=' -Wl,-rpath=' + os.path.abspath(TK_LIB_DIR) + ' '
|
OS_LINKFLAGS=' -Wl,-rpath=' + os.path.abspath(TK_LIB_DIR) + ' '
|
||||||
AWTK_DLL_DEPS_LIBS = NANOVG_BACKEND_LIBS + ['SDL2', 'glad'] + OS_LIBS
|
AWTK_DLL_DEPS_LIBS = NANOVG_BACKEND_LIBS + ['SDL2', 'glad'] + OS_LIBS
|
||||||
OS_WHOLE_ARCHIVE =' -Wl,--whole-archive -lawtk_global -lextwidgets -lwidgets -lbase -lgpinyin -lstreams -lconf_io -lubjson -lcompressors -lminiz -ltkc -llinebreak -Wl,--no-whole-archive'
|
OS_WHOLE_ARCHIVE =' -Wl,--whole-archive -lawtk_global -lextwidgets -lwidgets -lbase -lgpinyin -lstreams -lconf_io -lubjson -lcompressors -lfribidi -lminiz -ltkc -llinebreak -Wl,--no-whole-archive'
|
||||||
|
|
||||||
elif OS_NAME == 'Windows':
|
elif OS_NAME == 'Windows':
|
||||||
if not os.path.exists(os.path.abspath(TK_BIN_DIR)) :
|
if not os.path.exists(os.path.abspath(TK_BIN_DIR)) :
|
||||||
@ -217,7 +218,7 @@ elif OS_NAME == 'Windows':
|
|||||||
OS_LINKFLAGS=' -Wl,-rpath=' + os.path.abspath(TK_LIB_DIR) + ' '
|
OS_LINKFLAGS=' -Wl,-rpath=' + os.path.abspath(TK_LIB_DIR) + ' '
|
||||||
COMMON_CFLAGS=COMMON_CFLAGS+' -std=gnu99 '
|
COMMON_CFLAGS=COMMON_CFLAGS+' -std=gnu99 '
|
||||||
COMMON_CCFLAGS=COMMON_CCFLAGS+' -U__FLT_EVAL_METHOD__ -D__FLT_EVAL_METHOD__=0 -DUNICODE -DDECLSPEC= '
|
COMMON_CCFLAGS=COMMON_CCFLAGS+' -U__FLT_EVAL_METHOD__ -D__FLT_EVAL_METHOD__=0 -DUNICODE -DDECLSPEC= '
|
||||||
OS_WHOLE_ARCHIVE =' -Wl,--whole-archive -lawtk_global -lextwidgets -lwidgets -lbase -lgpinyin -lstreams -lconf_io -lubjson -lcompressors -lminiz -ltkc -llinebreak -Wl,--no-whole-archive'
|
OS_WHOLE_ARCHIVE =' -Wl,--whole-archive -lawtk_global -lextwidgets -lwidgets -lbase -lgpinyin -lstreams -lconf_io -lubjson -lcompressors -lfribidi -lminiz -ltkc -llinebreak -Wl,--no-whole-archive'
|
||||||
AWTK_DLL_DEPS_LIBS = AWTK_STATIC_LIBS + NANOVG_BACKEND_LIBS + ['SDL2', 'glad'] + OS_LIBS
|
AWTK_DLL_DEPS_LIBS = AWTK_STATIC_LIBS + NANOVG_BACKEND_LIBS + ['SDL2', 'glad'] + OS_LIBS
|
||||||
|
|
||||||
#OS_FLAGS='-DWIN32 -D_WIN32 -DWINDOWS /EHsc -D_CONSOLE /DEBUG /Od /FS /Z7 -D_DEBUG /MDd '
|
#OS_FLAGS='-DWIN32 -D_WIN32 -DWINDOWS /EHsc -D_CONSOLE /DEBUG /Od /FS /Z7 -D_DEBUG /MDd '
|
||||||
@ -242,6 +243,7 @@ CPPPATH=[TK_ROOT,
|
|||||||
TK_SRC,
|
TK_SRC,
|
||||||
TK_3RD_ROOT,
|
TK_3RD_ROOT,
|
||||||
joinPath(TK_SRC, 'ext_widgets'),
|
joinPath(TK_SRC, 'ext_widgets'),
|
||||||
|
joinPath(TK_3RD_ROOT, 'fribidi'),
|
||||||
joinPath(TK_3RD_ROOT, 'pixman'),
|
joinPath(TK_3RD_ROOT, 'pixman'),
|
||||||
joinPath(TK_3RD_ROOT, 'cairo'),
|
joinPath(TK_3RD_ROOT, 'cairo'),
|
||||||
joinPath(TK_3RD_ROOT, 'bgfx/bgfx/include'),
|
joinPath(TK_3RD_ROOT, 'bgfx/bgfx/include'),
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
TK_CONST_DATA_ALIGN(const unsigned char data_a_b_c_any[]) = {
|
TK_CONST_DATA_ALIGN(const unsigned char data_a_b_c_any[]) = {
|
||||||
0x08,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x2d,0x62,0x2d,0x63,0x2e,0x61,0x6e,
|
0x08,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x2d,0x62,0x2d,0x63,0x2e,0x61,0x6e,
|
||||||
0x79,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x79,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x61,0x62,0x63,0x0a,0x00,0x00,0x00,0x00,};/*52*/
|
0x00,0x00,0x00,0x00,0x61,0x62,0x63,0x0d,0x0a,0x00,0x00,0x00,0x00,};/*53*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
TK_CONST_DATA_ALIGN(const unsigned char data_com_zlg_app_json[]) = {
|
TK_CONST_DATA_ALIGN(const unsigned char data_com_zlg_app_json[]) = {
|
||||||
0x08,0x00,0x03,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x6f,0x6d,0x2e,0x7a,0x6c,0x67,0x2e,
|
0x08,0x00,0x03,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x6f,0x6d,0x2e,0x7a,0x6c,0x67,0x2e,
|
||||||
0x61,0x70,0x70,0x2e,0x6a,0x73,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x61,0x70,0x70,0x2e,0x6a,0x73,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x7b,0x7d,0x0a,0x00,0x00,0x00,0x00,};/*51*/
|
0x00,0x00,0x00,0x00,0x7b,0x7d,0x0d,0x0a,0x00,0x00,0x00,0x00,};/*52*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
TK_CONST_DATA_ALIGN(const unsigned char data_test_dat[]) = {
|
TK_CONST_DATA_ALIGN(const unsigned char data_test_dat[]) = {
|
||||||
0x08,0x00,0x04,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x73,0x74,0x2e,0x64,0x61,0x74,
|
0x08,0x00,0x04,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x73,0x74,0x2e,0x64,0x61,0x74,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x61,0x62,0x63,0x64,0x0a,0x00,0x00,0x00,0x00,};/*53*/
|
0x00,0x00,0x00,0x00,0x61,0x62,0x63,0x64,0x0d,0x0a,0x00,0x00,0x00,0x00,};/*54*/
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
TK_CONST_DATA_ALIGN(const unsigned char data_test_json[]) = {
|
TK_CONST_DATA_ALIGN(const unsigned char data_test_json[]) = {
|
||||||
0x08,0x00,0x03,0x01,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x73,0x74,0x2e,0x6a,0x73,0x6f,
|
0x08,0x00,0x03,0x01,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x73,0x74,0x2e,0x6a,0x73,0x6f,
|
||||||
0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x7b,0x0a,0x20,0x20,0x22,0x6e,0x61,0x6d,0x65,0x22,0x3a,0x22,0x66,0x6f,0x72,0x20,
|
0x00,0x00,0x00,0x00,0x7b,0x0d,0x0a,0x20,0x20,0x22,0x6e,0x61,0x6d,0x65,0x22,0x3a,0x22,0x66,0x6f,0x72,
|
||||||
0x74,0x65,0x73,0x74,0x22,0x0a,0x7d,0x0a,0x00,0x00,0x00,0x00,};/*72*/
|
0x20,0x74,0x65,0x73,0x74,0x22,0x0d,0x0a,0x7d,0x0d,0x0a,0x00,0x00,0x00,0x00,};/*75*/
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
14082
demos/assets/default/inc/fonts/trado.res
Normal file
14082
demos/assets/default/inc/fonts/trado.res
Normal file
File diff suppressed because it is too large
Load Diff
@ -1640,4 +1640,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_1[]) = {
|
|||||||
0xde,0xf7,0x9e,0xef,0x9e,0xef,0xbe,0xf7,0x3d,0xef,0x9f,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
0xde,0xf7,0x9e,0xef,0x9e,0xef,0xbe,0xf7,0x3d,0xef,0x9f,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
||||||
0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
||||||
0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,0x9e,0xf7,
|
||||||
0xe3,0x18,0xe3,0x18,0x00,0x00,0x00,0x00,};/*32828*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*32828*/
|
||||||
|
@ -731,4 +731,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_2[]) = {
|
|||||||
0x15,0x71,0x35,0x71,0x35,0x71,0x35,0x71,0x34,0x69,0x55,0x71,0x55,0x71,0x35,0x71,0x55,0x71,0x34,0x69,
|
0x15,0x71,0x35,0x71,0x35,0x71,0x35,0x71,0x34,0x69,0x55,0x71,0x55,0x71,0x35,0x71,0x55,0x71,0x34,0x69,
|
||||||
0x34,0x69,0x13,0x61,0x13,0x61,0x14,0x69,0x34,0x61,0x14,0x61,0x33,0x61,0x13,0x59,0x12,0x59,0xf1,0x58,
|
0x34,0x69,0x13,0x61,0x13,0x61,0x14,0x69,0x34,0x61,0x14,0x61,0x33,0x61,0x13,0x59,0x12,0x59,0xf1,0x58,
|
||||||
0xf1,0x50,0xf1,0x50,0xf1,0x50,0xd0,0x48,0xf0,0x48,0xf0,0x48,0xf0,0x48,0xf0,0x48,0xef,0x48,0x0f,0x49,
|
0xf1,0x50,0xf1,0x50,0xf1,0x50,0xd0,0x48,0xf0,0x48,0xf0,0x48,0xf0,0x48,0xf0,0x48,0xef,0x48,0x0f,0x49,
|
||||||
0xef,0x40,0xee,0x40,0xee,0x38,0xcd,0x38,0xcc,0x38,0xab,0x30,0xe3,0x18,0xe3,0x18,0x00,0x00,0x00,0x00,};/*14660*/
|
0xef,0x40,0xee,0x40,0xee,0x38,0xcd,0x38,0xcc,0x38,0xab,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*14660*/
|
||||||
|
@ -731,4 +731,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_3[]) = {
|
|||||||
0xe7,0x72,0x89,0x83,0x6d,0x9c,0x4d,0x9c,0x6c,0x9c,0x0b,0x94,0x48,0x73,0x89,0x7b,0x2c,0x94,0xeb,0x8b,
|
0xe7,0x72,0x89,0x83,0x6d,0x9c,0x4d,0x9c,0x6c,0x9c,0x0b,0x94,0x48,0x73,0x89,0x7b,0x2c,0x94,0xeb,0x8b,
|
||||||
0xe7,0x6a,0xa6,0x6a,0xa6,0x6a,0x85,0x62,0xc6,0x6a,0x06,0x73,0x07,0x73,0x28,0x73,0x49,0x73,0x28,0x73,
|
0xe7,0x6a,0xa6,0x6a,0xa6,0x6a,0x85,0x62,0xc6,0x6a,0x06,0x73,0x07,0x73,0x28,0x73,0x49,0x73,0x28,0x73,
|
||||||
0xc7,0x62,0x69,0x73,0xaa,0x7b,0x69,0x73,0x49,0x73,0x28,0x73,0x49,0x73,0x49,0x73,0x29,0x73,0x49,0x73,
|
0xc7,0x62,0x69,0x73,0xaa,0x7b,0x69,0x73,0x49,0x73,0x28,0x73,0x49,0x73,0x49,0x73,0x29,0x73,0x49,0x73,
|
||||||
0x69,0x73,0x49,0x73,0x69,0x73,0x69,0x73,0x48,0x73,0xe7,0x6a,0xe3,0x18,0xe3,0x18,0x00,0x00,0x00,0x00,};/*14660*/
|
0x69,0x73,0x49,0x73,0x69,0x73,0x69,0x73,0x48,0x73,0xe7,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*14660*/
|
||||||
|
@ -21,4 +21,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_active_dot[]) = {
|
|||||||
0xdd,0x97,0x12,0xf1,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,
|
0xdd,0x97,0x12,0xf1,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,0xdb,0x96,0x12,0xff,
|
||||||
0xdd,0x98,0x12,0xf0,0xd3,0x94,0x0b,0x83,0x42,0x2c,0x01,0x07,0x01,0x01,0x00,0x00,0x3b,0x27,0x01,0x09,
|
0xdd,0x98,0x12,0xf0,0xd3,0x94,0x0b,0x83,0x42,0x2c,0x01,0x07,0x01,0x01,0x00,0x00,0x3b,0x27,0x01,0x09,
|
||||||
0x99,0x68,0x0c,0x5c,0xde,0x97,0x12,0xbd,0xda,0x96,0x11,0xeb,0xdb,0x95,0x11,0xea,0xde,0x97,0x11,0xbc,
|
0x99,0x68,0x0c,0x5c,0xde,0x97,0x12,0xbd,0xda,0x96,0x11,0xeb,0xdb,0x95,0x11,0xea,0xde,0x97,0x11,0xbc,
|
||||||
0x99,0x69,0x0b,0x5b,0x39,0x2c,0x01,0x09,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,};/*460*/
|
0x99,0x69,0x0b,0x5b,0x39,0x2c,0x01,0x09,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*460*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_arrow_down_n[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xb8,0x64,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_arrow_down_o[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xb8,0x64,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_arrow_down_p[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_arrow_left_p[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0xdf,0x3c,0xe7,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_arrow_right_n[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0xdf,0x3c,0xe7,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -641,4 +641,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_bee[]) = {
|
|||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0xf8,0x80,0xf8,0x00,0x00,0x00,0x00,};/*12860*/
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*12860*/
|
||||||
|
@ -42721,4 +42721,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_bg_portrait_1[]) = {
|
|||||||
0x41,0x00,0x41,0x08,0x21,0x00,0x41,0x00,0x41,0x08,0x21,0x00,0x41,0x08,0x00,0x00,0x41,0x08,0xa2,0x10,
|
0x41,0x00,0x41,0x08,0x21,0x00,0x41,0x00,0x41,0x08,0x21,0x00,0x41,0x08,0x00,0x00,0x41,0x08,0xa2,0x10,
|
||||||
0x82,0x08,0x82,0x10,0xe4,0x18,0x04,0x21,0xc3,0x10,0x25,0x21,0x66,0x29,0x25,0x21,0xe4,0x10,0x04,0x19,
|
0x82,0x08,0x82,0x10,0xe4,0x18,0x04,0x21,0xc3,0x10,0x25,0x21,0x66,0x29,0x25,0x21,0xe4,0x10,0x04,0x19,
|
||||||
0x25,0x21,0x05,0x19,0x66,0x29,0xe4,0x18,0x46,0x21,0x05,0x19,0x67,0x29,0x05,0x19,0x46,0x21,0xc5,0x18,
|
0x25,0x21,0x05,0x19,0x66,0x29,0xe4,0x18,0x46,0x21,0x05,0x19,0x67,0x29,0x05,0x19,0x46,0x21,0xc5,0x18,
|
||||||
0xc5,0x10,0x06,0x19,0x26,0x21,0xe5,0x18,0xa4,0x08,0xa4,0x08,0x41,0x08,0x41,0x08,0x00,0x00,0x00,0x00,};/*854460*/
|
0xc5,0x10,0x06,0x19,0x26,0x21,0xe5,0x18,0xa4,0x08,0xa4,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*854460*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_check[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4a,0x49,0xdb,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_checked[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -354,4 +354,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_clock[]) = {
|
|||||||
0x03,0x01,0x08,0x20,0x03,0x01,0x08,0x17,0x03,0x01,0x08,0x11,0x03,0x01,0x08,0x0c,0x03,0x01,0x08,0x07,
|
0x03,0x01,0x08,0x20,0x03,0x01,0x08,0x17,0x03,0x01,0x08,0x11,0x03,0x01,0x08,0x0c,0x03,0x01,0x08,0x07,
|
||||||
0x03,0x01,0x08,0x05,0x03,0x01,0x08,0x02,0x03,0x01,0x08,0x01,0x03,0x01,0x08,0x01,0x00,0x00,0x00,0x00,
|
0x03,0x01,0x08,0x05,0x03,0x01,0x08,0x02,0x03,0x01,0x08,0x01,0x03,0x01,0x08,0x01,0x00,0x00,0x00,0x00,
|
||||||
0x03,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x03,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0xe8,0xe8,0xff,0x00,0x00,0x00,0x00,};/*7116*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*7116*/
|
||||||
|
@ -329,4 +329,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_clock_hour[]) = {
|
|||||||
0x56,0x55,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x4e,0x4f,0x07,0x54,0x54,0x55,0x31,
|
0x56,0x55,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x4e,0x4f,0x07,0x54,0x54,0x55,0x31,
|
||||||
0x56,0x55,0x56,0x8b,0x58,0x57,0x58,0xce,0x5a,0x5a,0x5b,0xf1,0x5d,0x5d,0x5e,0xf4,0x60,0x5f,0x60,0xda,
|
0x56,0x55,0x56,0x8b,0x58,0x57,0x58,0xce,0x5a,0x5a,0x5b,0xf1,0x5d,0x5d,0x5e,0xf4,0x60,0x5f,0x60,0xda,
|
||||||
0x62,0x62,0x63,0xa2,0x65,0x65,0x66,0x49,0x6a,0x6a,0x6b,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x62,0x62,0x63,0xa2,0x65,0x65,0x66,0x49,0x6a,0x6a,0x6b,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x75,0x75,0x75,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf7,0xd6,0x75,0x4d,0x00,0x00,0x00,0x00,};/*6620*/
|
0x75,0x75,0x75,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*6620*/
|
||||||
|
@ -325,4 +325,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_clock_minute[]) = {
|
|||||||
0x4f,0x4f,0x4f,0xff,0x33,0x32,0x35,0xff,0x23,0x23,0x26,0xff,0x1f,0x1e,0x21,0xba,0x22,0x21,0x23,0x22,
|
0x4f,0x4f,0x4f,0xff,0x33,0x32,0x35,0xff,0x23,0x23,0x26,0xff,0x1f,0x1e,0x21,0xba,0x22,0x21,0x23,0x22,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0x70,0x70,0x0a,0x42,0x41,0x43,0x5f,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0x70,0x70,0x0a,0x42,0x41,0x43,0x5f,
|
||||||
0x28,0x27,0x29,0xc5,0x24,0x24,0x25,0xf2,0x24,0x23,0x25,0xf8,0x22,0x21,0x23,0xc6,0x21,0x20,0x23,0x5e,
|
0x28,0x27,0x29,0xc5,0x24,0x24,0x25,0xf2,0x24,0x23,0x25,0xf8,0x22,0x21,0x23,0xc6,0x21,0x20,0x23,0x5e,
|
||||||
0x21,0x21,0x23,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0x18,0xe3,0x18,0x00,0x00,0x00,0x00,};/*6540*/
|
0x21,0x21,0x23,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*6540*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_close_d[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x04,0x25,0x25,0x25,0x31,0x3c,0x3c,0x3c,0x7e,0x51,0x51,0x51,0xbb,
|
0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x04,0x25,0x25,0x25,0x31,0x3c,0x3c,0x3c,0x7e,0x51,0x51,0x51,0xbb,
|
||||||
0x51,0x51,0x51,0xee,0x51,0x51,0x51,0xff,0x51,0x51,0x51,0xff,0x51,0x51,0x51,0xed,0x51,0x51,0x51,0xba,
|
0x51,0x51,0x51,0xee,0x51,0x51,0x51,0xff,0x51,0x51,0x51,0xff,0x51,0x51,0x51,0xed,0x51,0x51,0x51,0xba,
|
||||||
0x3d,0x3d,0x3d,0x7e,0x20,0x20,0x20,0x31,0x09,0x09,0x09,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x3d,0x3d,0x3d,0x7e,0x20,0x20,0x20,0x31,0x09,0x09,0x09,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_close_n[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x1b,0x1b,0x1b,0x04,0x59,0x59,0x59,0x31,0x8f,0x8f,0x8f,0x7e,0xc0,0xc0,0xc0,0xbb,
|
0x00,0x00,0x00,0x00,0x1b,0x1b,0x1b,0x04,0x59,0x59,0x59,0x31,0x8f,0x8f,0x8f,0x7e,0xc0,0xc0,0xc0,0xbb,
|
||||||
0xbf,0xbf,0xbf,0xee,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xed,0xc1,0xc1,0xc1,0xba,
|
0xbf,0xbf,0xbf,0xee,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xed,0xc1,0xc1,0xc1,0xba,
|
||||||
0x8f,0x8f,0x8f,0x7e,0x58,0x58,0x58,0x31,0x1b,0x1b,0x1b,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x8f,0x8f,0x8f,0x7e,0x58,0x58,0x58,0x31,0x1b,0x1b,0x1b,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xf8,0xf8,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -206,4 +206,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_cross[]) = {
|
|||||||
0x00,0x00,0x00,0xa1,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0xa1,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe3,0x18,0xe3,0x18,0x00,0x00,0x00,0x00,};/*4156*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*4156*/
|
||||||
|
@ -52,5 +52,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_cursor[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9f,0x6b,0x0c,0x8a,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*1084*/
|
0x00,0x00,0x00,0x00,};/*1084*/
|
||||||
|
@ -52,5 +52,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_cursor_text[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x01,0x08,0x01,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*1084*/
|
0x00,0x00,0x00,0x00,};/*1084*/
|
||||||
|
@ -361,4 +361,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_dialog_title[]) = {
|
|||||||
0xcb,0xcb,0xcb,0xff,0xcb,0xcb,0xcb,0xff,0xcb,0xcb,0xcb,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,
|
0xcb,0xcb,0xcb,0xff,0xcb,0xcb,0xcb,0xff,0xcb,0xcb,0xcb,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,
|
||||||
0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,
|
0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,0xcc,0xcc,0xcc,0xff,
|
||||||
0xcc,0xcc,0xcc,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,
|
0xcc,0xcc,0xcc,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,
|
||||||
0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,};/*7260*/
|
0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0xcd,0xcd,0xcd,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*7260*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_discovery_active[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x05,0x00,0x4e,0x00,0x34,0x00,0x83,0x00,0x78,0x00,0xac,0x00,0x9d,
|
0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x05,0x00,0x4e,0x00,0x34,0x00,0x83,0x00,0x78,0x00,0xac,0x00,0x9d,
|
||||||
0x00,0x99,0x00,0x9c,0x00,0x97,0x00,0xa5,0x00,0x97,0x00,0xbd,0x00,0x9a,0x00,0xc1,0x00,0xad,0x00,0xa2,
|
0x00,0x99,0x00,0x9c,0x00,0x97,0x00,0xa5,0x00,0x97,0x00,0xbd,0x00,0x9a,0x00,0xc1,0x00,0xad,0x00,0xa2,
|
||||||
0x00,0x84,0x00,0x77,0x00,0x4b,0x00,0x33,0x00,0x17,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x84,0x00,0x77,0x00,0x4b,0x00,0x33,0x00,0x17,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0xe4,0xef,0xdc,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -21,4 +21,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_dot[]) = {
|
|||||||
0xc1,0xc1,0xc1,0xf1,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,
|
0xc1,0xc1,0xc1,0xf1,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,0xbf,0xbf,0xbf,0xff,
|
||||||
0xc2,0xc2,0xc2,0xf0,0xb4,0xb4,0xb4,0x83,0x2f,0x2f,0x2f,0x07,0x00,0x00,0x00,0x00,0x31,0x31,0x31,0x09,
|
0xc2,0xc2,0xc2,0xf0,0xb4,0xb4,0xb4,0x83,0x2f,0x2f,0x2f,0x07,0x00,0x00,0x00,0x00,0x31,0x31,0x31,0x09,
|
||||||
0x85,0x85,0x85,0x5c,0xc1,0xc1,0xc1,0xbd,0xbe,0xbe,0xbe,0xeb,0xbf,0xbf,0xbf,0xea,0xc1,0xc1,0xc1,0xbc,
|
0x85,0x85,0x85,0x5c,0xc1,0xc1,0xc1,0xbd,0xbe,0xbe,0xbe,0xeb,0xbf,0xbf,0xbf,0xea,0xc1,0xc1,0xc1,0xbc,
|
||||||
0x86,0x86,0x86,0x5b,0x37,0x37,0x37,0x09,0x01,0x01,0x01,0x00,0x00,0x39,0x00,0x18,0x00,0x00,0x00,0x00,};/*460*/
|
0x86,0x86,0x86,0x5b,0x37,0x37,0x37,0x09,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*460*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_empty[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -1243,4 +1243,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_flag_CN[]) = {
|
|||||||
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,
|
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,
|
||||||
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,
|
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,
|
||||||
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x28,0x43,0xa5,0xdf,
|
0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x27,0x48,0xbf,0xdf,0x28,0x43,0xa5,0xdf,
|
||||||
0x00,0x00,0x00,0x00,0xc5,0x31,0x02,0x19,0x00,0x00,0x00,0x00,};/*24892*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*24892*/
|
||||||
|
@ -1230,4 +1230,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_flag_US[]) = {
|
|||||||
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
||||||
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
||||||
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,0x43,0x23,0xad,0xe0,
|
||||||
0x43,0x23,0xad,0xe0,0x3f,0x28,0x8c,0xd4,0xfd,0xa5,0xfd,0xa5,0x00,0x00,0x00,0x00,};/*24636*/
|
0x43,0x23,0xad,0xe0,0x3f,0x28,0x8c,0xd4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*24636*/
|
||||||
|
@ -987,4 +987,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_flag_none[]) = {
|
|||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
||||||
0x00,0x00,0x00,0x81,0xbb,0x54,0xbb,0x54,0x00,0x00,0x00,0x00,};/*19772*/
|
0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*19772*/
|
||||||
|
@ -52,5 +52,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_folder[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x2c,0x2c,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*1084*/
|
0x00,0x00,0x00,0x00,};/*1084*/
|
||||||
|
@ -181,4 +181,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_green_btn_p[]) = {
|
|||||||
0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,
|
0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,
|
||||||
0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,
|
0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,0x82,0xab,0x4e,0xff,
|
||||||
0x8c,0xb1,0x5d,0xff,0xa1,0xbf,0x7d,0xd7,0xb6,0xcd,0x9a,0x97,0xe5,0xed,0xdb,0x37,0x00,0x00,0x00,0x00,
|
0x8c,0xb1,0x5d,0xff,0xa1,0xbf,0x7d,0xd7,0xb6,0xcd,0x9a,0x97,0xe5,0xed,0xdb,0x37,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9,0xd9,0xd9,0xff,0x00,0x00,0x00,0x00,};/*3660*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*3660*/
|
||||||
|
@ -692,5 +692,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_guage_pointer[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x71,0x76,0x71,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*13884*/
|
0x00,0x00,0x00,0x00,};/*13884*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_left_off[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xba,0xd6,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -1281,4 +1281,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_logo[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xf5,0xa0,0xf5,0x00,0x00,0x00,0x00,};/*25660*/
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*25660*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_middle_on[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_msg[]) = {
|
|||||||
0x09,0x09,0x09,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x09,0x09,0x09,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_msg_active[]) = {
|
|||||||
0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x0e,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_muted[]) = {
|
|||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xb8,0x64,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -145,4 +145,4 @@ TK_CONST_DATA_ALIGN(const unsigned char image_num_4[]) = {
|
|||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
|
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcc,0xcc,0xcc,0xff,0x00,0x00,0x00,0x00,};/*2940*/
|
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*2940*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_play_n[]) = {
|
|||||||
0x4d,0x4d,0x4d,0x00,0x00,0x00,0x00,0x00,0x53,0x53,0x53,0x09,0x51,0x51,0x51,0x7f,0x51,0x51,0x51,0xb9,
|
0x4d,0x4d,0x4d,0x00,0x00,0x00,0x00,0x00,0x53,0x53,0x53,0x09,0x51,0x51,0x51,0x7f,0x51,0x51,0x51,0xb9,
|
||||||
0x51,0x51,0x51,0xd8,0x50,0x50,0x50,0xf3,0x51,0x51,0x51,0xff,0x50,0x50,0x50,0xf1,0x51,0x51,0x51,0xba,
|
0x51,0x51,0x51,0xd8,0x50,0x50,0x50,0xf3,0x51,0x51,0x51,0xff,0x50,0x50,0x50,0xf1,0x51,0x51,0x51,0xba,
|
||||||
0x50,0x50,0x50,0x7f,0x4e,0x4e,0x4e,0x09,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,
|
0x50,0x50,0x50,0x7f,0x4e,0x4e,0x4e,0x09,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
@ -116,5 +116,5 @@ TK_CONST_DATA_ALIGN(const unsigned char image_play_o[]) = {
|
|||||||
0x1a,0x1a,0x1a,0x00,0x00,0x00,0x00,0x00,0x26,0x26,0x26,0x09,0x2c,0x2c,0x2c,0x7f,0x2c,0x2c,0x2c,0xb9,
|
0x1a,0x1a,0x1a,0x00,0x00,0x00,0x00,0x00,0x26,0x26,0x26,0x09,0x2c,0x2c,0x2c,0x7f,0x2c,0x2c,0x2c,0xb9,
|
||||||
0x2c,0x2c,0x2c,0xd8,0x2c,0x2c,0x2c,0xf3,0x2c,0x2c,0x2c,0xff,0x2b,0x2b,0x2b,0xf1,0x2c,0x2c,0x2c,0xba,
|
0x2c,0x2c,0x2c,0xd8,0x2c,0x2c,0x2c,0xf3,0x2c,0x2c,0x2c,0xff,0x2b,0x2b,0x2b,0xf1,0x2c,0x2c,0x2c,0xba,
|
||||||
0x2c,0x2c,0x2c,0x7f,0x28,0x28,0x28,0x09,0x00,0x00,0x00,0x00,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,
|
0x2c,0x2c,0x2c,0x7f,0x28,0x28,0x28,0x09,0x00,0x00,0x00,0x00,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xab,0x4e,0xff,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,};/*2364*/
|
0x00,0x00,0x00,0x00,};/*2364*/
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user