fontisan 0.2.2 → 0.2.4
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/.rubocop_todo.yml +94 -48
- data/README.adoc +293 -3
- data/Rakefile +20 -7
- data/lib/fontisan/base_collection.rb +296 -0
- data/lib/fontisan/commands/base_command.rb +2 -19
- data/lib/fontisan/commands/convert_command.rb +16 -13
- data/lib/fontisan/commands/info_command.rb +156 -50
- data/lib/fontisan/config/conversion_matrix.yml +58 -20
- data/lib/fontisan/converters/outline_converter.rb +6 -3
- data/lib/fontisan/converters/svg_generator.rb +45 -0
- data/lib/fontisan/converters/woff2_encoder.rb +106 -13
- data/lib/fontisan/font_loader.rb +109 -26
- data/lib/fontisan/formatters/text_formatter.rb +72 -19
- data/lib/fontisan/models/bitmap_glyph.rb +123 -0
- data/lib/fontisan/models/bitmap_strike.rb +94 -0
- data/lib/fontisan/models/collection_brief_info.rb +6 -0
- data/lib/fontisan/models/collection_info.rb +6 -1
- data/lib/fontisan/models/color_glyph.rb +57 -0
- data/lib/fontisan/models/color_layer.rb +53 -0
- data/lib/fontisan/models/color_palette.rb +60 -0
- data/lib/fontisan/models/font_info.rb +26 -0
- data/lib/fontisan/models/svg_glyph.rb +89 -0
- data/lib/fontisan/open_type_collection.rb +17 -220
- data/lib/fontisan/open_type_font.rb +6 -0
- data/lib/fontisan/optimizers/charstring_rewriter.rb +19 -8
- data/lib/fontisan/optimizers/pattern_analyzer.rb +4 -2
- data/lib/fontisan/optimizers/subroutine_builder.rb +6 -5
- data/lib/fontisan/optimizers/subroutine_optimizer.rb +5 -2
- data/lib/fontisan/pipeline/output_writer.rb +2 -2
- data/lib/fontisan/tables/cbdt.rb +169 -0
- data/lib/fontisan/tables/cblc.rb +290 -0
- data/lib/fontisan/tables/cff.rb +6 -12
- data/lib/fontisan/tables/colr.rb +291 -0
- data/lib/fontisan/tables/cpal.rb +281 -0
- data/lib/fontisan/tables/glyf/glyph_builder.rb +5 -1
- data/lib/fontisan/tables/sbix.rb +379 -0
- data/lib/fontisan/tables/svg.rb +301 -0
- data/lib/fontisan/true_type_collection.rb +29 -113
- data/lib/fontisan/true_type_font.rb +6 -0
- data/lib/fontisan/validation/woff2_header_validator.rb +278 -0
- data/lib/fontisan/validation/woff2_table_validator.rb +270 -0
- data/lib/fontisan/validation/woff2_validator.rb +248 -0
- data/lib/fontisan/version.rb +1 -1
- data/lib/fontisan/woff2/directory.rb +40 -11
- data/lib/fontisan/woff2/table_transformer.rb +506 -73
- data/lib/fontisan/woff2_font.rb +29 -9
- data/lib/fontisan/woff_font.rb +17 -4
- data/lib/fontisan.rb +12 -0
- metadata +18 -2
data/lib/fontisan/woff_font.rb
CHANGED
|
@@ -78,11 +78,13 @@ module Fontisan
|
|
|
78
78
|
# Read WOFF font from a file
|
|
79
79
|
#
|
|
80
80
|
# @param path [String] Path to the WOFF file
|
|
81
|
+
# @param mode [Symbol] Loading mode (:metadata or :full) - currently ignored, loads all tables
|
|
82
|
+
# @param lazy [Boolean] Lazy loading flag - currently ignored, always eager
|
|
81
83
|
# @return [WoffFont] A new instance
|
|
82
84
|
# @raise [ArgumentError] if path is nil or empty
|
|
83
85
|
# @raise [Errno::ENOENT] if file does not exist
|
|
84
86
|
# @raise [InvalidFontError] if file format is invalid
|
|
85
|
-
def self.from_file(path)
|
|
87
|
+
def self.from_file(path, mode: LoadingModes::FULL, lazy: false)
|
|
86
88
|
if path.nil? || path.to_s.empty?
|
|
87
89
|
raise ArgumentError,
|
|
88
90
|
"path cannot be nil or empty"
|
|
@@ -158,9 +160,20 @@ module Fontisan
|
|
|
158
160
|
#
|
|
159
161
|
# Decompresses table data on first access and caches result
|
|
160
162
|
#
|
|
161
|
-
# @param tag [String] The table tag
|
|
162
|
-
# @return [String, nil] Decompressed table data or nil if not found
|
|
163
|
-
def table_data(tag)
|
|
163
|
+
# @param tag [String, nil] The table tag (optional)
|
|
164
|
+
# @return [String, Hash, nil] Decompressed table data, hash of all tables, or nil if not found
|
|
165
|
+
def table_data(tag = nil)
|
|
166
|
+
# If no tag provided, return all tables
|
|
167
|
+
if tag.nil?
|
|
168
|
+
# Decompress all tables and return as hash
|
|
169
|
+
result = {}
|
|
170
|
+
@compressed_table_data.each_key do |table_tag|
|
|
171
|
+
result[table_tag] = table_data(table_tag)
|
|
172
|
+
end
|
|
173
|
+
return result
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Tag provided - return specific table
|
|
164
177
|
return @decompressed_tables[tag] if @decompressed_tables.key?(tag)
|
|
165
178
|
|
|
166
179
|
compressed_data = @compressed_table_data[tag]
|
data/lib/fontisan.rb
CHANGED
|
@@ -69,6 +69,12 @@ require_relative "fontisan/tables/cff"
|
|
|
69
69
|
require_relative "fontisan/tables/layout_common"
|
|
70
70
|
require_relative "fontisan/tables/gsub"
|
|
71
71
|
require_relative "fontisan/tables/gpos"
|
|
72
|
+
require_relative "fontisan/tables/colr"
|
|
73
|
+
require_relative "fontisan/tables/cpal"
|
|
74
|
+
require_relative "fontisan/tables/svg"
|
|
75
|
+
require_relative "fontisan/tables/sbix"
|
|
76
|
+
require_relative "fontisan/tables/cblc"
|
|
77
|
+
require_relative "fontisan/tables/cbdt"
|
|
72
78
|
|
|
73
79
|
# Domain objects (BinData::Record)
|
|
74
80
|
require_relative "fontisan/true_type_font"
|
|
@@ -93,6 +99,8 @@ require_relative "fontisan/utilities/checksum_calculator"
|
|
|
93
99
|
require_relative "fontisan/font_writer"
|
|
94
100
|
|
|
95
101
|
# Information models (Lutaml::Model)
|
|
102
|
+
require_relative "fontisan/models/bitmap_strike"
|
|
103
|
+
require_relative "fontisan/models/bitmap_glyph"
|
|
96
104
|
require_relative "fontisan/models/font_info"
|
|
97
105
|
require_relative "fontisan/models/table_info"
|
|
98
106
|
require_relative "fontisan/models/glyph_info"
|
|
@@ -111,6 +119,10 @@ require_relative "fontisan/models/collection_brief_info"
|
|
|
111
119
|
require_relative "fontisan/models/collection_list_info"
|
|
112
120
|
require_relative "fontisan/models/font_summary"
|
|
113
121
|
require_relative "fontisan/models/table_sharing_info"
|
|
122
|
+
require_relative "fontisan/models/color_glyph"
|
|
123
|
+
require_relative "fontisan/models/color_layer"
|
|
124
|
+
require_relative "fontisan/models/color_palette"
|
|
125
|
+
require_relative "fontisan/models/svg_glyph"
|
|
114
126
|
|
|
115
127
|
# Export infrastructure
|
|
116
128
|
require_relative "fontisan/export/table_serializer"
|
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.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|
|
@@ -122,6 +122,7 @@ files:
|
|
|
122
122
|
- exe/fontisan
|
|
123
123
|
- fontisan.gemspec
|
|
124
124
|
- lib/fontisan.rb
|
|
125
|
+
- lib/fontisan/base_collection.rb
|
|
125
126
|
- lib/fontisan/binary/base_record.rb
|
|
126
127
|
- lib/fontisan/binary/structures.rb
|
|
127
128
|
- lib/fontisan/cli.rb
|
|
@@ -193,10 +194,15 @@ files:
|
|
|
193
194
|
- lib/fontisan/loading_modes.rb
|
|
194
195
|
- lib/fontisan/metrics_calculator.rb
|
|
195
196
|
- lib/fontisan/models/all_scripts_features_info.rb
|
|
197
|
+
- lib/fontisan/models/bitmap_glyph.rb
|
|
198
|
+
- lib/fontisan/models/bitmap_strike.rb
|
|
196
199
|
- lib/fontisan/models/collection_brief_info.rb
|
|
197
200
|
- lib/fontisan/models/collection_font_summary.rb
|
|
198
201
|
- lib/fontisan/models/collection_info.rb
|
|
199
202
|
- lib/fontisan/models/collection_list_info.rb
|
|
203
|
+
- lib/fontisan/models/color_glyph.rb
|
|
204
|
+
- lib/fontisan/models/color_layer.rb
|
|
205
|
+
- lib/fontisan/models/color_palette.rb
|
|
200
206
|
- lib/fontisan/models/features_info.rb
|
|
201
207
|
- lib/fontisan/models/font_export.rb
|
|
202
208
|
- lib/fontisan/models/font_info.rb
|
|
@@ -207,6 +213,7 @@ files:
|
|
|
207
213
|
- lib/fontisan/models/optical_size_info.rb
|
|
208
214
|
- lib/fontisan/models/outline.rb
|
|
209
215
|
- lib/fontisan/models/scripts_info.rb
|
|
216
|
+
- lib/fontisan/models/svg_glyph.rb
|
|
210
217
|
- lib/fontisan/models/table_info.rb
|
|
211
218
|
- lib/fontisan/models/table_sharing_info.rb
|
|
212
219
|
- lib/fontisan/models/ttx/glyph_order.rb
|
|
@@ -249,6 +256,8 @@ files:
|
|
|
249
256
|
- lib/fontisan/svg/font_generator.rb
|
|
250
257
|
- lib/fontisan/svg/glyph_generator.rb
|
|
251
258
|
- lib/fontisan/svg/view_box_calculator.rb
|
|
259
|
+
- lib/fontisan/tables/cbdt.rb
|
|
260
|
+
- lib/fontisan/tables/cblc.rb
|
|
252
261
|
- lib/fontisan/tables/cff.rb
|
|
253
262
|
- lib/fontisan/tables/cff/cff_glyph.rb
|
|
254
263
|
- lib/fontisan/tables/cff/charset.rb
|
|
@@ -279,6 +288,8 @@ files:
|
|
|
279
288
|
- lib/fontisan/tables/cff2/table_reader.rb
|
|
280
289
|
- lib/fontisan/tables/cff2/variation_data_extractor.rb
|
|
281
290
|
- lib/fontisan/tables/cmap.rb
|
|
291
|
+
- lib/fontisan/tables/colr.rb
|
|
292
|
+
- lib/fontisan/tables/cpal.rb
|
|
282
293
|
- lib/fontisan/tables/cvar.rb
|
|
283
294
|
- lib/fontisan/tables/fvar.rb
|
|
284
295
|
- lib/fontisan/tables/glyf.rb
|
|
@@ -301,6 +312,8 @@ files:
|
|
|
301
312
|
- lib/fontisan/tables/name.rb
|
|
302
313
|
- lib/fontisan/tables/os2.rb
|
|
303
314
|
- lib/fontisan/tables/post.rb
|
|
315
|
+
- lib/fontisan/tables/sbix.rb
|
|
316
|
+
- lib/fontisan/tables/svg.rb
|
|
304
317
|
- lib/fontisan/tables/variation_common.rb
|
|
305
318
|
- lib/fontisan/tables/vvar.rb
|
|
306
319
|
- lib/fontisan/true_type_collection.rb
|
|
@@ -315,6 +328,9 @@ files:
|
|
|
315
328
|
- lib/fontisan/validation/table_validator.rb
|
|
316
329
|
- lib/fontisan/validation/validator.rb
|
|
317
330
|
- lib/fontisan/validation/variable_font_validator.rb
|
|
331
|
+
- lib/fontisan/validation/woff2_header_validator.rb
|
|
332
|
+
- lib/fontisan/validation/woff2_table_validator.rb
|
|
333
|
+
- lib/fontisan/validation/woff2_validator.rb
|
|
318
334
|
- lib/fontisan/variable/axis_normalizer.rb
|
|
319
335
|
- lib/fontisan/variable/delta_applicator.rb
|
|
320
336
|
- lib/fontisan/variable/glyph_delta_processor.rb
|