Module: TTFunk::Table::Cmap::Format10
- Defined in:
- lib/ttfunk/table/cmap/format10.rb
Overview
Format 10: Trimmed array.
This module conditionally extends Subtable.
Instance Attribute Summary collapse
-
#code_map ⇒ Hash{Integer => Integer}
readonly
Code map.
-
#language ⇒ Integer
readonly
Language.
Class Method Summary collapse
-
.encode(charmap) ⇒ Hash
Encode the encoding record to format 10.
Instance Method Summary collapse
-
#[](code) ⇒ Integer
Get glyph ID for character code.
-
#supported? ⇒ true
Is this encoding record format supported?.
Instance Attribute Details
#code_map ⇒ Hash{Integer => Integer} (readonly)
Code map.
16 17 18 |
# File 'lib/ttfunk/table/cmap/format10.rb', line 16 def code_map @code_map end |
#language ⇒ Integer (readonly)
Language.
12 13 14 |
# File 'lib/ttfunk/table/cmap/format10.rb', line 12 def language @language end |
Class Method Details
.encode(charmap) ⇒ Hash
Encode the encoding record to format 10.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/ttfunk/table/cmap/format10.rb', line 30 def self.encode(charmap) next_id = 0 glyph_map = { 0 => 0 } sorted_chars = charmap.keys.sort low_char = sorted_chars.first high_char = sorted_chars.last entry_count = 1 + high_char - low_char glyph_indexes = Array.new(entry_count, 0) new_map = charmap.keys.sort.each_with_object({}) do |code, map| glyph_map[charmap[code]] ||= next_id += 1 map[code] = { old: charmap[code], new: glyph_map[charmap[code]] } glyph_indexes[code - low_char] = glyph_map[charmap[code]] end subtable = [ 10, 0, 20 + (entry_count * 4), 0, low_char, entry_count, *glyph_indexes, ].pack('nnN*') { charmap: new_map, subtable: subtable, max_glyph_id: next_id + 1 } end |
Instance Method Details
#[](code) ⇒ Integer
Get glyph ID for character code.
59 60 61 |
# File 'lib/ttfunk/table/cmap/format10.rb', line 59 def [](code) @code_map[code] || 0 end |
#supported? ⇒ true
Is this encoding record format supported?
66 67 68 |
# File 'lib/ttfunk/table/cmap/format10.rb', line 66 def supported? true end |