Class: Shellfie::FontResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/shellfie/font_resolver.rb

Constant Summary collapse

FONT_FILES =
{
  "Monaco" => "/System/Library/Fonts/Monaco.ttf",
  "SF Mono" => "/System/Library/Fonts/SFNSMono.ttf",
  "SF Mono Italic" => "/System/Library/Fonts/SFNSMonoItalic.ttf",
  "Menlo" => "/System/Library/Fonts/Menlo.ttc",
  "Courier" => "/System/Library/Fonts/Courier.ttc",
  "Courier New" => "/System/Library/Fonts/Supplemental/Courier New.ttf",
  "DejaVu-Sans-Mono" => "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf",
  "DejaVu Sans Mono" => "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf"
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(command_provider) ⇒ FontResolver

Returns a new instance of FontResolver.



16
17
18
# File 'lib/shellfie/font_resolver.rb', line 16

def initialize(command_provider)
  @command_provider = command_provider
end

Instance Method Details

#resolve(font_config, italic:) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/shellfie/font_resolver.rb', line 20

def resolve(font_config, italic:)
  candidates = []
  candidates << font_config[:italic_family] if italic
  candidates << font_config[:family]
  candidates << font_config[:fallback_family]
  candidates << font_config[:emoji_family]
  candidates << "Menlo"
  candidates << "DejaVu-Sans-Mono"
  candidates << "Courier"

  candidates.compact.flat_map { |candidate| font_candidates(candidate.to_s) }
            .find { |candidate| font_available?(candidate) }
end