Module: HexaPDF::FontLoader::FromFile

Defined in:
lib/hexapdf/font_loader/from_file.rb

Overview

This module interprets the font name either as file name and tries to load it, or as TrueType font object to be wrapped directly.

Class Method Summary collapse

Class Method Details

.call(document, name, subset: true) ⇒ Object

:call-seq:

FromFile.call(document, file_name, subset: true, **)           -> wrapped_font
FromFile.call(document, font_object, subset: true, **)    -> wrapped_font

Returns an appropriate font wrapper for the given file name or TrueType font object.

If a file name is given, the file object representing the font file is not closed and if needed must be closed by the caller once the font is not needed anymore.

The first form using a file name is easier to use in one-off cases. However, if multiple documents always refer to the same font, the second form is better to avoid re-parsing the font file.

document

The PDF document to associate the font wrapper with.

file_name/font_object

The file name or a HexaPDF::Font::TrueType::Font object.

subset

Specifies whether the font should be subset if possible.



67
68
69
70
71
72
73
# File 'lib/hexapdf/font_loader/from_file.rb', line 67

def self.call(document, name, subset: true, **)
  is_font = name.kind_of?(HexaPDF::Font::TrueType::Font)
  return nil unless is_font || File.file?(name)

  font = is_font ? name : HexaPDF::Font::TrueType::Font.new(File.open(name, 'rb'))
  HexaPDF::Font::TrueTypeWrapper.new(document, font, subset: subset)
end