Sha256: 2ae6de404f37761340fadd434e4fd6d86dac0db2b0d96e8478e90f1b4c957c14
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true require_relative '../table' module TTFunk class Table class Loca < Table attr_reader :offsets # Accepts an array of offsets, with each index corresponding to the # glyph id with that index. # # Returns a hash containing: # # * :table - the string representing the table's contents # * :type - the type of offset (to be encoded in the 'head' table) def self.encode(offsets) long_offsets = offsets.any? do |offset| short_offset = offset / 2 short_offset * 2 != offset || short_offset > 0xffff end if long_offsets { type: 1, table: offsets.pack('N*') } else { type: 0, table: offsets.map { |o| o / 2 }.pack('n*') } end end def index_of(glyph_id) @offsets[glyph_id] end def size_of(glyph_id) @offsets[glyph_id + 1] - @offsets[glyph_id] end private def parse! type = file.header.index_to_loc_format == 0 ? 'n' : 'N' @offsets = read(length, "#{type}*") if file.header.index_to_loc_format == 0 @offsets.map! { |v| v * 2 } end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ttfunk-1.6.2.1 | lib/ttfunk/table/loca.rb |
ttfunk-1.6.2 | lib/ttfunk/table/loca.rb |
ttfunk-1.6.1 | lib/ttfunk/table/loca.rb |
ttfunk-1.6.0 | lib/ttfunk/table/loca.rb |