class TTFunk::Subset::Windows1252

Public Class Methods

new(original) click to toggle source
Calls superclass method TTFunk::Subset::Base::new
# File lib/ttfunk/subset/windows_1252.rb, line 9
def initialize(original)
  super
  @subset = Array.new(256)
end

Public Instance Methods

covers?(character) click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 22
def covers?(character)
  Encoding::Windows1252.covers?(character)
end
from_unicode(character) click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 31
def from_unicode(character)
  Encoding::Windows1252::FROM_UNICODE[character]
end
includes?(character) click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 26
def includes?(character)
  code = Encoding::Windows1252::FROM_UNICODE[character]
  code && @subset[code]
end
to_unicode_map() click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 14
def to_unicode_map
  Encoding::Windows1252::TO_UNICODE
end
use(character) click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 18
def use(character)
  @subset[Encoding::Windows1252::FROM_UNICODE[character]] = character
end

Protected Instance Methods

new_cmap_table(_options) click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 37
def new_cmap_table(_options)
  mapping = {}
  @subset.each_with_index do |unicode, cp1252|
    mapping[cp1252] = unicode_cmap[unicode] if cp1252
  end

  # yes, I really mean "mac roman". TTF has no cp1252 encoding, and the
  # alternative would be to encode it using a format 4 unicode table,
  # which is overkill. for our purposes, mac-roman suffices. (If we were
  # building a _real_ font, instead of a PDF-embeddable subset, things
  # would probably be different.)
  TTFunk::Table::Cmap.encode(mapping, :mac_roman)
end
original_glyph_ids() click to toggle source
# File lib/ttfunk/subset/windows_1252.rb, line 51
def original_glyph_ids
  ([0] + @subset.map { |unicode| unicode && unicode_cmap[unicode] })
    .compact.uniq.sort
end