Class: Fontisan::Pipeline::Strategies::InstanceStrategy
- Inherits:
-
BaseStrategy
- Object
- BaseStrategy
- Fontisan::Pipeline::Strategies::InstanceStrategy
- Defined in:
- lib/fontisan/pipeline/strategies/instance_strategy.rb
Overview
Strategy for generating static instances from variable fonts
This strategy creates a static font instance at specific design space coordinates by applying variation deltas and removing variation tables. It’s used for:
-
Variable TTF → Static TTF at specific weight
-
Variable OTF → Static OTF at specific coordinates
-
Variable → Static for any format conversion
The strategy uses the InstanceGenerator to:
-
Apply variation deltas (gvar or CFF2 blend)
-
Apply metrics variations (HVAR, VVAR, MVAR)
-
Remove variation tables (fvar, gvar, CFF2, avar, etc.)
If no coordinates are provided, uses default coordinates (axis default values).
Instance Attribute Summary collapse
-
#coordinates ⇒ Hash<String, Float>
readonly
Design space coordinates.
Attributes inherited from BaseStrategy
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ InstanceStrategy
constructor
Initialize strategy with coordinates.
-
#preserves_variation? ⇒ Boolean
Check if strategy preserves variation data.
-
#resolve(font) ⇒ Hash<String, String>
Resolve by generating static instance.
-
#strategy_name ⇒ Symbol
Get strategy name.
Constructor Details
#initialize(options = {}) ⇒ InstanceStrategy
Initialize strategy with coordinates
43 44 45 46 |
# File 'lib/fontisan/pipeline/strategies/instance_strategy.rb', line 43 def initialize( = {}) super @coordinates = [:coordinates] || {} end |
Instance Attribute Details
#coordinates ⇒ Hash<String, Float> (readonly)
Returns Design space coordinates.
36 37 38 |
# File 'lib/fontisan/pipeline/strategies/instance_strategy.rb', line 36 def coordinates @coordinates end |
Instance Method Details
#preserves_variation? ⇒ Boolean
Check if strategy preserves variation data
69 70 71 |
# File 'lib/fontisan/pipeline/strategies/instance_strategy.rb', line 69 def preserves_variation? false end |
#resolve(font) ⇒ Hash<String, String>
Resolve by generating static instance
Creates a static font instance at the specified coordinates using the InstanceGenerator. If coordinates are not provided, uses the default coordinates from the font’s axes.
57 58 59 60 61 62 63 64 |
# File 'lib/fontisan/pipeline/strategies/instance_strategy.rb', line 57 def resolve(font) # Validate coordinates if provided validate_coordinates(font) unless @coordinates.empty? # Use InstanceGenerator to create static instance generator = Variation::InstanceGenerator.new(font, @coordinates) generator.generate end |
#strategy_name ⇒ Symbol
Get strategy name
76 77 78 |
# File 'lib/fontisan/pipeline/strategies/instance_strategy.rb', line 76 def strategy_name :instance end |