fontisan 0.2.17 → 0.2.22

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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +14 -90
  3. data/README.adoc +257 -1
  4. data/docs/.vitepress/config.ts +68 -8
  5. data/docs/.vitepress/theme/style.css +570 -272
  6. data/docs/CONVERSION_GUIDE.adoc +31 -8
  7. data/docs/EXTRACT_TTC_MIGRATION.md +1 -1
  8. data/docs/WOFF_WOFF2_FORMATS.adoc +53 -0
  9. data/docs/api/conversion-options.md +37 -14
  10. data/docs/cli/audit.md +337 -0
  11. data/docs/cli/convert.md +20 -1
  12. data/docs/cli/index.md +31 -0
  13. data/docs/guide/color.md +1 -1
  14. data/docs/guide/conversion/options.md +32 -3
  15. data/docs/guide/conversion/ttf-otf.md +1 -1
  16. data/docs/guide/conversion/type1.md +1 -1
  17. data/docs/guide/conversion/web.md +91 -32
  18. data/docs/guide/conversion.md +6 -5
  19. data/docs/guide/formats/woff.md +35 -11
  20. data/docs/guide/index.md +2 -2
  21. data/docs/guide/migrations/extract-ttc.md +1 -1
  22. data/docs/guide/quick-start.md +4 -4
  23. data/docs/guide/type1.md +4 -4
  24. data/docs/guide/woff.md +19 -17
  25. data/docs/index.md +2 -0
  26. data/docs/lychee.toml +5 -1
  27. data/docs/package.json +1 -1
  28. data/docs/public/robots.txt +4 -0
  29. data/docs/scripts/post-build.mjs +81 -0
  30. data/lib/fontisan/audit/codepoint_range_coalescer.rb +41 -0
  31. data/lib/fontisan/audit/context.rb +122 -0
  32. data/lib/fontisan/audit/differ.rb +124 -0
  33. data/lib/fontisan/audit/extractors/aggregations.rb +54 -0
  34. data/lib/fontisan/audit/extractors/base.rb +26 -0
  35. data/lib/fontisan/audit/extractors/color_capabilities.rb +141 -0
  36. data/lib/fontisan/audit/extractors/coverage.rb +48 -0
  37. data/lib/fontisan/audit/extractors/hinting.rb +197 -0
  38. data/lib/fontisan/audit/extractors/identity.rb +52 -0
  39. data/lib/fontisan/audit/extractors/language_coverage.rb +37 -0
  40. data/lib/fontisan/audit/extractors/licensing.rb +79 -0
  41. data/lib/fontisan/audit/extractors/metrics.rb +103 -0
  42. data/lib/fontisan/audit/extractors/opentype_layout.rb +69 -0
  43. data/lib/fontisan/audit/extractors/provenance.rb +29 -0
  44. data/lib/fontisan/audit/extractors/style.rb +32 -0
  45. data/lib/fontisan/audit/extractors/variation_detail.rb +99 -0
  46. data/lib/fontisan/audit/extractors.rb +27 -0
  47. data/lib/fontisan/audit/library_aggregator.rb +83 -0
  48. data/lib/fontisan/audit/library_auditor.rb +90 -0
  49. data/lib/fontisan/audit/registry.rb +60 -0
  50. data/lib/fontisan/audit/style_extractor.rb +80 -0
  51. data/lib/fontisan/audit.rb +20 -0
  52. data/lib/fontisan/base_collection.rb +23 -9
  53. data/lib/fontisan/binary/structures.rb +0 -2
  54. data/lib/fontisan/binary.rb +11 -0
  55. data/lib/fontisan/cldr/aggregator.rb +33 -0
  56. data/lib/fontisan/cldr/cache_manager.rb +110 -0
  57. data/lib/fontisan/cldr/config.rb +59 -0
  58. data/lib/fontisan/cldr/download_error.rb +9 -0
  59. data/lib/fontisan/cldr/downloader.rb +79 -0
  60. data/lib/fontisan/cldr/error.rb +8 -0
  61. data/lib/fontisan/cldr/index.rb +64 -0
  62. data/lib/fontisan/cldr/index_builder.rb +72 -0
  63. data/lib/fontisan/cldr/unicode_set_parser.rb +172 -0
  64. data/lib/fontisan/cldr/unknown_version_error.rb +9 -0
  65. data/lib/fontisan/cldr/version_resolver.rb +91 -0
  66. data/lib/fontisan/cldr.rb +23 -0
  67. data/lib/fontisan/cli/cldr_cli.rb +85 -0
  68. data/lib/fontisan/cli/ucd_cli.rb +97 -0
  69. data/lib/fontisan/cli.rb +201 -2
  70. data/lib/fontisan/collection/builder.rb +0 -4
  71. data/lib/fontisan/collection/dfont_builder.rb +0 -4
  72. data/lib/fontisan/collection/shared_logic.rb +0 -2
  73. data/lib/fontisan/collection/writer.rb +0 -3
  74. data/lib/fontisan/collection.rb +15 -0
  75. data/lib/fontisan/commands/audit_command.rb +123 -0
  76. data/lib/fontisan/commands/audit_compare_command.rb +66 -0
  77. data/lib/fontisan/commands/audit_library_command.rb +46 -0
  78. data/lib/fontisan/commands/base_command.rb +0 -3
  79. data/lib/fontisan/commands/convert_command.rb +25 -20
  80. data/lib/fontisan/commands/dump_table_command.rb +0 -3
  81. data/lib/fontisan/commands/export_command.rb +0 -4
  82. data/lib/fontisan/commands/features_command.rb +0 -3
  83. data/lib/fontisan/commands/instance_command.rb +0 -5
  84. data/lib/fontisan/commands/ls_command.rb +0 -6
  85. data/lib/fontisan/commands/optical_size_command.rb +0 -3
  86. data/lib/fontisan/commands/pack_command.rb +0 -5
  87. data/lib/fontisan/commands/scripts_command.rb +0 -2
  88. data/lib/fontisan/commands/subset_command.rb +0 -3
  89. data/lib/fontisan/commands/unicode_command.rb +0 -3
  90. data/lib/fontisan/commands/unpack_command.rb +0 -7
  91. data/lib/fontisan/commands/validate_command.rb +0 -8
  92. data/lib/fontisan/commands/variable_command.rb +0 -3
  93. data/lib/fontisan/commands.rb +29 -0
  94. data/lib/fontisan/config/cldr.yml +22 -0
  95. data/lib/fontisan/config/conversion_matrix.yml +38 -0
  96. data/lib/fontisan/config/ucd.yml +23 -0
  97. data/lib/fontisan/constants.rb +19 -0
  98. data/lib/fontisan/conversion_options.rb +30 -19
  99. data/lib/fontisan/converters/cff_table_builder.rb +0 -3
  100. data/lib/fontisan/converters/collection_converter.rb +0 -8
  101. data/lib/fontisan/converters/conversion_strategy.rb +161 -46
  102. data/lib/fontisan/converters/format_converter.rb +143 -32
  103. data/lib/fontisan/converters/glyf_table_builder.rb +0 -2
  104. data/lib/fontisan/converters/outline_converter.rb +0 -19
  105. data/lib/fontisan/converters/outline_extraction.rb +0 -5
  106. data/lib/fontisan/converters/outline_optimizer.rb +0 -5
  107. data/lib/fontisan/converters/svg_generator.rb +0 -4
  108. data/lib/fontisan/converters/table_copier.rb +0 -2
  109. data/lib/fontisan/converters/type1_converter.rb +0 -11
  110. data/lib/fontisan/converters/woff2_encoder.rb +49 -20
  111. data/lib/fontisan/converters/woff_writer.rb +211 -282
  112. data/lib/fontisan/converters.rb +21 -0
  113. data/lib/fontisan/dfont_collection.rb +29 -10
  114. data/lib/fontisan/export/exporter.rb +0 -6
  115. data/lib/fontisan/export/transformers/font_to_ttx.rb +0 -9
  116. data/lib/fontisan/export/transformers/head_transformer.rb +0 -2
  117. data/lib/fontisan/export/transformers/hhea_transformer.rb +0 -2
  118. data/lib/fontisan/export/transformers/maxp_transformer.rb +0 -2
  119. data/lib/fontisan/export/transformers/name_transformer.rb +0 -2
  120. data/lib/fontisan/export/transformers/os2_transformer.rb +0 -2
  121. data/lib/fontisan/export/transformers/post_transformer.rb +0 -2
  122. data/lib/fontisan/export/transformers.rb +17 -0
  123. data/lib/fontisan/export.rb +13 -0
  124. data/lib/fontisan/font_loader.rb +14 -19
  125. data/lib/fontisan/font_writer.rb +0 -1
  126. data/lib/fontisan/formatters/audit_diff_text_renderer.rb +122 -0
  127. data/lib/fontisan/formatters/audit_text_renderer.rb +324 -0
  128. data/lib/fontisan/formatters/library_summary_text_renderer.rb +99 -0
  129. data/lib/fontisan/formatters/text_formatter.rb +6 -0
  130. data/lib/fontisan/formatters.rb +12 -0
  131. data/lib/fontisan/hints/hint_converter.rb +0 -1
  132. data/lib/fontisan/hints/postscript_hint_applier.rb +0 -9
  133. data/lib/fontisan/hints/postscript_hint_extractor.rb +0 -2
  134. data/lib/fontisan/hints/truetype_hint_extractor.rb +0 -2
  135. data/lib/fontisan/hints.rb +16 -0
  136. data/lib/fontisan/metrics_calculator.rb +0 -2
  137. data/lib/fontisan/models/all_scripts_features_info.rb +0 -1
  138. data/lib/fontisan/models/audit/audit_axis.rb +30 -0
  139. data/lib/fontisan/models/audit/audit_block.rb +32 -0
  140. data/lib/fontisan/models/audit/audit_diff.rb +77 -0
  141. data/lib/fontisan/models/audit/audit_report.rb +153 -0
  142. data/lib/fontisan/models/audit/codepoint_range.rb +40 -0
  143. data/lib/fontisan/models/audit/codepoint_set_diff.rb +34 -0
  144. data/lib/fontisan/models/audit/color_capabilities.rb +93 -0
  145. data/lib/fontisan/models/audit/duplicate_group.rb +23 -0
  146. data/lib/fontisan/models/audit/embedding_type.rb +76 -0
  147. data/lib/fontisan/models/audit/field_change.rb +28 -0
  148. data/lib/fontisan/models/audit/fs_selection_flags.rb +61 -0
  149. data/lib/fontisan/models/audit/gasp_range.rb +63 -0
  150. data/lib/fontisan/models/audit/hinting.rb +93 -0
  151. data/lib/fontisan/models/audit/library_summary.rb +40 -0
  152. data/lib/fontisan/models/audit/licensing.rb +48 -0
  153. data/lib/fontisan/models/audit/metrics.rb +111 -0
  154. data/lib/fontisan/models/audit/named_instance.rb +41 -0
  155. data/lib/fontisan/models/audit/opentype_layout.rb +40 -0
  156. data/lib/fontisan/models/audit/script_coverage_row.rb +26 -0
  157. data/lib/fontisan/models/audit/script_features.rb +28 -0
  158. data/lib/fontisan/models/audit/variation_detail.rb +44 -0
  159. data/lib/fontisan/models/audit.rb +33 -0
  160. data/lib/fontisan/models/cldr/language_coverage.rb +31 -0
  161. data/lib/fontisan/models/cldr.rb +12 -0
  162. data/lib/fontisan/models/collection_brief_info.rb +0 -1
  163. data/lib/fontisan/models/collection_info.rb +0 -2
  164. data/lib/fontisan/models/collection_list_info.rb +0 -1
  165. data/lib/fontisan/models/collection_validation_report.rb +0 -2
  166. data/lib/fontisan/models/color_glyph.rb +0 -1
  167. data/lib/fontisan/models/font_report.rb +0 -1
  168. data/lib/fontisan/models/ttx/tables.rb +21 -0
  169. data/lib/fontisan/models/ttx/ttfont.rb +0 -8
  170. data/lib/fontisan/models/ttx.rb +14 -0
  171. data/lib/fontisan/models/ucd/ucd.rb +38 -0
  172. data/lib/fontisan/models/ucd/ucd_char.rb +67 -0
  173. data/lib/fontisan/models/ucd.rb +19 -0
  174. data/lib/fontisan/models.rb +47 -0
  175. data/lib/fontisan/open_type_collection.rb +6 -5
  176. data/lib/fontisan/open_type_font.rb +8 -2
  177. data/lib/fontisan/open_type_font_extensions.rb +9 -9
  178. data/lib/fontisan/optimizers/pattern_analyzer.rb +0 -1
  179. data/lib/fontisan/optimizers.rb +14 -0
  180. data/lib/fontisan/outline_extractor.rb +0 -2
  181. data/lib/fontisan/parsers/dfont_parser.rb +0 -1
  182. data/lib/fontisan/parsers.rb +10 -0
  183. data/lib/fontisan/pipeline/format_detector.rb +29 -102
  184. data/lib/fontisan/pipeline/output_writer.rb +11 -9
  185. data/lib/fontisan/pipeline/strategies/instance_strategy.rb +0 -4
  186. data/lib/fontisan/pipeline/strategies/named_strategy.rb +0 -4
  187. data/lib/fontisan/pipeline/strategies/preserve_strategy.rb +0 -2
  188. data/lib/fontisan/pipeline/strategies.rb +14 -0
  189. data/lib/fontisan/pipeline/transformation_pipeline.rb +0 -7
  190. data/lib/fontisan/pipeline/variation_resolver.rb +0 -7
  191. data/lib/fontisan/pipeline.rb +13 -0
  192. data/lib/fontisan/sfnt_font.rb +29 -14
  193. data/lib/fontisan/sfnt_table.rb +0 -4
  194. data/lib/fontisan/subset/builder.rb +0 -6
  195. data/lib/fontisan/subset.rb +13 -0
  196. data/lib/fontisan/svg/font_generator.rb +0 -4
  197. data/lib/fontisan/svg/glyph_generator.rb +0 -2
  198. data/lib/fontisan/svg.rb +12 -0
  199. data/lib/fontisan/tables/cbdt.rb +0 -1
  200. data/lib/fontisan/tables/cblc.rb +0 -1
  201. data/lib/fontisan/tables/cff/charset.rb +0 -1
  202. data/lib/fontisan/tables/cff/charstring.rb +0 -1
  203. data/lib/fontisan/tables/cff/charstring_rebuilder.rb +0 -4
  204. data/lib/fontisan/tables/cff/charstrings_index.rb +0 -3
  205. data/lib/fontisan/tables/cff/dict.rb +0 -1
  206. data/lib/fontisan/tables/cff/encoding.rb +0 -1
  207. data/lib/fontisan/tables/cff/header.rb +0 -2
  208. data/lib/fontisan/tables/cff/hint_operation_injector.rb +0 -2
  209. data/lib/fontisan/tables/cff/index.rb +0 -1
  210. data/lib/fontisan/tables/cff/private_dict.rb +0 -2
  211. data/lib/fontisan/tables/cff/private_dict_writer.rb +0 -2
  212. data/lib/fontisan/tables/cff/table_builder.rb +0 -6
  213. data/lib/fontisan/tables/cff/top_dict.rb +0 -2
  214. data/lib/fontisan/tables/cff.rb +22 -15
  215. data/lib/fontisan/tables/cff2/charstring_parser.rb +0 -2
  216. data/lib/fontisan/tables/cff2/table_builder.rb +0 -11
  217. data/lib/fontisan/tables/cff2/table_reader.rb +0 -2
  218. data/lib/fontisan/tables/cff2.rb +13 -14
  219. data/lib/fontisan/tables/cmap.rb +24 -2
  220. data/lib/fontisan/tables/cmap_table.rb +0 -3
  221. data/lib/fontisan/tables/colr.rb +0 -1
  222. data/lib/fontisan/tables/cpal.rb +0 -1
  223. data/lib/fontisan/tables/cvar.rb +0 -2
  224. data/lib/fontisan/tables/fvar.rb +0 -1
  225. data/lib/fontisan/tables/glyf/compound_glyph_resolver.rb +0 -2
  226. data/lib/fontisan/tables/glyf/glyph_builder.rb +0 -3
  227. data/lib/fontisan/tables/glyf.rb +0 -6
  228. data/lib/fontisan/tables/glyf_table.rb +0 -3
  229. data/lib/fontisan/tables/gpos.rb +0 -2
  230. data/lib/fontisan/tables/gsub.rb +0 -2
  231. data/lib/fontisan/tables/gvar.rb +0 -2
  232. data/lib/fontisan/tables/head.rb +0 -2
  233. data/lib/fontisan/tables/head_table.rb +0 -3
  234. data/lib/fontisan/tables/hhea.rb +0 -2
  235. data/lib/fontisan/tables/hhea_table.rb +0 -3
  236. data/lib/fontisan/tables/hmtx.rb +0 -2
  237. data/lib/fontisan/tables/hmtx_table.rb +0 -3
  238. data/lib/fontisan/tables/hvar.rb +0 -3
  239. data/lib/fontisan/tables/loca.rb +0 -2
  240. data/lib/fontisan/tables/loca_table.rb +0 -3
  241. data/lib/fontisan/tables/maxp.rb +0 -2
  242. data/lib/fontisan/tables/maxp_table.rb +0 -3
  243. data/lib/fontisan/tables/mvar.rb +0 -3
  244. data/lib/fontisan/tables/name.rb +0 -2
  245. data/lib/fontisan/tables/name_table.rb +0 -3
  246. data/lib/fontisan/tables/os2_table.rb +0 -3
  247. data/lib/fontisan/tables/post_table.rb +0 -3
  248. data/lib/fontisan/tables/sbix.rb +0 -1
  249. data/lib/fontisan/tables/svg.rb +0 -1
  250. data/lib/fontisan/tables/variation_common.rb +0 -1
  251. data/lib/fontisan/tables/vvar.rb +0 -3
  252. data/lib/fontisan/tables.rb +54 -0
  253. data/lib/fontisan/true_type_collection.rb +6 -14
  254. data/lib/fontisan/true_type_font.rb +8 -2
  255. data/lib/fontisan/true_type_font_extensions.rb +9 -9
  256. data/lib/fontisan/type1/afm_generator.rb +0 -4
  257. data/lib/fontisan/type1/conversion_options.rb +0 -2
  258. data/lib/fontisan/type1/encodings.rb +0 -2
  259. data/lib/fontisan/type1/generator.rb +0 -8
  260. data/lib/fontisan/type1/pfa_generator.rb +0 -3
  261. data/lib/fontisan/type1/pfb_generator.rb +0 -5
  262. data/lib/fontisan/type1/pfm_generator.rb +0 -4
  263. data/lib/fontisan/type1.rb +42 -69
  264. data/lib/fontisan/type1_font.rb +40 -11
  265. data/lib/fontisan/ucd/aggregator.rb +73 -0
  266. data/lib/fontisan/ucd/cache_manager.rb +111 -0
  267. data/lib/fontisan/ucd/config.rb +59 -0
  268. data/lib/fontisan/ucd/download_error.rb +9 -0
  269. data/lib/fontisan/ucd/downloader.rb +88 -0
  270. data/lib/fontisan/ucd/error.rb +8 -0
  271. data/lib/fontisan/ucd/index.rb +103 -0
  272. data/lib/fontisan/ucd/index_builder.rb +107 -0
  273. data/lib/fontisan/ucd/range_entry.rb +56 -0
  274. data/lib/fontisan/ucd/unknown_version_error.rb +9 -0
  275. data/lib/fontisan/ucd/version_resolver.rb +79 -0
  276. data/lib/fontisan/ucd.rb +23 -0
  277. data/lib/fontisan/utilities/checksum_calculator.rb +0 -1
  278. data/lib/fontisan/utilities.rb +10 -0
  279. data/lib/fontisan/utils.rb +10 -0
  280. data/lib/fontisan/validation/collection_validator.rb +0 -2
  281. data/lib/fontisan/validation.rb +9 -0
  282. data/lib/fontisan/validators/basic_validator.rb +0 -2
  283. data/lib/fontisan/validators/font_book_validator.rb +0 -2
  284. data/lib/fontisan/validators/opentype_validator.rb +0 -2
  285. data/lib/fontisan/validators/profile_loader.rb +0 -5
  286. data/lib/fontisan/validators/validator.rb +0 -2
  287. data/lib/fontisan/validators/web_font_validator.rb +0 -2
  288. data/lib/fontisan/validators.rb +14 -0
  289. data/lib/fontisan/variable/delta_applicator.rb +0 -4
  290. data/lib/fontisan/variable/instancer.rb +0 -3
  291. data/lib/fontisan/variable/static_font_builder.rb +0 -3
  292. data/lib/fontisan/variable.rb +16 -0
  293. data/lib/fontisan/variation/blend_applier.rb +0 -2
  294. data/lib/fontisan/variation/cache.rb +0 -2
  295. data/lib/fontisan/variation/converter.rb +0 -3
  296. data/lib/fontisan/variation/data_extractor.rb +0 -2
  297. data/lib/fontisan/variation/delta_applier.rb +0 -5
  298. data/lib/fontisan/variation/inspector.rb +0 -1
  299. data/lib/fontisan/variation/instance_generator.rb +0 -6
  300. data/lib/fontisan/variation/instance_writer.rb +0 -5
  301. data/lib/fontisan/variation/metrics_adjuster.rb +0 -4
  302. data/lib/fontisan/variation/optimizer.rb +0 -3
  303. data/lib/fontisan/variation/parallel_generator.rb +0 -3
  304. data/lib/fontisan/variation/subsetter.rb +0 -4
  305. data/lib/fontisan/variation/tuple_variation_header.rb +0 -2
  306. data/lib/fontisan/variation/variable_svg_generator.rb +0 -3
  307. data/lib/fontisan/variation/variation_context.rb +0 -3
  308. data/lib/fontisan/variation/variation_preserver.rb +0 -3
  309. data/lib/fontisan/variation.rb +31 -0
  310. data/lib/fontisan/version.rb +1 -1
  311. data/lib/fontisan/woff2.rb +13 -0
  312. data/lib/fontisan/woff2_font.rb +31 -9
  313. data/lib/fontisan/woff_font.rb +31 -2
  314. data/lib/fontisan.rb +124 -196
  315. metadata +114 -7
  316. data/fontisan.gemspec +0 -48
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontisan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.17
4
+ version: 0.2.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2026-06-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: base64
@@ -165,6 +164,7 @@ files:
165
164
  - docs/api/validators/font-validator.md
166
165
  - docs/api/validators/helper.md
167
166
  - docs/api/validators/profile.md
167
+ - docs/cli/audit.md
168
168
  - docs/cli/convert.md
169
169
  - docs/cli/dump-table.md
170
170
  - docs/cli/export.md
@@ -256,16 +256,55 @@ files:
256
256
  - docs/public/favicon.svg
257
257
  - docs/public/logo-full.svg
258
258
  - docs/public/logo.svg
259
+ - docs/public/robots.txt
259
260
  - docs/public/site.webmanifest
260
261
  - docs/public/web-app-manifest-192x192.png
261
262
  - docs/public/web-app-manifest-512x512.png
263
+ - docs/scripts/post-build.mjs
262
264
  - exe/fontisan
263
- - fontisan.gemspec
264
265
  - lib/fontisan.rb
266
+ - lib/fontisan/audit.rb
267
+ - lib/fontisan/audit/codepoint_range_coalescer.rb
268
+ - lib/fontisan/audit/context.rb
269
+ - lib/fontisan/audit/differ.rb
270
+ - lib/fontisan/audit/extractors.rb
271
+ - lib/fontisan/audit/extractors/aggregations.rb
272
+ - lib/fontisan/audit/extractors/base.rb
273
+ - lib/fontisan/audit/extractors/color_capabilities.rb
274
+ - lib/fontisan/audit/extractors/coverage.rb
275
+ - lib/fontisan/audit/extractors/hinting.rb
276
+ - lib/fontisan/audit/extractors/identity.rb
277
+ - lib/fontisan/audit/extractors/language_coverage.rb
278
+ - lib/fontisan/audit/extractors/licensing.rb
279
+ - lib/fontisan/audit/extractors/metrics.rb
280
+ - lib/fontisan/audit/extractors/opentype_layout.rb
281
+ - lib/fontisan/audit/extractors/provenance.rb
282
+ - lib/fontisan/audit/extractors/style.rb
283
+ - lib/fontisan/audit/extractors/variation_detail.rb
284
+ - lib/fontisan/audit/library_aggregator.rb
285
+ - lib/fontisan/audit/library_auditor.rb
286
+ - lib/fontisan/audit/registry.rb
287
+ - lib/fontisan/audit/style_extractor.rb
265
288
  - lib/fontisan/base_collection.rb
289
+ - lib/fontisan/binary.rb
266
290
  - lib/fontisan/binary/base_record.rb
267
291
  - lib/fontisan/binary/structures.rb
292
+ - lib/fontisan/cldr.rb
293
+ - lib/fontisan/cldr/aggregator.rb
294
+ - lib/fontisan/cldr/cache_manager.rb
295
+ - lib/fontisan/cldr/config.rb
296
+ - lib/fontisan/cldr/download_error.rb
297
+ - lib/fontisan/cldr/downloader.rb
298
+ - lib/fontisan/cldr/error.rb
299
+ - lib/fontisan/cldr/index.rb
300
+ - lib/fontisan/cldr/index_builder.rb
301
+ - lib/fontisan/cldr/unicode_set_parser.rb
302
+ - lib/fontisan/cldr/unknown_version_error.rb
303
+ - lib/fontisan/cldr/version_resolver.rb
268
304
  - lib/fontisan/cli.rb
305
+ - lib/fontisan/cli/cldr_cli.rb
306
+ - lib/fontisan/cli/ucd_cli.rb
307
+ - lib/fontisan/collection.rb
269
308
  - lib/fontisan/collection/builder.rb
270
309
  - lib/fontisan/collection/dfont_builder.rb
271
310
  - lib/fontisan/collection/offset_calculator.rb
@@ -273,6 +312,10 @@ files:
273
312
  - lib/fontisan/collection/table_analyzer.rb
274
313
  - lib/fontisan/collection/table_deduplicator.rb
275
314
  - lib/fontisan/collection/writer.rb
315
+ - lib/fontisan/commands.rb
316
+ - lib/fontisan/commands/audit_command.rb
317
+ - lib/fontisan/commands/audit_compare_command.rb
318
+ - lib/fontisan/commands/audit_library_command.rb
276
319
  - lib/fontisan/commands/base_command.rb
277
320
  - lib/fontisan/commands/convert_command.rb
278
321
  - lib/fontisan/commands/dump_table_command.rb
@@ -291,6 +334,7 @@ files:
291
334
  - lib/fontisan/commands/unpack_command.rb
292
335
  - lib/fontisan/commands/validate_command.rb
293
336
  - lib/fontisan/commands/variable_command.rb
337
+ - lib/fontisan/config/cldr.yml
294
338
  - lib/fontisan/config/collection_settings.yml
295
339
  - lib/fontisan/config/conversion_matrix.yml
296
340
  - lib/fontisan/config/export_settings.yml
@@ -298,10 +342,12 @@ files:
298
342
  - lib/fontisan/config/scripts.yml
299
343
  - lib/fontisan/config/subset_profiles.yml
300
344
  - lib/fontisan/config/svg_settings.yml
345
+ - lib/fontisan/config/ucd.yml
301
346
  - lib/fontisan/config/variable_settings.yml
302
347
  - lib/fontisan/config/woff2_settings.yml
303
348
  - lib/fontisan/constants.rb
304
349
  - lib/fontisan/conversion_options.rb
350
+ - lib/fontisan/converters.rb
305
351
  - lib/fontisan/converters/cff_table_builder.rb
306
352
  - lib/fontisan/converters/collection_converter.rb
307
353
  - lib/fontisan/converters/conversion_strategy.rb
@@ -317,8 +363,10 @@ files:
317
363
  - lib/fontisan/converters/woff_writer.rb
318
364
  - lib/fontisan/dfont_collection.rb
319
365
  - lib/fontisan/error.rb
366
+ - lib/fontisan/export.rb
320
367
  - lib/fontisan/export/exporter.rb
321
368
  - lib/fontisan/export/table_serializer.rb
369
+ - lib/fontisan/export/transformers.rb
322
370
  - lib/fontisan/export/transformers/font_to_ttx.rb
323
371
  - lib/fontisan/export/transformers/head_transformer.rb
324
372
  - lib/fontisan/export/transformers/hhea_transformer.rb
@@ -330,8 +378,13 @@ files:
330
378
  - lib/fontisan/export/ttx_parser.rb
331
379
  - lib/fontisan/font_loader.rb
332
380
  - lib/fontisan/font_writer.rb
381
+ - lib/fontisan/formatters.rb
382
+ - lib/fontisan/formatters/audit_diff_text_renderer.rb
383
+ - lib/fontisan/formatters/audit_text_renderer.rb
384
+ - lib/fontisan/formatters/library_summary_text_renderer.rb
333
385
  - lib/fontisan/formatters/text_formatter.rb
334
386
  - lib/fontisan/glyph_accessor.rb
387
+ - lib/fontisan/hints.rb
335
388
  - lib/fontisan/hints/hint_converter.rb
336
389
  - lib/fontisan/hints/hint_validator.rb
337
390
  - lib/fontisan/hints/postscript_hint_applier.rb
@@ -342,9 +395,34 @@ files:
342
395
  - lib/fontisan/hints/truetype_instruction_generator.rb
343
396
  - lib/fontisan/loading_modes.rb
344
397
  - lib/fontisan/metrics_calculator.rb
398
+ - lib/fontisan/models.rb
345
399
  - lib/fontisan/models/all_scripts_features_info.rb
400
+ - lib/fontisan/models/audit.rb
401
+ - lib/fontisan/models/audit/audit_axis.rb
402
+ - lib/fontisan/models/audit/audit_block.rb
403
+ - lib/fontisan/models/audit/audit_diff.rb
404
+ - lib/fontisan/models/audit/audit_report.rb
405
+ - lib/fontisan/models/audit/codepoint_range.rb
406
+ - lib/fontisan/models/audit/codepoint_set_diff.rb
407
+ - lib/fontisan/models/audit/color_capabilities.rb
408
+ - lib/fontisan/models/audit/duplicate_group.rb
409
+ - lib/fontisan/models/audit/embedding_type.rb
410
+ - lib/fontisan/models/audit/field_change.rb
411
+ - lib/fontisan/models/audit/fs_selection_flags.rb
412
+ - lib/fontisan/models/audit/gasp_range.rb
413
+ - lib/fontisan/models/audit/hinting.rb
414
+ - lib/fontisan/models/audit/library_summary.rb
415
+ - lib/fontisan/models/audit/licensing.rb
416
+ - lib/fontisan/models/audit/metrics.rb
417
+ - lib/fontisan/models/audit/named_instance.rb
418
+ - lib/fontisan/models/audit/opentype_layout.rb
419
+ - lib/fontisan/models/audit/script_coverage_row.rb
420
+ - lib/fontisan/models/audit/script_features.rb
421
+ - lib/fontisan/models/audit/variation_detail.rb
346
422
  - lib/fontisan/models/bitmap_glyph.rb
347
423
  - lib/fontisan/models/bitmap_strike.rb
424
+ - lib/fontisan/models/cldr.rb
425
+ - lib/fontisan/models/cldr/language_coverage.rb
348
426
  - lib/fontisan/models/collection_brief_info.rb
349
427
  - lib/fontisan/models/collection_font_summary.rb
350
428
  - lib/fontisan/models/collection_info.rb
@@ -367,7 +445,9 @@ files:
367
445
  - lib/fontisan/models/svg_glyph.rb
368
446
  - lib/fontisan/models/table_info.rb
369
447
  - lib/fontisan/models/table_sharing_info.rb
448
+ - lib/fontisan/models/ttx.rb
370
449
  - lib/fontisan/models/ttx/glyph_order.rb
450
+ - lib/fontisan/models/ttx/tables.rb
371
451
  - lib/fontisan/models/ttx/tables/binary_table.rb
372
452
  - lib/fontisan/models/ttx/tables/head_table.rb
373
453
  - lib/fontisan/models/ttx/tables/hhea_table.rb
@@ -376,12 +456,16 @@ files:
376
456
  - lib/fontisan/models/ttx/tables/os2_table.rb
377
457
  - lib/fontisan/models/ttx/tables/post_table.rb
378
458
  - lib/fontisan/models/ttx/ttfont.rb
459
+ - lib/fontisan/models/ucd.rb
460
+ - lib/fontisan/models/ucd/ucd.rb
461
+ - lib/fontisan/models/ucd/ucd_char.rb
379
462
  - lib/fontisan/models/unicode_mappings.rb
380
463
  - lib/fontisan/models/validation_report.rb
381
464
  - lib/fontisan/models/variable_font_info.rb
382
465
  - lib/fontisan/open_type_collection.rb
383
466
  - lib/fontisan/open_type_font.rb
384
467
  - lib/fontisan/open_type_font_extensions.rb
468
+ - lib/fontisan/optimizers.rb
385
469
  - lib/fontisan/optimizers/charstring_rewriter.rb
386
470
  - lib/fontisan/optimizers/pattern_analyzer.rb
387
471
  - lib/fontisan/optimizers/stack_tracker.rb
@@ -389,10 +473,13 @@ files:
389
473
  - lib/fontisan/optimizers/subroutine_generator.rb
390
474
  - lib/fontisan/optimizers/subroutine_optimizer.rb
391
475
  - lib/fontisan/outline_extractor.rb
476
+ - lib/fontisan/parsers.rb
392
477
  - lib/fontisan/parsers/dfont_parser.rb
393
478
  - lib/fontisan/parsers/tag.rb
479
+ - lib/fontisan/pipeline.rb
394
480
  - lib/fontisan/pipeline/format_detector.rb
395
481
  - lib/fontisan/pipeline/output_writer.rb
482
+ - lib/fontisan/pipeline/strategies.rb
396
483
  - lib/fontisan/pipeline/strategies/base_strategy.rb
397
484
  - lib/fontisan/pipeline/strategies/instance_strategy.rb
398
485
  - lib/fontisan/pipeline/strategies/named_strategy.rb
@@ -401,15 +488,18 @@ files:
401
488
  - lib/fontisan/pipeline/variation_resolver.rb
402
489
  - lib/fontisan/sfnt_font.rb
403
490
  - lib/fontisan/sfnt_table.rb
491
+ - lib/fontisan/subset.rb
404
492
  - lib/fontisan/subset/builder.rb
405
493
  - lib/fontisan/subset/glyph_mapping.rb
406
494
  - lib/fontisan/subset/options.rb
407
495
  - lib/fontisan/subset/profile.rb
408
496
  - lib/fontisan/subset/table_subsetter.rb
497
+ - lib/fontisan/svg.rb
409
498
  - lib/fontisan/svg/font_face_generator.rb
410
499
  - lib/fontisan/svg/font_generator.rb
411
500
  - lib/fontisan/svg/glyph_generator.rb
412
501
  - lib/fontisan/svg/view_box_calculator.rb
502
+ - lib/fontisan/tables.rb
413
503
  - lib/fontisan/tables/cbdt.rb
414
504
  - lib/fontisan/tables/cblc.rb
415
505
  - lib/fontisan/tables/cff.rb
@@ -507,16 +597,33 @@ files:
507
597
  - lib/fontisan/type1/ttf_to_type1_converter.rb
508
598
  - lib/fontisan/type1/upm_scaler.rb
509
599
  - lib/fontisan/type1_font.rb
600
+ - lib/fontisan/ucd.rb
601
+ - lib/fontisan/ucd/aggregator.rb
602
+ - lib/fontisan/ucd/cache_manager.rb
603
+ - lib/fontisan/ucd/config.rb
604
+ - lib/fontisan/ucd/download_error.rb
605
+ - lib/fontisan/ucd/downloader.rb
606
+ - lib/fontisan/ucd/error.rb
607
+ - lib/fontisan/ucd/index.rb
608
+ - lib/fontisan/ucd/index_builder.rb
609
+ - lib/fontisan/ucd/range_entry.rb
610
+ - lib/fontisan/ucd/unknown_version_error.rb
611
+ - lib/fontisan/ucd/version_resolver.rb
612
+ - lib/fontisan/utilities.rb
510
613
  - lib/fontisan/utilities/brotli_wrapper.rb
511
614
  - lib/fontisan/utilities/checksum_calculator.rb
615
+ - lib/fontisan/utils.rb
512
616
  - lib/fontisan/utils/thread_pool.rb
617
+ - lib/fontisan/validation.rb
513
618
  - lib/fontisan/validation/collection_validator.rb
619
+ - lib/fontisan/validators.rb
514
620
  - lib/fontisan/validators/basic_validator.rb
515
621
  - lib/fontisan/validators/font_book_validator.rb
516
622
  - lib/fontisan/validators/opentype_validator.rb
517
623
  - lib/fontisan/validators/profile_loader.rb
518
624
  - lib/fontisan/validators/validator.rb
519
625
  - lib/fontisan/validators/web_font_validator.rb
626
+ - lib/fontisan/variable.rb
520
627
  - lib/fontisan/variable/axis_normalizer.rb
521
628
  - lib/fontisan/variable/delta_applicator.rb
522
629
  - lib/fontisan/variable/glyph_delta_processor.rb
@@ -525,6 +632,7 @@ files:
525
632
  - lib/fontisan/variable/region_matcher.rb
526
633
  - lib/fontisan/variable/static_font_builder.rb
527
634
  - lib/fontisan/variable/table_updater.rb
635
+ - lib/fontisan/variation.rb
528
636
  - lib/fontisan/variation/blend_applier.rb
529
637
  - lib/fontisan/variation/cache.rb
530
638
  - lib/fontisan/variation/cache_key_builder.rb
@@ -549,6 +657,7 @@ files:
549
657
  - lib/fontisan/variation/variation_preserver.rb
550
658
  - lib/fontisan/version.rb
551
659
  - lib/fontisan/version.rb.orig
660
+ - lib/fontisan/woff2.rb
552
661
  - lib/fontisan/woff2/directory.rb
553
662
  - lib/fontisan/woff2/glyf_transformer.rb
554
663
  - lib/fontisan/woff2/header.rb
@@ -566,7 +675,6 @@ metadata:
566
675
  source_code_uri: https://github.com/fontist/fontisan
567
676
  changelog_uri: https://github.com/fontist/fontisan/blob/main/CHANGELOG.md
568
677
  rubygems_mfa_required: 'true'
569
- post_install_message:
570
678
  rdoc_options: []
571
679
  require_paths:
572
680
  - lib
@@ -581,8 +689,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
581
689
  - !ruby/object:Gem::Version
582
690
  version: '0'
583
691
  requirements: []
584
- rubygems_version: 3.5.22
585
- signing_key:
692
+ rubygems_version: 3.6.9
586
693
  specification_version: 4
587
694
  summary: Font analysis tools and utilities for OpenType fonts
588
695
  test_files: []
data/fontisan.gemspec DELETED
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/fontisan/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "fontisan"
7
- spec.version = Fontisan::VERSION
8
- spec.authors = ["Ribose Inc."]
9
- spec.email = ["open.source@ribose.com"]
10
-
11
- spec.summary = "Font analysis tools and utilities for OpenType fonts"
12
- spec.description = <<~HEREDOC
13
- Fontisan provides font analysis tools and utilities. It is
14
- designed as a pure Ruby implementation with full object-oriented architecture,
15
- supporting extraction of information from OpenType and TrueType fonts (OTF, TTF, OTC, TTC).
16
-
17
- The gem provides both a Ruby library API and a command-line interface,
18
- with structured output formats (YAML, JSON, text).
19
- HEREDOC
20
-
21
- spec.homepage = "https://github.com/fontist/fontisan"
22
- spec.license = "BSD-2-Clause"
23
- spec.required_ruby_version = ">= 3.0.0"
24
-
25
- spec.metadata["homepage_uri"] = spec.homepage
26
- spec.metadata["source_code_uri"] = "https://github.com/fontist/fontisan"
27
- spec.metadata["changelog_uri"] = "https://github.com/fontist/fontisan/blob/main/CHANGELOG.md"
28
- spec.metadata["rubygems_mfa_required"] = "true"
29
-
30
- # Specify which files should be added to the gem when it is released.
31
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
- spec.files = Dir.chdir(__dir__) do
33
- `git ls-files -z`.split("\x0").reject do |f|
34
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
35
- end
36
- end
37
- spec.bindir = "exe"
38
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
39
- spec.require_paths = ["lib"]
40
-
41
- spec.add_dependency "base64"
42
- spec.add_dependency "bindata", "~> 2.5"
43
- spec.add_dependency "brotli", "~> 0.5"
44
- spec.add_dependency "logger"
45
- spec.add_dependency "lutaml-model", "~> 0.8"
46
- spec.add_dependency "nokogiri", "~> 1.16"
47
- spec.add_dependency "thor", "~> 1.3"
48
- end