class TTFunk::Table::Post

Attributes

fixed_pitch[R]
format[R]
italic_angle[R]
max_mem_type1[R]
max_mem_type42[R]
min_mem_type1[R]
min_mem_type42[R]
subtable[R]
underline_position[R]
underline_thickness[R]

Public Class Methods

encode(post, mapping) click to toggle source
# File lib/ttfunk/table/post.rb, line 18
def self.encode(post, mapping)
  return nil unless post.exists?
  post.recode(mapping)
end

Public Instance Methods

fixed_pitch?() click to toggle source
# File lib/ttfunk/table/post.rb, line 23
def fixed_pitch?
  @fixed_pitch != 0
end
glyph_for(code) click to toggle source
# File lib/ttfunk/table/post.rb, line 27
def glyph_for(code)
  ".notdef"
end
recode(mapping) click to toggle source
# File lib/ttfunk/table/post.rb, line 31
def recode(mapping)
  return raw if format == 0x00030000

  table = raw[0,32]
  table[0,4] = [0x00020000].pack("N")

  index = []
  strings = []

  mapping.keys.sort.each do |new_id|
    post_glyph = glyph_for(mapping[new_id])
    position = Format10::POSTSCRIPT_GLYPHS.index(post_glyph)
    if position
      index << position
    else
      index << 257 + strings.length
      strings << post_glyph
    end
  end

  table << [mapping.length, *index].pack("n*")
  strings.each do |string|
    table << [string.length, string].pack("CA*")
  end

  return table
end