class Prawn::SVG::FontRegistry
Constants
- DEFAULT_FONT_PATHS
Attributes
external_font_families[R]
font_path[R]
Public Class Methods
new(font_families)
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 12 def initialize(font_families) @font_families = font_families end
Private Class Methods
external_font_paths()
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 66 def external_font_paths font_path .uniq .flat_map { |path| Dir["#{path}/**/*"] } .uniq .select { |path| File.file?(path) } end
load_external_fonts()
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 51 def load_external_fonts @external_font_families = {} external_font_paths.each do |filename| ttf = Prawn::SVG::TTF.new(filename) if ttf.family subfamily = (ttf.subfamily || "normal").gsub(/\s+/, "_").downcase.to_sym subfamily = :normal if subfamily == :regular (external_font_families[ttf.family] ||= {})[subfamily] ||= filename end end end
Public Instance Methods
correctly_cased_font_name(name)
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 21 def correctly_cased_font_name(name) merge_external_fonts @font_case_mapping[name.downcase] end
installed_fonts()
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 16 def installed_fonts merge_external_fonts @font_families end
load(family, weight = nil, style = nil)
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 26 def load(family, weight = nil, style = nil) Prawn::SVG::CSS.parse_font_family_string(family).detect do |name| name = name.gsub(/\s{2,}/, ' ').downcase font = Prawn::SVG::Font.new(name, weight, style, font_registry: self) break font if font.installed? end end
Private Instance Methods
merge_external_fonts()
click to toggle source
# File lib/prawn/svg/font_registry.rb, line 37 def merge_external_fonts if @font_case_mapping.nil? self.class.load_external_fonts unless self.class.external_font_families @font_families.merge!(self.class.external_font_families) @font_case_mapping = @font_families.keys.each.with_object({}) do |key, result| result[key.downcase] = key end end end