This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user