class TTFunk::Table::Cmap::Subtable
Constants
- ENCODING_MAPPINGS
Attributes
encoding_id[R]
format[R]
platform_id[R]
Public Class Methods
encode(charmap, encoding)
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 23 def self.encode(charmap, encoding) case encoding when :mac_roman result = Format00.encode(charmap) when :unicode result = Format04.encode(charmap) when :unicode_ucs4 result = Format12.encode(charmap) else raise NotImplementedError, "encoding #{encoding.inspect} is not supported" end mapping = ENCODING_MAPPINGS[encoding] # platform-id, encoding-id, offset result.merge( platform_id: mapping[:platform_id], encoding_id: mapping[:encoding_id], subtable: [ mapping[:platform_id], mapping[:encoding_id], 12, result[:subtable] ].pack('nnNA*') ) end
new(file, table_start)
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 51 def initialize(file, table_start) @file = file @platform_id, @encoding_id, @offset = read(8, 'nnN') @offset += table_start parse_from(@offset) do @format = read(2, 'n').first case @format when 0 then extend(TTFunk::Table::Cmap::Format00) when 4 then extend(TTFunk::Table::Cmap::Format04) when 6 then extend(TTFunk::Table::Cmap::Format06) when 10 then extend(TTFunk::Table::Cmap::Format10) when 12 then extend(TTFunk::Table::Cmap::Format12) end parse_cmap! end end
Public Instance Methods
[](_code)
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 81 def [](_code) raise NotImplementedError, "cmap format #{@format} is not supported" end
supported?()
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 77 def supported? false end
unicode?()
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 71 def unicode? platform_id == 3 && (encoding_id == 1 || encoding_id == 10) && format != 0 || platform_id.zero? && format != 0 end
Private Instance Methods
parse_cmap!()
click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 87 def parse_cmap! # do nothing... end