fontisan 0.2.3 → 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 +92 -40
- data/README.adoc +262 -3
- data/Rakefile +20 -7
- 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 +88 -0
- 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/models/bitmap_glyph.rb +123 -0
- data/lib/fontisan/models/bitmap_strike.rb +94 -0
- 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_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_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 +17 -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
|
|
@@ -194,10 +194,15 @@ files:
|
|
|
194
194
|
- lib/fontisan/loading_modes.rb
|
|
195
195
|
- lib/fontisan/metrics_calculator.rb
|
|
196
196
|
- lib/fontisan/models/all_scripts_features_info.rb
|
|
197
|
+
- lib/fontisan/models/bitmap_glyph.rb
|
|
198
|
+
- lib/fontisan/models/bitmap_strike.rb
|
|
197
199
|
- lib/fontisan/models/collection_brief_info.rb
|
|
198
200
|
- lib/fontisan/models/collection_font_summary.rb
|
|
199
201
|
- lib/fontisan/models/collection_info.rb
|
|
200
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
|
|
201
206
|
- lib/fontisan/models/features_info.rb
|
|
202
207
|
- lib/fontisan/models/font_export.rb
|
|
203
208
|
- lib/fontisan/models/font_info.rb
|
|
@@ -208,6 +213,7 @@ files:
|
|
|
208
213
|
- lib/fontisan/models/optical_size_info.rb
|
|
209
214
|
- lib/fontisan/models/outline.rb
|
|
210
215
|
- lib/fontisan/models/scripts_info.rb
|
|
216
|
+
- lib/fontisan/models/svg_glyph.rb
|
|
211
217
|
- lib/fontisan/models/table_info.rb
|
|
212
218
|
- lib/fontisan/models/table_sharing_info.rb
|
|
213
219
|
- lib/fontisan/models/ttx/glyph_order.rb
|
|
@@ -250,6 +256,8 @@ files:
|
|
|
250
256
|
- lib/fontisan/svg/font_generator.rb
|
|
251
257
|
- lib/fontisan/svg/glyph_generator.rb
|
|
252
258
|
- lib/fontisan/svg/view_box_calculator.rb
|
|
259
|
+
- lib/fontisan/tables/cbdt.rb
|
|
260
|
+
- lib/fontisan/tables/cblc.rb
|
|
253
261
|
- lib/fontisan/tables/cff.rb
|
|
254
262
|
- lib/fontisan/tables/cff/cff_glyph.rb
|
|
255
263
|
- lib/fontisan/tables/cff/charset.rb
|
|
@@ -280,6 +288,8 @@ files:
|
|
|
280
288
|
- lib/fontisan/tables/cff2/table_reader.rb
|
|
281
289
|
- lib/fontisan/tables/cff2/variation_data_extractor.rb
|
|
282
290
|
- lib/fontisan/tables/cmap.rb
|
|
291
|
+
- lib/fontisan/tables/colr.rb
|
|
292
|
+
- lib/fontisan/tables/cpal.rb
|
|
283
293
|
- lib/fontisan/tables/cvar.rb
|
|
284
294
|
- lib/fontisan/tables/fvar.rb
|
|
285
295
|
- lib/fontisan/tables/glyf.rb
|
|
@@ -302,6 +312,8 @@ files:
|
|
|
302
312
|
- lib/fontisan/tables/name.rb
|
|
303
313
|
- lib/fontisan/tables/os2.rb
|
|
304
314
|
- lib/fontisan/tables/post.rb
|
|
315
|
+
- lib/fontisan/tables/sbix.rb
|
|
316
|
+
- lib/fontisan/tables/svg.rb
|
|
305
317
|
- lib/fontisan/tables/variation_common.rb
|
|
306
318
|
- lib/fontisan/tables/vvar.rb
|
|
307
319
|
- lib/fontisan/true_type_collection.rb
|
|
@@ -316,6 +328,9 @@ files:
|
|
|
316
328
|
- lib/fontisan/validation/table_validator.rb
|
|
317
329
|
- lib/fontisan/validation/validator.rb
|
|
318
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
|
|
319
334
|
- lib/fontisan/variable/axis_normalizer.rb
|
|
320
335
|
- lib/fontisan/variable/delta_applicator.rb
|
|
321
336
|
- lib/fontisan/variable/glyph_delta_processor.rb
|