49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'format10'
|
|
require 'stringio'
|
|
|
|
module TTFunk
|
|
class Table
|
|
class Post
|
|
# Version 2.0 is used for fonts that use glyph names that are not in the
|
|
# set of Macintosh glyph names. A given font may map some of its glyphs to
|
|
# the standard Macintosh glyph names, and some to its own custom names.
|
|
# A version 2.0 `post` table can be used in fonts with TrueType or CFF
|
|
# version 2 outlines.
|
|
module Format20
|
|
include Format10
|
|
|
|
# Get glyph name for character code.
|
|
#
|
|
# @param code [Integer]
|
|
# @return [String]
|
|
def glyph_for(code)
|
|
index = @glyph_name_index[code]
|
|
return '.notdef' unless index
|
|
|
|
if index <= 257
|
|
POSTSCRIPT_GLYPHS[index]
|
|
else
|
|
@names[index - 258] || '.notdef'
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def parse_format!
|
|
number_of_glyphs = read(2, 'n').first
|
|
@glyph_name_index = read(number_of_glyphs * 2, 'n*')
|
|
@names = []
|
|
|
|
strings = StringIO.new(io.read(offset + length - io.pos))
|
|
until strings.eof?
|
|
length = strings.read(1).unpack1('C')
|
|
@names << strings.read(length)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|