1{ 2 ********************************************************************** 3 This file is part of LazUtils. 4 It is copied and modified from a file in Free Component Library. 5 6 See the file COPYING.FPC, included in this distribution, 7 for details about the license. 8 ********************************************************************** 9 10 XML naming character tables, built upon w3.org specifications 11 12} 13 14type 15 TSetOfByte = set of Byte; 16 17const 18// colon ($3a) is excluded, it is handled in the code 19 ns_ASCII = [{ $3A,} $41..$5A, $5F, $61..$7A, $C0..$D6, $D8..$F6, $F8..$FF]; 20 ns_0200 = [0..$17, $50..$A8, $BB..$C1]; 21 ns_0300 = [$86, $88..$8A, $8C, $8E..$A1, 22 $A3..$CE, $D0..$D6, $DA, $DC, 23 $DE, $E0, $E2..$F3]; 24 ns_0400 = [$01..$0C, $0E..$4F, $51..$5C, 25 $5E..$81, $90..$C4, $C7..$C8, 26 $CB..$CC, $D0..$EB, $EE..$F5, 27 $F8..$F9]; 28 ns_0500 = [$31..$56, $59, $61..$86, $D0..$EA, $F0..$F2]; 29 ns_0600 = [$21..$3A, $41..$4A, $71..$B7, 30 $BA..$BE, $C0..$CE, $D0..$D3, 31 $D5, $E5..$E6]; 32 ns_0900 = [$05..$39, $3D, $58..$61, 33 $85..$8C, $8F..$90, $93..$A8, 34 $AA..$B0, $B2, $B6..$B9, 35 $DC..$DD, $DF..$E1, $F0..$F1]; 36 ns_0A00 = [$05..$0A, $0F..$10, $13..$28, 37 $2A..$30, $32..$33, $35..$36, 38 $38..$39, $59..$5C, $5E, $72..$74, 39 $85..$8B, $8D, $8F..$91, $93..$A8, 40 $AA..$B0, $B2..$B3, $B5..$B9, $BD, $E0]; 41 ns_0B00 = [$05..$0C, $0F..$10, $13..$28, 42 $2A..$30, $32..$33, $36..$39, 43 $3D, $5C..$5D, $5F..$61, $85..$8A, 44 $8E..$90, $92..$95, $99..$9A, 45 $9C, $9E..$9F, $A3..$A4, $A8..$AA, 46 $AE..$B5, $B7..$B9]; 47 ns_0C00 = [$05..$0C, $0E..$10, $12..$28, 48 $2A..$33, $35..$39, $60..$61, 49 $85..$8C, $8E..$90, $92..$A8, 50 $AA..$B3, $B5..$B9, $DE, $E0..$E1]; 51 ns_0D00 = [$05..$0C, $0E..$10, $12..$28, $2A..$39, $60..$61]; 52 ns_0E00 = [$01..$2E, $30, $32..$33, $40..$45, 53 $81..$82, $84, $87..$88, $8A, $8D, 54 $94..$97, $99..$9F, $A1..$A3, 55 $A5, $A7, $AA..$AB, $AD..$AE, 56 $B0, $B2..$B3, $BD, $C0..$C4]; 57 ns_0F00 = [$40..$47, $49..$69]; 58 59 ns_3000 = [$41..$94, $A1..$FA] + [$07, $21..$29]; 60 61 namingBitmap: array[0..$30] of TSetOfByte = ( 62 63 [], // 00 - nothing allowed 64 [0..255], // 01 - all allowed 65 ns_ASCII, // 02 66 [0..$31, $34..$3E, $41..$48, // 03 - $0100, both Name and NameStart 67 $4A..$7E, $80..$C3, $CD..$F0, 68 $F4..$F5, $FA..$FF], 69 70 ns_0200, // 04 71 ns_0300, // 05 72 ns_0400, // 06 73 ns_0500, // 07 74 ns_0600, // 08 75 ns_0900, // 09 76 ns_0A00, // 0A 77 ns_0B00, // 0B 78 ns_0C00, // 0C 79 ns_0D00, // 0D 80 ns_0E00, // 0E 81 ns_0F00, // 0F 82 [$A0..$C5, $D0..$F6], // 10 - $1000, both Name and NameStart 83 [0, $02..03, $05..$07, $09, // 11 - $1100, both Name and NameStart 84 $0B..$0C, $0E..$12, $3C, $3E, 85 $40, $4C, $4E, $50, $54..$55, 86 $59, $5F..$61, $63, $65, $67, 87 $69, $6D..$6E, $72..$73, $75, 88 $9E, $A8, $AB, $AE..$AF, 89 $B7..$B8, $BA, $BC..$C2, $EB, $F0, $F9], 90 [0..$9B, $A0..$F9], // 12 - $1E00, both Name and NameStart 91 [0..$15, $18..$1D, $20..$45, // 13 - $1F00, both Name and NameStart 92 $48..$4D, $50..$57, $59, $5B, $5D, 93 $5F..$7D, $80..$B4, $B6..$BC, $BE, 94 $C2..$C4, $C6..$CC, $D0..$D3, 95 $D6..$DB, $E0..$EC, $F2..$F4, $F6..$FC], 96 [$26, $2A..$2B, $2E, $80..$82], // 14 - $2100, NameStart 97 ns_3000, // 15 98 [$05..$2C], // 16 - $3100, NameStart 99 [0..$A5], // 17 - $9F00, NameStart (ideographs) 100 [0..$A3], // 18 - $D700, NameStart 101 102 ns_ASCII + // 19 - $0000, Names 103 [$2D..$2E, $30..$39, $B7], 104 ns_0200 + // 1A - $0200, Names 105 [$D0..$D1], 106 ns_0300 + // 1B - $0300, Names 107 [0..$45, $60..$61, $87], 108 ns_0400 + // 1C - $0400, Names 109 [$83..$86], 110 ns_0500 + // 1D - $0500, Names 111 [$91..$A1, $A3..$B9, $BB..$BD, { combining } 112 $BF, $C1..$C2, $C4], 113 ns_0600 + // 1E - $0600, Names 114 [$4B..$52, $70, $D6..$DC, $DD..$DF, { combining } 115 $E0..$E4, $E7..$E8, $EA..$ED] + 116 [$60..$69, $F0..$F9] + [$40], { digits + ext } 117 ns_0900 + // 1F - $0900, Names 118 [$01..$03, $3C, $3E..$4C, $4D, { combining } 119 $51..$54, $62..$63, $81..$83, 120 $BC, $BE, $BF, $C0..$C4, $C7..$C8, 121 $CB..$CD, $D7, $E2..$E3] + 122 [$66..$6F, $E6..$EF], { digits } 123 ns_0A00 + // 20 - $0A00, Names 124 [$02, $3C, $3E..$42, $47..$48, $4B..$4D, { combining } 125 $70..$71, $81..$83, $BC, $BE..$C5, 126 $C7..$C9, $CB..$CD] + 127 [$66..$6F, $E6..$EF], { digits } 128 ns_0B00 + // 21 - $0B00, Names 129 [$01..$03, $3C, $3E..$43, $47..$48, { combining } 130 $4B..$4D, $56..$57, $82..$83, $BE..$C2, 131 $C6..$C8, $CA..$CD, $D7] + 132 [$66..$6F, $E7..$EF], { digits } 133 ns_0C00 + // 22 - $0C00, Names 134 [$01..$03, $3E..$44, $46..$48, { combining } 135 $4A..$4D, $55..$56, $82..$83, 136 $BE..$C4, $C6..$C8, $CA..$CD, $D5..$D6] + 137 [$66..$6F, $E6..$EF], { digits } 138 ns_0D00 + // 23 - $0D00, Names 139 [$02..$03, $3E..$43, { combining } 140 $46..$48, $4A..$4D, $57] + 141 [$66..$6F], { digits } 142 ns_0E00 + // 24 - $0E00, Names 143 [$31, $34..$3A, $47..$4E, { combining } 144 $B1, $B4..$B9, $BB..$BC, 145 $C8..$CD] + 146 [$50..$59, $D0..$D9] + { digits } 147 [$46, $C6], { extenders } 148 ns_0F00 + // 25 - $0F00, Names 149 [$18..$19, $35, $37, $39, { combining } 150 $3E, $3F, $71..$84, $86..$8B, 151 $90..$95, $97, $99..$AD, 152 $B1..$B7, $B9] + 153 [$20..$29], { digits } 154 [$D0..$DC, $E1], // 26 - $2000, Names (combining) 155 ns_3000 + // 27 - $3000, Names 156 [$2A..$2F, $99, $9A] + { combining } 157 [$05, $31..$35, $9D..$9E, $FC..$FE], { extenders } 158 159{ XML 1.1 additions } 160 161 [0..$CF, $F0..$FF], // 28 $FD00 - NameStart 162 [0..$EF], // 29 $2F00 - NameStart 163 [$0C..$0D, $70..$FF], // 2A $2000 - NameStart 164 [0..$8F], // 2B $2100 - NameStart 165 [$70..$7D, $7F..$FF], // 2C $0300 - NameStart 166 [1..$FF], // 2D $3000 - NameStart 167 [0..$7D, $7F..$FF], // 2E $0300 - Names 168 [$0C..$0D, $3F..$40, $70..$FF], // 2F $2000 - Names 169 [$00..$FD] // 30 $FF00 - both Name and NameStart 170); 171 172 Xml11HighPages: TSetOfByte = [0..$21, $2C..$D7, $F9..$FE]; 173 174 NamePages: array[0..511] of Byte = ( 175$02, $03, $04, $05, $06, $07, $08, $00, 176$00, $09, $0A, $0B, $0C, $0D, $0E, $0F, 177$10, $11, $00, $00, $00, $00, $00, $00, 178$00, $00, $00, $00, $00, $00, $12, $13, 179$00, $14, $00, $00, $00, $00, $00, $00, 180$00, $00, $00, $00, $00, $00, $00, $00, 181$15, $16, $00, $00, $00, $00, $00, $00, 182$00, $00, $00, $00, $00, $00, $00, $00, 183$00, $00, $00, $00, $00, $00, $00, $00, 184$00, $00, $00, $00, $00, $00, $01, $01, 185$01, $01, $01, $01, $01, $01, $01, $01, 186$01, $01, $01, $01, $01, $01, $01, $01, 187$01, $01, $01, $01, $01, $01, $01, $01, 188$01, $01, $01, $01, $01, $01, $01, $01, 189$01, $01, $01, $01, $01, $01, $01, $01, 190$01, $01, $01, $01, $01, $01, $01, $01, 191$01, $01, $01, $01, $01, $01, $01, $01, 192$01, $01, $01, $01, $01, $01, $01, $01, 193$01, $01, $01, $01, $01, $01, $01, $01, 194$01, $01, $01, $01, $01, $01, $01, $17, 195$00, $00, $00, $00, $00, $00, $00, $00, 196$00, $00, $00, $00, $01, $01, $01, $01, 197$01, $01, $01, $01, $01, $01, $01, $01, 198$01, $01, $01, $01, $01, $01, $01, $01, 199$01, $01, $01, $01, $01, $01, $01, $01, 200$01, $01, $01, $01, $01, $01, $01, $01, 201$01, $01, $01, $01, $01, $01, $01, $18, 202$00, $00, $00, $00, $00, $00, $00, $00, 203$00, $00, $00, $00, $00, $00, $00, $00, 204$00, $00, $00, $00, $00, $00, $00, $00, 205$00, $00, $00, $00, $00, $00, $00, $00, 206$00, $00, $00, $00, $00, $00, $00, $00, 207// second half - NameChars 208$19, $03, $1A, $1B, $1C, $1D, $1E, $00, 209$00, $1F, $20, $21, $22, $23, $24, $25, 210$10, $11, $00, $00, $00, $00, $00, $00, 211$00, $00, $00, $00, $00, $00, $12, $13, 212$26, $14, $00, $00, $00, $00, $00, $00, 213$00, $00, $00, $00, $00, $00, $00, $00, 214$27, $16, $00, $00, $00, $00, $00, $00, 215$00, $00, $00, $00, $00, $00, $00, $00, 216$00, $00, $00, $00, $00, $00, $00, $00, 217$00, $00, $00, $00, $00, $00, $01, $01, 218$01, $01, $01, $01, $01, $01, $01, $01, 219$01, $01, $01, $01, $01, $01, $01, $01, 220$01, $01, $01, $01, $01, $01, $01, $01, 221$01, $01, $01, $01, $01, $01, $01, $01, 222$01, $01, $01, $01, $01, $01, $01, $01, 223$01, $01, $01, $01, $01, $01, $01, $01, 224$01, $01, $01, $01, $01, $01, $01, $01, 225$01, $01, $01, $01, $01, $01, $01, $01, 226$01, $01, $01, $01, $01, $01, $01, $01, 227$01, $01, $01, $01, $01, $01, $01, $17, 228$00, $00, $00, $00, $00, $00, $00, $00, 229$00, $00, $00, $00, $01, $01, $01, $01, 230$01, $01, $01, $01, $01, $01, $01, $01, 231$01, $01, $01, $01, $01, $01, $01, $01, 232$01, $01, $01, $01, $01, $01, $01, $01, 233$01, $01, $01, $01, $01, $01, $01, $01, 234$01, $01, $01, $01, $01, $01, $01, $18, 235$00, $00, $00, $00, $00, $00, $00, $00, 236$00, $00, $00, $00, $00, $00, $00, $00, 237$00, $00, $00, $00, $00, $00, $00, $00, 238$00, $00, $00, $00, $00, $00, $00, $00, 239$00, $00, $00, $00, $00, $00, $00, $00); 240 241