if line[-1] == '\n': line = line[:-1] if len(line) > 16: raise Exception(f'Line {line_index} in font file ' + f'{filename} has more than 16 chars: "{line}"') font += line.ljust(16) file.close() if line_index != 16: raise Exception(f'Font file {filename} has less than ' + '16 lines') return font set_font(get_font()) npress = ( 999, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 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 { | } ~ ⊢ 𝐢 𝐞 × ⏨ ∞ ° ʳ ᵍ ∠ x̅ y̅ x̂ ŷ → Π ⇒ ₓ ⏨ ⏨̄ ⌟ ≤ ≠ ≥ ⇩ √ ∫ ᴀ ʙ ᴄ ₙ ▶ ◀ ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁻¹ ˣ ¹⁰ ₍ ₎ ± ₀ ₁ ₂ ₋₁ ꜰ ɴ ᴘ µ 𝐀 𝐁 𝐂 𝐃 𝐄 𝐅 𝐏 ▷ Σ α γ ε θ λ μ π σ ϕ ℓ ℏ █ ⎕ ₃ ▂ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '''.split() font[0]=font[0x20]=' ' assert '⁻¹'==font[0xAA] assert len(font)==0x100,len(font) set_font(font) # NOTE: may be incorrect npress=( 999,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,100,100,100, 100,102,100,100,100,2 ,100,100,1 ,1 ,100,1 ,1 ,1 ,1 ,100, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,100,100,100,100,100,100, 100,2 ,2 ,2 ,2 ,2 ,2 ,100,100,100,100,100,100,100,1 ,1 , 100,100,100,100,2 ,100,100,2 ,2 ,2 ,100,100,1 ,100,1 ,100, 1 ,100,100,2 ,100,4 ,4 ,100,1 ,100,100,100,2 ,2 ,100,100, 2 ,2 ,2 ,2 ,1 ,1 ,2 ,1 ,100,100,100,100,100,100,100,100, 100,2 ,2 ,100,100,3 ,3 ,3 ,100,4 ,4 ,1 ,2 ,100,100,100, 2 ,2 ,2 ,2 ,100,100,100,100,1 ,100,4 ,4 ,100,4 ,100,2 , 1 ,1 ,1 ,1 ,100,100,100,100,2 ,100,4 ,4 ,4 ,4 ,1 ,100,
p q r s t u v w x y z { | } ~ ⊢ 𝐢 𝐞 x ⏨ ∞ ° ʳ ᵍ ∠ x̅ y̅ x̂ ŷ → ∏ ⇒ ₓ ⏨ ⏨̄ ⌟ ≤ ≠ ≥ ⇩ √ ∫ ᴀ ʙ ᴄ ₙ ▶ ◀ ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁻¹ ˣ ¹⁰ ₍ ₎ ± ₀ ₁ ₂ ₋₁ ꜰ ɴ ᴘ µ 𝐀 𝐁 𝐂 𝐃 𝐄 𝐅 𝐏 ▷ Σ α γ ε θ λ μ π σ ϕ ℓ ℏ █ ⎕ ₃ ▂ 𝐟 𝐩 𝐧 𝛍 𝐦 𝐤 𝐌 𝐆 𝐓 𝐏 𝐄 𝑭 ₚ ₑ ᴊ ᴋ τ ᵤ ₉ Å ₘ ɪ ₄ '''.strip('\n').split('\n') ] assert len(FONT) == 16 # TODO wrong assert all(len(l) >= 16 for l in FONT) FONT = [*itertools.chain.from_iterable(l[:16] for l in FONT)] set_font(FONT) npress = ( # 99: nul, 49: not typeable, 24: can be extracted from multibyte characters # 30: box 99, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,