Class: Fontisan::Variation::DataExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/fontisan/variation/data_extractor.rb

Overview

Extracts variation data from OpenType variable fonts

This class provides a unified interface to extract variation information from variable fonts, including:

  • Variation axes (from fvar table)

  • Named instances (from fvar table)

  • Variation type (TrueType gvar or PostScript CFF2)

Examples:

Extracting variation data

extractor = Fontisan::Variation::DataExtractor.new(font)
data = extractor.extract
if data
  puts "Axes: #{data[:axes].map(&:axis_tag).join(', ')}"
  puts "Instances: #{data[:instances].length}"
end

Instance Method Summary collapse

Constructor Details

#initialize(font) ⇒ DataExtractor

Initialize extractor with a font

Parameters:



26
27
28
29
# File 'lib/fontisan/variation/data_extractor.rb', line 26

def initialize(font)
  @font = font
  @context = VariationContext.new(font)
end

Instance Method Details

#extractHash?

Extract variation data from the font

Returns:

  • (Hash, nil)

    Variation data or nil if not a variable font



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fontisan/variation/data_extractor.rb', line 34

def extract
  return nil unless @context.variable_font?

  {
    axes: extract_axes,
    instances: extract_instances,
    has_gvar: @font.has_table?("gvar"),
    has_cff2: @font.has_table?("CFF2"),
    variation_type: @context.variation_type,
  }
end

#variable_font?Boolean

Check if font is a variable font

Returns:

  • (Boolean)

    True if font has fvar table



49
50
51
# File 'lib/fontisan/variation/data_extractor.rb', line 49

def variable_font?
  @context.variable_font?
end