Module: Dopairb::Font
- Defined in:
- lib/dopairb/font.rb
Overview
5-row bitmap font for the big banners.
Constant Summary collapse
- HEIGHT =
5- RAW =
{ "A" => [" ### ", "# #", "#####", "# #", "# #"], "B" => ["#### ", "# #", "#### ", "# #", "#### "], "C" => [" ####", "# ", "# ", "# ", " ####"], "D" => ["#### ", "# #", "# #", "# #", "#### "], "E" => ["#####", "# ", "#### ", "# ", "#####"], "F" => ["#####", "# ", "#### ", "# ", "# "], "G" => [" ####", "# ", "# ##", "# #", " ####"], "H" => ["# #", "# #", "#####", "# #", "# #"], "I" => ["###", " # ", " # ", " # ", "###"], "J" => [" ###", " # ", " # ", "# # ", " ## "], "K" => ["# #", "# # ", "### ", "# # ", "# #"], "L" => ["# ", "# ", "# ", "# ", "#####"], "M" => ["# #", "## ##", "# # #", "# #", "# #"], "N" => ["# #", "## #", "# # #", "# ##", "# #"], "O" => [" ### ", "# #", "# #", "# #", " ### "], "P" => ["#### ", "# #", "#### ", "# ", "# "], "Q" => [" ### ", "# #", "# # #", "# # ", " ## #"], "R" => ["#### ", "# #", "#### ", "# # ", "# #"], "S" => [" ####", "# ", " ### ", " #", "#### "], "T" => ["#####", " # ", " # ", " # ", " # "], "U" => ["# #", "# #", "# #", "# #", " ### "], "V" => ["# #", "# #", "# #", " # # ", " # "], "W" => ["# #", "# #", "# # #", "## ##", "# #"], "X" => ["# #", " # # ", " # ", " # # ", "# #"], "Y" => ["# #", " # # ", " # ", " # ", " # "], "Z" => ["#####", " # ", " # ", " # ", "#####"], "0" => [" ### ", "# ##", "# # #", "## #", " ### "], "1" => [" # ", "## ", " # ", " # ", "###"], "2" => ["#### ", " #", " ### ", "# ", "#####"], "3" => ["#### ", " #", " ### ", " #", "#### "], "4" => ["# #", "# #", "#####", " #", " #"], "5" => ["#####", "# ", "#### ", " #", "#### "], "6" => [" ### ", "# ", "#### ", "# #", " ### "], "7" => ["#####", " #", " # ", " # ", " # "], "8" => [" ### ", "# #", " ### ", "# #", " ### "], "9" => [" ### ", "# #", " ####", " #", " ### "], "!" => ["#", "#", "#", " ", "#"], "?" => ["### ", " #", " ## ", " ", " # "], "." => [" ", " ", " ", " ", "#"], "," => [" ", " ", " ", " #", "# "], ":" => [" ", "#", " ", "#", " "], "'" => ["#", "#", " ", " ", " "], "+" => [" ", " # ", "#####", " # ", " "], "-" => [" ", " ", "####", " ", " "], "=" => [" ", "####", " ", "####", " "], "x" => [" ", "# #", " # ", "# #", " "], "/" => [" #", " # ", " # ", " # ", "# "], ">" => ["# ", " # ", " # ", " # ", "# "], "<" => [" #", " # ", " # ", " # ", " #"], "^" => [" # ", "# #", " ", " ", " "], "#" => [" # # ", "#####", " # # ", "#####", " # # "], "%" => ["# #", " # ", " # ", " # ", "# #"], "*" => [" ", "# # #", " ### ", "# # #", " "], " " => [" ", " ", " ", " ", " "], }.freeze
- GLYPHS =
RAW.transform_values { |rows| rows.map { |r| r.chars.map { |c| c == "#" } }.freeze }.freeze
Class Method Summary collapse
-
.bitmap(text, spacing: 1) ⇒ Object
=> array of HEIGHT rows, each an array of booleans.
- .glyph(ch) ⇒ Object
- .width(text, scale: 1, spacing: 1) ⇒ Object
Class Method Details
.bitmap(text, spacing: 1) ⇒ Object
=> array of HEIGHT rows, each an array of booleans
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/dopairb/font.rb', line 74 def bitmap(text, spacing: 1) rows = Array.new(HEIGHT) { [] } text.each_char.with_index do |ch, i| g = glyph(ch) HEIGHT.times do |y| rows[y].concat([false] * spacing) if i > 0 rows[y].concat(g[y]) end end rows end |
.glyph(ch) ⇒ Object
69 70 71 |
# File 'lib/dopairb/font.rb', line 69 def glyph(ch) GLYPHS[ch] || GLYPHS[ch.upcase] || GLYPHS["?"] end |
.width(text, scale: 1, spacing: 1) ⇒ Object
86 87 88 89 |
# File 'lib/dopairb/font.rb', line 86 def width(text, scale: 1, spacing: 1) return 0 if text.empty? (text.each_char.sum { |c| glyph(c)[0].size } + spacing * (text.size - 1)) * scale end |