fontisan 0.4.43 → 0.4.44
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.
- checksums.yaml +4 -4
- data/TODO.bug-fixes/12-type1-generators-duck-typing.md +80 -0
- data/TODO.bug-fixes/13-hint-extractor-duck-typing.md +30 -0
- data/TODO.bug-fixes/14-font-interface-type-checks.md +82 -0
- data/TODO.bug-fixes/15-glyph-type-checks-and-simple-glyph-points-bug.md +49 -0
- data/TODO.bug-fixes/16-variation-table-checks.md +31 -0
- data/TODO.bug-fixes/17-ufo-and-stitcher-cleanup.md +32 -0
- data/TODO.bug-fixes/18-generic-value-and-io-checks.md +56 -0
- data/TODO.bug-fixes/19-serialization-migration.md +52 -0
- data/TODO.bug-fixes/20-variation-validator-type-checks.md +29 -0
- data/TODO.bug-fixes/21-xml-builder-send.md +24 -0
- data/TODO.bug-fixes/22-type1-converter-font-info.md +25 -0
- data/TODO.bug-fixes/23-boundary-type-checks.md +31 -0
- data/TODO.bug-fixes/24-validator-dynamic-field-key.md +25 -0
- data/TODO.bug-fixes/25-serialization-migration.md +49 -0
- data/TODO.bug-fixes/26-variation-preserver-spec-migration.md +25 -0
- data/TODO.bug-fixes/27-table-class-registry.md +50 -0
- data/TODO.bug-fixes/28-spec-doubles-cleanup.md +40 -0
- data/TODO.bug-fixes/29-strategy-registries.md +30 -0
- data/TODO.bug-fixes/README.md +24 -0
- data/lib/fontisan/binary/base_record.rb +13 -12
- data/lib/fontisan/collection/builder.rb +3 -5
- data/lib/fontisan/collection/dfont_builder.rb +4 -11
- data/lib/fontisan/collection/writer.rb +1 -1
- data/lib/fontisan/commands/pack_command.rb +4 -4
- data/lib/fontisan/commands/unpack_command.rb +1 -1
- data/lib/fontisan/commands/validate_command.rb +1 -1
- data/lib/fontisan/converters/format_converter.rb +2 -2
- data/lib/fontisan/converters/glyf_table_builder.rb +1 -1
- data/lib/fontisan/converters/outline_converter.rb +2 -6
- data/lib/fontisan/converters/table_copier.rb +4 -12
- data/lib/fontisan/converters/type1_converter.rb +12 -37
- data/lib/fontisan/converters/woff2_encoder.rb +8 -10
- data/lib/fontisan/converters/woff_writer.rb +3 -3
- data/lib/fontisan/export/exporter.rb +8 -9
- data/lib/fontisan/export/table_serializer.rb +71 -186
- data/lib/fontisan/export/transformers/font_to_ttx.rb +18 -18
- data/lib/fontisan/export/transformers/head_transformer.rb +1 -1
- data/lib/fontisan/export/transformers/hhea_transformer.rb +1 -1
- data/lib/fontisan/export/transformers/maxp_transformer.rb +1 -1
- data/lib/fontisan/export/transformers/name_transformer.rb +1 -1
- data/lib/fontisan/export/transformers/os2_transformer.rb +1 -1
- data/lib/fontisan/export/transformers/post_transformer.rb +1 -1
- data/lib/fontisan/export/ttx_generator.rb +36 -37
- data/lib/fontisan/font_writer.rb +1 -1
- data/lib/fontisan/glyph_accessor.rb +7 -9
- data/lib/fontisan/hints/postscript_hint_extractor.rb +24 -64
- data/lib/fontisan/hints/truetype_hint_extractor.rb +1 -1
- data/lib/fontisan/models/ttx/tables/binary_table.rb +1 -1
- data/lib/fontisan/optimizers/charstring_rewriter.rb +1 -1
- data/lib/fontisan/sfnt_font.rb +2 -0
- data/lib/fontisan/sfnt_source.rb +28 -0
- data/lib/fontisan/stitcher/source.rb +8 -10
- data/lib/fontisan/subset/builder.rb +2 -2
- data/lib/fontisan/subset/table_strategy/cff2.rb +2 -3
- data/lib/fontisan/svg_to_glyf/assembler.rb +59 -20
- data/lib/fontisan/svg_to_glyf/document.rb +28 -9
- data/lib/fontisan/svg_to_glyf/geometry/normalizer.rb +34 -17
- data/lib/fontisan/tables/cff/charstring.rb +3 -0
- data/lib/fontisan/tables/cff/dict.rb +6 -3
- data/lib/fontisan/tables/cff/index.rb +1 -1
- data/lib/fontisan/tables/cff/private_dict_writer.rb +2 -2
- data/lib/fontisan/tables/cff/table_builder.rb +1 -1
- data/lib/fontisan/tables/cff.rb +3 -0
- data/lib/fontisan/tables/cff2/table_builder.rb +2 -4
- data/lib/fontisan/tables/cff2.rb +3 -0
- data/lib/fontisan/tables/cmap.rb +3 -0
- data/lib/fontisan/tables/cvar.rb +3 -0
- data/lib/fontisan/tables/fvar.rb +3 -0
- data/lib/fontisan/tables/glyf/simple_glyph.rb +9 -0
- data/lib/fontisan/tables/glyf.rb +12 -8
- data/lib/fontisan/tables/glyf_table.rb +1 -1
- data/lib/fontisan/tables/gvar.rb +3 -0
- data/lib/fontisan/tables/head.rb +3 -0
- data/lib/fontisan/tables/hhea.rb +3 -0
- data/lib/fontisan/tables/hmtx.rb +3 -7
- data/lib/fontisan/tables/hvar.rb +4 -0
- data/lib/fontisan/tables/loca.rb +3 -0
- data/lib/fontisan/tables/maxp.rb +3 -0
- data/lib/fontisan/tables/mvar.rb +3 -0
- data/lib/fontisan/tables/name.rb +3 -0
- data/lib/fontisan/tables/os2.rb +3 -0
- data/lib/fontisan/tables/post.rb +3 -0
- data/lib/fontisan/tables/registry.rb +71 -0
- data/lib/fontisan/tables/vvar.rb +3 -0
- data/lib/fontisan/tables.rb +2 -0
- data/lib/fontisan/type1/afm_generator.rb +12 -65
- data/lib/fontisan/type1/charstring_converter.rb +2 -2
- data/lib/fontisan/type1/conversion_options.rb +3 -2
- data/lib/fontisan/type1/decryptor.rb +1 -1
- data/lib/fontisan/type1/generator.rb +14 -9
- data/lib/fontisan/type1/inf_generator.rb +10 -35
- data/lib/fontisan/type1/pfa_generator.rb +36 -26
- data/lib/fontisan/type1/pfb_generator.rb +24 -12
- data/lib/fontisan/type1/pfm_generator.rb +14 -31
- data/lib/fontisan/type1/ttf_to_type1_converter.rb +30 -24
- data/lib/fontisan/ufo/bounds.rb +91 -0
- data/lib/fontisan/ufo/compile/fvar.rb +2 -2
- data/lib/fontisan/ufo/contour.rb +5 -0
- data/lib/fontisan/ufo/convert/from_bin_data.rb +15 -29
- data/lib/fontisan/ufo/info.rb +4 -0
- data/lib/fontisan/ufo/point.rb +0 -7
- data/lib/fontisan/ufo.rb +1 -0
- data/lib/fontisan/utilities/brotli_wrapper.rb +3 -5
- data/lib/fontisan/utilities/padding.rb +9 -8
- data/lib/fontisan/validation/collection_validator.rb +2 -2
- data/lib/fontisan/validators/validator.rb +4 -4
- data/lib/fontisan/variable/delta_applicator.rb +4 -11
- data/lib/fontisan/variable/metric_delta_processor.rb +3 -3
- data/lib/fontisan/variable/static_font_builder.rb +19 -23
- data/lib/fontisan/variation/instance_font_wrapper.rb +41 -0
- data/lib/fontisan/variation/instance_writer.rb +19 -17
- data/lib/fontisan/variation/metrics_adjuster.rb +17 -20
- data/lib/fontisan/variation/validator.rb +26 -38
- data/lib/fontisan/variation/variable_svg_generator.rb +0 -48
- data/lib/fontisan/variation/variation_preserver.rb +2 -3
- data/lib/fontisan/variation.rb +1 -0
- data/lib/fontisan/version.rb +1 -1
- data/lib/fontisan/woff2/sfnt_checksum.rb +1 -1
- data/lib/fontisan/woff2/table_transformer.rb +22 -29
- data/lib/fontisan/woff2_font.rb +9 -8
- data/lib/fontisan/woff_font.rb +2 -0
- data/lib/fontisan.rb +1 -0
- metadata +24 -2
data/lib/fontisan/woff2_font.rb
CHANGED
|
@@ -42,18 +42,17 @@ module Fontisan
|
|
|
42
42
|
(@flags & 0x3F) != 0x3F && KNOWN_TAGS[tag_index]&.start_with?(/glyf|loca|hmtx/)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
TRANSFORM_VERSIONS = {
|
|
46
|
+
"glyf" => TRANSFORM_GLYF_LOCA,
|
|
47
|
+
"loca" => TRANSFORM_GLYF_LOCA,
|
|
48
|
+
"hmtx" => TRANSFORM_HMTX,
|
|
49
|
+
}.freeze
|
|
50
|
+
|
|
45
51
|
# Get transform version for this table
|
|
46
52
|
def transform_version
|
|
47
53
|
return TRANSFORM_NONE unless transformed?
|
|
48
54
|
|
|
49
|
-
|
|
50
|
-
when "glyf", "loca"
|
|
51
|
-
TRANSFORM_GLYF_LOCA
|
|
52
|
-
when "hmtx"
|
|
53
|
-
TRANSFORM_HMTX
|
|
54
|
-
else
|
|
55
|
-
TRANSFORM_NONE
|
|
56
|
-
end
|
|
55
|
+
TRANSFORM_VERSIONS.fetch(tag, TRANSFORM_NONE)
|
|
57
56
|
end
|
|
58
57
|
|
|
59
58
|
private
|
|
@@ -73,6 +72,8 @@ module Fontisan
|
|
|
73
72
|
# puts font.header.flavor
|
|
74
73
|
# puts font.table_names
|
|
75
74
|
class Woff2Font
|
|
75
|
+
include SfntSource
|
|
76
|
+
|
|
76
77
|
# High-level pipeline format identifier. Owned by the font class so the
|
|
77
78
|
# conversion pipeline can dispatch without case statements (OCP).
|
|
78
79
|
#
|
data/lib/fontisan/woff_font.rb
CHANGED
|
@@ -53,6 +53,8 @@ module Fontisan
|
|
|
53
53
|
# woff.to_ttf("output.ttf") # if TrueType flavored
|
|
54
54
|
# woff.to_otf("output.otf") # if CFF flavored
|
|
55
55
|
class WoffFont < BinData::Record
|
|
56
|
+
include SfntSource
|
|
57
|
+
|
|
56
58
|
# High-level pipeline format identifier. Owned by the font class so the
|
|
57
59
|
# conversion pipeline can dispatch without case statements (OCP).
|
|
58
60
|
#
|
data/lib/fontisan.rb
CHANGED
|
@@ -116,6 +116,7 @@ module Fontisan
|
|
|
116
116
|
autoload :OpenTypeFontExtensions, "fontisan/open_type_font_extensions"
|
|
117
117
|
autoload :OutlineExtractor, "fontisan/outline_extractor"
|
|
118
118
|
autoload :SfntFont, "fontisan/sfnt_font"
|
|
119
|
+
autoload :SfntSource, "fontisan/sfnt_source"
|
|
119
120
|
autoload :SfntTable, "fontisan/sfnt_table"
|
|
120
121
|
autoload :SfntBuilder, "fontisan/sfnt_builder"
|
|
121
122
|
autoload :Stitcher, "fontisan/stitcher"
|
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.
|
|
4
|
+
version: 0.4.44
|
|
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-07-
|
|
11
|
+
date: 2026-07-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|
|
@@ -144,6 +144,24 @@ files:
|
|
|
144
144
|
- TODO.bug-fixes/09-type1-cff-seac-expansion.md
|
|
145
145
|
- TODO.bug-fixes/10-ttf-type1-composite-glyphs.md
|
|
146
146
|
- TODO.bug-fixes/11-remaining-respond-to.md
|
|
147
|
+
- TODO.bug-fixes/12-type1-generators-duck-typing.md
|
|
148
|
+
- TODO.bug-fixes/13-hint-extractor-duck-typing.md
|
|
149
|
+
- TODO.bug-fixes/14-font-interface-type-checks.md
|
|
150
|
+
- TODO.bug-fixes/15-glyph-type-checks-and-simple-glyph-points-bug.md
|
|
151
|
+
- TODO.bug-fixes/16-variation-table-checks.md
|
|
152
|
+
- TODO.bug-fixes/17-ufo-and-stitcher-cleanup.md
|
|
153
|
+
- TODO.bug-fixes/18-generic-value-and-io-checks.md
|
|
154
|
+
- TODO.bug-fixes/19-serialization-migration.md
|
|
155
|
+
- TODO.bug-fixes/20-variation-validator-type-checks.md
|
|
156
|
+
- TODO.bug-fixes/21-xml-builder-send.md
|
|
157
|
+
- TODO.bug-fixes/22-type1-converter-font-info.md
|
|
158
|
+
- TODO.bug-fixes/23-boundary-type-checks.md
|
|
159
|
+
- TODO.bug-fixes/24-validator-dynamic-field-key.md
|
|
160
|
+
- TODO.bug-fixes/25-serialization-migration.md
|
|
161
|
+
- TODO.bug-fixes/26-variation-preserver-spec-migration.md
|
|
162
|
+
- TODO.bug-fixes/27-table-class-registry.md
|
|
163
|
+
- TODO.bug-fixes/28-spec-doubles-cleanup.md
|
|
164
|
+
- TODO.bug-fixes/29-strategy-registries.md
|
|
147
165
|
- TODO.bug-fixes/README.md
|
|
148
166
|
- TODO.improvements/01-cbdt-cblc-gid-stable-propagation.md
|
|
149
167
|
- TODO.improvements/02-collection-outline-priority.md
|
|
@@ -490,6 +508,7 @@ files:
|
|
|
490
508
|
- lib/fontisan/pipeline/variation_resolver.rb
|
|
491
509
|
- lib/fontisan/sfnt_builder.rb
|
|
492
510
|
- lib/fontisan/sfnt_font.rb
|
|
511
|
+
- lib/fontisan/sfnt_source.rb
|
|
493
512
|
- lib/fontisan/sfnt_table.rb
|
|
494
513
|
- lib/fontisan/stitcher.rb
|
|
495
514
|
- lib/fontisan/stitcher/cbdt_propagator.rb
|
|
@@ -645,6 +664,7 @@ files:
|
|
|
645
664
|
- lib/fontisan/tables/os2_table.rb
|
|
646
665
|
- lib/fontisan/tables/post.rb
|
|
647
666
|
- lib/fontisan/tables/post_table.rb
|
|
667
|
+
- lib/fontisan/tables/registry.rb
|
|
648
668
|
- lib/fontisan/tables/sbix.rb
|
|
649
669
|
- lib/fontisan/tables/svg.rb
|
|
650
670
|
- lib/fontisan/tables/variation_common.rb
|
|
@@ -678,6 +698,7 @@ files:
|
|
|
678
698
|
- lib/fontisan/type1_font.rb
|
|
679
699
|
- lib/fontisan/ufo.rb
|
|
680
700
|
- lib/fontisan/ufo/anchor.rb
|
|
701
|
+
- lib/fontisan/ufo/bounds.rb
|
|
681
702
|
- lib/fontisan/ufo/cli.rb
|
|
682
703
|
- lib/fontisan/ufo/compile.rb
|
|
683
704
|
- lib/fontisan/ufo/compile/avar.rb
|
|
@@ -800,6 +821,7 @@ files:
|
|
|
800
821
|
- lib/fontisan/variation/delta_applier.rb
|
|
801
822
|
- lib/fontisan/variation/delta_parser.rb
|
|
802
823
|
- lib/fontisan/variation/inspector.rb
|
|
824
|
+
- lib/fontisan/variation/instance_font_wrapper.rb
|
|
803
825
|
- lib/fontisan/variation/instance_generator.rb
|
|
804
826
|
- lib/fontisan/variation/instance_writer.rb
|
|
805
827
|
- lib/fontisan/variation/interpolator.rb
|