Class: Fontisan::Export::Transformers::PostTransformer

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

Overview

PostTransformer transforms post table to TTX format

Converts Fontisan::Tables::Post to Models::Ttx::Tables::PostTable following proper model-to-model transformation principles.

Class Method Summary collapse

Class Method Details

.format_fixed(value) ⇒ Float

Format fixed-point number (16.16)

Parameters:

  • value (Integer)

    Fixed-point value

Returns:

  • (Float)

    Decimal value



45
46
47
# File 'lib/fontisan/export/transformers/post_transformer.rb', line 45

def self.format_fixed(value)
  value.to_f / 65536.0
end

.to_int(value) ⇒ Integer

Convert BinData value to native Ruby integer

Parameters:

  • value (Object)

    BinData value or integer

Returns:

  • (Integer)

    Native integer



37
38
39
# File 'lib/fontisan/export/transformers/post_transformer.rb', line 37

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

.transform(post_table) ⇒ Models::Ttx::Tables::PostTable

Transform post table to TTX model

Parameters:

Returns:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fontisan/export/transformers/post_transformer.rb', line 17

def self.transform(post_table)
  return nil unless post_table

  Models::Ttx::Tables::PostTable.new.tap do |ttx|
    ttx.format_type = format_fixed(to_int(post_table.version_raw))
    ttx.italic_angle = format_fixed(to_int(post_table.italic_angle_raw))
    ttx.underline_position = to_int(post_table.underline_position)
    ttx.underline_thickness = to_int(post_table.underline_thickness)
    ttx.is_fixed_pitch = to_int(post_table.is_fixed_pitch)
    ttx.min_mem_type42 = to_int(post_table.min_mem_type42)
    ttx.max_mem_type42 = to_int(post_table.max_mem_type42)
    ttx.min_mem_type1 = to_int(post_table.min_mem_type1)
    ttx.max_mem_type1 = to_int(post_table.max_mem_type1)
  end
end