Module: PixelFontTrieOCR::FontMetadata

Included in:
PixelFontTrieOCR
Defined in:
lib/pixel_font_trie_ocr/font_metadata.rb

Constant Summary collapse

DEFAULT_FONT_NAME =
"hex-synergy_font.ttf"

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#font_nameObject



10
11
12
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 10

def font_name
  @font_name ||= DEFAULT_FONT_NAME
end

#font_sizeObject



26
27
28
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 26

def font_size
  @font_size ||= 8
end

Instance Method Details

#alphanumericObject



98
99
100
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 98

def alphanumeric
  @alphanumeric ||= uppercase | lowercase | digits
end

#ascentObject



66
67
68
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 66

def ascent
  @ascent ||= font.os2.ascent
end

#ascent_ratioObject



78
79
80
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 78

def ascent_ratio
  @ascent_ratio ||= ascent / units_per_em.to_f
end

#character_countObject



62
63
64
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 62

def character_count
  @character_count ||= characters.size
end

#charactersObject



42
43
44
45
46
47
48
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 42

def characters
  @characters ||= Set.new(
    code_map.filter_map do |key, value|
      value.positive? && key > 31 && [key].pack("U")
    end
  )
end

#code_mapObject



38
39
40
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 38

def code_map
  @code_map ||= font_map.respond_to?(:code_map) ? font_map.code_map : {}
end

#descentObject



70
71
72
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 70

def descent
  @descent ||= font.os2.descent
end

#digitsObject



94
95
96
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 94

def digits
  @digits ||= Set.new("0".."9")
end

#familyObject



50
51
52
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 50

def family
  @family ||= font.name.font_name
end

#fontObject



30
31
32
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 30

def font
  @font ||= TTFunk::File.open(font_path)
end

#font_dirObject



18
19
20
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 18

def font_dir
  @font_dir ||= Pathname.new(__dir__).join("fonts")
end

#font_dir=(value) ⇒ Object



14
15
16
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 14

def font_dir=(value)
  @font_dir = Pathname.new(value)
end

#font_mapObject



34
35
36
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 34

def font_map
  @font_map ||= font.cmap.unicode.first
end

#font_pathObject



22
23
24
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 22

def font_path
  @font_path ||= font_dir.join(font_name).to_s
end

#heightObject



82
83
84
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 82

def height
  @height ||= (ascent_ratio * font_size).ceil
end

#lowercaseObject



90
91
92
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 90

def lowercase
  @lowercase ||= Set.new("a".."z")
end

#postscript_nameObject



58
59
60
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 58

def postscript_name
  @postscript_name ||= font.name.postscript_name
end

#subfamilyObject



54
55
56
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 54

def subfamily
  @subfamily ||= font.name.font_subfamily
end

#symbolsObject



106
107
108
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 106

def symbols
  @symbols ||= characters - alphanumeric - whitespace
end

#units_per_emObject



74
75
76
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 74

def units_per_em
  @units_per_em ||= font.header.units_per_em
end

#uppercaseObject



86
87
88
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 86

def uppercase
  @uppercase ||= Set.new("A".."Z")
end

#whitespaceObject



102
103
104
# File 'lib/pixel_font_trie_ocr/font_metadata.rb', line 102

def whitespace
  Set.new([" ", "\r", "\n", "\t"])
end