Module: Fontisan::Ufo::Convert::ToDfont

Defined in:
lib/fontisan/ufo/convert/to_dfont.rb

Overview

UFO → dfont (Mac OS resource-fork font container). Two-step:

1. Compile UFO → TTF/OTF in tmpdir.
2. Load + feed to Collection::DfontBuilder, which wraps the
 SFNT binary in a Mac resource fork.

Class Method Summary collapse

Class Method Details

.convert(ufo, output_path:, compiler: :ttf, **_opts) ⇒ String

Returns the output_path.

Parameters:

  • ufo (Fontisan::Ufo::Font)
  • output_path (String)
  • compiler (Symbol) (defaults to: :ttf)

    :ttf (default) or :otf

Returns:

  • (String)

    the output_path



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fontisan/ufo/convert/to_dfont.rb', line 18

def self.convert(ufo, output_path:, compiler: :ttf, **_opts)
  compiler_class = Convert::COMPILER_FOR_FORMAT[compiler.to_sym]
  unless compiler_class
    raise ArgumentError,
          "unknown intermediate compiler: #{compiler.inspect}"
  end

  Dir.mktmpdir do |dir|
    intermediate_path = File.join(dir,
                                  "intermediate#{ext_for(compiler)}")
    compiler_class.new(ufo).compile(output_path: intermediate_path)

    loaded = Fontisan::FontLoader.load(intermediate_path)
    result = Fontisan::Collection::DfontBuilder.new([loaded]).build
    File.binwrite(output_path, result[:binary])
  end

  output_path
end