Class: Fontisan::Export::Transformers::PostTransformer
- Inherits:
-
Object
- Object
- Fontisan::Export::Transformers::PostTransformer
- 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
-
.format_fixed(value) ⇒ Float
Format fixed-point number (16.16).
-
.to_int(value) ⇒ Integer
Convert BinData value to native Ruby integer.
-
.transform(post_table) ⇒ Models::Ttx::Tables::PostTable
Transform post table to TTX model.
Class Method Details
.format_fixed(value) ⇒ Float
Format fixed-point number (16.16)
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
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
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 |