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