fontisan 0.4.5 → 0.4.7

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/BUG-stitcher-drops-isolated-cps.md +58 -0
  3. data/BUG-stitcher-drops-plane1-codepoints.md +310 -0
  4. data/BUG-stitcher-gid-cap-65535.md +110 -0
  5. data/CHANGELOG.md +142 -0
  6. data/README.adoc +121 -68
  7. data/benchmark/compile_benchmark.rb +70 -0
  8. data/docs/CFF2_SUPPORT.adoc +184 -0
  9. data/docs/STITCHER_GUIDE.adoc +151 -0
  10. data/docs/SVG_TO_GLYF.adoc +118 -0
  11. data/docs/UFO_COMPILATION.adoc +119 -0
  12. data/lib/fontisan/collection/writer.rb +5 -6
  13. data/lib/fontisan/error.rb +31 -0
  14. data/lib/fontisan/stitcher/deduplicator.rb +47 -0
  15. data/lib/fontisan/stitcher/glyph_limit.rb +53 -0
  16. data/lib/fontisan/stitcher/glyph_signature.rb +51 -0
  17. data/lib/fontisan/stitcher/source.rb +67 -4
  18. data/lib/fontisan/stitcher.rb +188 -167
  19. data/lib/fontisan/svg_to_glyf/assembler.rb +132 -0
  20. data/lib/fontisan/svg_to_glyf/document.rb +83 -0
  21. data/lib/fontisan/svg_to_glyf/geometry/affine_transform.rb +112 -0
  22. data/lib/fontisan/svg_to_glyf/geometry/normalizer.rb +45 -0
  23. data/lib/fontisan/svg_to_glyf/geometry/transform_parser.rb +91 -0
  24. data/lib/fontisan/svg_to_glyf/geometry.rb +13 -0
  25. data/lib/fontisan/svg_to_glyf/path/command.rb +18 -0
  26. data/lib/fontisan/svg_to_glyf/path/contour_builder.rb +140 -0
  27. data/lib/fontisan/svg_to_glyf/path/parser.rb +98 -0
  28. data/lib/fontisan/svg_to_glyf/path/state.rb +79 -0
  29. data/lib/fontisan/svg_to_glyf/path.rb +14 -0
  30. data/lib/fontisan/svg_to_glyf.rb +62 -0
  31. data/lib/fontisan/tables/cff/cff2_charstring_builder.rb +216 -0
  32. data/lib/fontisan/tables/cff.rb +1 -0
  33. data/lib/fontisan/tables/cff2/dict_encoder.rb +94 -0
  34. data/lib/fontisan/tables/cff2/fd_select.rb +69 -0
  35. data/lib/fontisan/tables/cff2/header.rb +34 -0
  36. data/lib/fontisan/tables/cff2/index_builder.rb +79 -0
  37. data/lib/fontisan/tables/cff2.rb +4 -0
  38. data/lib/fontisan/ufo/compile/avar.rb +46 -0
  39. data/lib/fontisan/ufo/compile/cbdt_cblc.rb +103 -0
  40. data/lib/fontisan/ufo/compile/cff2.rb +181 -0
  41. data/lib/fontisan/ufo/compile/cff2_subroutines.rb +39 -0
  42. data/lib/fontisan/ufo/compile/colr.rb +80 -0
  43. data/lib/fontisan/ufo/compile/cpal.rb +61 -0
  44. data/lib/fontisan/ufo/compile/hvar.rb +42 -0
  45. data/lib/fontisan/ufo/compile/item_variation_store.rb +99 -0
  46. data/lib/fontisan/ufo/compile/math.rb +143 -0
  47. data/lib/fontisan/ufo/compile/meta.rb +51 -0
  48. data/lib/fontisan/ufo/compile/mvar.rb +59 -0
  49. data/lib/fontisan/ufo/compile/otf2_compiler.rb +46 -0
  50. data/lib/fontisan/ufo/compile/sbix.rb +99 -0
  51. data/lib/fontisan/ufo/compile/stat.rb +103 -0
  52. data/lib/fontisan/ufo/compile/svg_table.rb +60 -0
  53. data/lib/fontisan/ufo/compile/ttf_compiler.rb +6 -3
  54. data/lib/fontisan/ufo/compile/variable_otf.rb +75 -0
  55. data/lib/fontisan/ufo/compile/variable_ttf.rb +161 -0
  56. data/lib/fontisan/ufo/compile.rb +18 -0
  57. data/lib/fontisan/version.rb +1 -1
  58. data/lib/fontisan.rb +3 -0
  59. metadata +47 -2
@@ -46,6 +46,24 @@ module Fontisan
46
46
  autoload :Cmap, "fontisan/ufo/compile/cmap"
47
47
  autoload :GlyfLoca, "fontisan/ufo/compile/glyf_loca"
48
48
  autoload :Cff, "fontisan/ufo/compile/cff"
49
+ autoload :Cff2, "fontisan/ufo/compile/cff2"
50
+ autoload :Otf2Compiler, "fontisan/ufo/compile/otf2_compiler"
51
+ autoload :Cpal, "fontisan/ufo/compile/cpal"
52
+ autoload :Meta, "fontisan/ufo/compile/meta"
53
+ autoload :SvgTable, "fontisan/ufo/compile/svg_table"
54
+ autoload :Sbix, "fontisan/ufo/compile/sbix"
55
+ autoload :MathTable, "fontisan/ufo/compile/math"
56
+ autoload :CbdtCblc, "fontisan/ufo/compile/cbdt_cblc"
57
+ autoload :Colr, "fontisan/ufo/compile/colr"
58
+ autoload :Cff2Subrs, "fontisan/ufo/compile/cff2_subroutines"
59
+ autoload :VariableOtf, "fontisan/ufo/compile/variable_otf"
60
+ autoload :Avar, "fontisan/ufo/compile/avar"
61
+ autoload :Hvar, "fontisan/ufo/compile/hvar"
62
+ autoload :Mvar, "fontisan/ufo/compile/mvar"
63
+ autoload :Stat, "fontisan/ufo/compile/stat"
64
+ autoload :VariableTtf, "fontisan/ufo/compile/variable_ttf"
65
+ autoload :ItemVariationStore,
66
+ "fontisan/ufo/compile/item_variation_store"
49
67
  end
50
68
  end
51
69
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fontisan
4
- VERSION = "0.4.5"
4
+ VERSION = "0.4.7"
5
5
  end
data/lib/fontisan.rb CHANGED
@@ -70,6 +70,8 @@ module Fontisan
70
70
  autoload :CorruptedVariationDataError, "fontisan/error"
71
71
  autoload :InvalidVariationDataError, "fontisan/error"
72
72
  autoload :VariationDataCorruptedError, "fontisan/error"
73
+ autoload :MultipleCbdtSourcesError, "fontisan/error"
74
+ autoload :GlyphLimitExceededError, "fontisan/error"
73
75
 
74
76
  # Namespace hubs (each hub declares its own child autoloads)
75
77
  autoload :Binary, "fontisan/binary"
@@ -86,6 +88,7 @@ module Fontisan
86
88
  autoload :Pipeline, "fontisan/pipeline"
87
89
  autoload :Subset, "fontisan/subset"
88
90
  autoload :Svg, "fontisan/svg"
91
+ autoload :SvgToGlyf, "fontisan/svg_to_glyf"
89
92
  autoload :Tables, "fontisan/tables"
90
93
  autoload :Type1, "fontisan/type1"
91
94
  autoload :Ufo, "fontisan/ufo"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontisan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-06-30 00:00:00.000000000 Z
11
+ date: 2026-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -125,11 +125,15 @@ files:
125
125
  - ".rspec"
126
126
  - ".rubocop.yml"
127
127
  - ".rubocop_todo.yml"
128
+ - BUG-stitcher-drops-isolated-cps.md
129
+ - BUG-stitcher-drops-plane1-codepoints.md
130
+ - BUG-stitcher-gid-cap-65535.md
128
131
  - CHANGELOG.md
129
132
  - Gemfile
130
133
  - LICENSE
131
134
  - README.adoc
132
135
  - Rakefile
136
+ - benchmark/compile_benchmark.rb
133
137
  - benchmark/variation_quick_bench.rb
134
138
  - docs/.gitignore
135
139
  - docs/.vitepress/config.ts
@@ -141,12 +145,16 @@ files:
141
145
  - docs/.vitepress/theme/index.ts
142
146
  - docs/.vitepress/theme/style.css
143
147
  - docs/APPLE_LEGACY_FONTS.adoc
148
+ - docs/CFF2_SUPPORT.adoc
144
149
  - docs/COLLECTION_VALIDATION.adoc
145
150
  - docs/COLOR_FONTS.adoc
146
151
  - docs/CONVERSION_GUIDE.adoc
147
152
  - docs/EXTRACT_TTC_MIGRATION.md
148
153
  - docs/FONT_HINTING.adoc
154
+ - docs/STITCHER_GUIDE.adoc
155
+ - docs/SVG_TO_GLYF.adoc
149
156
  - docs/TYPE1_FONTS.adoc
157
+ - docs/UFO_COMPILATION.adoc
150
158
  - docs/VALIDATION.adoc
151
159
  - docs/VARIABLE_FONT_OPERATIONS.adoc
152
160
  - docs/WOFF_WOFF2_FORMATS.adoc
@@ -436,6 +444,9 @@ files:
436
444
  - lib/fontisan/sfnt_font.rb
437
445
  - lib/fontisan/sfnt_table.rb
438
446
  - lib/fontisan/stitcher.rb
447
+ - lib/fontisan/stitcher/deduplicator.rb
448
+ - lib/fontisan/stitcher/glyph_limit.rb
449
+ - lib/fontisan/stitcher/glyph_signature.rb
439
450
  - lib/fontisan/stitcher/selector.rb
440
451
  - lib/fontisan/stitcher/selector/codepoints.rb
441
452
  - lib/fontisan/stitcher/selector/gid.rb
@@ -453,10 +464,23 @@ files:
453
464
  - lib/fontisan/svg/font_generator.rb
454
465
  - lib/fontisan/svg/glyph_generator.rb
455
466
  - lib/fontisan/svg/view_box_calculator.rb
467
+ - lib/fontisan/svg_to_glyf.rb
468
+ - lib/fontisan/svg_to_glyf/assembler.rb
469
+ - lib/fontisan/svg_to_glyf/document.rb
470
+ - lib/fontisan/svg_to_glyf/geometry.rb
471
+ - lib/fontisan/svg_to_glyf/geometry/affine_transform.rb
472
+ - lib/fontisan/svg_to_glyf/geometry/normalizer.rb
473
+ - lib/fontisan/svg_to_glyf/geometry/transform_parser.rb
474
+ - lib/fontisan/svg_to_glyf/path.rb
475
+ - lib/fontisan/svg_to_glyf/path/command.rb
476
+ - lib/fontisan/svg_to_glyf/path/contour_builder.rb
477
+ - lib/fontisan/svg_to_glyf/path/parser.rb
478
+ - lib/fontisan/svg_to_glyf/path/state.rb
456
479
  - lib/fontisan/tables.rb
457
480
  - lib/fontisan/tables/cbdt.rb
458
481
  - lib/fontisan/tables/cblc.rb
459
482
  - lib/fontisan/tables/cff.rb
483
+ - lib/fontisan/tables/cff/cff2_charstring_builder.rb
460
484
  - lib/fontisan/tables/cff/cff_glyph.rb
461
485
  - lib/fontisan/tables/cff/charset.rb
462
486
  - lib/fontisan/tables/cff/charstring.rb
@@ -479,6 +503,10 @@ files:
479
503
  - lib/fontisan/tables/cff2.rb
480
504
  - lib/fontisan/tables/cff2/blend_operator.rb
481
505
  - lib/fontisan/tables/cff2/charstring_parser.rb
506
+ - lib/fontisan/tables/cff2/dict_encoder.rb
507
+ - lib/fontisan/tables/cff2/fd_select.rb
508
+ - lib/fontisan/tables/cff2/header.rb
509
+ - lib/fontisan/tables/cff2/index_builder.rb
482
510
  - lib/fontisan/tables/cff2/operand_stack.rb
483
511
  - lib/fontisan/tables/cff2/private_dict_blend_handler.rb
484
512
  - lib/fontisan/tables/cff2/region_matcher.rb
@@ -555,9 +583,15 @@ files:
555
583
  - lib/fontisan/ufo/anchor.rb
556
584
  - lib/fontisan/ufo/cli.rb
557
585
  - lib/fontisan/ufo/compile.rb
586
+ - lib/fontisan/ufo/compile/avar.rb
558
587
  - lib/fontisan/ufo/compile/base_compiler.rb
588
+ - lib/fontisan/ufo/compile/cbdt_cblc.rb
559
589
  - lib/fontisan/ufo/compile/cff.rb
590
+ - lib/fontisan/ufo/compile/cff2.rb
591
+ - lib/fontisan/ufo/compile/cff2_subroutines.rb
560
592
  - lib/fontisan/ufo/compile/cmap.rb
593
+ - lib/fontisan/ufo/compile/colr.rb
594
+ - lib/fontisan/ufo/compile/cpal.rb
561
595
  - lib/fontisan/ufo/compile/filters.rb
562
596
  - lib/fontisan/ufo/compile/filters/cubic_to_quadratic.rb
563
597
  - lib/fontisan/ufo/compile/filters/decompose_components.rb
@@ -570,12 +604,23 @@ files:
570
604
  - lib/fontisan/ufo/compile/head.rb
571
605
  - lib/fontisan/ufo/compile/hhea.rb
572
606
  - lib/fontisan/ufo/compile/hmtx.rb
607
+ - lib/fontisan/ufo/compile/hvar.rb
608
+ - lib/fontisan/ufo/compile/item_variation_store.rb
609
+ - lib/fontisan/ufo/compile/math.rb
573
610
  - lib/fontisan/ufo/compile/maxp.rb
611
+ - lib/fontisan/ufo/compile/meta.rb
612
+ - lib/fontisan/ufo/compile/mvar.rb
574
613
  - lib/fontisan/ufo/compile/name.rb
575
614
  - lib/fontisan/ufo/compile/os2.rb
615
+ - lib/fontisan/ufo/compile/otf2_compiler.rb
576
616
  - lib/fontisan/ufo/compile/otf_compiler.rb
577
617
  - lib/fontisan/ufo/compile/post.rb
618
+ - lib/fontisan/ufo/compile/sbix.rb
619
+ - lib/fontisan/ufo/compile/stat.rb
620
+ - lib/fontisan/ufo/compile/svg_table.rb
578
621
  - lib/fontisan/ufo/compile/ttf_compiler.rb
622
+ - lib/fontisan/ufo/compile/variable_otf.rb
623
+ - lib/fontisan/ufo/compile/variable_ttf.rb
579
624
  - lib/fontisan/ufo/component.rb
580
625
  - lib/fontisan/ufo/contour.rb
581
626
  - lib/fontisan/ufo/convert.rb