Class: Fontisan::Export::Transformers::MaxpTransformer

Inherits:
Object
  • Object
show all
Defined in:
lib/fontisan/export/transformers/maxp_transformer.rb

Overview

MaxpTransformer transforms maxp table to TTX format

Converts Fontisan maximum profile table to Models::Ttx::Tables::MaxpTable following proper model-to-model transformation principles.

Class Method Summary collapse

Class Method Details

.format_hex(value) ⇒ String

Format hex value

Parameters:

  • value (Integer)

    Integer value

Returns:

  • (String)

    Hex string (e.g., "0x00010000")



55
56
57
# File 'lib/fontisan/export/transformers/maxp_transformer.rb', line 55

def self.format_hex(value)
  "0x#{value.to_s(16).rjust(8, '0')}"
end

.to_int(value) ⇒ Integer

Convert BinData value to native Ruby integer

Parameters:

  • value (Object)

    BinData value or integer

Returns:

  • (Integer)

    Native integer



47
48
49
# File 'lib/fontisan/export/transformers/maxp_transformer.rb', line 47

def self.to_int(value)
  value.respond_to?(:to_i) ? value.to_i : value
end

.transform(maxp_table) ⇒ Models::Ttx::Tables::MaxpTable

Transform maxp table to TTX model

Parameters:

  • maxp_table (Object)

    Source maxp table

Returns:



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/fontisan/export/transformers/maxp_transformer.rb', line 15

def self.transform(maxp_table)
  return nil unless maxp_table

  version = to_int(maxp_table.version)

  Models::Ttx::Tables::MaxpTable.new.tap do |ttx|
    ttx.table_version = format_hex(version)
    ttx.num_glyphs = to_int(maxp_table.num_glyphs)

    # Version 1.0 fields (TrueType)
    if version >= 0x00010000
      ttx.max_points = to_int(maxp_table.max_points)
      ttx.max_contours = to_int(maxp_table.max_contours)
      ttx.max_composite_points = to_int(maxp_table.max_component_points)
      ttx.max_composite_contours = to_int(maxp_table.max_component_contours)
      ttx.max_zones = to_int(maxp_table.max_zones)
      ttx.max_twilight_points = to_int(maxp_table.max_twilight_points)
      ttx.max_storage = to_int(maxp_table.max_storage)
      ttx.max_function_defs = to_int(maxp_table.max_function_defs)
      ttx.max_instruction_defs = to_int(maxp_table.max_instruction_defs)
      ttx.max_stack_elements = to_int(maxp_table.max_stack_elements)
      ttx.max_size_of_instructions = to_int(maxp_table.max_size_of_instructions)
      ttx.max_component_elements = to_int(maxp_table.max_component_elements)
      ttx.max_component_depth = to_int(maxp_table.max_component_depth)
    end
  end
end