Sha256: eef6e6a7bf7ae10589a609c46a75ba396c405d87a150a97cf2f45a6bc174bf69
Contents?: true
Size: 1.51 KB
Versions: 2
Compression:
Stored size: 1.51 KB
Contents
require 'set' require_relative 'base' module TTFunk module Subset class Unicode8Bit < Base def initialize(original) super @subset = { 0x20 => 0x20 } @unicodes = { 0x20 => 0x20 } @next = 0x21 # apparently, PDF's don't like to use chars between 0-31 end def unicode? true end def to_unicode_map @subset.dup end def use(character) if !@unicodes.key?(character) @subset[@next] = character @unicodes[character] = @next @next += 1 end end def covers?(character) @unicodes.key?(character) || @next < 256 end def includes?(character) @unicodes.key?(character) end def from_unicode(character) @unicodes[character] end protected def new_cmap_table(options) mapping = @subset.inject({}) do |map, (code,unicode)| map[code] = unicode_cmap[unicode] map end # since we're mapping a subset of the unicode glyphs into an # arbitrary 256-character space, the actual encoding we're # using is irrelevant. We choose MacRoman because it's a 256-character # encoding that happens to be well-supported in both TTF and # PDF formats. TTFunk::Table::Cmap.encode(mapping, :mac_roman) end def original_glyph_ids ([0] + @unicodes.keys.map { |unicode| unicode_cmap[unicode] }).uniq.sort end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ttfunk-1.4.0 | lib/ttfunk/subset/unicode_8bit.rb |
ttfunk-1.3.0 | lib/ttfunk/subset/unicode_8bit.rb |