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
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 59 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.
46 47 48 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 46 def font @font end |
#strategy ⇒ Strategies::BaseStrategy (readonly)
Returns Selected strategy.
49 50 51 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 49 def strategy @strategy end |
Instance Method Details
#preserves_variation? ⇒ Boolean
Check if resolution preserves variation data
84 85 86 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 84 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.
77 78 79 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 77 def resolve @strategy.resolve(@font) end |
#strategy_name ⇒ Symbol
Get strategy name
91 92 93 |
# File 'lib/fontisan/pipeline/variation_resolver.rb', line 91 def strategy_name @strategy.strategy_name end |