Class: Fontisan::Pipeline::VariationResolver
- Inherits:
-
Object
- Object
- Fontisan::Pipeline::VariationResolver
- Defined in:
- lib/fontisan/pipeline/variation_resolver.rb
Overview
Resolves variation data using strategy pattern
This class orchestrates variation resolution during font conversion by selecting and executing the appropriate strategy based on user intent. It follows the Strategy pattern to allow different approaches to handling variable font data.
Three strategies are available:
- PreserveStrategy: Keep variation data intact (for compatible formats)
- InstanceStrategy: Generate static instance at coordinates
- NamedStrategy: Use named instance from fvar table
Strategy selection is explicit through the :strategy option. Each strategy has its own required and optional parameters.
Instance Attribute Summary collapse
-
#font ⇒ TrueTypeFont, OpenTypeFont
readonly
Font to process.
-
#strategy ⇒ Strategies::BaseStrategy
readonly
Selected strategy.
Instance Method Summary collapse
-
#initialize(font, options = {}) ⇒ VariationResolver
constructor
Initialize resolver with font and strategy.
-
#preserves_variation? ⇒ Boolean
Check if resolution preserves variation data.
-
#resolve ⇒ Hash<String, String>
Resolve variation data.
-
#strategy_name ⇒ Symbol
Get strategy name.
Constructor Details
#initialize(font, options = {}) ⇒ VariationResolver
Initialize resolver with font and strategy
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 54 def initialize(font, = {}) @font = font strategy_type = [:strategy] raise ArgumentError, "strategy is required" unless strategy_type @strategy = build_strategy(strategy_type, ) # Validate strategy-specific requirements validate_strategy_requirements(strategy_type, ) end |
Instance Attribute Details
#font ⇒ TrueTypeFont, OpenTypeFont (readonly)
Returns Font to process.
41 42 43 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 41 def font @font end |
#strategy ⇒ Strategies::BaseStrategy (readonly)
Returns Selected strategy.
44 45 46 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 44 def strategy @strategy end |
Instance Method Details
#preserves_variation? ⇒ Boolean
Check if resolution preserves variation data
79 80 81 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 79 def preserves_variation? @strategy.preserves_variation? end |
#resolve ⇒ Hash<String, String>
Resolve variation data
Delegates to the selected strategy to process the font and return the appropriate tables.
72 73 74 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 72 def resolve @strategy.resolve(@font) end |
#strategy_name ⇒ Symbol
Get strategy name
86 87 88 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 86 def strategy_name @strategy.strategy_name end |