names.inc 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. ns_ASCII = [$3A, $41..$5A, $5F, $61..$7A, $C0..$D6, $D8..$F6, $F8..$FF];
  14. ns_0200 = [0..$17, $50..$A8, $BB..$C1];
  15. ns_0300 = [$86, $88..$8A, $8C, $8E..$A1,
  16. $A3..$CE, $D0..$D6, $DA, $DC,
  17. $DE, $E0, $E2..$F3];
  18. ns_0400 = [$01..$0C, $0E..$4F, $51..$5C,
  19. $5E..$81, $90..$C4, $C7..$C8,
  20. $CB..$CC, $D0..$EB, $EE..$F5,
  21. $F8..$F9];
  22. ns_0500 = [$31..$56, $59, $61..$86, $D0..$EA, $F0..$F2];
  23. ns_0600 = [$21..$3A, $41..$4A, $71..$B7,
  24. $BA..$BE, $C0..$CE, $D0..$D3,
  25. $D5, $E5..$E6];
  26. ns_0900 = [$05..$39, $3D, $58..$61,
  27. $85..$8C, $8F..$90, $93..$A8,
  28. $AA..$B0, $B2, $B6..$B9,
  29. $DC..$DD, $DF..$E1, $F0..$F1];
  30. ns_0A00 = [$05..$0A, $0F..$10, $13..$28,
  31. $2A..$30, $32..$33, $35..$36,
  32. $38..$39, $59..$5C, $5E, $72..$74,
  33. $85..$8B, $8D, $8F..$91, $93..$A8,
  34. $AA..$B0, $B2..$B3, $B5..$B9, $BD, $E0];
  35. ns_0B00 = [$05..$0C, $0F..$10, $13..$28,
  36. $2A..$30, $32..$33, $36..$39,
  37. $3D, $5C..$5D, $5F..$61, $85..$8A,
  38. $8E..$90, $92..$95, $99..$9A,
  39. $9C, $9E..$9F, $A3..$A4, $A8..$AA,
  40. $AE..$B5, $B7..$B9];
  41. ns_0C00 = [$05..$0C, $0E..$10, $12..$28,
  42. $2A..$33, $35..$39, $60..$61,
  43. $85..$8C, $8E..$90, $92..$A8,
  44. $AA..$B3, $B5..$B9, $DE, $E0..$E1];
  45. ns_0D00 = [$05..$0C, $0E..$10, $12..$28, $2A..$39, $60..$61];
  46. ns_0E00 = [$01..$2E, $30, $32..$33, $40..$45,
  47. $81..$82, $84, $87..$88, $8A, $8D,
  48. $94..$97, $99..$9F, $A1..$A3,
  49. $A5, $A7, $AA..$AB, $AD..$AE,
  50. $B0, $B2..$B3, $BD, $C0..$C4];
  51. ns_0F00 = [$40..$47, $49..$69];
  52. ns_3000 = [$41..$94, $A1..$FA] + [$07, $21..$29];
  53. namingBitmap: array[0..$2F] of TSetOfByte = (
  54. [], // 00 - nothing allowed
  55. [0..255], // 01 - all allowed
  56. ns_ASCII, // 02
  57. [0..$31, $34..$3E, $41..$48, // 03 - $0100, both Name and NameStart
  58. $4A..$7E, $80..$C3, $CD..$F0,
  59. $F4..$F5, $FA..$FF],
  60. ns_0200, // 04
  61. ns_0300, // 05
  62. ns_0400, // 06
  63. ns_0500, // 07
  64. ns_0600, // 08
  65. ns_0900, // 09
  66. ns_0A00, // 0A
  67. ns_0B00, // 0B
  68. ns_0C00, // 0C
  69. ns_0D00, // 0D
  70. ns_0E00, // 0E
  71. ns_0F00, // 0F
  72. [$A0..$C5, $D0..$F6], // 10 - $1000, both Name and NameStart
  73. [0, $02..03, $05..$07, $09, // 11 - $1100, both Name and NameStart
  74. $0B..$0C, $0E..$12, $3C, $3E,
  75. $40, $4C, $4E, $50, $54..$55,
  76. $59, $5F..$61, $63, $65, $67,
  77. $69, $6D..$6E, $72..$73, $75,
  78. $9E, $A8, $AB, $AE..$AF,
  79. $B7..$B8, $BA, $BC..$C2, $EB, $F0, $F9],
  80. [0..$9B, $A0..$F9], // 12 - $1E00, both Name and NameStart
  81. [0..$15, $18..$1D, $20..$45, // 13 - $1F00, both Name and NameStart
  82. $48..$4D, $50..$57, $59, $5B, $5D,
  83. $5F..$7D, $80..$B4, $B6..$BC, $BE,
  84. $C2..$C4, $C6..$CC, $D0..$D3,
  85. $D6..$DB, $E0..$EC, $F2..$F4, $F6..$FC],
  86. [$26, $2A..$2B, $2E, $80..$82], // 14 - $2100, NameStart
  87. ns_3000, // 15
  88. [$05..$2C], // 16 - $3100, NameStart
  89. [0..$A5], // 17 - $9F00, NameStart (ideographs)
  90. [0..$A3], // 18 - $D700, NameStart
  91. ns_ASCII + // 19 - $0000, Names
  92. [$2D..$2E, $30..$39, $B7],
  93. ns_0200 + // 1A - $0200, Names
  94. [$D0..$D1],
  95. ns_0300 + // 1B - $0300, Names
  96. [0..$45, $60..$61, $87],
  97. ns_0400 + // 1C - $0400, Names
  98. [$83..$86],
  99. ns_0500 + // 1D - $0500, Names
  100. [$91..$A1, $A3..$B9, $BB..$BD, { combining }
  101. $BF, $C1..$C2, $C4],
  102. ns_0600 + // 1E - $0600, Names
  103. [$4B..$52, $70, $D6..$DC, $DD..$DF, { combining }
  104. $E0..$E4, $E7..$E8, $EA..$ED] +
  105. [$60..$69, $F0..$F9] + [$40], { digits + ext }
  106. ns_0900 + // 1F - $0900, Names
  107. [$01..$03, $3C, $3E..$4C, $4D, { combining }
  108. $51..$54, $62..$63, $81..$83,
  109. $BC, $BE, $BF, $C0..$C4, $C7..$C8,
  110. $CB..$CD, $D7, $E2..$E3] +
  111. [$66..$6F, $E6..$EF], { digits }
  112. ns_0A00 + // 20 - $0A00, Names
  113. [$02, $3C, $3E..$42, $47..$48, $4B..$4D, { combining }
  114. $70..$71, $81..$83, $BC, $BE..$C5,
  115. $C7..$C9, $CB..$CD] +
  116. [$66..$6F, $E6..$EF], { digits }
  117. ns_0B00 + // 21 - $0B00, Names
  118. [$01..$03, $3C, $3E..$43, $47..$48, { combining }
  119. $4B..$4D, $56..$57, $82..$83, $BE..$C2,
  120. $C6..$C8, $CA..$CD, $D7] +
  121. [$66..$6F, $E7..$EF], { digits }
  122. ns_0C00 + // 22 - $0C00, Names
  123. [$01..$03, $3E..$44, $46..$48, { combining }
  124. $4A..$4D, $55..$56, $82..$83,
  125. $BE..$C4, $C6..$C8, $CA..$CD, $D5..$D6] +
  126. [$66..$6F, $E6..$EF], { digits }
  127. ns_0D00 + // 23 - $0D00, Names
  128. [$02..$03, $3E..$43, { combining }
  129. $46..$48, $4A..$4D, $57] +
  130. [$66..$6F], { digits }
  131. ns_0E00 + // 24 - $0E00, Names
  132. [$31, $34..$3A, $47..$4E, { combining }
  133. $B1, $B4..$B9, $BB..$BC,
  134. $C8..$CD] +
  135. [$50..$59, $D0..$D9] + { digits }
  136. [$46, $C6], { extenders }
  137. ns_0F00 + // 25 - $0F00, Names
  138. [$18..$19, $35, $37, $39, { combining }
  139. $3E, $3F, $71..$84, $86..$8B,
  140. $90..$95, $97, $99..$AD,
  141. $B1..$B7, $B9] +
  142. [$20..$29], { digits }
  143. [$D0..$DC, $E1], // 26 - $2000, Names (combining)
  144. ns_3000 + // 27 - $3000, Names
  145. [$2A..$2F, $99, $9A] + { combining }
  146. [$05, $31..$35, $9D..$9E, $FC..$FE], { extenders }
  147. { XML 1.1 additions }
  148. [0..$CF, $F0..$FF], // 28 $FD00 - NameStart
  149. [0..$EF], // 29 $2F00 - NameStart
  150. [$0C..$0D, $70..$FF], // 2A $2000 - NameStart
  151. [0..$8F], // 2B $2100 - NameStart
  152. [$70..$7D, $7F..$FF], // 2C $0300 - NameStart
  153. [1..$FF], // 2D $3000 - NameStart
  154. [0..$7D, $7F..$FF], // 2E $0300 - Names
  155. [$0C..$0D, $3F..$40, $70..$FF] // 2F $2000 - Names
  156. );
  157. Xml11HighPages: TSetOfByte = [0..$21, $2C..$D7, $F9..$FF];
  158. NamePages: array[0..511] of Byte = (
  159. $02, $03, $04, $05, $06, $07, $08, $00,
  160. $00, $09, $0A, $0B, $0C, $0D, $0E, $0F,
  161. $10, $11, $00, $00, $00, $00, $00, $00,
  162. $00, $00, $00, $00, $00, $00, $12, $13,
  163. $00, $14, $00, $00, $00, $00, $00, $00,
  164. $00, $00, $00, $00, $00, $00, $00, $00,
  165. $15, $16, $00, $00, $00, $00, $00, $00,
  166. $00, $00, $00, $00, $00, $00, $00, $00,
  167. $00, $00, $00, $00, $00, $00, $00, $00,
  168. $00, $00, $00, $00, $00, $00, $01, $01,
  169. $01, $01, $01, $01, $01, $01, $01, $01,
  170. $01, $01, $01, $01, $01, $01, $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, $17,
  179. $00, $00, $00, $00, $00, $00, $00, $00,
  180. $00, $00, $00, $00, $01, $01, $01, $01,
  181. $01, $01, $01, $01, $01, $01, $01, $01,
  182. $01, $01, $01, $01, $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, $18,
  186. $00, $00, $00, $00, $00, $00, $00, $00,
  187. $00, $00, $00, $00, $00, $00, $00, $00,
  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. // second half - NameChars
  192. $19, $03, $1A, $1B, $1C, $1D, $1E, $00,
  193. $00, $1F, $20, $21, $22, $23, $24, $25,
  194. $10, $11, $00, $00, $00, $00, $00, $00,
  195. $00, $00, $00, $00, $00, $00, $12, $13,
  196. $26, $14, $00, $00, $00, $00, $00, $00,
  197. $00, $00, $00, $00, $00, $00, $00, $00,
  198. $27, $16, $00, $00, $00, $00, $00, $00,
  199. $00, $00, $00, $00, $00, $00, $00, $00,
  200. $00, $00, $00, $00, $00, $00, $00, $00,
  201. $00, $00, $00, $00, $00, $00, $01, $01,
  202. $01, $01, $01, $01, $01, $01, $01, $01,
  203. $01, $01, $01, $01, $01, $01, $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, $17,
  212. $00, $00, $00, $00, $00, $00, $00, $00,
  213. $00, $00, $00, $00, $01, $01, $01, $01,
  214. $01, $01, $01, $01, $01, $01, $01, $01,
  215. $01, $01, $01, $01, $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, $18,
  219. $00, $00, $00, $00, $00, $00, $00, $00,
  220. $00, $00, $00, $00, $00, $00, $00, $00,
  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);