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 19
def self.encode(charmap, encoding)
  case encoding
  when :mac_roman
    result = Format00.encode(charmap)
  when :unicode
    result = Format04.encode(charmap)
  else
    raise NotImplementedError, "encoding #{encoding.inspect} is not supported"
  end

  mapping = ENCODING_MAPPINGS[encoding]

  # platform-id, encoding-id, offset
  result[:subtable] = [mapping[:platform_id], mapping[:encoding_id],
    12, result[:subtable]].pack("nnNA*")

  return result
end
new(file, table_start) click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 38
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)
    end

    parse_cmap!
  end
end

Public Instance Methods

[](code) click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 64
def [](code)
  raise NotImplementedError, "cmap format #{@format} is not supported"
end
supported?() click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 60
def supported?
  false
end
unicode?() click to toggle source
# File lib/ttfunk/table/cmap/subtable.rb, line 55
def unicode?
  platform_id == 3 && encoding_id == 1 && format == 4 ||
  platform_id == 0 && format == 4
end