Instantly share code, notes, and snippets.
Last active
September 1, 2019 16:51
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save erikvanzijst/50b74403c8a2465201c41968dd26081b to your computer and use it in GitHub Desktop.
Linux console fonts to Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# | |
# Compiles a text string into the binary format used by the circuit from | |
# https://www.youtube.com/watch?v=7vDrLuH4eWA | |
import sys | |
from itertools import islice | |
# Generated with psf2python.py | |
charset = {'�': ['-######-', '##----##', '#--##--#', '####--##', '###--###', | |
'########', '###--###', '-######-', '--------'], | |
'π': ['--------', '--------', '-#######', '###--##-', '-##--##-', | |
'-##--##-', '##----##', '--------', '--------'], | |
'≠': ['----##--', '---##---', '######--', '--##----', '######--', | |
'-##-----', '##------', '--------', '--------'], | |
'≤': ['---##---', '--##----', '-##-----', '--##----', '---##---', | |
'--------', '-#####--', '--------', '--------'], | |
'≥': ['-##-----', '--##----', '---##---', '--##----', '-##-----', | |
'--------', '#####---', '--------', '--------'], | |
'■': ['--------', '--------', '--####--', '--####--', '--####--', | |
'--####--', '--------', '--------', '--------'], | |
'◆': ['---#----', '--###---', '-#####--', '#######-', '-#####--', | |
'--###---', '---#----', '--------', '--------'], | |
'¼': ['##----##', '##---##-', '##--##--', '##-##---', '--##-##-', | |
'-##-###-', '##-#-##-', '#-######', '-----##-'], | |
'½': ['##----##', '##---##-', '##--##--', '##-##---', '--##-##-', | |
'-##-#-##', '##---##-', '#---##--', '----####'], | |
'¾': ['###----#', '--##--##', '-##--##-', '--##-#--', '###-#-#-', | |
'--##-##-', '-##-#-#-', '##-#####', '#-----#-'], | |
'¦': ['---##---', '---##---', '---##---', '---##---', '--------', | |
'---##---', '---##---', '---##---', '---##---'], | |
'¨': ['-##-##--', '--------', '--------', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'¸': ['--------', '--------', '--------', '--------', '--------', | |
'--------', '----##--', '-####---', '--------'], | |
'ƒ': ['----###-', '---##-##', '---##---', '--####--', '---##---', | |
'---##---', '##-##---', '-###----', '--------'], | |
'†': ['---##---', '---##---', '-######-', '---##---', '---##---', | |
'---##---', '---##---', '--------', '--------'], | |
'‡': ['---##---', '---##---', '-######-', '---##---', '-######-', | |
'---##---', '---##---', '--------', '--------'], | |
'‰': ['--------', '##--##--', '##-##---', '--##----', '-##-----', | |
'##-##-##', '#--##-##', '--------', '--------'], | |
'™': ['####---#', '-#-##-##', '-#-#-#-#', '-#-#---#', '--------', | |
'--------', '--------', '--------', '--------'], | |
'…': ['--------', '--------', '--------', '--------', '--------', | |
'##-##-##', '##-##-##', '--------', '--------'], | |
'‹': ['--------', '----##--', '---##---', '--##----', '---##---', | |
'----##--', '--------', '--------', '--------'], | |
'›': ['--------', '--##----', '---##---', '----##--', '---##---', | |
'--##----', '--------', '--------', '--------'], | |
'“': ['##--##--', '##--##--', '-##--##-', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'”': ['-##--##-', '-##--##-', '##--##--', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'„': ['--------', '--------', '--------', '--------', '--------', | |
'-##--##-', '-##--##-', '##--##--', '--------'], | |
'⹂': ['--------', '--------', '--------', '--------', '--------', | |
'##--##--', '##--##--', '-##--##-', '--------'], | |
'⹁': ['--------', '--------', '--------', '--------', '--------', | |
'---##---', '---##---', '----##--', '--------'], | |
'Ğ': ['##---##-', '-#####--', '-######-', '##------', '##--###-', | |
'##---##-', '-######-', '--------', '--------'], | |
'ğ': ['##---##-', '-#####--', '--------', '-###-##-', '##--##--', | |
'-#####--', '----##--', '#####---', '--------'], | |
'İ': ['--##----', '--------', '-####---', '--##----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'ı': ['--------', '--------', '-###----', '--##----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'Ş': ['-####---', '##---#--', '-###----', '--###---', '#---##--', | |
'-####---', '----##--', '-####---', '--------'], | |
'ş': ['--------', '-#####--', '##------', '-####---', '----##--', | |
'#####---', '----##--', '-####---', '--------'], | |
' ': ['--------', '--------', '--------', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'!': ['--##----', '-####---', '-####---', '--##----', '--##----', | |
'--------', '--##----', '--------', '--------'], | |
'"': ['-##-##--', '-##-##--', '--#-#---', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'#': ['-##-##--', '-##-##--', '#######-', '-##-##--', '#######-', | |
'-##-##--', '-##-##--', '--------', '--------'], | |
'$': ['---#----', '-#####--', '##-#----', '-#####--', '---#-##-', | |
'-#####--', '---#----', '--------', '--------'], | |
'%': ['--------', '##---##-', '##--##--', '---##---', '--##----', | |
'-##--##-', '##---##-', '--------', '--------'], | |
'&': ['--###---', '-##-##--', '--###---', '-###-##-', '##-###--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
"'": ['---##---', '---##---', '--##----', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'(': ['---##---', '--##----', '-##-----', '-##-----', '-##-----', | |
'--##----', '---##---', '--------', '--------'], | |
')': ['-##-----', '--##----', '---##---', '---##---', '---##---', | |
'--##----', '-##-----', '--------', '--------'], | |
'*': ['--------', '-##-##--', '--###---', '#######-', '--###---', | |
'-##-##--', '--------', '--------', '--------'], | |
'+': ['--------', '--##----', '--##----', '######--', '--##----', | |
'--##----', '--------', '--------', '--------'], | |
',': ['--------', '--------', '--------', '--------', '--------', | |
'---##---', '---##---', '--##----', '--------'], | |
'-': ['--------', '--------', '--------', '######--', '--------', | |
'--------', '--------', '--------', '--------'], | |
'.': ['--------', '--------', '--------', '--------', '--------', | |
'--##----', '--##----', '--------', '--------'], | |
'/': ['-----##-', '----##--', '---##---', '--##----', '-##-----', | |
'##------', '#-------', '--------', '--------'], | |
'0': ['-#####--', '##---##-', '##---##-', '##-#-##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'1': ['--##----', '-###----', '--##----', '--##----', '--##----', | |
'--##----', '######--', '--------', '--------'], | |
'2': ['-####---', '##--##--', '----##--', '--###---', '-##-----', | |
'##--##--', '######--', '--------', '--------'], | |
'3': ['-####---', '##--##--', '----##--', '--###---', '----##--', | |
'##--##--', '-####---', '--------', '--------'], | |
'4': ['---###--', '--####--', '-##-##--', '##--##--', '#######-', | |
'----##--', '---####-', '--------', '--------'], | |
'5': ['######--', '##------', '#####---', '----##--', '----##--', | |
'##--##--', '-####---', '--------', '--------'], | |
'6': ['--###---', '-##-----', '##------', '#####---', '##--##--', | |
'##--##--', '-####---', '--------', '--------'], | |
'7': ['######--', '##--##--', '----##--', '---##---', '--##----', | |
'--##----', '--##----', '--------', '--------'], | |
'8': ['-####---', '##--##--', '##--##--', '-####---', '##--##--', | |
'##--##--', '-####---', '--------', '--------'], | |
'9': ['-####---', '##--##--', '##--##--', '-#####--', '----##--', | |
'---##---', '-###----', '--------', '--------'], | |
':': ['--------', '--##----', '--##----', '--------', '--------', | |
'--##----', '--##----', '--------', '--------'], | |
';': ['--------', '--##----', '--##----', '--------', '--------', | |
'--##----', '--##----', '-##-----', '--------'], | |
'<': ['---##---', '--##----', '-##-----', '##------', '-##-----', | |
'--##----', '---##---', '--------', '--------'], | |
'=': ['--------', '--------', '######--', '--------', '######--', | |
'--------', '--------', '--------', '--------'], | |
'>': ['-##-----', '--##----', '---##---', '----##--', '---##---', | |
'--##----', '-##-----', '--------', '--------'], | |
'?': ['-####---', '##--##--', '----##--', '---##---', '--##----', | |
'--------', '--##----', '--------', '--------'], | |
'@': ['-#####--', '##---##-', '##-####-', '##-####-', '##-###--', | |
'##------', '-####---', '--------', '--------'], | |
'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': ['#######-', '##--##--', '#--##---', '--##----', '-##---#-', | |
'##---##-', '#######-', '--------', '--------'], | |
'[': ['-####---', '-##-----', '-##-----', '-##-----', '-##-----', | |
'-##-----', '-####---', '--------', '--------'], | |
'\\': ['##------', '-##-----', '--##----', '---##---', '----##--', | |
'-----##-', '------#-', '--------', '--------'], | |
']': ['-####---', '---##---', '---##---', '---##---', '---##---', | |
'---##---', '-####---', '--------', '--------'], | |
'^': ['---#----', '--###---', '-##-##--', '##---##-', '--------', | |
'--------', '--------', '--------', '--------'], | |
'_': ['--------', '--------', '--------', '--------', '--------', | |
'--------', '--------', '#######-', '--------'], | |
'`': ['--##----', '--##----', '---##---', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'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': ['--------', '--------', '######--', '#--##---', '--##----', | |
'-##--#--', '######--', '--------', '--------'], | |
'{': ['---###--', '--##----', '--##----', '###-----', '--##----', | |
'--##----', '---###--', '--------', '--------'], | |
'|': ['---##---', '---##---', '---##---', '---##---', '---##---', | |
'---##---', '---##---', '---##---', '--------'], | |
'}': ['###-----', '--##----', '--##----', '---###--', '--##----', | |
'--##----', '###-----', '--------', '--------'], | |
'~': ['-###-##-', '##-###--', '--------', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'•': ['--------', '--------', '---##---', '--####--', '--####--', | |
'---##---', '--------', '--------', '--------'], | |
'À': ['##------', '-##-----', '---###--', '--##-##-', '-##---##', | |
'-#######', '-##---##', '--------', '--------'], | |
'Á': ['------##', '-----##-', '--###---', '-##-##--', '##---##-', | |
'#######-', '##---##-', '--------', '--------'], | |
'Â': ['---#----', '--#-#---', '--------', '-#####--', '##---##-', | |
'#######-', '##---##-', '--------', '--------'], | |
'Ã': ['-###-##-', '##-###--', '--------', '-#####--', '##---##-', | |
'#######-', '##---##-', '--------', '--------'], | |
'Ä': ['-##-##--', '--------', '--###---', '-##-##--', '##---##-', | |
'#######-', '##---##-', '--------', '--------'], | |
'Å': ['--###---', '-##-##--', '--###---', '-##-##--', '##---##-', | |
'#######-', '##---##-', '--------', '--------'], | |
'Æ': ['--######', '-##-##-#', '##--##--', '########', '##--##--', | |
'##--##-#', '##--####', '--------', '--------'], | |
'Ç': ['--####--', '-##--##-', '##------', '##------', '-##--##-', | |
'--####--', '-----##-', '--####--', '--------'], | |
'È': ['-##-----', '--##----', '#######-', '-##---#-', '-####---', | |
'-##---#-', '#######-', '--------', '--------'], | |
'É': ['----##--', '---##---', '#######-', '-##---#-', '-####---', | |
'-##---#-', '#######-', '--------', '--------'], | |
'Ê': ['---#----', '--#-#---', '#######-', '-##---#-', '-####---', | |
'-##---#-', '#######-', '--------', '--------'], | |
'Ë': ['-##-##--', '--------', '#######-', '-##---#-', '-####---', | |
'-##---#-', '#######-', '--------', '--------'], | |
'Ì': ['-##-----', '--##----', '--------', '-####---', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'Í': ['---##---', '--##----', '--------', '-####---', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'Î': ['--#-----', '-#-#----', '--------', '-####---', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'Ï': ['##--##--', '--------', '-####---', '--##----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'Ð': ['#####---', '-##-##--', '-##--##-', '####-##-', '-##--##-', | |
'-##-##--', '#####---', '--------', '--------'], | |
'Ñ': ['-###-##-', '##-###--', '--------', '###--##-', '####-##-', | |
'##-####-', '##--###-', '--------', '--------'], | |
'Ò': ['-##-----', '--##----', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ó': ['----##--', '---##---', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ô': ['---#----', '--#-#---', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Õ': ['-###-##-', '##-###--', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ö': ['-##-##--', '--------', '-#####--', '##---##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'×': ['--------', '--------', '-##-##--', '--###---', '-##-##--', | |
'--------', '--------', '--------', '--------'], | |
'Ø': ['--####-#', '-##--###', '-##-###-', '-######-', '-###-##-', | |
'###--##-', '#-####--', '--------', '--------'], | |
'Ù': ['-##-----', '--##----', '--------', '##---##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ú': ['----##--', '---##---', '--------', '##---##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Û': ['---#----', '--#-#---', '--------', '##---##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ü': ['-##-##--', '--------', '##---##-', '##---##-', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'Ý': ['---##---', '--##----', '##--##--', '##--##--', '-####---', | |
'--##----', '-####---', '--------', '--------'], | |
'Þ': ['####----', '-##-----', '-#####--', '-##--##-', '-#####--', | |
'-##-----', '####----', '--------', '--------'], | |
'ß': ['-####---', '##--##--', '##--##--', '##-##---', '##--##--', | |
'##---##-', '##--##--', '--------', '--------'], | |
'▒': ['#-#-#-#-', '-#-#-#-#', '#-#-#-#-', '-#-#-#-#', '#-#-#-#-', | |
'-#-#-#-#', '#-#-#-#-', '-#-#-#-#', '#-#-#-#-'], | |
'¡': ['--##----', '--------', '--##----', '--##----', '-####---', | |
'-####---', '--##----', '--------', '--------'], | |
'¢': ['--------', '---#----', '-#####--', '##-#-##-', '##-#----', | |
'##-#-##-', '-#####--', '---#----', '--------'], | |
'£': ['--###---', '-##-##--', '-##--#--', '####----', '-##-----', | |
'-##--##-', '######--', '--------', '--------'], | |
'€': ['---####-', '--##---#', '######--', '-##-----', '#####---', | |
'--##--##', '---####-', '--------', '--------'], | |
'¥': ['##--##--', '##--##--', '-####---', '######--', '--##----', | |
'######--', '--##----', '--------', '--------'], | |
'Š': ['--#-#---', '---#----', '-#####--', '##------', '-####---', | |
'----##--', '#####---', '--------', '--------'], | |
'§': ['--#####-', '-##----#', '--####--', '-##--##-', '-##--##-', | |
'--####--', '#----##-', '-#####--', '--------'], | |
'š': ['--#-#---', '---#----', '-#####--', '##------', '-####---', | |
'----##--', '#####---', '--------', '--------'], | |
'©': ['--####--', '-#----#-', '#--##--#', '#-#----#', '#-#----#', | |
'#--##--#', '-#----#-', '--####--', '--------'], | |
'ª': ['--####--', '-##-##--', '-##-##--', '--#####-', '--------', | |
'-######-', '--------', '--------', '--------'], | |
'«': ['--------', '--##--##', '-##--##-', '##--##--', '-##--##-', | |
'--##--##', '--------', '--------', '--------'], | |
'¬': ['--------', '--------', '--------', '######--', '----##--', | |
'----##--', '--------', '--------', '--------'], | |
'¤': ['--------', '-##--##-', '--####--', '-##--##-', '-##--##-', | |
'--####--', '-##--##-', '--------', '--------'], | |
'®': ['--####--', '-#----#-', '#-###--#', '#-#--#-#', '#-###--#', | |
'#-#--#-#', '-#----#-', '--####--', '--------'], | |
'¯': ['-#####--', '--------', '--------', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'°': ['--###---', '-##-##--', '-##-##--', '--###---', '--------', | |
'--------', '--------', '--------', '--------'], | |
'±': ['--##----', '--##----', '######--', '--##----', '--##----', | |
'--------', '######--', '--------', '--------'], | |
'²': ['--###---', '-##-##--', '---##---', '--##----', '-#####--', | |
'--------', '--------', '--------', '--------'], | |
'³': ['-####---', '----##--', '--###---', '----##--', '-####---', | |
'--------', '--------', '--------', '--------'], | |
'Ž': ['-#-#----', '--#-----', '######--', '#--##---', '--##----', | |
'-##--#--', '######--', '--------', '--------'], | |
'µ': ['--------', '--------', '-##--##-', '-##--##-', '-##--##-', | |
'-##--##-', '-####-##', '##------', '--------'], | |
'¶': ['-#######', '##-##-##', '##-##-##', '-####-##', '---##-##', | |
'---##-##', '---##-##', '--------', '--------'], | |
'·': ['--------', '--------', '--------', '--##----', '--##----', | |
'--------', '--------', '--------', '--------'], | |
'ž': ['-#-#----', '--#-----', '######--', '#--##---', '--##----', | |
'-##--#--', '######--', '--------', '--------'], | |
'¹': ['---##---', '--###---', '---##---', '---##---', '--####--', | |
'--------', '--------', '--------', '--------'], | |
'º': ['--###---', '-##-##--', '-##-##--', '--###---', '--------', | |
'-#####--', '--------', '--------', '--------'], | |
'»': ['--------', '##--##--', '-##--##-', '--##--##', '-##--##-', | |
'##--##--', '--------', '--------', '--------'], | |
'Œ': ['-#######', '##--##-#', '##--##--', '##--####', '##--##--', | |
'##--##-#', '-#######', '--------', '--------'], | |
'œ': ['--------', '--------', '-######-', '##-##-##', '##-####-', | |
'##-##---', '-######-', '--------', '--------'], | |
'Ÿ': ['##--##--', '--------', '##--##--', '##--##--', '-####---', | |
'--##----', '-####---', '--------', '--------'], | |
'¿': ['--##----', '--------', '--##----', '-##-----', '##------', | |
'##--##--', '-####---', '--------', '--------'], | |
'─': ['--------', '--------', '--------', '--------', '########', | |
'--------', '--------', '--------', '--------'], | |
'│': ['---##---', '---##---', '---##---', '---##---', '---##---', | |
'---##---', '---##---', '---##---', '---##---'], | |
'┌': ['--------', '--------', '--------', '--------', '---#####', | |
'---##---', '---##---', '---##---', '---##---'], | |
'┐': ['--------', '--------', '--------', '--------', '#####---', | |
'---##---', '---##---', '---##---', '---##---'], | |
'└': ['---##---', '---##---', '---##---', '---##---', '---#####', | |
'--------', '--------', '--------', '--------'], | |
'┘': ['---##---', '---##---', '---##---', '---##---', '#####---', | |
'--------', '--------', '--------', '--------'], | |
'├': ['---##---', '---##---', '---##---', '---##---', '---#####', | |
'---##---', '---##---', '---##---', '---##---'], | |
'┤': ['---##---', '---##---', '---##---', '---##---', '#####---', | |
'---##---', '---##---', '---##---', '---##---'], | |
'┬': ['--------', '--------', '--------', '--------', '########', | |
'---##---', '---##---', '---##---', '---##---'], | |
'┴': ['---##---', '---##---', '---##---', '---##---', '########', | |
'--------', '--------', '--------', '--------'], | |
'┼': ['---##---', '---##---', '---##---', '---##---', '########', | |
'---##---', '---##---', '---##---', '---##---'], | |
'░': ['#---#---', '--#---#-', '#---#---', '--#---#-', '#---#---', | |
'--#---#-', '#---#---', '--#---#-', '#---#---'], | |
'⎺': ['########', '--------', '--------', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'⎻': ['--------', '--------', '########', '--------', '--------', | |
'--------', '--------', '--------', '--------'], | |
'⎼': ['--------', '--------', '--------', '--------', '--------', | |
'--------', '########', '--------', '--------'], | |
'⎽': ['--------', '--------', '--------', '--------', '--------', | |
'--------', '--------', '--------', '########'], | |
'═': ['--------', '--------', '--------', '########', '--------', | |
'########', '--------', '--------', '--------'], | |
'║': ['--##-##-', '--##-##-', '--##-##-', '--##-##-', '--##-##-', | |
'--##-##-', '--##-##-', '--##-##-', '--##-##-'], | |
'╔': ['--------', '--------', '--------', '--######', '--##----', | |
'--##-###', '--##-##-', '--##-##-', '--##-##-'], | |
'╗': ['--------', '--------', '--------', '#######-', '-----##-', | |
'####-##-', '--##-##-', '--##-##-', '--##-##-'], | |
'╚': ['--##-##-', '--##-##-', '--##-##-', '--##-###', '--##----', | |
'--######', '--------', '--------', '--------'], | |
'╝': ['--##-##-', '--##-##-', '--##-##-', '####-##-', '-----##-', | |
'#######-', '--------', '--------', '--------'], | |
'╠': ['--##-##-', '--##-##-', '--##-##-', '--##-###', '--##----', | |
'--##-###', '--##-##-', '--##-##-', '--##-##-'], | |
'╣': ['--##-##-', '--##-##-', '--##-##-', '####-##-', '-----##-', | |
'####-##-', '--##-##-', '--##-##-', '--##-##-'], | |
'╦': ['--------', '--------', '--------', '########', '--------', | |
'####-###', '--##-##-', '--##-##-', '--##-##-'], | |
'╩': ['--##-##-', '--##-##-', '--##-##-', '####-###', '--------', | |
'########', '--------', '--------', '--------'], | |
'╬': ['--##-##-', '--##-##-', '--##-##-', '####-###', '--------', | |
'####-###', '--##-##-', '--##-##-', '--##-##-'], | |
'█': ['########', '########', '########', '########', '########', | |
'########', '########', '########', '########'], | |
'↑': ['---##---', '--####--', '-######-', '---##---', '---##---', | |
'---##---', '---##---', '--------', '--------'], | |
'↓': ['---##---', '---##---', '---##---', '---##---', '-######-', | |
'--####--', '---##---', '--------', '--------'], | |
'←': ['--------', '---##---', '--##----', '-#######', '--##----', | |
'---##---', '--------', '--------', '--------'], | |
'→': ['--------', '---##---', '----##--', '#######-', '----##--', | |
'---##---', '--------', '--------', '--------'], | |
'à': ['-##-----', '--##----', '-####---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'á': ['---##---', '--##----', '-####---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'â': ['---#----', '--#-#---', '-####---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'ã': ['-###-##-', '##-###--', '-####---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'ä': ['-##-##--', '--------', '-####---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'å': ['--###---', '-##-##--', '--###---', '----##--', '-#####--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'æ': ['--------', '--------', '-######-', '---##-##', '-######-', | |
'##-##---', '-##-###-', '--------', '--------'], | |
'ç': ['--------', '-####---', '##--##--', '##------', '##--##--', | |
'-####---', '----##--', '-####---', '--------'], | |
'è': ['-##-----', '--##----', '-####---', '##--##--', '######--', | |
'##------', '-####---', '--------', '--------'], | |
'é': ['---##---', '--##----', '-####---', '##--##--', '######--', | |
'##------', '-####---', '--------', '--------'], | |
'ê': ['---#----', '--#-#---', '-####---', '##--##--', '######--', | |
'##------', '-####---', '--------', '--------'], | |
'ë': ['-##-##--', '--------', '-####---', '##--##--', '######--', | |
'##------', '-####---', '--------', '--------'], | |
'ì': ['-##-----', '--##----', '--------', '-###----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'í': ['---##---', '--##----', '--------', '-###----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'î': ['--#-----', '-#-#----', '--------', '-###----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'ï': ['##-##---', '--------', '-###----', '--##----', '--##----', | |
'--##----', '-####---', '--------', '--------'], | |
'ð': ['--##-#--', '---##---', '--#-##--', '-#####--', '##--##--', | |
'##--##--', '-####---', '--------', '--------'], | |
'ñ': ['-###-##-', '##-###--', '--------', '##-###--', '-##--##-', | |
'-##--##-', '-##--##-', '--------', '--------'], | |
'ò': ['-##-----', '--##----', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'ó': ['----##--', '---##---', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'ô': ['---#----', '--#-#---', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'õ': ['-###-##-', '##-###--', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'ö': ['--------', '-##-##--', '--------', '-#####--', '##---##-', | |
'##---##-', '-#####--', '--------', '--------'], | |
'÷': ['--##----', '--##----', '--------', '######--', '--------', | |
'--##----', '--##----', '--------', '--------'], | |
'ø': ['--------', '--####-#', '-##--##-', '-##-###-', '-###-##-', | |
'-##--##-', '#-####--', '--------', '--------'], | |
'ù': ['-##-----', '--##----', '--------', '##--##--', '##--##--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'ú': ['---##---', '--##----', '--------', '##--##--', '##--##--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'û': ['--#-----', '-#-#----', '--------', '##--##--', '##--##--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'ü': ['##--##--', '--------', '##--##--', '##--##--', '##--##--', | |
'##--##--', '-###-##-', '--------', '--------'], | |
'ý': ['---##---', '--##----', '##--##--', '##--##--', '##--##--', | |
'-#####--', '----##--', '#####---', '--------'], | |
'þ': ['###-----', '-##-----', '-#####--', '-##--##-', '-##--##-', | |
'-#####--', '-##-----', '####----', '--------'], | |
'ÿ': ['##--##--', '--------', '##--##--', '##--##--', '##--##--', | |
'-#####--', '----##--', '#####---', '--------']} | |
def to_bytes(char: str) -> bytes: | |
"""Returns the byte sequence for the specified unicode character.""" | |
ba = bytearray(8) | |
for i, line in enumerate(islice(charset[char], 8)): | |
for j in range(8): | |
ba[j] |= (({'-': 0, '#': 1}[line[j]]) << i) | |
return bytes(ba) | |
for l in ('Hello World! -- ' * 5).splitlines(): | |
for c in l.replace('\n', ' '): | |
sys.stdout.buffer.write(to_bytes(c)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# | |
# Loads ASCII rendering of the Linux 8x9 console font extracted through | |
# psftools and builds a Python dict mapping unicode character to 8x9 ASCII | |
# pattern. | |
# | |
# * https://www.zap.org.au/software/fonts/console-fonts-zap/#download | |
# * https://www.seasip.info/Unix/PSF/ | |
# | |
# $ psf2txt zap-vga09.psf > zap-vga09.txt | |
import re | |
from itertools import islice | |
it = iter(open('zap-vga09.txt')) | |
charset = {} | |
while True: | |
line = next(it, None) | |
if line is None: | |
break | |
elif line.startswith('// Character'): | |
data = [re.match(r'.*([-#]{8}).*', ll).group(1) for ll in islice(it, 9)] | |
code = re.match(r'Unicode: \[\w{4}(\w{4})\];', next(it)).group(1) | |
name = eval("u'\\u%04x'" % int(code, 16)) | |
charset[name] = data | |
print(charset) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment