names.inc 9.7 KB

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