mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-10 07:39:16 +00:00
ICU-20111 move text layout properties data into a new ulayout.icu data file
This commit is contained in:
parent
6942013a38
commit
d2e3a8847d
16 changed files with 592 additions and 1759 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -76,7 +76,6 @@ icu4c/source/data/build-dir
|
|||
icu4c/source/data/build-local
|
||||
icu4c/source/data/data
|
||||
icu4c/source/data/icupkg.inc
|
||||
icu4c/source/data/in
|
||||
icu4c/source/data/makedata.vcproj.*.*.user
|
||||
icu4c/source/data/obj
|
||||
icu4c/source/data/out
|
||||
|
|
|
@ -426,6 +426,7 @@
|
|||
<ClInclude Include="propname.h" />
|
||||
<ClInclude Include="ruleiter.h" />
|
||||
<ClInclude Include="ucase.h" />
|
||||
<ClInclude Include="ulayout_props.h" />
|
||||
<ClInclude Include="unisetspan.h" />
|
||||
<ClInclude Include="uprops.h" />
|
||||
<ClInclude Include="usc_impl.h" />
|
||||
|
|
|
@ -855,6 +855,9 @@
|
|||
<ClInclude Include="ucase.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ulayout_props.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="unisetspan.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -554,6 +554,7 @@
|
|||
<ClInclude Include="propname.h" />
|
||||
<ClInclude Include="ruleiter.h" />
|
||||
<ClInclude Include="ucase.h" />
|
||||
<ClInclude Include="ulayout_props.h" />
|
||||
<ClInclude Include="unisetspan.h" />
|
||||
<ClInclude Include="uprops.h" />
|
||||
<ClInclude Include="usc_impl.h" />
|
||||
|
|
46
icu4c/source/common/ulayout_props.h
Normal file
46
icu4c/source/common/ulayout_props.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
// © 2019 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
|
||||
// ulayout_props.h
|
||||
// created: 2019feb12 Markus W. Scherer
|
||||
|
||||
#ifndef __ULAYOUT_PROPS_H__
|
||||
#define __ULAYOUT_PROPS_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
// file definitions ------------------------------------------------------------
|
||||
|
||||
#define ULAYOUT_DATA_NAME "ulayout"
|
||||
#define ULAYOUT_DATA_TYPE "icu"
|
||||
|
||||
// data format "Layo"
|
||||
#define ULAYOUT_FMT_0 0x4c
|
||||
#define ULAYOUT_FMT_1 0x61
|
||||
#define ULAYOUT_FMT_2 0x79
|
||||
#define ULAYOUT_FMT_3 0x6f
|
||||
|
||||
// indexes into indexes[]
|
||||
enum {
|
||||
// Element 0 stores the length of the indexes[] array.
|
||||
ULAYOUT_IX_INDEXES_LENGTH,
|
||||
// Elements 1..7 store the tops of consecutive code point tries.
|
||||
// No trie is stored if the difference between two of these is less than 16.
|
||||
ULAYOUT_IX_INPC_TRIE_TOP,
|
||||
ULAYOUT_IX_INSC_TRIE_TOP,
|
||||
ULAYOUT_IX_VO_TRIE_TOP,
|
||||
ULAYOUT_IX_RESERVED_TOP,
|
||||
|
||||
ULAYOUT_IX_TRIES_TOP = 7,
|
||||
|
||||
ULAYOUT_IX_MAX_VALUES = 9,
|
||||
|
||||
// Length of indexes[]. Multiple of 4 to 16-align the tries.
|
||||
ULAYOUT_IX_COUNT = 12
|
||||
};
|
||||
|
||||
constexpr int32_t ULAYOUT_MAX_INPC_SHIFT = 24;
|
||||
constexpr int32_t ULAYOUT_MAX_INSC_SHIFT = 16;
|
||||
constexpr int32_t ULAYOUT_MAX_VO_SHIFT = 8;
|
||||
|
||||
#endif // __ULAYOUT_PROPS_H__
|
|
@ -1,727 +0,0 @@
|
|||
// © 2018 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
//
|
||||
// file name: ulayout_props_data.h
|
||||
//
|
||||
// machine-generated by: icu/tools/unicode/c/genprops/layoutpropsbuilder.cpp
|
||||
|
||||
|
||||
#ifdef INCLUDED_FROM_UPROPS_CPP
|
||||
|
||||
static const int32_t maxInPCValue = 14;
|
||||
|
||||
static const uint16_t inpc_trieIndex[799]={
|
||||
0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0x80,0xc0,0xff,0x13f,0x17e,0x1be,0x17e,0x1fe,0x23e,0x27e,0x2bc,0x2fc,
|
||||
0x33c,0x37b,0x23e,0x3bb,0x3fb,0x439,0x477,0x4ad,0x4e1,0x521,0x531,0x571,0x599,0x5d9,0x619,0x656,
|
||||
0x2d7,0x2e8,0x2f4,0x2e8,0x30f,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0,0x10,0x20,
|
||||
0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,
|
||||
0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0x80,0x90,0xa0,
|
||||
0xb0,0xc0,0xd0,0xe0,0xf0,0xff,0x10f,0x11f,0x12f,0x13f,0x14f,0x15f,0x16f,0x17e,0x18e,0x19e,
|
||||
0x1ae,0x1be,0x1ce,0x1de,0x1ee,0x17e,0x18e,0x19e,0x1ae,0x1fe,0x20e,0x21e,0x22e,0x23e,0x24e,0x25e,
|
||||
0x26e,0x27e,0x28e,0x29e,0x2ae,0x2bc,0x2cc,0x2dc,0x2ec,0x2fc,0x30c,0x31c,0x32c,0x33c,0x34c,0x35c,
|
||||
0x36c,0x37b,0x38b,0x39b,0x3ab,0x23e,0x24e,0x25e,0x26e,0x3bb,0x3cb,0x3db,0x3eb,0x3fb,0x40b,0x41b,
|
||||
0x42b,0x439,0x449,0x459,0x469,0x477,0x487,0x497,0x4a7,0x4ad,0x4bd,0x4cd,0x4dd,0x4e1,0x4f1,0x501,
|
||||
0x511,0x521,0x531,0x541,0x551,0x531,0x541,0x551,0x561,0x571,0x581,0x591,0x5a1,0x599,0x5a9,0x5b9,
|
||||
0x5c9,0x5d9,0x5e9,0x5f9,0x609,0x619,0x629,0x639,0x649,0x656,0x666,0x676,0x686,0,0,0x68b,
|
||||
0x69a,0,0x6a9,0x6b8,0x6c7,0x6d5,0x6e5,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0x6f3,0,0x6f3,
|
||||
0,0x701,0,0x701,0,0,0,0x70b,0x71b,0x729,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0x739,0x749,0,0,
|
||||
0,0,0,0,0,0x759,0x768,0,0,0,0x772,0,0,0,0x77e,0x78d,
|
||||
0x79b,0,0,0,0,0,0,0,0,0x7ab,0,0,0x7b7,0x7c7,0,0x7cc,
|
||||
0x52c,0x81,0,0x7dc,0,0,0,0x7ea,0x3fb,0,0,0x7fa,0x807,0,0,0,
|
||||
0,0,0,0,0,0,0x817,0x827,0x835,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0x2b3,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0x2be,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0x843,0,0x850,0,0,0,0,
|
||||
0,0x101,0,0,0x85c,0x868,0,0x878,0x886,0,0,0x896,0,0x8a4,0x3fb,0,
|
||||
0,0x80,0,0,0x8b4,0x8c4,0,0x2b9,0,0,0x8cb,0x8da,0x8e7,0,0,0x8f5,
|
||||
0,0,0,0x905,0x2bd,0,0x915,0x151,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0x925,0,0x934,0,0,0x944,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0x954,0,0,0x95c,0x96a,0,0,0,
|
||||
0x81,0,0,0x97a,0,0,0,0,0x52d,0,0x985,0x995,0x3cb,0,0,0x1cc,
|
||||
0x81,0,0,0x9a2,0x9b2,0,0,0,0x9bf,0x9cf,0,0,0,0,0,0,
|
||||
0,0,0,0x71,0x9df,0,0xff,0,0,0x9ea,0x9fa,0x14f,0xa08,0x52b,0,0,
|
||||
0,0,0,0,0,0,0x9a0,0xa18,0x16f,0,0,0,0,0,0xa28,0xa37,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0x2eb,0xa47,0xe3,
|
||||
0x214,0,0,0,0xa57,0x2be,0,0,0,0,0,0xa67,0xa77,0,0,0,
|
||||
0,0,0xa7f,0xa8f,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0xa9b,0xaaa,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0xab9,0xac9,0,0xad8,
|
||||
0,0,0xae5,0,0xaf4,0,0,0xb00,0xb0a,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2eb,
|
||||
0xb1a,0,0,0,0,0,0xb2a,0xb32,0xb41,0,0,0,0,0,0,0,
|
||||
0xb50,0xb5f,0,0,0,0xb67,0xb77,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0xb84,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0x45,0x4d,0x4d,0x4d,0x5d,0x7d,0x9d,0xbd,0xdd,
|
||||
2,2,0xec,0x10a,0x129,0x149,2,0x169,2,2,2,2,2,2,2,2,
|
||||
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
||||
2,2,2,2,2,2,2,2,0x189,0x1a8,2,2,2,2,2,2,
|
||||
2,2,2,2,0x1c8,2,2,0x1e8,0x206,0x223,0x241,0x25f,0x27f,0x29d,0x2b7
|
||||
};
|
||||
|
||||
static const uint8_t inpc_trieData[2966]={
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
8,8,8,7,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,8,7,1,0,7,4,
|
||||
7,1,1,1,1,8,8,8,8,7,7,7,7,1,4,7,
|
||||
0,8,1,8,8,8,1,1,0,0,0,0,0,0,0,0,
|
||||
0,0,1,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,
|
||||
8,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,1,0,7,4,7,
|
||||
1,1,1,1,0,0,4,4,0,0,5,5,1,0,0,0,
|
||||
0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,
|
||||
0,1,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,8,0,8,
|
||||
8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,1,0,7,4,7,1,
|
||||
1,0,0,0,0,8,8,0,0,8,8,1,0,0,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,0,8,8,
|
||||
0,0,0,1,0,0,0,0,0,0,0,0,0,0,7,1,
|
||||
1,1,1,8,0,8,8,0xd,0,7,7,1,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,8,8,8,8,8,8,0,8,
|
||||
7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,1,0,7,8,7,1,
|
||||
1,1,1,0,0,4,0xb,0,0,5,0xc,1,0,0,0,0,
|
||||
0,0,0,0,8,0xd,0,0,0,0,0,0,0,0,0,0,
|
||||
1,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,8,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,7,7,8,7,7,0,
|
||||
0,0,4,4,4,0,5,5,5,8,0,0,0,0,0,0,
|
||||
0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,8,7,7,7,
|
||||
8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,8,8,7,7,7,7,
|
||||
0,8,8,9,0,8,8,8,8,0,0,0,0,0,0,0,
|
||||
8,1,0,0,0,0,0,0,0,0,0,0,0,1,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,0xd,7,7,7,7,
|
||||
0,8,0xd,0xd,0,0xd,0xd,8,8,0,0,0,0,0,0,0,
|
||||
7,7,0,0,0,0,0,0,0,0,0,0,0,1,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,8,8,7,7,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,8,8,0,7,7,7,1,1,0,4,
|
||||
4,4,0,5,5,5,8,0,0,0,0,0,0,0,0,0,
|
||||
7,0,0,0,0,0,0,0,0,0,0,1,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,7,7,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,8,0,0,0,0,7,7,7,8,
|
||||
8,1,0,1,0,7,4,0xb,4,5,0xc,5,7,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,
|
||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,7,8,7,7,8,8,8,8,1,1,1,0,0,0,0,
|
||||
0,0xe,0xe,0xe,0xe,0xe,7,0,8,8,8,8,8,8,8,8,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,7,8,7,7,8,8,8,8,1,1,1,8,1,0,0,
|
||||
0,0xe,0xe,0xe,0xe,0xe,0,0,0,8,8,8,8,8,8,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,1,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,1,0,
|
||||
1,0,8,0,0,0,0,7,4,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,1,8,9,1,1,9,
|
||||
9,9,9,8,8,8,8,8,7,8,9,8,8,1,0,8,
|
||||
8,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
|
||||
1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,0,0,0,0,0,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,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,7,7,8,8,1,4,8,8,8,8,
|
||||
8,1,7,0,8,7,0,1,1,0,0,0,0,0,0,7,
|
||||
7,1,1,0,0,0,0,1,1,0,7,7,7,0,0,7,
|
||||
7,7,7,7,7,7,0,0,8,8,8,8,0,0,0,0,
|
||||
0,0,0,0,0,0,0,1,7,4,8,8,7,7,7,7,
|
||||
7,7,1,0,7,0,0,0,0,0,0,0,0,0,0,7,
|
||||
7,7,8,0,0,8,1,1,0,0,0,0,0,0,0,0,
|
||||
0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,7,8,8,8,8,1,1,1,0xb,0xc,5,4,4,4,5,
|
||||
5,8,7,7,8,8,8,8,8,8,8,0,8,0,0,0,
|
||||
0,0,0,0,0,0,8,0,0,8,8,1,7,7,0xd,0xd,
|
||||
8,8,7,7,7,0,0,0,0,7,7,1,7,7,7,7,
|
||||
7,7,1,8,1,0,0,0,0,7,7,7,7,7,0xe,0xe,
|
||||
0xe,7,7,0xe,7,7,7,7,7,0,0,0,0,0,0,0,
|
||||
7,7,0,0,0,0,0,0,0,8,1,4,7,8,0,0,
|
||||
0,0,0,4,1,7,8,8,8,1,1,1,1,0,7,8,
|
||||
7,7,8,8,8,8,1,1,8,1,7,4,4,4,8,8,
|
||||
8,8,8,8,8,8,8,8,0,0,1,8,8,8,8,7,
|
||||
0,0,0,0,0,0,0,0,0,0,0,8,7,8,8,1,
|
||||
1,1,3,9,0xa,4,4,5,5,8,0xd,7,0,0,0,0,
|
||||
0,0,0,0,0,0,0,8,1,8,8,8,0,7,1,1,
|
||||
8,1,4,7,8,8,7,0,1,1,0,0,0,0,0,0,
|
||||
8,7,8,8,7,7,7,8,7,8,0,0,0,0,7,7,
|
||||
7,4,4,0xb,7,7,1,8,8,8,8,4,4,8,1,0,
|
||||
0,0,0,0,0,0,0,8,8,8,0,6,1,1,1,1,
|
||||
1,8,8,1,1,1,1,8,7,6,6,6,6,6,6,6,
|
||||
0,0,0,0,1,0,0,0,0,8,0,0,7,0,0,0,
|
||||
0,0,0,0,0,8,0,0,0,8,0,0,0,0,8,0,
|
||||
0,0,0,7,7,1,8,7,0,0,0,0,0,0,0,0,
|
||||
7,7,7,7,7,7,7,7,7,7,7,7,1,8,0,0,
|
||||
0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,
|
||||
8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,
|
||||
0,1,1,1,0,0,0,0,0,0,0,1,1,1,8,1,
|
||||
1,1,1,8,0,0,0,8,7,7,8,8,1,1,4,4,
|
||||
8,7,7,2,3,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,8,8,8,8,1,8,4,8,1,7,4,1,
|
||||
1,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,
|
||||
0,0,0,8,7,0,0,0,0,0,0,0,0,0,0,0,
|
||||
7,8,7,0,0,8,7,8,8,1,0xe,0xe,8,8,0xe,7,
|
||||
0xe,0xe,7,8,8,0,0,0,0,0,0,0,0,0,0,0,
|
||||
4,1,8,4,7,0,0,0,7,7,8,7,7,1,7,7,
|
||||
0,7,1,0,0,6,1,1,0,8,6,0,0,0,0,0,
|
||||
1,1,1,8,0,0,0,0,0,0,0,0,8,1,1,0,
|
||||
0,0,0,0,7,8,7,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,8,8,8,8,1,1,1,1,8,8,8,8,
|
||||
8,0,0,0,0,0,0,0,0,0,7,4,7,1,1,8,
|
||||
8,7,7,1,1,0,0,0,0,0,0,0,8,8,8,1,
|
||||
1,4,8,9,9,8,1,1,0,8,0,0,0,0,0,0,
|
||||
0,0,0,0,0,7,4,7,1,1,1,1,1,1,8,8,
|
||||
8,0xd,7,0,0,0,0,0,0,0,0,1,0,8,1,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,7,7,7,1,8,
|
||||
8,0xd,0xd,8,7,8,8,0,0,0,0,0,0,8,0,7,
|
||||
4,7,1,1,8,8,8,8,1,1,0,0,0,0,0,0,
|
||||
0,0,0,0,0,1,1,0,7,7,8,7,7,7,7,0,
|
||||
0,4,4,0,0,5,5,7,0,0,7,7,0,0,8,8,
|
||||
8,8,8,8,8,0,0,0,7,7,1,8,8,7,1,0,
|
||||
0,0,0,0,0,0,0,0,7,4,7,1,1,1,1,1,
|
||||
1,4,8,0xb,5,7,5,8,7,1,1,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,4,7,1,1,1,1,0,0,4,
|
||||
0xb,5,0xc,8,8,7,1,7,7,7,1,1,1,1,1,1,
|
||||
8,8,7,7,8,7,1,0,0,0,0,0,0,0,0,0,
|
||||
0,0,8,7,8,4,7,1,1,8,8,8,8,7,1,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,1,0,8,7,
|
||||
7,8,8,1,1,4,8,1,8,8,8,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,7,4,7,1,1,1,8,8,8,
|
||||
8,8,7,1,1,0,0,0,0,0,7,8,7,1,1,1,
|
||||
1,0,0,8,8,7,7,7,7,1,0,0,0,4,0,0,
|
||||
0,0,0,0,0,0,0,0,0,8,1,1,8,8,8,8,
|
||||
8,8,1,0,0,0,0,0,1,1,8,8,8,8,7,0,
|
||||
1,1,1,1,0,8,1,1,8,8,8,7,7,1,1,1,
|
||||
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
|
||||
8,7,8,0,0,0,0,0,0,0,8,8,1,1,1,1,
|
||||
1,0,8,8,8,8,8,8,7,1,0,0,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,0,7,1,1,1,1,
|
||||
1,1,4,1,8,7,8,8,0,0,0,0,0,0,0,0,
|
||||
0,8,8,8,8,8,1,0,0,0,8,0,8,8,0,8,
|
||||
8,1,8,1,0,0,1,0,0,0,0,0,0,0,0,0,
|
||||
0,7,7,7,7,7,0,8,8,0,7,7,8,7,0,0,
|
||||
0,0,0,0,0,0,0,8,1,4,7,0,0,0,0,0,
|
||||
0,0,0,0,0,0
|
||||
};
|
||||
|
||||
static const UCPTrie inpc_trie={
|
||||
inpc_trieIndex,
|
||||
{ inpc_trieData },
|
||||
799, 2966,
|
||||
0x12000, 0x12,
|
||||
1, 2,
|
||||
0, 0,
|
||||
0x2, 0x0,
|
||||
0x0,
|
||||
};
|
||||
|
||||
static const int32_t maxInSCValue = 35;
|
||||
|
||||
static const uint16_t insc_trieIndex[841]={
|
||||
0,0x40,0x60,0x94,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0xd4,0x112,0x152,0x190,0x1cf,0x20d,0x24c,0x28a,0x2ca,0x308,0x346,0x384,
|
||||
0x3c4,0x402,0x442,0x480,0x4c0,0x4fe,0x53e,0x57e,0x5bd,0x5fd,0x63c,0x67c,0x69c,0x6dc,0x71c,0x759,
|
||||
0x2ff,0x312,0x31e,0x312,0x339,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x60,0x70,0x80,
|
||||
0x90,0x94,0xa4,0xb4,0xc4,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,
|
||||
0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x40,0x50,0x60,
|
||||
0x70,0x40,0x50,0x60,0x70,0xd4,0xe4,0xf4,0x104,0x112,0x122,0x132,0x142,0x152,0x162,0x172,
|
||||
0x182,0x190,0x1a0,0x1b0,0x1c0,0x1cf,0x1df,0x1ef,0x1ff,0x20d,0x21d,0x22d,0x23d,0x24c,0x25c,0x26c,
|
||||
0x27c,0x28a,0x29a,0x2aa,0x2ba,0x2ca,0x2da,0x2ea,0x2fa,0x308,0x318,0x328,0x338,0x346,0x356,0x366,
|
||||
0x376,0x384,0x394,0x3a4,0x3b4,0x3c4,0x3d4,0x3e4,0x3f4,0x402,0x412,0x422,0x432,0x442,0x452,0x462,
|
||||
0x472,0x480,0x490,0x4a0,0x4b0,0x4c0,0x4d0,0x4e0,0x4f0,0x4fe,0x50e,0x51e,0x52e,0x53e,0x54e,0x55e,
|
||||
0x56e,0x57e,0x58e,0x59e,0x5ae,0x5bd,0x5cd,0x5dd,0x5ed,0x5fd,0x60d,0x61d,0x62d,0x63c,0x64c,0x65c,
|
||||
0x66c,0x67c,0x68c,0x69c,0x6ac,0x69c,0x6ac,0x6bc,0x6cc,0x6dc,0x6ec,0x6fc,0x70c,0x71c,0x72c,0x73c,
|
||||
0x74c,0x759,0x769,0x779,0x789,0xe9,0xe9,0x799,0x7a4,0x7b4,0x7c4,0x7d3,0x7e2,0x7f0,0x800,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x810,0x81e,0xe6,0x81e,0xe6,0x82e,0x810,0x83e,0xe9,0xe9,0x84e,
|
||||
0x85a,0x864,0x873,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x883,0x16c,0x893,0x8a3,0x22d,0xe9,0x8b3,0x8c3,0xe9,0xe9,0x374,0x8d3,
|
||||
0x8e2,0x30,0x40,0x40,0xe9,0x8f2,0xe9,0xe9,0x902,0x90f,0x91f,0x92b,0x30,0x30,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x93b,0xe6,0xe9,0x94b,0x957,0x30,0x40,0x40,0x967,0xe9,0x976,0x986,
|
||||
0xe9,0xe9,0x996,0x9a6,0xe9,0xe9,0x9b6,0x9c3,0x9d3,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x9e3,0x9f1,0x9ff,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0xa0a,0xa16,0xa26,0x40,0x40,0x40,0x40,0x40,0x75b,0xa34,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0xa44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x74,0x40,0x40,0x40,0xa54,0xe9,0xa61,0x40,0xe9,0xa71,0xa7f,0xa8e,0xd6,0xe7,0xe9,0xa9e,
|
||||
0xaaa,0x30,0xaba,0xac8,0xad8,0xe9,0xae6,0xe9,0xaf6,0xb05,0x40,0x40,0xb15,0xe9,0xe9,0xb24,
|
||||
0x297,0x30,0xb34,0xb44,0xe3,0xe9,0x88a,0xb54,0xb64,0x30,0xe9,0xb73,0xe9,0xe9,0xe9,0xb83,
|
||||
0xb93,0x40,0xba3,0xbb3,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0xbc3,0xbd3,0xbe0,0x30,0xbf0,0xc00,0xe9,0xc0a,0x31,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0xc1a,0xe6,0xe9,0x88b,0xc2a,0xc38,0xc42,0xc52,0xc62,0xe9,0xe9,0xc72,
|
||||
0x40,0x40,0x40,0x40,0xc82,0xe9,0x88c,0xc92,0xca2,0xcb2,0xe9,0xcbf,0xd5,0xe8,0xe9,0xccf,
|
||||
0xcdf,0x30,0x6bb,0x35,0xe1,0x3eb,0x887,0xcef,0x40,0x40,0x40,0x40,0xcff,0x16d,0xd0e,0xdf,
|
||||
0xe9,0xd1e,0xd2e,0x30,0xd3e,0x162,0x172,0xd4e,0x308,0xd5e,0xd6e,0x9ee,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0xdb,0xe9,0xe9,0xd7e,0xd8c,0xd9c,0x40,0x40,0xdac,0xe9,0xe9,0x920,
|
||||
0xdbc,0x30,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xdb,0xe9,0xff,0xdcc,
|
||||
0xddc,0xde4,0x40,0x40,0xdb,0xe9,0xe9,0xdf4,0xe04,0x30,0x40,0x40,0xdf,0xe9,0xe14,0xe21,
|
||||
0x30,0x40,0x40,0x40,0xe9,0xe31,0xe41,0xe51,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0xdf,0xe9,0x887,0xe61,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe71,0xe9,
|
||||
0xe9,0xe80,0xe90,0x40,0xea0,0xe9,0xe9,0xead,0xebd,0xecd,0xe9,0xe9,0xed9,0xee3,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
||||
0x40,0x40,0x40,0x40,0xef3,0xe9,0xff,0xf03,0xf13,0x6bc,0xf23,0x556,0xe9,0xf31,0x72c,0xf41,
|
||||
0x40,0x40,0x40,0x40,0xf51,0xe9,0xe9,0xf60,0xf70,0x30,0xf80,0xe9,0xf8c,0xf99,0x30,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe9,0xfa9,0x40,
|
||||
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x45,
|
||||
0x55,0x55,0x55,0x65,0x85,0xa5,0xc5,0xe5,4,4,0xf5,0x114,0x134,0x154,4,0x174,
|
||||
4,0x184,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,0x1a4,0x1c4,4,4,4,4,4,4,4,4,4,4,0x1e4,4,
|
||||
4,0x204,0x224,0x244,0x264,0x284,0x2a4,0x2c4,0x2df
|
||||
};
|
||||
|
||||
static const uint8_t insc_trieData[4026]={
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0xc,0,0,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0xc,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0x1c,0x1c,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0xc,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,2,2,2,0x20,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x22,0x22,
|
||||
0x17,1,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,
|
||||
0x22,0x22,0,4,4,0,0,0x22,0x22,0x22,5,5,5,5,5,5,
|
||||
5,5,0x23,0x23,0x22,0x22,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0,0,0x23,0x23,0x23,0x23,0x23,0x23,5,5,5,5,5,5,
|
||||
5,5,0xc,2,2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,
|
||||
0,0x23,0x23,0,0,0x23,0x23,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,
|
||||
5,5,5,0,5,0,0,0,5,5,5,5,0,0,0x17,1,
|
||||
0x22,0x22,0x22,0x22,0x22,0,0,0x22,0x22,0,0,0x22,0x22,0x1f,6,0,
|
||||
0,0,0,0,0,0,0,0x22,0,0,0,0,5,5,0,5,
|
||||
0x23,0x23,0x22,0x22,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
5,5,0,0,0,0,0,0,0,0,0,0,2,0,0x1c,0,
|
||||
2,2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0,0,0,0,0x23,0x23,
|
||||
0,0,0x23,0x23,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,
|
||||
0,5,5,0,5,5,0,5,5,0,0,0x17,0,0x22,0x22,0x22,
|
||||
0,0,0,0,0x22,0x22,0,0,0x22,0x22,0x1f,0,0,0,4,0,
|
||||
0,0,0,0,0,0,5,5,5,5,0,5,0,0,0,0,
|
||||
0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,2,0x12,0xc,
|
||||
0xc,0,0xb,0,0,0,0,0,0,0,0,0,0,2,2,0x20,
|
||||
0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0x23,0x23,0x23,0,0x23,
|
||||
0x23,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,5,
|
||||
0,5,5,5,5,5,0,0,0x17,1,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0,0x22,0x22,0x22,0,0x22,0x22,0x1f,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0x23,0x23,0x22,0x22,0,0,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,0,0,0,
|
||||
0,0,0,5,4,4,4,0x17,0x17,0x17,0,2,2,0x20,0,0x23,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0,0x23,0x23,0,0,0x23,0x23,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,0,5,5,5,5,5,5,5,0,5,5,0,5,
|
||||
5,5,5,5,0,0,0x17,1,0x22,0x22,0x22,0x22,0x22,0,0,0x22,
|
||||
0x22,0,0,0x22,0x22,0x1f,0,0,0,0,0,0,0,0,0x22,0x22,
|
||||
0,0,0,0,5,5,0,5,0x23,0x23,0x22,0x22,0,0,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,5,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,2,0x15,0,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,0,0,0,0x23,0x23,0x23,0,0x23,0x23,0x23,5,0,0,0,5,
|
||||
5,0,5,0,5,5,0,0,0,5,5,0,0,0,5,5,
|
||||
5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
0,0,0,0,0x22,0x22,0x22,0,0,0,0x22,0x22,0x22,0,0x22,0x22,
|
||||
0x22,0x1f,0,0,0,0,0,0,0,0,0,0x22,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,2,2,2,0x20,2,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,0,0x23,0x23,0x23,0,0x23,0x23,0x23,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
|
||||
0,1,0x22,0x22,0x22,0x22,0x22,0,0x22,0x22,0x22,0,0x22,0x22,0x22,0x1f,
|
||||
0,0,0,0,0,0,0,0x22,0x22,0,5,5,5,0,0,0,
|
||||
0,0,0x23,0x23,0x22,0x22,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,2,2,2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,
|
||||
0x23,0x23,0x23,0,0x23,0x23,0x23,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,
|
||||
5,5,5,5,5,5,0,5,5,5,5,5,0,0,0x17,1,
|
||||
0x22,0x22,0x22,0x22,0x22,0,0x22,0x22,0x22,0,0x22,0x22,0x22,0x1f,0,0,
|
||||
0,0,0,0,0,0x22,0x22,0,0,0,0,0,0,0,5,0,
|
||||
0x23,0x23,0x22,0x22,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0,0x11,0x11,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,2,2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0x23,0x23,
|
||||
0x23,0,0x23,0x23,0x23,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,0x1a,0x1a,1,0x22,0x22,
|
||||
0x22,0x22,0x22,0,0x22,0x22,0x22,0,0x22,0x22,0x22,0x1f,0xd,0,0,0,
|
||||
0,0,6,6,6,0x22,0,0,0,0,0,0,0,0x23,0x23,0x23,
|
||||
0x22,0x22,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,
|
||||
0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,
|
||||
2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,0x23,0x23,0x23,0x23,0,0,0,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
0,5,5,5,5,5,5,5,5,5,0,5,0,0,5,5,
|
||||
5,5,5,5,5,0,0,0,0x1f,0,0,0,0,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0,0x22,0,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0,0,
|
||||
0,0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,
|
||||
0x22,0x22,0,0,0,0,0,0,0,0,0,0,0,0,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,0,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1a,0,0,0,0,0,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0,0x22,0x1e,0x1e,0x1e,0x1e,0xa,2,0x1a,0,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,
|
||||
5,0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
0,5,0,5,5,5,5,5,5,5,5,0,0x22,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x1a,0x22,0xb,0xb,0,0,0x22,0x22,0x22,0x22,
|
||||
0x22,0,0,0,0x1e,0x1e,0x1e,0x1e,0,2,0,0,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0,0,5,5,5,5,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0,0x1c,0,0x1c,0,0x17,0,0,0,0,0,0,5,5,5,5,
|
||||
5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,5,5,5,5,5,5,0,0,0,0,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,2,0x20,0x22,0x22,2,2,
|
||||
0x1a,1,0,0,8,8,8,8,8,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
|
||||
0xf,0xf,0xf,0xf,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
|
||||
0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
|
||||
0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0,0,0,0,0,0,0x1c,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,5,0x23,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,2,0x1e,0x20,0x13,0x1a,0xb,
|
||||
0xb,0xb,0xb,5,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0xc,
|
||||
0,0,0xc,0,5,5,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,5,5,
|
||||
5,5,0xb,0xb,5,0x22,0x1e,0x1e,5,5,0x22,0x22,0x1e,0x1e,0x1e,0x1e,
|
||||
0x1e,5,5,0x22,0x22,0x22,0x22,5,5,5,5,5,5,5,5,5,
|
||||
5,5,0xb,0x22,0x22,0x22,0x22,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,5,0x1e,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1e,0x1e,0x22,0x22,0,0,
|
||||
0x23,0x23,0x23,5,5,5,5,5,5,5,5,5,5,0,5,5,
|
||||
0x22,0x22,0x1a,0,0,0,0,0,0,0,0,0,0,0,5,5,
|
||||
0x22,0x22,0,0,0,0,0,0,0,0,0,0,0,0,5,0,
|
||||
0x22,0x22,0,0,0,0,0,0,0,0,0,0,0,0,5,5,
|
||||
5,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,2,0x20,0x22,0x1b,0x1b,0x1c,
|
||||
0x10,0xa,0x1c,0x1c,0x1a,0x13,0x1c,0,0,0,0,0,0,0,0,1,
|
||||
0x1c,0,0,0xc,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xf,0xf,0xf,0,
|
||||
0,0,0,7,7,2,7,7,7,7,7,7,7,0x22,0x1c,0,
|
||||
0,0,0,5,5,5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
|
||||
0x21,0,0,0x1d,0x1d,0x1d,0x1d,0x1d,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,7,7,7,7,7,7,7,0x1e,0x1e,0,0,0,0,
|
||||
0,0,5,5,5,5,5,5,5,0x22,0x22,0x22,0x22,0x22,0,0,
|
||||
0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0x23,
|
||||
0x23,0x23,5,5,0xb,0xb,0xf,7,7,9,0xf,0xf,0xf,0xf,0,0x13,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,2,
|
||||
0x1e,0x1e,0x1e,0x1e,0x1e,0x1a,0x1c,0x1c,0,0,0x1c,2,2,2,0x10,0x20,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,5,5,5,5,0x17,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,5,5,5,5,
|
||||
5,5,5,0,0,0,0,2,0x10,0x20,0x23,0x23,0x23,0x23,0x23,0x23,
|
||||
0x23,5,5,5,5,5,5,0xf,0xf,0xf,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x1a,0x13,0xf,0xf,5,5,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
1,5,5,5,7,7,5,5,5,5,0x23,0x23,0x17,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,7,7,0x1a,0x1a,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,5,5,5,5,0xf,0xf,0x22,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,7,7,7,7,2,2,0x1c,0x17,0,0,0,0,0,
|
||||
0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,
|
||||
5,5,5,4,4,4,0,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,6,6,4,0x11,0x11,4,4,4,0xc,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0x1c,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0x16,0x14,0,0,0xc,0xc,0xc,0xc,0xc,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0x1c,0x1c,0x1c,0,0,0,0,0,0,0,
|
||||
0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0x23,0x23,0x22,0x23,0x23,0x23,0x1a,5,5,5,5,2,
|
||||
5,5,5,5,0x22,0x22,0x22,0x22,0x22,0,0,0,0,0,0,0,
|
||||
0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x21,
|
||||
0x21,5,5,5,5,0x21,0xf,0xf,5,5,5,5,5,5,5,0xf,
|
||||
5,2,0,0,0,0,0,0,0,0,0,0,0,0,5,5,
|
||||
5,5,0xb,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,2,
|
||||
0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,2,2,0,0,0,0,
|
||||
0,0,0,0,0,0,0x23,0x22,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,5,5,5,5,5,5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
|
||||
0x21,0x1e,0x1e,0x1e,0,0,5,5,5,5,5,5,5,0x22,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,7,7,7,0x1a,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,2,2,0x10,0x20,0x23,0x23,0x23,0x23,0x23,5,5,
|
||||
5,0x23,0x23,0x23,5,5,5,0x17,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x22,0xf,0xb,0xb,5,5,5,5,5,0x22,0,5,5,5,5,5,
|
||||
5,5,5,5,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,5,5,
|
||||
5,5,5,0,0x22,0x22,0x22,0xb,0xb,0xb,0xb,0,0,0,0,0,
|
||||
0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,
|
||||
7,7,0,0,5,5,5,0xc,0xc,0xc,0,0,0,5,0x1e,0x1e,
|
||||
0x1e,5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x22,0x22,0x1e,0x1d,0x1e,0x1d,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0x23,0x23,5,5,5,5,5,5,5,5,5,0x22,0x22,
|
||||
0x22,0x22,0x22,0,0,0,0,0,0x20,0x13,0,0,0,0,0,0,
|
||||
0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,
|
||||
5,0x23,0x23,5,0x23,5,5,5,5,5,5,5,5,5,7,7,
|
||||
7,7,7,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0,0x1e,0x1a,0,0,
|
||||
5,0x22,0x22,0x22,0,0x22,0x22,0,0,0,0,0,0x22,0x22,2,0x20,
|
||||
5,5,5,5,0,5,5,5,0,5,5,5,5,5,5,5,
|
||||
0,0,0x17,0x17,0x17,0,0,0,0,0x13,2,2,0x20,0x11,0x11,0x23,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x1f,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,3,3,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0x19,2,2,0x20,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,5,
|
||||
5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,0x17,0,0,0,
|
||||
0,0,2,2,0x20,0x23,0x23,0x23,0x23,5,5,5,5,5,5,5,
|
||||
5,5,0x22,0x22,0x22,0x13,0x1a,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0,0,0,0,5,0x22,0x22,0,0,0,0,0,0,0,
|
||||
0,0,0x21,0x21,0x21,0x21,0x21,5,5,5,5,5,5,5,5,5,
|
||||
5,5,0x17,0,0,0,0,0,0,0,0,0,0,0,0,5,
|
||||
5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,
|
||||
1,0xe,0xe,0,0,0,0,0,0x1c,0x17,0x22,0x22,0,0,0,0x22,
|
||||
0x22,0x22,0x22,2,0x1f,0x17,0x12,0,0,0,0,0,0,4,0,0x23,
|
||||
0x23,0x23,0x23,5,5,5,0,5,0,5,5,5,5,0,5,5,
|
||||
5,5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,
|
||||
5,5,5,5,5,5,5,5,5,5,5,5,5,2,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x17,0x1a,0,0,0,0,0,2,2,
|
||||
2,0x20,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0,0x23,5,0,
|
||||
5,5,0,5,5,5,5,5,0,0x17,0x17,1,0x22,0x22,0,0,
|
||||
0,0,0,0,0,0x22,0,0,0,0,0,0,2,2,0x23,0x23,
|
||||
0x22,0x22,0,0,4,4,4,4,4,4,4,0,0,0,5,5,
|
||||
5,5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,2,
|
||||
2,0x20,0x17,1,0,0,0,0,0,0,0,0,0x18,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,0,0x1c,2,0,0x23,0x23,0x23,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,5,2,0x20,0x1f,0x17,
|
||||
1,0,0,0,0,0,0,0,0,0,0,0,0x22,0x22,0x22,0x22,
|
||||
0x22,0x22,0,0,0x22,0x22,0x22,0x22,2,2,0x20,0x1f,0x17,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0x23,0x23,0x23,0x23,
|
||||
0x22,0x22,0,0,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||
0x22,2,0x20,0x1f,0x22,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,2,
|
||||
0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x1f,0x17,5,0,0,0,0,0,0,
|
||||
0,5,5,5,5,5,5,5,5,5,5,5,0,0,0xb,0xb,
|
||||
0xb,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1a,0,0,0,
|
||||
0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0,0,0,
|
||||
0,0x22,0x22,0x22,0x22,0x22,0x22,0x22,2,0x20,0x1f,0x17,0,0,0,0,
|
||||
0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0,0x23,0x23,0x23,0x23,5,
|
||||
5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0,0,0x22,0x22,0x22,0x22,2,0x20,
|
||||
0x1f,1,0,0,0x22,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,5,5,5,5,5,
|
||||
0x1c,0x1a,2,2,2,2,0x20,0xe,0xb,0xb,0xb,0xb,0xc,0,0,0,
|
||||
0,0,0xc,0,0x13,0,0,0,0,0,0,0,0,0x23,0x22,0x22,
|
||||
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,5,5,5,5,0xe,0xe,0xe,
|
||||
0xe,0xe,0xe,7,7,7,7,7,7,2,0x20,0x12,0x13,0,0,0,
|
||||
1,0,0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0x23,0x23,0x23,
|
||||
0x23,5,5,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0,0x22,0x22,0x22,0x22,2,
|
||||
2,0x20,0x1f,1,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
|
||||
0,0,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
|
||||
0xf,0x22,0x22,0x22,0x22,0x22,2,2,0,0,0,0,0,0,0,0,
|
||||
0,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0,0x23,0x23,0,0x23,5,5,5,
|
||||
5,0x22,0x22,0x22,0x22,0x22,0x22,0,0,0,0x22,0,0x22,0x22,0,0x22,
|
||||
2,0x20,0x17,0x22,0x1a,0x13,0xd,0xb,0,0,0,0,0,0,0,0,
|
||||
0x23,0x23,0x23,0x23,0x23,0x23,0,0x23,0x23,0,0x23,0x23,5,5,5,5,
|
||||
5,5,5,5,5,5,0x22,0x22,0x22,0x22,0x22,0,0x22,0x22,2,0x20,
|
||||
0x13,0,0,0,0,0,0,0,0,5,5,0xc,0x22,0x22,0x22,0x22,
|
||||
0,0,0,0,0,0,0,0,0,0
|
||||
};
|
||||
|
||||
static const UCPTrie insc_trie={
|
||||
insc_trieIndex,
|
||||
{ insc_trieData },
|
||||
841, 4026,
|
||||
0x12000, 0x12,
|
||||
1, 2,
|
||||
0, 0,
|
||||
0x4, 0x40,
|
||||
0x0,
|
||||
};
|
||||
|
||||
static const int32_t maxVoValue = 3;
|
||||
|
||||
static const uint16_t vo_trieIndex[1054]={
|
||||
0,0x40,0x59,0x98,0,0,0,0,0,0,0,0xd0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0x30d,0x327,0x335,0x34b,0x36b,0x389,0x3a4,0x3be,0x327,0x327,0x327,0x3de,0x327,0x327,0x327,0x3de,
|
||||
0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,
|
||||
0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,
|
||||
0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x3fe,0x327,0x327,0x327,0x3de,
|
||||
0x327,0x327,0x327,0x3de,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x59,0x69,0x79,0x89,
|
||||
0x98,0xa8,0xb8,0xc8,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
|
||||
0,0x10,0x20,0x30,0xd0,0xe0,0xf0,0x100,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
|
||||
0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
|
||||
0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x10f,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0x110,0x110,0x110,0x110,0x110,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0xa9,0x96,0x11e,0x12c,0xae,0xaa,0,0,0,0,0,
|
||||
0,0x103,0x13c,0,0x14c,0x158,0x166,0x10b,0x175,0x110,0x110,0x110,0x184,0,0,0,
|
||||
0,0,0,0,0x72,0,0xf6,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0x190,0x110,0x198,0,0,0,0,0x103,0x110,0x115,0,0xec,0x1a8,
|
||||
0x1b6,0x10e,0x110,0x110,0x1c6,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0,0,0,0,0,0,0,0,0,0,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x116,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x118,0x10a,0x110,0x1d2,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0x10e,0x110,0,0,
|
||||
0x116,0,0,0,0,0,0x108,0x110,0x1e2,0x114,0x110,0,0,0,0,0,
|
||||
0,0,0,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x1f1,0x1ff,0x110,0x20e,0x21d,
|
||||
0x110,0x22a,0x110,0x237,0x246,0x256,0x110,0x22a,0x110,0x237,0x261,0x110,0x110,0x26e,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x27e,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x27e,0x27e,0x27e,0x27e,0x27e,
|
||||
0x286,0x110,0x28e,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0x110,0x110,0,0,0,0,0,
|
||||
0,0,0,0x110,0,0x110,0x117,0x29b,0x2aa,0,0,0,0,0,0,0,
|
||||
0,0,0x2ba,0x2c9,0x110,0x2d9,0x110,0x2e9,0x2f8,0,0,0,0,0,0,0,
|
||||
0x308,0x318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0x110,0x110,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0,0,0,0,0,0,0,0,0x328,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
|
||||
0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x112,0x84,0x98,0xa8,
|
||||
0xa8,0xa8,0xa8,0xa8,0xa8,0xc8,0xc,0xe8,0x100,0x115,0xc,0xc,0xc,0x134,0x153,0x172,
|
||||
0x191,0xc,0x1ab,0xc,0x1cb,0x1eb,0x20b,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0xfb,0xc,0x243,0xc,0x223,0x223,0x223,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0xc,0xc,0xc,0xc,0x223,0x223,0x223,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0xf8,0xc,0x262,0xc,0xc,0xc,0xc,0x282,
|
||||
0xc,0xc,0xc,0xc,0xc,0x29c,0xc,0xc,0xfd,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
|
||||
0xc,0xc,0xc,0x223,0x223,0x2b8,0xc,0xc,0xc,0xc,0xc,0x223,0x100,0xc,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
|
||||
0x2bc,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0xf8,0xc,0xc,0xc,0xc,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x223,0xf8,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0x223,0x2cc,0xc,0xc,0x223,0xfd,0xc,0xc,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0x223,0x2ec,0x223,0x223,0xc8,0xfe,0xc,0xc,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,
|
||||
0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x223,0x2ed,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
|
||||
0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc
|
||||
};
|
||||
|
||||
static const uint8_t vo_trieData[828]={
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,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,3,0,0,0,0,3,0,0,3,0,0,0,0,0,
|
||||
0,0,0,0,0,3,3,3,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,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,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,3,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
|
||||
0,0,0,0,0,0,0,0,0,3,3,0,0,0,3,0,
|
||||
0,0,0,3,3,3,0,0,0,0,0,0,3,0,3,3,
|
||||
3,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,
|
||||
3,3,3,3,3,3,0,0,0,0,0,3,3,0,3,3,
|
||||
0,0,0,0,0,0,3,3,3,3,0,3,0,3,0,3,
|
||||
0,0,0,0,3,0,0,0,0,0,3,3,3,3,3,3,
|
||||
0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,0,
|
||||
3,3,3,3,3,3,3,3,0,0,0,0,3,3,3,3,
|
||||
3,1,1,3,0,0,0,0,3,3,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,
|
||||
3,3,0,0,0,0,3,3,3,0,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,3,3,0,3,3,3,3,3,3,3,3,3,3,3,
|
||||
3,3,2,2,3,3,3,3,3,1,1,1,1,1,1,1,
|
||||
1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,3,
|
||||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,
|
||||
2,3,2,3,2,3,2,3,3,3,3,3,3,2,3,3,
|
||||
3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,3,
|
||||
3,3,3,3,3,2,3,3,3,3,3,2,2,3,3,3,
|
||||
3,2,2,3,3,3,1,2,3,2,3,2,3,2,3,2,
|
||||
3,3,3,3,3,3,2,2,3,3,3,3,3,1,3,3,
|
||||
3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,
|
||||
2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,
|
||||
3,3,3,3,3,3,3,3,3,2,2,2,2,2,3,3,
|
||||
3,3,3,0,1,1,1,1,1,1,3,3,3,0,0,0,
|
||||
0,3,3,3,3,3,3,3,3,3,0,2,3,3,3,3,
|
||||
3,3,1,1,3,3,2,0,2,3,3,3,3,3,3,3,
|
||||
3,3,3,1,1,0,0,0,2,3,3,3,3,3,3,3,
|
||||
3,3,3,3,1,3,1,3,1,3,3,3,3,3,3,3,
|
||||
3,3,3,3,1,1,1,1,1,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,3,3,3,1,3,3,3,3,
|
||||
0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,
|
||||
3,0,0,0,3,3,0,0,2,2,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,3,3,0,0,0,0
|
||||
};
|
||||
|
||||
static const UCPTrie vo_trie={
|
||||
vo_trieIndex,
|
||||
{ vo_trieData },
|
||||
1054, 828,
|
||||
0x110000, 0x110,
|
||||
1, 2,
|
||||
0, 0,
|
||||
0xc, 0x0,
|
||||
0x0,
|
||||
};
|
||||
|
||||
#endif // INCLUDED_FROM_UPROPS_CPP
|
|
@ -26,23 +26,131 @@
|
|||
#include "unicode/utypes.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "unicode/ucptrie.h"
|
||||
#include "unicode/udata.h"
|
||||
#include "unicode/unorm2.h"
|
||||
#include "unicode/uscript.h"
|
||||
#include "unicode/ustring.h"
|
||||
#include "cstring.h"
|
||||
#include "mutex.h"
|
||||
#include "normalizer2impl.h"
|
||||
#include "umutex.h"
|
||||
#include "ubidi_props.h"
|
||||
#include "uprops.h"
|
||||
#include "ucase.h"
|
||||
#include "ucln_cmn.h"
|
||||
#include "ulayout_props.h"
|
||||
#include "ustr_imp.h"
|
||||
|
||||
// ulayout_props_data.h is machine-generated by genprops
|
||||
#define INCLUDED_FROM_UPROPS_CPP
|
||||
#include "ulayout_props_data.h"
|
||||
|
||||
U_NAMESPACE_USE
|
||||
|
||||
// Unicode text layout properties data -----------------------------------------
|
||||
|
||||
namespace {
|
||||
|
||||
icu::UInitOnce gLayoutInitOnce = U_INITONCE_INITIALIZER;
|
||||
UDataMemory *gLayoutMemory = nullptr;
|
||||
|
||||
UCPTrie *gInpcTrie = nullptr; // Indic_Positional_Category
|
||||
UCPTrie *gInscTrie = nullptr; // Indic_Syllabic_Category
|
||||
UCPTrie *gVoTrie = nullptr; // Vertical_Orientation
|
||||
|
||||
int32_t gMaxInpcValue = 0;
|
||||
int32_t gMaxInscValue = 0;
|
||||
int32_t gMaxVoValue = 0;
|
||||
|
||||
UBool U_CALLCONV uprops_cleanup() {
|
||||
udata_close(gLayoutMemory);
|
||||
gLayoutMemory = nullptr;
|
||||
|
||||
ucptrie_close(gInpcTrie);
|
||||
gInpcTrie = nullptr;
|
||||
ucptrie_close(gInscTrie);
|
||||
gInscTrie = nullptr;
|
||||
ucptrie_close(gVoTrie);
|
||||
gVoTrie = nullptr;
|
||||
|
||||
gMaxInpcValue = 0;
|
||||
gMaxInscValue = 0;
|
||||
gMaxVoValue = 0;
|
||||
|
||||
gLayoutInitOnce.reset();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
UBool U_CALLCONV
|
||||
ulayout_isAcceptable(void * /*context*/,
|
||||
const char * /* type */, const char * /*name*/,
|
||||
const UDataInfo *pInfo) {
|
||||
return pInfo->size >= 20 &&
|
||||
pInfo->isBigEndian == U_IS_BIG_ENDIAN &&
|
||||
pInfo->charsetFamily == U_CHARSET_FAMILY &&
|
||||
pInfo->dataFormat[0] == ULAYOUT_FMT_0 &&
|
||||
pInfo->dataFormat[1] == ULAYOUT_FMT_1 &&
|
||||
pInfo->dataFormat[2] == ULAYOUT_FMT_2 &&
|
||||
pInfo->dataFormat[3] == ULAYOUT_FMT_3 &&
|
||||
pInfo->formatVersion[0] == 1;
|
||||
}
|
||||
|
||||
// UInitOnce singleton initialization function
|
||||
void U_CALLCONV ulayout_load(UErrorCode &errorCode) {
|
||||
gLayoutMemory = udata_openChoice(
|
||||
nullptr, ULAYOUT_DATA_TYPE, ULAYOUT_DATA_NAME,
|
||||
ulayout_isAcceptable, nullptr, &errorCode);
|
||||
if (U_FAILURE(errorCode)) { return; }
|
||||
|
||||
const uint8_t *inBytes = (const uint8_t *)udata_getMemory(gLayoutMemory);
|
||||
const int32_t *inIndexes = (const int32_t *)inBytes;
|
||||
int32_t indexesLength = inIndexes[ULAYOUT_IX_INDEXES_LENGTH];
|
||||
if (indexesLength < 12) {
|
||||
errorCode = U_INVALID_FORMAT_ERROR; // Not enough indexes.
|
||||
return;
|
||||
}
|
||||
int32_t offset = indexesLength * 4;
|
||||
int32_t top = inIndexes[ULAYOUT_IX_INPC_TRIE_TOP];
|
||||
int32_t trieSize = top - offset;
|
||||
if (trieSize >= 16) {
|
||||
gInpcTrie = ucptrie_openFromBinary(
|
||||
UCPTRIE_TYPE_ANY, UCPTRIE_VALUE_BITS_ANY,
|
||||
inBytes + offset, trieSize, nullptr, &errorCode);
|
||||
}
|
||||
offset = top;
|
||||
top = inIndexes[ULAYOUT_IX_INSC_TRIE_TOP];
|
||||
trieSize = top - offset;
|
||||
if (trieSize >= 16) {
|
||||
gInscTrie = ucptrie_openFromBinary(
|
||||
UCPTRIE_TYPE_ANY, UCPTRIE_VALUE_BITS_ANY,
|
||||
inBytes + offset, trieSize, nullptr, &errorCode);
|
||||
}
|
||||
offset = top;
|
||||
top = inIndexes[ULAYOUT_IX_VO_TRIE_TOP];
|
||||
trieSize = top - offset;
|
||||
if (trieSize >= 16) {
|
||||
gVoTrie = ucptrie_openFromBinary(
|
||||
UCPTRIE_TYPE_ANY, UCPTRIE_VALUE_BITS_ANY,
|
||||
inBytes + offset, trieSize, nullptr, &errorCode);
|
||||
}
|
||||
|
||||
uint32_t maxValues = inIndexes[ULAYOUT_IX_MAX_VALUES];
|
||||
gMaxInpcValue = maxValues >> ULAYOUT_MAX_INPC_SHIFT;
|
||||
gMaxInscValue = (maxValues >> ULAYOUT_MAX_INSC_SHIFT) & 0xff;
|
||||
gMaxVoValue = (maxValues >> ULAYOUT_MAX_VO_SHIFT) & 0xff;
|
||||
|
||||
ucln_common_registerCleanup(UCLN_COMMON_UPROPS, uprops_cleanup);
|
||||
}
|
||||
|
||||
UBool ulayout_ensureData(UErrorCode &errorCode) {
|
||||
if (U_FAILURE(errorCode)) { return FALSE; }
|
||||
umtx_initOnce(gLayoutInitOnce, &ulayout_load, errorCode);
|
||||
return U_SUCCESS(errorCode);
|
||||
}
|
||||
|
||||
UBool ulayout_ensureData() {
|
||||
UErrorCode errorCode = U_ZERO_ERROR;
|
||||
return ulayout_ensureData(errorCode);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
/* general properties API functions ----------------------------------------- */
|
||||
|
||||
struct BinaryProperty;
|
||||
|
@ -434,15 +542,29 @@ static int32_t getTrailCombiningClass(const IntProperty &/*prop*/, UChar32 c, UP
|
|||
#endif
|
||||
|
||||
static int32_t getInPC(const IntProperty &, UChar32 c, UProperty) {
|
||||
return ucptrie_get(&inpc_trie, c);
|
||||
return ulayout_ensureData() && gInpcTrie != nullptr ? ucptrie_get(gInpcTrie, c) : 0;
|
||||
}
|
||||
|
||||
static int32_t getInSC(const IntProperty &, UChar32 c, UProperty) {
|
||||
return ucptrie_get(&insc_trie, c);
|
||||
return ulayout_ensureData() && gInscTrie != nullptr ? ucptrie_get(gInscTrie, c) : 0;
|
||||
}
|
||||
|
||||
static int32_t getVo(const IntProperty &, UChar32 c, UProperty) {
|
||||
return ucptrie_get(&vo_trie, c);
|
||||
return ulayout_ensureData() && gVoTrie != nullptr ? ucptrie_get(gVoTrie, c) : 0;
|
||||
}
|
||||
|
||||
static int32_t layoutGetMaxValue(const IntProperty &/*prop*/, UProperty which) {
|
||||
if (!ulayout_ensureData()) { return 0; }
|
||||
switch (which) {
|
||||
case UCHAR_INDIC_POSITIONAL_CATEGORY:
|
||||
return gMaxInpcValue;
|
||||
case UCHAR_INDIC_SYLLABIC_CATEGORY:
|
||||
return gMaxInscValue;
|
||||
case UCHAR_VERTICAL_ORIENTATION:
|
||||
return gMaxVoValue;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static const IntProperty intProps[UCHAR_INT_LIMIT-UCHAR_INT_START]={
|
||||
|
@ -480,9 +602,9 @@ static const IntProperty intProps[UCHAR_INT_LIMIT-UCHAR_INT_START]={
|
|||
{ 2, UPROPS_SB_MASK, UPROPS_SB_SHIFT, defaultGetValue, defaultGetMaxValue },
|
||||
{ 2, UPROPS_WB_MASK, UPROPS_WB_SHIFT, defaultGetValue, defaultGetMaxValue },
|
||||
{ UPROPS_SRC_BIDI, 0, 0, getBiDiPairedBracketType, biDiGetMaxValue },
|
||||
{ UPROPS_SRC_INPC, 0, maxInPCValue, getInPC, getMaxValueFromShift },
|
||||
{ UPROPS_SRC_INSC, 0, maxInSCValue, getInSC, getMaxValueFromShift },
|
||||
{ UPROPS_SRC_VO, 0, maxVoValue, getVo, getMaxValueFromShift },
|
||||
{ UPROPS_SRC_INPC, 0, 0, getInPC, layoutGetMaxValue },
|
||||
{ UPROPS_SRC_INSC, 0, 0, getInSC, layoutGetMaxValue },
|
||||
{ UPROPS_SRC_VO, 0, 0, getVo, layoutGetMaxValue },
|
||||
};
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
|
@ -586,23 +708,28 @@ uprops_getSource(UProperty which) {
|
|||
|
||||
U_CFUNC void U_EXPORT2
|
||||
uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *pErrorCode) {
|
||||
if (U_FAILURE(*pErrorCode)) { return; }
|
||||
if (!ulayout_ensureData(*pErrorCode)) { return; }
|
||||
const UCPTrie *trie;
|
||||
switch (src) {
|
||||
case UPROPS_SRC_INPC:
|
||||
trie = &inpc_trie;
|
||||
trie = gInpcTrie;
|
||||
break;
|
||||
case UPROPS_SRC_INSC:
|
||||
trie = &insc_trie;
|
||||
trie = gInscTrie;
|
||||
break;
|
||||
case UPROPS_SRC_VO:
|
||||
trie = &vo_trie;
|
||||
trie = gVoTrie;
|
||||
break;
|
||||
default:
|
||||
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
if (trie == nullptr) {
|
||||
*pErrorCode = U_MISSING_RESOURCE_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the start code point of each same-value range of the trie.
|
||||
UChar32 start = 0, end;
|
||||
while ((end = ucptrie_getRange(trie, start, UCPMAP_RANGE_NORMAL, 0,
|
||||
|
|
|
@ -30,6 +30,7 @@ def generate(config, glob, common_vars):
|
|||
requests += generate_normalization(config, glob, common_vars)
|
||||
requests += generate_coll_ucadata(config, glob, common_vars)
|
||||
requests += generate_unames(config, glob, common_vars)
|
||||
requests += generate_ulayout(config, glob, common_vars)
|
||||
requests += generate_misc(config, glob, common_vars)
|
||||
requests += generate_curr_supplemental(config, glob, common_vars)
|
||||
requests += generate_translit(config, glob, common_vars)
|
||||
|
@ -325,6 +326,25 @@ def generate_unames(config, glob, common_vars):
|
|||
]
|
||||
|
||||
|
||||
def generate_ulayout(config, glob, common_vars):
|
||||
# Unicode text layout properties
|
||||
basename = "ulayout"
|
||||
input_file = InFile("in/%s.icu" % basename)
|
||||
output_file = OutFile("%s.icu" % basename)
|
||||
return [
|
||||
SingleExecutionRequest(
|
||||
name = basename,
|
||||
category = basename,
|
||||
dep_targets = [],
|
||||
input_files = [input_file],
|
||||
output_files = [output_file],
|
||||
tool = IcuTool("icupkg"),
|
||||
args = "-t{ICUDATA_CHAR} {IN_DIR}/{INPUT_FILES[0]} {OUT_DIR}/{OUTPUT_FILES[0]}",
|
||||
format_with = {}
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
def generate_misc(config, glob, common_vars):
|
||||
# Misc Data Res Files
|
||||
input_files = [InFile(filename) for filename in glob("misc/*.txt")]
|
||||
|
|
BIN
icu4c/source/data/in/ulayout.icu
Normal file
BIN
icu4c/source/data/in/ulayout.icu
Normal file
Binary file not shown.
|
@ -60,6 +60,9 @@ http://www.unicode.org/reports/tr44/tr44-23.html
|
|||
ICU-20203 Unicode 12
|
||||
https://github.com/markusicu/icu/tree/uni12
|
||||
|
||||
ICU-20111 move text layout properties data into a data file
|
||||
https://github.com/markusicu/icu/tree/layout-props
|
||||
|
||||
cldrbug 11478: Unicode 12
|
||||
Accidentally used ^/trunk instead of ^/branches/markus/uni12
|
||||
|
||||
|
@ -201,13 +204,6 @@ set(ICU4C_SRC_DIR /usr/local/google/home/mscherer/icu/uni/src/icu4c)
|
|||
- Unicode 6.0..12.0: U+2260, U+226E, U+226F
|
||||
- nothing new in this Unicode version, no test file to update
|
||||
|
||||
* update Java hardcoded properties
|
||||
- genprops writes /tmp/ulayout_props_data.txt,
|
||||
update UCharacterProperty.java:
|
||||
+ update the trie initializer strings for class InPCTrie etc.
|
||||
+ update the maxInPCValue values etc. in
|
||||
new IntProperty(SRC_INPC)...getMaxValue() etc.
|
||||
|
||||
* run & fix ICU4C tests
|
||||
- update test of default bidi classes:
|
||||
Bidi range \U0001ED00-\U0001ED4F changes default from R to AL,
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "uarrsort.h"
|
||||
#include "ucmndata.h"
|
||||
#include "udataswp.h"
|
||||
#include "ulayout_props.h"
|
||||
|
||||
/* swapping implementations in common */
|
||||
|
||||
|
@ -640,6 +641,106 @@ unorm_swap(const UDataSwapper *ds,
|
|||
|
||||
#endif
|
||||
|
||||
// Unicode text layout properties data swapping --------------------------------
|
||||
|
||||
static int32_t U_CALLCONV
|
||||
ulayout_swap(const UDataSwapper *ds,
|
||||
const void *inData, int32_t length, void *outData,
|
||||
UErrorCode *pErrorCode) {
|
||||
// udata_swapDataHeader checks the arguments.
|
||||
int32_t headerSize = udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
|
||||
if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Check data format and format version.
|
||||
const UDataInfo *pInfo = (const UDataInfo *)((const char *)inData + 4);
|
||||
if (!(
|
||||
pInfo->dataFormat[0] == ULAYOUT_FMT_0 && // dataFormat="Layo"
|
||||
pInfo->dataFormat[1] == ULAYOUT_FMT_1 &&
|
||||
pInfo->dataFormat[2] == ULAYOUT_FMT_2 &&
|
||||
pInfo->dataFormat[3] == ULAYOUT_FMT_3 &&
|
||||
pInfo->formatVersion[0] == 1)) {
|
||||
udata_printError(ds,
|
||||
"ulayout_swap(): data format %02x.%02x.%02x.%02x (format version %02x) "
|
||||
"is not recognized as text layout properties data\n",
|
||||
pInfo->dataFormat[0], pInfo->dataFormat[1],
|
||||
pInfo->dataFormat[2], pInfo->dataFormat[3],
|
||||
pInfo->formatVersion[0]);
|
||||
*pErrorCode = U_UNSUPPORTED_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const uint8_t *inBytes = (const uint8_t *)inData + headerSize;
|
||||
uint8_t *outBytes = (uint8_t *)outData + headerSize;
|
||||
|
||||
const int32_t *inIndexes = (const int32_t *)inBytes;
|
||||
|
||||
if (length >= 0) {
|
||||
length -= headerSize;
|
||||
if (length < 12 * 4) {
|
||||
udata_printError(ds,
|
||||
"ulayout_swap(): too few bytes (%d after header) for text layout properties data\n",
|
||||
length);
|
||||
*pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t indexesLength = udata_readInt32(ds, inIndexes[ULAYOUT_IX_INDEXES_LENGTH]);
|
||||
if (indexesLength < 12) {
|
||||
udata_printError(ds,
|
||||
"ulayout_swap(): too few indexes (%d) for text layout properties data\n",
|
||||
indexesLength);
|
||||
*pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Read the data offsets before swapping anything.
|
||||
int32_t indexes[ULAYOUT_IX_TRIES_TOP + 1];
|
||||
for (int32_t i = ULAYOUT_IX_INPC_TRIE_TOP; i <= ULAYOUT_IX_TRIES_TOP; ++i) {
|
||||
indexes[i] = udata_readInt32(ds, inIndexes[i]);
|
||||
}
|
||||
int32_t size = indexes[ULAYOUT_IX_TRIES_TOP];
|
||||
|
||||
if (length >= 0) {
|
||||
if (length < size) {
|
||||
udata_printError(ds,
|
||||
"ulayout_swap(): too few bytes (%d after header) "
|
||||
"for all of text layout properties data\n",
|
||||
length);
|
||||
*pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Copy the data for inaccessible bytes.
|
||||
if (inBytes != outBytes) {
|
||||
uprv_memcpy(outBytes, inBytes, size);
|
||||
}
|
||||
|
||||
// Swap the int32_t indexes[].
|
||||
int32_t offset = 0;
|
||||
int32_t count = indexesLength * 4;
|
||||
ds->swapArray32(ds, inBytes, count, outBytes, pErrorCode);
|
||||
offset += count;
|
||||
|
||||
// Swap each trie.
|
||||
for (int32_t i = ULAYOUT_IX_INPC_TRIE_TOP; i <= ULAYOUT_IX_TRIES_TOP; ++i) {
|
||||
int32_t top = indexes[i];
|
||||
count = top - offset;
|
||||
U_ASSERT(count >= 0);
|
||||
if (count >= 16) {
|
||||
utrie_swapAnyVersion(ds, inBytes + offset, count, outBytes + offset, pErrorCode);
|
||||
}
|
||||
offset = top;
|
||||
}
|
||||
|
||||
U_ASSERT(offset == size);
|
||||
}
|
||||
|
||||
return headerSize + size;
|
||||
}
|
||||
|
||||
/* Swap 'Test' data from gentest */
|
||||
static int32_t U_CALLCONV
|
||||
test_swap(const UDataSwapper *ds,
|
||||
|
@ -731,6 +832,10 @@ static const struct {
|
|||
{ { 0x4e, 0x6f, 0x72, 0x6d }, unorm_swap }, /* dataFormat="Norm" */
|
||||
{ { 0x4e, 0x72, 0x6d, 0x32 }, unorm2_swap }, /* dataFormat="Nrm2" */
|
||||
#endif
|
||||
|
||||
{ { ULAYOUT_FMT_0, ULAYOUT_FMT_1, ULAYOUT_FMT_2, ULAYOUT_FMT_3 },
|
||||
ulayout_swap }, // dataFormat="Layo"
|
||||
|
||||
#if !UCONFIG_NO_COLLATION
|
||||
{ { 0x55, 0x43, 0x6f, 0x6c }, ucol_swap }, /* dataFormat="UCol" */
|
||||
{ { 0x49, 0x6e, 0x76, 0x43 }, ucol_swapInverseUCA },/* dataFormat="InvC" */
|
||||
|
|
|
@ -68,7 +68,7 @@ public final class CharacterPropertiesImpl {
|
|||
case UCharacterProperty.SRC_INPC:
|
||||
case UCharacterProperty.SRC_INSC:
|
||||
case UCharacterProperty.SRC_VO:
|
||||
UCharacterProperty.INSTANCE.ulayout_addPropertyStarts(src, incl);
|
||||
UCharacterProperty.ulayout_addPropertyStarts(src, incl);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("getInclusions(unknown src " + src + ")");
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bff554a5fd35fddf6a105bb560ec56d120cee51c4655e941f2306a90297ebe53
|
||||
size 12696138
|
||||
oid sha256:894170fe283160e26a879efdc5a367d519555a99e293111d5fdda028ab0aac27
|
||||
size 12699933
|
||||
|
|
|
@ -204,8 +204,7 @@ main(int argc, char* argv[]) {
|
|||
casePropsBuilder->writeCSourceFile(sourceCommon.data(), errorCode);
|
||||
casePropsBuilder->writeBinaryData(sourceDataIn.data(), withCopyright, errorCode);
|
||||
namesPropsBuilder->writeBinaryData(sourceDataIn.data(), withCopyright, errorCode);
|
||||
layoutPropsBuilder->writeCSourceFile(sourceCommon.data(), errorCode);
|
||||
layoutPropsBuilder->writeJavaSourceFile("", errorCode);
|
||||
layoutPropsBuilder->writeBinaryData(sourceDataIn.data(), withCopyright, errorCode);
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
|
|
|
@ -16,19 +16,74 @@
|
|||
#include "genprops.h"
|
||||
#include "ppucd.h"
|
||||
#include "uassert.h"
|
||||
#include "writesrc.h"
|
||||
#include "ulayout_props.h"
|
||||
#include "unewdata.h"
|
||||
|
||||
/* Unicode layout properties file format ---------------------------------------
|
||||
|
||||
The file format prepared and written here contains several data
|
||||
structures that store indexes or data.
|
||||
|
||||
Before the data contents described below, there are the headers required by
|
||||
the udata API for loading ICU data. Especially, a UDataInfo structure
|
||||
precedes the actual data. It contains platform properties values and the
|
||||
file format version.
|
||||
|
||||
The following is a description of format version 1.0 .
|
||||
|
||||
The file contains the following structures:
|
||||
|
||||
const int32_t indexes[i0] with values i0, i1, ...:
|
||||
(see ULAYOUT_IX_... constants for names of indexes)
|
||||
|
||||
i0 indexesLength; -- length of indexes[] (ULAYOUT_IX_COUNT)
|
||||
i1 inpcTop; -- limit byte offset of the InPC trie
|
||||
i2 inscTop; -- limit byte offset of the InSC trie
|
||||
i3 voTop; -- limit byte offset of the vo trie
|
||||
i4..i7 -- reserved, same as the last limit byte offset
|
||||
i8 -- reserved, 0
|
||||
|
||||
i9 maxValues; -- max values of the InPC, InSC, vo properties
|
||||
(8 bits each; lowest 8 bits reserved, 0)
|
||||
i10..i11 -- reserved, 0
|
||||
|
||||
After the indexes array follow consecutive, serialized,
|
||||
single-property code point tries for the following properties,
|
||||
each built "small" or "fast",
|
||||
each padded to a multiple of 16 bytes:
|
||||
- InPC
|
||||
- InSC
|
||||
- vo
|
||||
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
U_NAMESPACE_USE
|
||||
|
||||
// UDataInfo cf. udata.h
|
||||
static UDataInfo dataInfo = {
|
||||
sizeof(UDataInfo),
|
||||
0,
|
||||
|
||||
U_IS_BIG_ENDIAN,
|
||||
U_CHARSET_FAMILY,
|
||||
U_SIZEOF_UCHAR,
|
||||
0,
|
||||
|
||||
// dataFormat="Layo"
|
||||
{ ULAYOUT_FMT_0, ULAYOUT_FMT_1, ULAYOUT_FMT_2, ULAYOUT_FMT_3 },
|
||||
{ 1, 0, 0, 0 }, // formatVersion
|
||||
{ 12, 0, 0, 0 } // dataVersion
|
||||
};
|
||||
|
||||
class LayoutPropsBuilder : public PropsBuilder {
|
||||
public:
|
||||
LayoutPropsBuilder(UErrorCode &errorCode);
|
||||
virtual ~LayoutPropsBuilder() U_OVERRIDE;
|
||||
|
||||
virtual void setUnicodeVersion(const UVersionInfo version) U_OVERRIDE;
|
||||
virtual void setProps(const UniProps &props, const UnicodeSet &newValues, UErrorCode &errorCode) U_OVERRIDE;
|
||||
virtual void build(UErrorCode &errorCode) U_OVERRIDE;
|
||||
virtual void writeCSourceFile(const char *path, UErrorCode &errorCode) U_OVERRIDE;
|
||||
virtual void writeJavaSourceFile(const char *path, UErrorCode &errorCode) U_OVERRIDE;
|
||||
virtual void writeBinaryData(const char *path, UBool withCopyright, UErrorCode &errorCode) U_OVERRIDE;
|
||||
|
||||
private:
|
||||
void setIntProp(const UniProps &, const UnicodeSet &newValues,
|
||||
|
@ -38,9 +93,6 @@ private:
|
|||
return maxIntValues[prop - UCHAR_INT_START];
|
||||
}
|
||||
void checkMaxIntValue(UProperty prop, int32_t maxMax, UErrorCode &errorCode) const;
|
||||
void writeMaxIntValue(FILE *f, const char *name, UProperty prop) const {
|
||||
fprintf(f, "static const int32_t max%sValue = %ld;\n\n", name, (long)getMaxIntValue(prop));
|
||||
}
|
||||
|
||||
int32_t maxIntValues[UCHAR_INT_LIMIT - UCHAR_INT_START];
|
||||
UMutableCPTrie *inpcMutableTrie;
|
||||
|
@ -73,6 +125,11 @@ LayoutPropsBuilder::~LayoutPropsBuilder() {
|
|||
ucptrie_close(voTrie);
|
||||
}
|
||||
|
||||
void
|
||||
LayoutPropsBuilder::setUnicodeVersion(const UVersionInfo version) {
|
||||
uprv_memcpy(dataInfo.dataVersion, version, 4);
|
||||
}
|
||||
|
||||
void
|
||||
LayoutPropsBuilder::setProps(const UniProps &props, const UnicodeSet &newValues,
|
||||
UErrorCode &errorCode) {
|
||||
|
@ -127,6 +184,24 @@ UCPTrie *buildUCPTrie(const char *name, UMutableCPTrie *mutableTrie,
|
|||
return trie;
|
||||
}
|
||||
|
||||
constexpr int32_t TRIE_BLOCK_CAPACITY = 100000;
|
||||
|
||||
uint8_t inpcBytes[TRIE_BLOCK_CAPACITY];
|
||||
uint8_t inscBytes[TRIE_BLOCK_CAPACITY];
|
||||
uint8_t voBytes[TRIE_BLOCK_CAPACITY];
|
||||
|
||||
int32_t inpcLength = 0;
|
||||
int32_t inscLength = 0;
|
||||
int32_t voLength = 0;
|
||||
|
||||
int32_t writeTrieBytes(const UCPTrie *trie, uint8_t block[], UErrorCode &errorCode) {
|
||||
int32_t length = ucptrie_toBinary(trie, block, TRIE_BLOCK_CAPACITY, &errorCode);
|
||||
while ((length & 0xf) != 0) {
|
||||
block[length++] = 0xaa;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void
|
||||
|
@ -145,6 +220,15 @@ LayoutPropsBuilder::build(UErrorCode &errorCode) {
|
|||
UCPTRIE_TYPE_SMALL, UCPTRIE_VALUE_BITS_8, errorCode);
|
||||
voTrie = buildUCPTrie("vo", voMutableTrie,
|
||||
UCPTRIE_TYPE_SMALL, UCPTRIE_VALUE_BITS_8, errorCode);
|
||||
|
||||
inpcLength = writeTrieBytes(inpcTrie, inpcBytes, errorCode);
|
||||
inscLength = writeTrieBytes(inscTrie, inscBytes, errorCode);
|
||||
voLength = writeTrieBytes(voTrie, voBytes, errorCode);
|
||||
|
||||
if (!beQuiet) {
|
||||
int32_t size = ULAYOUT_IX_COUNT * 4 + inpcLength + inscLength + voLength;
|
||||
printf("data size: %5d\n", (int)size);
|
||||
}
|
||||
}
|
||||
|
||||
void LayoutPropsBuilder::checkMaxIntValue(UProperty prop, int32_t maxMax,
|
||||
|
@ -156,126 +240,62 @@ void LayoutPropsBuilder::checkMaxIntValue(UProperty prop, int32_t maxMax,
|
|||
}
|
||||
}
|
||||
|
||||
// In ICU 63, we had functions writeCSourceFile() and writeJavaSourceFile().
|
||||
// For Java, each serialized trie was written as a String constant with
|
||||
// one byte per char and an optimization for byte 0,
|
||||
// to optimize for Java .class file size.
|
||||
// (See ICU 63 if we need to resurrect some of that code.)
|
||||
// Since ICU 64, we write a binary ulayout.icu file for use in both C++ & Java.
|
||||
|
||||
void
|
||||
LayoutPropsBuilder::writeCSourceFile(const char *path, UErrorCode &errorCode) {
|
||||
LayoutPropsBuilder::writeBinaryData(const char *path, UBool withCopyright, UErrorCode &errorCode) {
|
||||
if (U_FAILURE(errorCode)) { return; }
|
||||
|
||||
FILE *f = usrc_create(path, "ulayout_props_data.h", 2018,
|
||||
"icu/tools/unicode/c/genprops/layoutpropsbuilder.cpp");
|
||||
if (f == nullptr) {
|
||||
errorCode = U_FILE_ACCESS_ERROR;
|
||||
return;
|
||||
}
|
||||
fputs("#ifdef INCLUDED_FROM_UPROPS_CPP\n\n", f);
|
||||
|
||||
writeMaxIntValue(f, "InPC", UCHAR_INDIC_POSITIONAL_CATEGORY);
|
||||
usrc_writeUCPTrie(f, "inpc", inpcTrie);
|
||||
|
||||
writeMaxIntValue(f, "InSC", UCHAR_INDIC_SYLLABIC_CATEGORY);
|
||||
usrc_writeUCPTrie(f, "insc", inscTrie);
|
||||
|
||||
writeMaxIntValue(f, "Vo", UCHAR_VERTICAL_ORIENTATION);
|
||||
usrc_writeUCPTrie(f, "vo", voTrie);
|
||||
|
||||
fputs("#endif // INCLUDED_FROM_UPROPS_CPP\n", f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
// Write one byte as one char in a Java String literal.
|
||||
// Java class file string literals use one byte per U+0001..U+007F,
|
||||
// and two bytes per U+0000 or U+0080..U+07FF.
|
||||
// This is reasonably compact if small byte values are more common, as usual.
|
||||
// Since 0 is very common but takes two bytes, we swap it with U+007A 'z'.
|
||||
int32_t appendByte(char *s, int32_t length, uint8_t b) {
|
||||
if (b == 0) {
|
||||
s[length++] = 'z';
|
||||
} else if (b == 0x7a) {
|
||||
s[length++] = '\\';
|
||||
s[length++] = '0';
|
||||
} else {
|
||||
// Write all other bytes as octal escapes. (Java does not support \xhh.)
|
||||
// We could make the source file smaller by writing ASCII characters
|
||||
// directly where possible, but that would not make the class file any smaller,
|
||||
// and we would have to be careful to still escape certain characters,
|
||||
// and to escape digits after short octal escapes.
|
||||
s[length++] = '\\';
|
||||
if (b >= 0100) {
|
||||
s[length++] = '0' + (b >> 6);
|
||||
}
|
||||
if (b >= 010) {
|
||||
s[length++] = '0' + ((b >> 3) & 7);
|
||||
}
|
||||
s[length++] = '0' + (b & 7);
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
void writeBytesAsJavaString(FILE *f, const uint8_t *bytes, int32_t length) {
|
||||
// Quotes, line feed, etc., with up to 16 bytes per line, up to 4 bytes "\377" each.
|
||||
char line[80];
|
||||
int32_t lineLength = 0;
|
||||
for (int32_t i = 0;;) {
|
||||
if ((i & 0xf) == 0) { // start of a line of 16 bytes
|
||||
line[0] = '"';
|
||||
lineLength = 1;
|
||||
}
|
||||
if (i < length) {
|
||||
lineLength = appendByte(line, lineLength, bytes[i++]);
|
||||
}
|
||||
if (i == length) { // end of the string
|
||||
line[lineLength++] = '"';
|
||||
line[lineLength++] = '\n';
|
||||
line[lineLength++] = '\n';
|
||||
line[lineLength++] = 0;
|
||||
fputs(line, f);
|
||||
break;
|
||||
}
|
||||
if ((i & 0xf) == 0) { // end of a line of 16 bytes
|
||||
line[lineLength++] = '"';
|
||||
line[lineLength++] = ' ';
|
||||
line[lineLength++] = '+';
|
||||
line[lineLength++] = '\n';
|
||||
line[lineLength++] = 0;
|
||||
fputs(line, f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t trieBlock[100000];
|
||||
|
||||
void writeUCPTrieAsJavaString(FILE *f, const UCPTrie *trie, UErrorCode &errorCode) {
|
||||
int32_t length = ucptrie_toBinary(trie, trieBlock, UPRV_LENGTHOF(trieBlock), &errorCode);
|
||||
writeBytesAsJavaString(f, trieBlock, length);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// So far, this writes initializers to be copied into Java code, but not a complete Java file.
|
||||
// We should probably write a regular, binary ICU data file and read that into Java.
|
||||
void
|
||||
LayoutPropsBuilder::writeJavaSourceFile(const char * /*path*/, UErrorCode &errorCode) {
|
||||
if (U_FAILURE(errorCode)) { return; }
|
||||
|
||||
FILE *f = usrc_create("/tmp", "ulayout_props_data.txt", 2018,
|
||||
"icu/tools/unicode/c/genprops/layoutpropsbuilder.cpp");
|
||||
if (f == nullptr) {
|
||||
errorCode = U_FILE_ACCESS_ERROR;
|
||||
UNewDataMemory *pData = udata_create(
|
||||
path, ULAYOUT_DATA_TYPE, ULAYOUT_DATA_NAME, &dataInfo,
|
||||
withCopyright ? U_COPYRIGHT_STRING : NULL, &errorCode);
|
||||
if (U_FAILURE(errorCode)) {
|
||||
fprintf(stderr, "genprops: udata_create(%s, ulayout.icu) failed - %s\n",
|
||||
path, u_errorName(errorCode));
|
||||
return;
|
||||
}
|
||||
|
||||
writeMaxIntValue(f, "InPC", UCHAR_INDIC_POSITIONAL_CATEGORY);
|
||||
writeUCPTrieAsJavaString(f, inpcTrie, errorCode);
|
||||
int32_t indexes[ULAYOUT_IX_COUNT] = { ULAYOUT_IX_COUNT };
|
||||
int32_t top = ULAYOUT_IX_COUNT * 4;
|
||||
|
||||
writeMaxIntValue(f, "InSC", UCHAR_INDIC_SYLLABIC_CATEGORY);
|
||||
writeUCPTrieAsJavaString(f, inscTrie, errorCode);
|
||||
indexes[ULAYOUT_IX_INPC_TRIE_TOP] = (top += inpcLength);
|
||||
indexes[ULAYOUT_IX_INSC_TRIE_TOP] = (top += inscLength);
|
||||
indexes[ULAYOUT_IX_VO_TRIE_TOP] = (top += voLength);
|
||||
|
||||
writeMaxIntValue(f, "Vo", UCHAR_VERTICAL_ORIENTATION);
|
||||
writeUCPTrieAsJavaString(f, voTrie, errorCode);
|
||||
// Set reserved trie-top values to the top of the last trie
|
||||
// so that they look empty until a later file format version
|
||||
// uses one or more of these slots.
|
||||
for (int32_t i = ULAYOUT_IX_RESERVED_TOP; i <= ULAYOUT_IX_TRIES_TOP; ++i) {
|
||||
indexes[i] = top;
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
puts(" ++ Java initializers written to /tmp/ulayout_props_data.txt");
|
||||
indexes[ULAYOUT_IX_MAX_VALUES] =
|
||||
((getMaxIntValue(UCHAR_INDIC_POSITIONAL_CATEGORY)) << ULAYOUT_MAX_INPC_SHIFT) |
|
||||
((getMaxIntValue(UCHAR_INDIC_SYLLABIC_CATEGORY)) << ULAYOUT_MAX_INSC_SHIFT) |
|
||||
((getMaxIntValue(UCHAR_VERTICAL_ORIENTATION)) << ULAYOUT_MAX_VO_SHIFT);
|
||||
|
||||
udata_writeBlock(pData, indexes, sizeof(indexes));
|
||||
udata_writeBlock(pData, inpcBytes, inpcLength);
|
||||
udata_writeBlock(pData, inscBytes, inscLength);
|
||||
udata_writeBlock(pData, voBytes, voLength);
|
||||
|
||||
long dataLength = udata_finish(pData, &errorCode);
|
||||
if (U_FAILURE(errorCode)) {
|
||||
fprintf(stderr, "genprops: error %s writing the output file\n", u_errorName(errorCode));
|
||||
return;
|
||||
}
|
||||
|
||||
if (dataLength != (long)top) {
|
||||
fprintf(stderr,
|
||||
"udata_finish(ulayout.icu) reports %ld bytes written but should be %ld\n",
|
||||
dataLength, (long)top);
|
||||
errorCode = U_INTERNAL_PROGRAM_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
PropsBuilder *
|
||||
|
|
Loading…
Add table
Reference in a new issue