Module: HexaPDF::Font::TrueType::Table::Post::Format2

Defined in:
lib/hexapdf/font/true_type/table/post.rb

Overview

‘post’ table format 2

Class Method Summary collapse

Class Method Details

.mapper(glyph_name_index, names) ⇒ Object

:nodoc:



178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/hexapdf/font/true_type/table/post.rb', line 178

def self.mapper(glyph_name_index, names) #:nodoc:
  lambda do |glyph_id|
    name_index = glyph_name_index[glyph_id]
    if !name_index
      nil
    elsif name_index <= 257
      Format1::GLYPH_NAMES[name_index]
    else
      names[name_index - 258]
    end
  end
end

.parse(io, length) ⇒ Object

:call-seq:

Format2.parse(io, length)    -> glyph_names

Parses the format 2 post subtable from the given IO at the current position and returns the contained glyph name map.



169
170
171
172
173
174
175
176
# File 'lib/hexapdf/font/true_type/table/post.rb', line 169

def self.parse(io, length)
  end_pos = io.pos + length
  num_glyphs = io.read(2).unpack1('n')
  glyph_name_index = io.read(2 * num_glyphs).unpack('n*')
  names = []
  names << io.read(io.getbyte).force_encoding(::Encoding::UTF_8) while io.pos < end_pos
  mapper(glyph_name_index, names)
end