Class: Bddgenx::FontLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/bddgenx/support/font_loader.rb

Overview

Gerencia o carregamento de fontes TTF para os documentos PDF.

Class Method Summary collapse

Class Method Details

.familiesHash{String => Hash<Symbol, String>}

Cria o hash de famílias de fontes para registro no Prawn

Verifica se os arquivos de fonte DejaVuSansMono incluem normal, bold, italic e bold_italic e têm tamanho mínimo aceitável. Se estiverem ausentes ou corrompidas, retorna hash vazio para usar fallback.

Returns:

  • (Hash{String => Hash<Symbol, String>})
    • Chave: nome da família (‘DejaVuSansMono’)

    • Valor: mapa de estilos (:normal, :bold, :italic, :bold_italic) para os caminhos dos arquivos



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bddgenx/support/font_loader.rb', line 26

def self.families
  base = fonts_path
  return {} unless Dir.exist?(base)

  arquivos = {
    normal:      File.join(base, 'DejaVuSansMono.ttf'),
    bold:        File.join(base, 'DejaVuSansMono-Bold.ttf'),
    italic:      File.join(base, 'DejaVuSansMono-Oblique.ttf'),
    bold_italic: File.join(base, 'DejaVuSansMono-BoldOblique.ttf')
  }

  # Verifica existência e tamanho mínimo de cada arquivo
  if arquivos.values.all? { |path| File.file?(path) && File.size(path) > 12 }
    { 'DejaVuSansMono' => arquivos }
  else
    warn I18n.t('errors.font_fallback', font: base)
    {}
  end
end

.fonts_pathString

Retorna o caminho absoluto para a pasta assets/fonts dentro da gem

Returns:

  • (String)

    Caminho completo para o diretório de fontes



13
14
15
# File 'lib/bddgenx/support/font_loader.rb', line 13

def self.fonts_path
  File.expand_path('../../assets/fonts', __dir__)
end