ucode 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +72 -0
  3. data/Gemfile.lock +2 -2
  4. data/TODO.full/00-README.md +116 -0
  5. data/TODO.full/01-panglyph-vision.md +112 -0
  6. data/TODO.full/02-panglyph-repo-bootstrap.md +184 -0
  7. data/TODO.full/03-panglyph-font-builder.md +201 -0
  8. data/TODO.full/04-panglyph-publish-pipeline.md +126 -0
  9. data/TODO.full/05-ucode-0-1-1-release.md +139 -0
  10. data/TODO.full/06-fontisan-remove-audit.md +142 -0
  11. data/TODO.full/07-fontisan-remove-ucd.md +125 -0
  12. data/TODO.full/08-archive-private-bin-build.md +143 -0
  13. data/TODO.full/09-archive-public-structure.md +164 -0
  14. data/TODO.full/10-fontist-org-woff-glyphs.md +131 -0
  15. data/TODO.full/11-fontist-org-audit-coverage.md +140 -0
  16. data/TODO.full/12-implementation-order.md +216 -0
  17. data/TODO.full/13-fontisan-font-writer-api.md +189 -0
  18. data/TODO.full/14-fontisan-table-writers.md +66 -0
  19. data/TODO.full/15-panglyph-builder-real.md +82 -0
  20. data/TODO.full/16-archive-public-sync-workflows.md +167 -0
  21. data/TODO.full/17-fontist-org-font-picker.md +73 -0
  22. data/TODO.full/18-comprehensive-spec-coverage.md +64 -0
  23. data/TODO.full/19-ucode-0-1-2-patch.md +32 -0
  24. data/TODO.full/20-fontisan-0-2-23-release.md +52 -0
  25. data/TODO.new/00-README.md +30 -0
  26. data/TODO.new/23-universal-glyph-set-source-map.md +312 -0
  27. data/TODO.new/24-universal-glyph-set-build.md +189 -0
  28. data/TODO.new/25-font-audit-against-universal-set.md +195 -0
  29. data/TODO.new/26-missing-glyph-reporter.md +189 -0
  30. data/TODO.new/27-fontist-org-consumer-integration.md +200 -0
  31. data/TODO.new/28-implementation-order-update.md +187 -0
  32. data/TODO.new/29-universal-set-curation-uc17.md +312 -0
  33. data/TODO.new/30-tier1-font-acquisition.md +241 -0
  34. data/TODO.new/31-universal-set-production-build.md +205 -0
  35. data/TODO.new/32-uc17-coverage-matrix.md +165 -0
  36. data/TODO.new/33-specialist-font-acquisition-refresh.md +138 -0
  37. data/TODO.new/34-pillar2-content-stream-correlator.md +147 -0
  38. data/TODO.new/35-universal-set-production-run.md +160 -0
  39. data/TODO.new/36-per-font-coverage-audit.md +145 -0
  40. data/TODO.new/37-coverage-highlight-reporter.md +125 -0
  41. data/TODO.new/38-fontist-org-glyph-consumer.md +141 -0
  42. data/TODO.new/39-implementation-order-update-32-38.md +258 -0
  43. data/TODO.new/40-archive-private-uses-ucode-audit.md +124 -0
  44. data/TODO.new/41-ucode-unicode-archive-bridge.md +160 -0
  45. data/config/specialist_fonts.yml +102 -0
  46. data/config/unicode17_tier1_fonts.yml +42 -0
  47. data/config/unicode17_universal_glyph_set.yml +293 -0
  48. data/lib/ucode/audit/block_aggregator.rb +57 -29
  49. data/lib/ucode/audit/browser/face_page.rb +128 -0
  50. data/lib/ucode/audit/browser/glyph_panel.rb +124 -0
  51. data/lib/ucode/audit/browser/library_page.rb +74 -0
  52. data/lib/ucode/audit/browser/missing_glyph_page.rb +87 -0
  53. data/lib/ucode/audit/browser/template.rb +47 -0
  54. data/lib/ucode/audit/browser/templates/face.css +200 -0
  55. data/lib/ucode/audit/browser/templates/face.html.erb +41 -0
  56. data/lib/ucode/audit/browser/templates/face.js +298 -0
  57. data/lib/ucode/audit/browser/templates/library.css +119 -0
  58. data/lib/ucode/audit/browser/templates/library.html.erb +42 -0
  59. data/lib/ucode/audit/browser/templates/library.js +99 -0
  60. data/lib/ucode/audit/browser/templates/missing_glyph_page.css +119 -0
  61. data/lib/ucode/audit/browser/templates/missing_glyph_page.html.erb +58 -0
  62. data/lib/ucode/audit/browser/templates/missing_glyph_page.js +2 -0
  63. data/lib/ucode/audit/browser.rb +32 -0
  64. data/lib/ucode/audit/context.rb +27 -1
  65. data/lib/ucode/audit/coverage_reference.rb +103 -0
  66. data/lib/ucode/audit/differ.rb +121 -0
  67. data/lib/ucode/audit/emitter/block_emitter.rb +52 -0
  68. data/lib/ucode/audit/emitter/codepoint_emitter.rb +87 -0
  69. data/lib/ucode/audit/emitter/collection_emitter.rb +80 -0
  70. data/lib/ucode/audit/emitter/face_directory.rb +212 -0
  71. data/lib/ucode/audit/emitter/glyph_emitter.rb +48 -0
  72. data/lib/ucode/audit/emitter/index_emitter.rb +149 -0
  73. data/lib/ucode/audit/emitter/library_emitter.rb +96 -0
  74. data/lib/ucode/audit/emitter/paths.rb +312 -0
  75. data/lib/ucode/audit/emitter/plane_emitter.rb +29 -0
  76. data/lib/ucode/audit/emitter/script_emitter.rb +29 -0
  77. data/lib/ucode/audit/emitter.rb +29 -0
  78. data/lib/ucode/audit/extractors/aggregations.rb +31 -2
  79. data/lib/ucode/audit/face_auditor.rb +86 -0
  80. data/lib/ucode/audit/formatters/audit_diff_text.rb +112 -0
  81. data/lib/ucode/audit/formatters/audit_text.rb +411 -0
  82. data/lib/ucode/audit/formatters/color.rb +48 -0
  83. data/lib/ucode/audit/formatters/library_summary_text.rb +98 -0
  84. data/lib/ucode/audit/formatters/text_formatter.rb +83 -0
  85. data/lib/ucode/audit/formatters.rb +23 -0
  86. data/lib/ucode/audit/library_aggregator.rb +86 -0
  87. data/lib/ucode/audit/library_auditor.rb +105 -0
  88. data/lib/ucode/audit/release/emitter.rb +152 -0
  89. data/lib/ucode/audit/release/face_card.rb +93 -0
  90. data/lib/ucode/audit/release/formula_audits.rb +50 -0
  91. data/lib/ucode/audit/release/library_index_builder.rb +78 -0
  92. data/lib/ucode/audit/release/manifest_builder.rb +127 -0
  93. data/lib/ucode/audit/release.rb +42 -0
  94. data/lib/ucode/audit/ucd_only_reference.rb +81 -0
  95. data/lib/ucode/audit/universal_set_reference.rb +136 -0
  96. data/lib/ucode/audit.rb +31 -0
  97. data/lib/ucode/cli.rb +339 -33
  98. data/lib/ucode/commands/audit/browser_command.rb +82 -0
  99. data/lib/ucode/commands/audit/collection_command.rb +103 -0
  100. data/lib/ucode/commands/audit/compare_command.rb +188 -0
  101. data/lib/ucode/commands/audit/font_command.rb +140 -0
  102. data/lib/ucode/commands/audit/library_command.rb +87 -0
  103. data/lib/ucode/commands/audit/reference_builder.rb +64 -0
  104. data/lib/ucode/commands/audit.rb +20 -0
  105. data/lib/ucode/commands/block_feed.rb +73 -0
  106. data/lib/ucode/commands/canonical_build.rb +138 -0
  107. data/lib/ucode/commands/fetch.rb +37 -1
  108. data/lib/ucode/commands/release.rb +115 -0
  109. data/lib/ucode/commands/universal_set.rb +211 -0
  110. data/lib/ucode/commands.rb +5 -0
  111. data/lib/ucode/coordinator/indices.rb +11 -0
  112. data/lib/ucode/coordinator.rb +138 -5
  113. data/lib/ucode/error.rb +30 -2
  114. data/lib/ucode/fetch/font_fetcher/result.rb +39 -0
  115. data/lib/ucode/fetch/font_fetcher.rb +16 -0
  116. data/lib/ucode/fetch/specialist_font_fetcher.rb +280 -0
  117. data/lib/ucode/fetch.rb +7 -3
  118. data/lib/ucode/glyphs/real_fonts/cmap_cache.rb +74 -0
  119. data/lib/ucode/glyphs/real_fonts.rb +1 -0
  120. data/lib/ucode/glyphs/resolver.rb +62 -0
  121. data/lib/ucode/glyphs/source.rb +48 -0
  122. data/lib/ucode/glyphs/source_builder.rb +61 -0
  123. data/lib/ucode/glyphs/source_config/coverage_assertion.rb +79 -0
  124. data/lib/ucode/glyphs/source_config/gap_report.rb +54 -0
  125. data/lib/ucode/glyphs/source_config.rb +104 -0
  126. data/lib/ucode/glyphs/sources/pillar1_embedded_tounicode.rb +63 -0
  127. data/lib/ucode/glyphs/sources/pillar3_last_resort.rb +51 -0
  128. data/lib/ucode/glyphs/sources/tier1_real_font.rb +104 -0
  129. data/lib/ucode/glyphs/sources.rb +20 -0
  130. data/lib/ucode/glyphs/universal_set/builder.rb +161 -0
  131. data/lib/ucode/glyphs/universal_set/coverage_report.rb +139 -0
  132. data/lib/ucode/glyphs/universal_set/idempotency.rb +86 -0
  133. data/lib/ucode/glyphs/universal_set/manifest_accumulator.rb +195 -0
  134. data/lib/ucode/glyphs/universal_set/manifest_writer.rb +61 -0
  135. data/lib/ucode/glyphs/universal_set/pre_build_check.rb +197 -0
  136. data/lib/ucode/glyphs/universal_set/validator.rb +204 -0
  137. data/lib/ucode/glyphs/universal_set.rb +45 -0
  138. data/lib/ucode/glyphs.rb +6 -0
  139. data/lib/ucode/models/audit/baseline.rb +6 -0
  140. data/lib/ucode/models/audit/block_summary.rb +7 -0
  141. data/lib/ucode/models/audit/codepoint_provenance.rb +39 -0
  142. data/lib/ucode/models/audit/release_face.rb +42 -0
  143. data/lib/ucode/models/audit/release_formula.rb +33 -0
  144. data/lib/ucode/models/audit/release_manifest.rb +43 -0
  145. data/lib/ucode/models/audit/release_universal_set.rb +37 -0
  146. data/lib/ucode/models/audit.rb +9 -0
  147. data/lib/ucode/models/block.rb +2 -0
  148. data/lib/ucode/models/build_report.rb +109 -0
  149. data/lib/ucode/models/codepoint/glyph.rb +42 -0
  150. data/lib/ucode/models/codepoint.rb +3 -0
  151. data/lib/ucode/models/glyph_source.rb +86 -0
  152. data/lib/ucode/models/glyph_source_map.rb +138 -0
  153. data/lib/ucode/models/specialist_font.rb +70 -0
  154. data/lib/ucode/models/specialist_font_manifest.rb +48 -0
  155. data/lib/ucode/models/unihan_entry.rb +81 -9
  156. data/lib/ucode/models/unihan_field.rb +21 -0
  157. data/lib/ucode/models/universal_set_entry.rb +47 -0
  158. data/lib/ucode/models/universal_set_manifest.rb +78 -0
  159. data/lib/ucode/models/validation_report.rb +99 -0
  160. data/lib/ucode/models.rb +9 -0
  161. data/lib/ucode/parsers/named_sequences.rb +5 -5
  162. data/lib/ucode/parsers/unihan.rb +50 -19
  163. data/lib/ucode/repo/aggregate_writer.rb +34 -2
  164. data/lib/ucode/repo/block_feed_emitter.rb +153 -0
  165. data/lib/ucode/repo/build_report_accumulator.rb +138 -0
  166. data/lib/ucode/repo/build_report_writer.rb +46 -0
  167. data/lib/ucode/repo/build_validator.rb +229 -0
  168. data/lib/ucode/repo/codepoint_writer.rb +50 -1
  169. data/lib/ucode/repo/paths.rb +8 -0
  170. data/lib/ucode/repo.rb +4 -0
  171. data/lib/ucode/version.rb +1 -1
  172. data/schema/block-feed.output.schema.yml +134 -0
  173. metadata +143 -2
  174. data/ucode.gemspec +0 -56
@@ -0,0 +1,134 @@
1
+ # ucode block-feed output schema
2
+ #
3
+ # This is the canonical shape of ucode's `block-feed` output — a compact
4
+ # per-block Unicode data feed derived from ucode's canonical output tree.
5
+ #
6
+ # ucode emits three files under the target directory:
7
+ #
8
+ # unicode-blocks.json
9
+ # unicode-version.json
10
+ # unicode/blocks/<slug>.json
11
+ #
12
+ # Block slugs are derived from the Unicode block display name via the
13
+ # standard slug algorithm:
14
+ #
15
+ # name.downcase.gsub(/[^a-z0-9]+/, "-").gsub(/^-|-$/, "")
16
+ #
17
+ # Field names are short (cp, n, c, s, cc, bc, mir) because the per-block
18
+ # files inline every codepoint — byte size matters at the long tail
19
+ # (CJK Unified Ideographs alone is 20,992 chars in one file).
20
+ #
21
+ # This schema describes Unicode data only. It is not specific to any
22
+ # consumer; any tooling that wants a compact per-block view of Unicode
23
+ # can consume it.
24
+
25
+ $schema: "https://json-schema.org/draft/2020-12/schema"
26
+ title: UcodeBlockFeed
27
+ description: Canonical shape of ucode's compact per-block Unicode data feed
28
+
29
+ definitions:
30
+
31
+ codepoint:
32
+ description: A single Unicode codepoint's compact metadata.
33
+ type: object
34
+ additionalProperties: false
35
+ required: [cp]
36
+ properties:
37
+ cp:
38
+ type: integer
39
+ minimum: 0
40
+ maximum: 0x10FFFF
41
+ description: The Unicode scalar value (integer form of U+XXXX).
42
+ n:
43
+ type: string
44
+ minLength: 1
45
+ description: Codepoint name (e.g. "LATIN CAPITAL LETTER A"). Omitted when empty.
46
+ c:
47
+ type: string
48
+ minLength: 1
49
+ pattern: '^[A-Z][a-z]$'
50
+ description: General category short code (Lu, Ll, Mn, So, ...).
51
+ s:
52
+ type: string
53
+ minLength: 2
54
+ description: Script code (Latn, Grek, Hani, Zyyy, ...). 4-letter ISO 15924.
55
+ cc:
56
+ type: integer
57
+ minimum: 0
58
+ maximum: 255
59
+ description: Canonical combining class. Always present (0 for non-marks).
60
+ bc:
61
+ type: string
62
+ minLength: 1
63
+ description: Bidi class short code (L, R, AL, AN, NSM, BN, ...).
64
+ mir:
65
+ type: boolean
66
+ description: Bidi mirrored flag. Omitted when false.
67
+
68
+ block_summary:
69
+ description: One entry per Unicode block in unicode-blocks.json.
70
+ type: object
71
+ additionalProperties: false
72
+ required: [start, end, name, unicode_version]
73
+ properties:
74
+ start:
75
+ type: integer
76
+ minimum: 0
77
+ maximum: 0x10FFFF
78
+ description: First codepoint in the block (inclusive).
79
+ end:
80
+ type: integer
81
+ minimum: 0
82
+ maximum: 0x10FFFF
83
+ description: Last codepoint in the block (inclusive).
84
+ name:
85
+ type: string
86
+ minLength: 1
87
+ description: Unicode block display name (e.g. "Basic Latin", "Greek and Coptic").
88
+ unicode_version:
89
+ type: string
90
+ pattern: '^\d+\.\d+\.\d+$'
91
+ description: Earliest Unicode version of any codepoint in the block (e.g. "1.1", "17.0.0").
92
+
93
+ type: object
94
+ properties:
95
+
96
+ unicode-blocks.json:
97
+ type: array
98
+ description: Top-level index of all Unicode blocks (~346 entries for Unicode 17).
99
+ items:
100
+ $ref: '#/definitions/block_summary'
101
+
102
+ unicode-version.json:
103
+ type: object
104
+ additionalProperties: false
105
+ required: [version, blockCount, charCount, generatedAt]
106
+ properties:
107
+ version:
108
+ type: string
109
+ pattern: '^\d+\.\d+\.\d+$'
110
+ description: UCD version (e.g. "17.0.0").
111
+ blockCount:
112
+ type: integer
113
+ minimum: 1
114
+ description: Total number of blocks (must match length of unicode-blocks.json).
115
+ charCount:
116
+ type: integer
117
+ minimum: 1
118
+ description: Total assigned codepoints across all blocks.
119
+ generatedAt:
120
+ type: string
121
+ format: date-time
122
+ description: ISO 8601 timestamp of the emitter run.
123
+
124
+ unicode/blocks/<slug>.json:
125
+ type: object
126
+ additionalProperties: false
127
+ required: [chars]
128
+ properties:
129
+ chars:
130
+ type: array
131
+ minItems: 0
132
+ description: Codepoints in this block, ordered by cp ascending.
133
+ items:
134
+ $ref: '#/definitions/codepoint'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -150,11 +150,33 @@ executables:
150
150
  extensions: []
151
151
  extra_rdoc_files: []
152
152
  files:
153
+ - CHANGELOG.md
153
154
  - CLAUDE.md
154
155
  - Gemfile
155
156
  - Gemfile.lock
156
157
  - README.md
157
158
  - Rakefile
159
+ - TODO.full/00-README.md
160
+ - TODO.full/01-panglyph-vision.md
161
+ - TODO.full/02-panglyph-repo-bootstrap.md
162
+ - TODO.full/03-panglyph-font-builder.md
163
+ - TODO.full/04-panglyph-publish-pipeline.md
164
+ - TODO.full/05-ucode-0-1-1-release.md
165
+ - TODO.full/06-fontisan-remove-audit.md
166
+ - TODO.full/07-fontisan-remove-ucd.md
167
+ - TODO.full/08-archive-private-bin-build.md
168
+ - TODO.full/09-archive-public-structure.md
169
+ - TODO.full/10-fontist-org-woff-glyphs.md
170
+ - TODO.full/11-fontist-org-audit-coverage.md
171
+ - TODO.full/12-implementation-order.md
172
+ - TODO.full/13-fontisan-font-writer-api.md
173
+ - TODO.full/14-fontisan-table-writers.md
174
+ - TODO.full/15-panglyph-builder-real.md
175
+ - TODO.full/16-archive-public-sync-workflows.md
176
+ - TODO.full/17-fontist-org-font-picker.md
177
+ - TODO.full/18-comprehensive-spec-coverage.md
178
+ - TODO.full/19-ucode-0-1-2-patch.md
179
+ - TODO.full/20-fontisan-0-2-23-release.md
158
180
  - TODO.new/00-README.md
159
181
  - TODO.new/01-pillar-terminology-alignment.md
160
182
  - TODO.new/02-audit-schema-design.md
@@ -178,15 +200,65 @@ files:
178
200
  - TODO.new/20-canonical-resolver-4-tier.md
179
201
  - TODO.new/21-canonical-unicode17-build.md
180
202
  - TODO.new/22-implementation-order.md
203
+ - TODO.new/23-universal-glyph-set-source-map.md
204
+ - TODO.new/24-universal-glyph-set-build.md
205
+ - TODO.new/25-font-audit-against-universal-set.md
206
+ - TODO.new/26-missing-glyph-reporter.md
207
+ - TODO.new/27-fontist-org-consumer-integration.md
208
+ - TODO.new/28-implementation-order-update.md
209
+ - TODO.new/29-universal-set-curation-uc17.md
210
+ - TODO.new/30-tier1-font-acquisition.md
211
+ - TODO.new/31-universal-set-production-build.md
212
+ - TODO.new/32-uc17-coverage-matrix.md
213
+ - TODO.new/33-specialist-font-acquisition-refresh.md
214
+ - TODO.new/34-pillar2-content-stream-correlator.md
215
+ - TODO.new/35-universal-set-production-run.md
216
+ - TODO.new/36-per-font-coverage-audit.md
217
+ - TODO.new/37-coverage-highlight-reporter.md
218
+ - TODO.new/38-fontist-org-glyph-consumer.md
219
+ - TODO.new/39-implementation-order-update-32-38.md
220
+ - TODO.new/40-archive-private-uses-ucode-audit.md
221
+ - TODO.new/41-ucode-unicode-archive-bridge.md
181
222
  - UCODE_CHANGELOG.md
223
+ - config/specialist_fonts.yml
224
+ - config/unicode17_tier1_fonts.yml
225
+ - config/unicode17_universal_glyph_set.yml
182
226
  - exe/ucode
183
227
  - lib/ucode.rb
184
228
  - lib/ucode/aggregator.rb
185
229
  - lib/ucode/audit.rb
186
230
  - lib/ucode/audit/block_aggregator.rb
231
+ - lib/ucode/audit/browser.rb
232
+ - lib/ucode/audit/browser/face_page.rb
233
+ - lib/ucode/audit/browser/glyph_panel.rb
234
+ - lib/ucode/audit/browser/library_page.rb
235
+ - lib/ucode/audit/browser/missing_glyph_page.rb
236
+ - lib/ucode/audit/browser/template.rb
237
+ - lib/ucode/audit/browser/templates/face.css
238
+ - lib/ucode/audit/browser/templates/face.html.erb
239
+ - lib/ucode/audit/browser/templates/face.js
240
+ - lib/ucode/audit/browser/templates/library.css
241
+ - lib/ucode/audit/browser/templates/library.html.erb
242
+ - lib/ucode/audit/browser/templates/library.js
243
+ - lib/ucode/audit/browser/templates/missing_glyph_page.css
244
+ - lib/ucode/audit/browser/templates/missing_glyph_page.html.erb
245
+ - lib/ucode/audit/browser/templates/missing_glyph_page.js
187
246
  - lib/ucode/audit/codepoint_range_coalescer.rb
188
247
  - lib/ucode/audit/context.rb
248
+ - lib/ucode/audit/coverage_reference.rb
249
+ - lib/ucode/audit/differ.rb
189
250
  - lib/ucode/audit/discrepancy_detector.rb
251
+ - lib/ucode/audit/emitter.rb
252
+ - lib/ucode/audit/emitter/block_emitter.rb
253
+ - lib/ucode/audit/emitter/codepoint_emitter.rb
254
+ - lib/ucode/audit/emitter/collection_emitter.rb
255
+ - lib/ucode/audit/emitter/face_directory.rb
256
+ - lib/ucode/audit/emitter/glyph_emitter.rb
257
+ - lib/ucode/audit/emitter/index_emitter.rb
258
+ - lib/ucode/audit/emitter/library_emitter.rb
259
+ - lib/ucode/audit/emitter/paths.rb
260
+ - lib/ucode/audit/emitter/plane_emitter.rb
261
+ - lib/ucode/audit/emitter/script_emitter.rb
190
262
  - lib/ucode/audit/extractors.rb
191
263
  - lib/ucode/audit/extractors/aggregations.rb
192
264
  - lib/ucode/audit/extractors/base.rb
@@ -200,20 +272,48 @@ files:
200
272
  - lib/ucode/audit/extractors/provenance.rb
201
273
  - lib/ucode/audit/extractors/style.rb
202
274
  - lib/ucode/audit/extractors/variation_detail.rb
275
+ - lib/ucode/audit/face_auditor.rb
276
+ - lib/ucode/audit/formatters.rb
277
+ - lib/ucode/audit/formatters/audit_diff_text.rb
278
+ - lib/ucode/audit/formatters/audit_text.rb
279
+ - lib/ucode/audit/formatters/color.rb
280
+ - lib/ucode/audit/formatters/library_summary_text.rb
281
+ - lib/ucode/audit/formatters/text_formatter.rb
282
+ - lib/ucode/audit/library_aggregator.rb
283
+ - lib/ucode/audit/library_auditor.rb
203
284
  - lib/ucode/audit/plane_aggregator.rb
204
285
  - lib/ucode/audit/registry.rb
286
+ - lib/ucode/audit/release.rb
287
+ - lib/ucode/audit/release/emitter.rb
288
+ - lib/ucode/audit/release/face_card.rb
289
+ - lib/ucode/audit/release/formula_audits.rb
290
+ - lib/ucode/audit/release/library_index_builder.rb
291
+ - lib/ucode/audit/release/manifest_builder.rb
205
292
  - lib/ucode/audit/script_aggregator.rb
293
+ - lib/ucode/audit/ucd_only_reference.rb
294
+ - lib/ucode/audit/universal_set_reference.rb
206
295
  - lib/ucode/cache.rb
207
296
  - lib/ucode/cli.rb
208
297
  - lib/ucode/commands.rb
298
+ - lib/ucode/commands/audit.rb
299
+ - lib/ucode/commands/audit/browser_command.rb
300
+ - lib/ucode/commands/audit/collection_command.rb
301
+ - lib/ucode/commands/audit/compare_command.rb
302
+ - lib/ucode/commands/audit/font_command.rb
303
+ - lib/ucode/commands/audit/library_command.rb
304
+ - lib/ucode/commands/audit/reference_builder.rb
305
+ - lib/ucode/commands/block_feed.rb
209
306
  - lib/ucode/commands/build.rb
210
307
  - lib/ucode/commands/cache.rb
308
+ - lib/ucode/commands/canonical_build.rb
211
309
  - lib/ucode/commands/fetch.rb
212
310
  - lib/ucode/commands/font_coverage.rb
213
311
  - lib/ucode/commands/glyphs.rb
214
312
  - lib/ucode/commands/lookup.rb
215
313
  - lib/ucode/commands/parse.rb
314
+ - lib/ucode/commands/release.rb
216
315
  - lib/ucode/commands/site.rb
316
+ - lib/ucode/commands/universal_set.rb
217
317
  - lib/ucode/config.rb
218
318
  - lib/ucode/coordinator.rb
219
319
  - lib/ucode/coordinator/indices.rb
@@ -222,7 +322,10 @@ files:
222
322
  - lib/ucode/error.rb
223
323
  - lib/ucode/fetch.rb
224
324
  - lib/ucode/fetch/code_charts.rb
325
+ - lib/ucode/fetch/font_fetcher.rb
326
+ - lib/ucode/fetch/font_fetcher/result.rb
225
327
  - lib/ucode/fetch/http.rb
328
+ - lib/ucode/fetch/specialist_font_fetcher.rb
226
329
  - lib/ucode/fetch/ucd_zip.rb
227
330
  - lib/ucode/fetch/unihan_zip.rb
228
331
  - lib/ucode/glyphs.rb
@@ -256,11 +359,30 @@ files:
256
359
  - lib/ucode/glyphs/pdftocairo_renderer.rb
257
360
  - lib/ucode/glyphs/real_fonts.rb
258
361
  - lib/ucode/glyphs/real_fonts/block_coverage.rb
362
+ - lib/ucode/glyphs/real_fonts/cmap_cache.rb
259
363
  - lib/ucode/glyphs/real_fonts/coverage_auditor.rb
260
364
  - lib/ucode/glyphs/real_fonts/font_coverage_report.rb
261
365
  - lib/ucode/glyphs/real_fonts/font_locator.rb
262
366
  - lib/ucode/glyphs/real_fonts/unicode_17_blocks.rb
263
367
  - lib/ucode/glyphs/real_fonts/writer.rb
368
+ - lib/ucode/glyphs/resolver.rb
369
+ - lib/ucode/glyphs/source.rb
370
+ - lib/ucode/glyphs/source_builder.rb
371
+ - lib/ucode/glyphs/source_config.rb
372
+ - lib/ucode/glyphs/source_config/coverage_assertion.rb
373
+ - lib/ucode/glyphs/source_config/gap_report.rb
374
+ - lib/ucode/glyphs/sources.rb
375
+ - lib/ucode/glyphs/sources/pillar1_embedded_tounicode.rb
376
+ - lib/ucode/glyphs/sources/pillar3_last_resort.rb
377
+ - lib/ucode/glyphs/sources/tier1_real_font.rb
378
+ - lib/ucode/glyphs/universal_set.rb
379
+ - lib/ucode/glyphs/universal_set/builder.rb
380
+ - lib/ucode/glyphs/universal_set/coverage_report.rb
381
+ - lib/ucode/glyphs/universal_set/idempotency.rb
382
+ - lib/ucode/glyphs/universal_set/manifest_accumulator.rb
383
+ - lib/ucode/glyphs/universal_set/manifest_writer.rb
384
+ - lib/ucode/glyphs/universal_set/pre_build_check.rb
385
+ - lib/ucode/glyphs/universal_set/validator.rb
264
386
  - lib/ucode/glyphs/writer.rb
265
387
  - lib/ucode/index.rb
266
388
  - lib/ucode/index_builder.rb
@@ -272,6 +394,7 @@ files:
272
394
  - lib/ucode/models/audit/baseline.rb
273
395
  - lib/ucode/models/audit/block_summary.rb
274
396
  - lib/ucode/models/audit/codepoint_detail.rb
397
+ - lib/ucode/models/audit/codepoint_provenance.rb
275
398
  - lib/ucode/models/audit/codepoint_range.rb
276
399
  - lib/ucode/models/audit/codepoint_set_diff.rb
277
400
  - lib/ucode/models/audit/color_capabilities.rb
@@ -288,6 +411,10 @@ files:
288
411
  - lib/ucode/models/audit/named_instance.rb
289
412
  - lib/ucode/models/audit/opentype_layout.rb
290
413
  - lib/ucode/models/audit/plane_summary.rb
414
+ - lib/ucode/models/audit/release_face.rb
415
+ - lib/ucode/models/audit/release_formula.rb
416
+ - lib/ucode/models/audit/release_manifest.rb
417
+ - lib/ucode/models/audit/release_universal_set.rb
291
418
  - lib/ucode/models/audit/script_coverage_row.rb
292
419
  - lib/ucode/models/audit/script_features.rb
293
420
  - lib/ucode/models/audit/script_summary.rb
@@ -296,6 +423,7 @@ files:
296
423
  - lib/ucode/models/bidi_mirroring.rb
297
424
  - lib/ucode/models/binary_property_assignment.rb
298
425
  - lib/ucode/models/block.rb
426
+ - lib/ucode/models/build_report.rb
299
427
  - lib/ucode/models/case_folding_rule.rb
300
428
  - lib/ucode/models/cjk_radical.rb
301
429
  - lib/ucode/models/codepoint.rb
@@ -306,12 +434,15 @@ files:
306
434
  - lib/ucode/models/codepoint/decomposition.rb
307
435
  - lib/ucode/models/codepoint/display.rb
308
436
  - lib/ucode/models/codepoint/emoji.rb
437
+ - lib/ucode/models/codepoint/glyph.rb
309
438
  - lib/ucode/models/codepoint/hangul.rb
310
439
  - lib/ucode/models/codepoint/identifier.rb
311
440
  - lib/ucode/models/codepoint/indic.rb
312
441
  - lib/ucode/models/codepoint/joining.rb
313
442
  - lib/ucode/models/codepoint/normalization.rb
314
443
  - lib/ucode/models/codepoint/numeric_value.rb
444
+ - lib/ucode/models/glyph_source.rb
445
+ - lib/ucode/models/glyph_source_map.rb
315
446
  - lib/ucode/models/name_alias.rb
316
447
  - lib/ucode/models/named_sequence.rb
317
448
  - lib/ucode/models/names_list_entry.rb
@@ -327,8 +458,14 @@ files:
327
458
  - lib/ucode/models/relationship/variation_sequence.rb
328
459
  - lib/ucode/models/script.rb
329
460
  - lib/ucode/models/special_casing_rule.rb
461
+ - lib/ucode/models/specialist_font.rb
462
+ - lib/ucode/models/specialist_font_manifest.rb
330
463
  - lib/ucode/models/standardized_variant.rb
331
464
  - lib/ucode/models/unihan_entry.rb
465
+ - lib/ucode/models/unihan_field.rb
466
+ - lib/ucode/models/universal_set_entry.rb
467
+ - lib/ucode/models/universal_set_manifest.rb
468
+ - lib/ucode/models/validation_report.rb
332
469
  - lib/ucode/parsers.rb
333
470
  - lib/ucode/parsers/auxiliary.rb
334
471
  - lib/ucode/parsers/base.rb
@@ -356,6 +493,10 @@ files:
356
493
  - lib/ucode/repo.rb
357
494
  - lib/ucode/repo/aggregate_writer.rb
358
495
  - lib/ucode/repo/atomic_writes.rb
496
+ - lib/ucode/repo/block_feed_emitter.rb
497
+ - lib/ucode/repo/build_report_accumulator.rb
498
+ - lib/ucode/repo/build_report_writer.rb
499
+ - lib/ucode/repo/build_validator.rb
359
500
  - lib/ucode/repo/codepoint_writer.rb
360
501
  - lib/ucode/repo/paths.rb
361
502
  - lib/ucode/site.rb
@@ -375,7 +516,7 @@ files:
375
516
  - lib/ucode/site/template/search.md
376
517
  - lib/ucode/version.rb
377
518
  - lib/ucode/version_resolver.rb
378
- - ucode.gemspec
519
+ - schema/block-feed.output.schema.yml
379
520
  homepage: https://github.com/fontist/ucode
380
521
  licenses:
381
522
  - BSD-2-Clause
data/ucode.gemspec DELETED
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/ucode/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "ucode"
7
- spec.version = Ucode::VERSION
8
- spec.authors = ["Ribose Inc."]
9
- spec.email = ["open.source@ribose.com"]
10
-
11
- spec.summary = "Unicode Character Database toolkit — lookup, dataset, glyphs, site"
12
- spec.description = <<~DESC
13
- ucode turns the Unicode Character Database (UCD) text files and the official
14
- Unicode Code Charts into a structured, browsable dataset. For every assigned
15
- codepoint it produces a JSON document with full UCD properties, the
16
- human-curated relationships from NamesList.txt, Unihan readings, and
17
- machine-computed references; an SVG of the official glyph vector-extracted
18
- from the Code Charts; and a Vitepress site for browsing Plane, Block,
19
- and Character.
20
- DESC
21
-
22
- spec.homepage = "https://github.com/fontist/ucode"
23
- spec.license = "BSD-2-Clause"
24
- spec.required_ruby_version = ">= 3.2.0"
25
-
26
- spec.metadata["homepage_uri"] = spec.homepage
27
- spec.metadata["source_code_uri"] = "https://github.com/fontist/ucode"
28
- spec.metadata["changelog_uri"] = "https://github.com/fontist/ucode/blob/main/CHANGELOG.md"
29
- spec.metadata["rubygems_mfa_required"] = "true"
30
-
31
- spec.files = Dir.chdir(__dir__) do
32
- `git ls-files -z`.split("\x0").reject do |f|
33
- f == __FILE__ ||
34
- f.start_with?(".") ||
35
- f.start_with?("spec/") ||
36
- f.start_with?("benchmark/") ||
37
- f.start_with?("TODO.impl/") ||
38
- f.start_with?("docs/") ||
39
- f.start_with?("site/")
40
- end
41
- end
42
-
43
- spec.bindir = "exe"
44
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
45
- spec.require_paths = ["lib"]
46
-
47
- spec.add_dependency "base64"
48
- spec.add_dependency "fontisan", "~> 0.2"
49
- spec.add_dependency "fontist", "~> 3.0"
50
- spec.add_dependency "logger"
51
- spec.add_dependency "lutaml-model", "~> 0.8"
52
- spec.add_dependency "nokogiri", "~> 1.16"
53
- spec.add_dependency "rubyzip", "~> 2.3"
54
- spec.add_dependency "sqlite3", "~> 2.0"
55
- spec.add_dependency "thor", "~> 1.3"
56
- end