Module: Fontisan::Ufo::Compile::Stat
- Defined in:
- lib/fontisan/ufo/compile/stat.rb
Overview
Builds the OpenType STAT (Style Attributes) table.
Describes style attributes for each axis and named instances. Required for proper font matching in operating systems.
Constant Summary collapse
- HEADER_SIZE =
20- DESIGN_AXIS_RECORD_SIZE =
tag(4) + nameID(2) + ordering(2)
8- AXIS_VALUE_OFFSET_SIZE =
uint32 per axis value
4
Class Method Summary collapse
-
.build(axes:, axis_values: nil, elided_name_id: nil) ⇒ String
STAT table bytes.
Class Method Details
.build(axes:, axis_values: nil, elided_name_id: nil) ⇒ String
Returns STAT table bytes.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fontisan/ufo/compile/stat.rb', line 21 def self.build(axes:, axis_values: nil, elided_name_id: nil) return nil if axes.nil? || axes.empty? design_axis_count = axes.size axis_value_list = axis_values || [] axis_value_count = axis_value_list.size design_axes = serialize_design_axes(axes) value_tables, value_offsets = serialize_axis_values(axis_value_list, design_axes.bytesize) header = serialize_header( design_axis_count: design_axis_count, design_axes_size: design_axes.bytesize, axis_value_count: axis_value_count, elided_name_id: elided_name_id, ) io = +"" io << header io << design_axes axis_value_list.each_index do |i| io << [value_offsets[i]].pack("N") end io << value_tables io end |