Skip to content

ConversionOptions

Type-safe conversion configuration.

Overview

Fontisan::ConversionOptions provides a type-safe way to configure font conversions.

Class Methods

Get recommended options for a conversion type.

ruby
options = Fontisan::ConversionOptions.recommended(from: :ttf, to: :otf)
# => #<Fontisan::ConversionOptions ...>

# Access settings
options.opening   # => { convert_curves: true, ... }
options.generating # => { hinting_mode: "auto", ... }

Parameters:

NameTypeDescription
fromSymbolSource format
toSymbolTarget format

from_preset(name)

Load options from a named preset.

ruby
# Web optimization preset
options = Fontisan::ConversionOptions.from_preset(:web_optimized)

# Type 1 to modern
options = Fontisan::ConversionOptions.from_preset(:type1_to_modern)

Available Presets:

PresetFromTo
type1_to_modernType 1OTF
modern_to_type1OTFType 1
web_optimizedOTFWOFF2
archive_to_modernTTCOTF

new(**kwargs)

Create custom options.

ruby
options = Fontisan::ConversionOptions.new(
  from: :ttf,
  to: :otf,
  opening: {
    convert_curves: true,
    autohint: true
  },
  generating: {
    hinting_mode: 'auto',
    optimize_tables: true
  }
)

Instance Attributes

opening

Opening options control source font processing.

OptionTypeDefault
decompose_compositesBooleanfalse
convert_curvesBooleantrue
scale_to_1000Booleanfalse
scale_from_1000Booleanfalse
autohintBooleanfalse
generate_unicodeBooleanfalse
store_custom_tablesBooleantrue
store_native_hintingBooleanfalse
interpret_otBooleanfalse
read_all_recordsBooleanfalse
preserve_encodingStringnil

generating

Generating options control output font writing.

OptionTypeDefault
write_pfmBooleanfalse
write_afmBooleanfalse
write_infBooleanfalse
select_encoding_automaticallyBooleanfalse
hinting_modeString'preserve'
decompose_on_outputBooleanfalse
write_custom_tablesBooleantrue
optimize_tablesBooleanfalse
compressionStringnil
transform_tablesBooleanfalse
preserve_metadataBooleantrue

Examples

Basic Conversion

ruby
options = Fontisan::ConversionOptions.recommended(from: :ttf, to: :otf)
converter = Fontisan::Converters::OutlineConverter.new
result = converter.convert(font, options: options)

Web Optimization

ruby
options = Fontisan::ConversionOptions.from_preset(:web_optimized)
Fontisan::FontWriter.write(font, 'output.woff2', options: options)

Custom Options

ruby
options = Fontisan::ConversionOptions.new(
  opening: { autohint: true },
  generating: {
    hinting_mode: 'auto',
    optimize_tables: true,
    compression: 'brotli'
  }
)

Fontisan is a [Ribose](https://open.ribose.com/) project