class TTFunk::Subset::Base
@api private
Base subset.
def collect_glyphs(glyph_ids)
-
(Hash{Integer => TTFunk::Table::Cff::Charstring})
- if original is -
(Hash{Integer => TTFunk::Table::Glyf::Simple,)
- Hash{Integer => TTFunk::Table::Glyf::Simple,
Parameters:
-
glyph_ids
(Array
) --
def collect_glyphs(glyph_ids) collected = glyph_ids.each_with_object({}) do |id, h| h[id] = glyph_for(id) end additional_ids = collected.values .select { |g| g && g.compound? } .map(&:glyph_ids) .flatten collected.update(collect_glyphs(additional_ids)) if additional_ids.any? collected end
def encode(options = {})
-
(String)
-
Parameters:
-
options
(Hash
) --
def encode(options = {}) encoder_klass.new(original, self, options).encode end
def encoder_klass
-
(TTFunk::TTFEncoder, TTFunk::OTFEncoder)
-
def encoder_klass original.cff.exists? ? OTFEncoder : TTFEncoder end
def glyph_for(glyph_id)
def glyph_for(glyph_id) if original.cff.exists? original .cff .top_index[0] .charstrings_index[glyph_id] .glyph else original.glyph_outlines.for(glyph_id) end end
def glyphs
-
(Hash{Integer => TTFunk::Table::Cff::Charstring] if original is)
- Hash{Integer => TTFunk::Table::Cff::Charstring] if original is -
(Hash{Integer => TTFunk::Table::Glyf::Simple,)
- Hash{Integer => TTFunk::Table::Glyf::Simple,
def glyphs @glyphs ||= collect_glyphs(original_glyph_ids) end
def initialize(original)
-
original
(TTFunk::File
) --
def initialize(original) @original = original end
def microsoft_symbol?
-
(Boolean)
-
def microsoft_symbol? new_cmap_table[:platform_id] == MICROSOFT_PLATFORM_ID && new_cmap_table[:encoding_id] == MS_SYMBOL_ENCODING_ID end
def new_to_old_glyph
-
(Hash{Integer => Integer})
-
def new_to_old_glyph @new_to_old_glyph ||= old_to_new_glyph.invert end
def old_to_new_glyph
-
(Hash{Integer => Integer})
-
def old_to_new_glyph @old_to_new_glyph ||= begin charmap = new_cmap_table[:charmap] old_to_new = charmap.each_with_object(0 => 0) do |(_, ids), map| map[ids[:old]] = ids[:new] end next_glyph_id = new_cmap_table[:max_glyph_id] glyphs.each_key do |old_id| unless old_to_new.key?(old_id) old_to_new[old_id] = next_glyph_id next_glyph_id += 1 end end old_to_new end end
def to_unicode_map
-
(Hash{Integer => Integer})
-
def to_unicode_map {} end
def unicode?
-
(Boolean)
-
def unicode? false end
def unicode_cmap
-
(TTFunk::Table::Cmap::Subtable)
-
def unicode_cmap @unicode_cmap ||= @original.cmap.unicode.first end