Class: Fontisan::Type1::ConversionOptions
- Inherits:
-
Object
- Object
- Fontisan::Type1::ConversionOptions
- Defined in:
- lib/fontisan/type1/conversion_options.rb
Overview
Conversion options for Type 1 font generation
[‘ConversionOptions`](lib/fontisan/type1/conversion_options.rb) provides a unified configuration interface for converting outline fonts (TTF, OTF, TTC, etc.) to Type 1 formats (PFA, PFB, AFM, PFM, INF).
Constant Summary collapse
- DEFAULTS =
Default values based on TypeTool 3 and Adobe Type 1 specifications
{ upm_scale: 1000, encoding: Encodings::AdobeStandard, decompose_composites: false, convert_curves: true, autohint: false, preserve_hinting: false, format: :pfb, }.freeze
Instance Attribute Summary collapse
-
#autohint ⇒ Boolean
Apply autohinting to generated Type 1.
-
#convert_curves ⇒ Boolean
Convert quadratic curves to cubic.
-
#decompose_composites ⇒ Boolean
Decompose composite glyphs into base glyphs.
-
#encoding ⇒ Class
Encoding class (AdobeStandard, ISOLatin1, Unicode).
-
#format ⇒ Symbol
Output format (:pfb or :pfa).
-
#preserve_hinting ⇒ Boolean
Preserve native hinting from source font.
-
#upm_scale ⇒ Integer, :native
Target UPM (1000 for Type 1, :native to keep source UPM).
Class Method Summary collapse
-
.high_quality ⇒ ConversionOptions
Create options for high-quality output (with curve conversion).
-
.iso_latin1 ⇒ ConversionOptions
Create options for ISO-8859-1 encoding.
-
.minimal_size ⇒ ConversionOptions
Create options for minimal file size.
-
.native_upm ⇒ ConversionOptions
Create options with native UPM (no scaling).
-
.unicode_encoding ⇒ ConversionOptions
Create options with Unicode encoding.
-
.unix_type1 ⇒ ConversionOptions
Create options for Unix Type 1 output.
-
.windows_type1 ⇒ ConversionOptions
Create options for Windows Type 1 output.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ ConversionOptions
constructor
Initialize conversion options.
-
#needs_autohinting? ⇒ Boolean
Check if autohinting is requested.
-
#needs_curve_conversion? ⇒ Boolean
Check if curve conversion is needed.
-
#needs_scaling? ⇒ Boolean
Check if UPM scaling is needed.
-
#to_hash ⇒ Hash
Convert to hash.
Constructor Details
#initialize(options = {}) ⇒ ConversionOptions
Initialize conversion options
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/fontisan/type1/conversion_options.rb', line 70 def initialize( = {}) @upm_scale = [:upm_scale] || DEFAULTS[:upm_scale] @encoding = [:encoding] || DEFAULTS[:encoding] @decompose_composites = [:decompose_composites] || DEFAULTS[:decompose_composites] @convert_curves = .fetch(:convert_curves, DEFAULTS[:convert_curves]) @autohint = [:autohint] || DEFAULTS[:autohint] @preserve_hinting = [:preserve_hinting] || DEFAULTS[:preserve_hinting] @format = [:format] || DEFAULTS[:format] validate! end |
Instance Attribute Details
#autohint ⇒ Boolean
Returns Apply autohinting to generated Type 1.
41 42 43 |
# File 'lib/fontisan/type1/conversion_options.rb', line 41 def autohint @autohint end |
#convert_curves ⇒ Boolean
Returns Convert quadratic curves to cubic.
38 39 40 |
# File 'lib/fontisan/type1/conversion_options.rb', line 38 def convert_curves @convert_curves end |
#decompose_composites ⇒ Boolean
Returns Decompose composite glyphs into base glyphs.
35 36 37 |
# File 'lib/fontisan/type1/conversion_options.rb', line 35 def decompose_composites @decompose_composites end |
#encoding ⇒ Class
Returns Encoding class (AdobeStandard, ISOLatin1, Unicode).
32 33 34 |
# File 'lib/fontisan/type1/conversion_options.rb', line 32 def encoding @encoding end |
#format ⇒ Symbol
Returns Output format (:pfb or :pfa).
47 48 49 |
# File 'lib/fontisan/type1/conversion_options.rb', line 47 def format @format end |
#preserve_hinting ⇒ Boolean
Returns Preserve native hinting from source font.
44 45 46 |
# File 'lib/fontisan/type1/conversion_options.rb', line 44 def preserve_hinting @preserve_hinting end |
#upm_scale ⇒ Integer, :native
Returns Target UPM (1000 for Type 1, :native to keep source UPM).
29 30 31 |
# File 'lib/fontisan/type1/conversion_options.rb', line 29 def upm_scale @upm_scale end |
Class Method Details
.high_quality ⇒ ConversionOptions
Create options for high-quality output (with curve conversion)
177 178 179 180 181 182 183 184 185 |
# File 'lib/fontisan/type1/conversion_options.rb', line 177 def self.high_quality new( upm_scale: 1000, encoding: Encodings::AdobeStandard, convert_curves: true, decompose_composites: true, format: :pfb, ) end |
.iso_latin1 ⇒ ConversionOptions
Create options for ISO-8859-1 encoding
155 156 157 158 159 160 161 |
# File 'lib/fontisan/type1/conversion_options.rb', line 155 def self.iso_latin1 new( upm_scale: 1000, encoding: Encodings::ISOLatin1, format: :pfb, ) end |
.minimal_size ⇒ ConversionOptions
Create options for minimal file size
190 191 192 193 194 195 196 197 198 |
# File 'lib/fontisan/type1/conversion_options.rb', line 190 def self.minimal_size new( upm_scale: 1000, encoding: Encodings::AdobeStandard, convert_curves: false, decompose_composites: false, format: :pfa, ) end |
.native_upm ⇒ ConversionOptions
Create options with native UPM (no scaling)
144 145 146 147 148 149 150 |
# File 'lib/fontisan/type1/conversion_options.rb', line 144 def self.native_upm new( upm_scale: :native, encoding: Encodings::Unicode, format: :pfb, ) end |
.unicode_encoding ⇒ ConversionOptions
Create options with Unicode encoding
166 167 168 169 170 171 172 |
# File 'lib/fontisan/type1/conversion_options.rb', line 166 def self.unicode_encoding new( upm_scale: 1000, encoding: Encodings::Unicode, format: :pfb, ) end |
.unix_type1 ⇒ ConversionOptions
Create options for Unix Type 1 output
133 134 135 136 137 138 139 |
# File 'lib/fontisan/type1/conversion_options.rb', line 133 def self.unix_type1 new( upm_scale: 1000, encoding: Encodings::AdobeStandard, format: :pfa, ) end |
.windows_type1 ⇒ ConversionOptions
Create options for Windows Type 1 output
122 123 124 125 126 127 128 |
# File 'lib/fontisan/type1/conversion_options.rb', line 122 def self.windows_type1 new( upm_scale: 1000, encoding: Encodings::AdobeStandard, format: :pfb, ) end |
Instance Method Details
#needs_autohinting? ⇒ Boolean
Check if autohinting is requested
100 101 102 |
# File 'lib/fontisan/type1/conversion_options.rb', line 100 def needs_autohinting? @autohint end |
#needs_curve_conversion? ⇒ Boolean
Check if curve conversion is needed
93 94 95 |
# File 'lib/fontisan/type1/conversion_options.rb', line 93 def needs_curve_conversion? @convert_curves end |
#needs_scaling? ⇒ Boolean
Check if UPM scaling is needed
86 87 88 |
# File 'lib/fontisan/type1/conversion_options.rb', line 86 def needs_scaling? @upm_scale != :native end |
#to_hash ⇒ Hash
Convert to hash
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/fontisan/type1/conversion_options.rb', line 107 def to_hash { upm_scale: @upm_scale, encoding: @encoding, decompose_composites: @decompose_composites, convert_curves: @convert_curves, autohint: @autohint, preserve_hinting: @preserve_hinting, format: @format, } end |