Class: Fontisan::Tables::VariationCommon::VariationRegionList

Inherits:
Binary::BaseRecord
  • Object
show all
Defined in:
lib/fontisan/tables/variation_common.rb

Overview

Variation region list

Contains the regions used by variation data. Multiple variation tables can reference the same region list.

Instance Method Summary collapse

Methods inherited from Binary::BaseRecord

#raw_data, read, #valid?

Instance Method Details

#regionsArray<Array<RegionAxisCoordinates>>

Parse all variation regions

Returns:



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/fontisan/tables/variation_common.rb', line 95

def regions
  return @regions if @regions
  return @regions = [] if region_count.zero?

  data = raw_data
  offset = 4 # After axis_count and region_count

  @regions = Array.new(region_count) do |i|
    region_offset = offset + (i * axis_count * 6)
    region_size = axis_count * 6

    next nil if region_offset + region_size > data.bytesize

    region_data = data.byteslice(region_offset, region_size)
    VariationRegion.parse_coordinates(region_data, axis_count)
  end.compact
end