Class: Fontisan::Ufo::Compile::ParsedFeatures

Inherits:
Object
  • Object
show all
Defined in:
lib/fontisan/ufo/compile/feature_compiler.rb

Overview

Result of parsing features.fea. Aggregates ligature and pair rules by feature tag, plus any unsupported statements.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeParsedFeatures

Returns a new instance of ParsedFeatures.



122
123
124
125
126
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 122

def initialize
  @ligatures = Hash.new { |h, k| h[k] = [] }
  @pairs = Hash.new { |h, k| h[k] = [] }
  @unsupported = Hash.new { |h, k| h[k] = [] }
end

Instance Attribute Details

#ligaturesObject (readonly)

Returns the value of attribute ligatures.



120
121
122
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 120

def ligatures
  @ligatures
end

#pairsObject (readonly)

Returns the value of attribute pairs.



120
121
122
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 120

def pairs
  @pairs
end

#unsupportedObject (readonly)

Returns the value of attribute unsupported.



120
121
122
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 120

def unsupported
  @unsupported
end

Instance Method Details

#add_ligature(tag, sequence:, result:) ⇒ Object

---- mutation (used by FeatureCompiler) ----



147
148
149
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 147

def add_ligature(tag, sequence:, result:)
  @ligatures[tag] << { sequence: sequence, result: result }
end

#add_pair(tag, left:, right:, value:) ⇒ Object



151
152
153
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 151

def add_pair(tag, left:, right:, value:)
  @pairs[tag] << { left: left, right: right, value: value }
end

#add_unsupported(tag, statement) ⇒ Object



155
156
157
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 155

def add_unsupported(tag, statement)
  @unsupported[tag] << statement
end

#empty?Boolean

Returns true if no features were parsed.

Returns:

  • (Boolean)

    true if no features were parsed



141
142
143
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 141

def empty?
  @ligatures.empty? && @pairs.empty?
end

#ligatures_for(tag) ⇒ Array<Hash>

Returns ligature rules: [names], result: name.

Parameters:

  • tag (String)

    feature tag

Returns:

  • (Array<Hash>)

    ligature rules: [names], result: name



130
131
132
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 130

def ligatures_for(tag)
  @ligatures[tag] || []
end

#pairs_for(tag) ⇒ Array<Hash>

Returns pair rules: right:, value:.

Parameters:

  • tag (String)

    feature tag

Returns:

  • (Array<Hash>)

    pair rules: right:, value:



136
137
138
# File 'lib/fontisan/ufo/compile/feature_compiler.rb', line 136

def pairs_for(tag)
  @pairs[tag] || []
end