From e618ef401fb53dc00fe55634daa89cc26edde138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andy=20Teijelo=20P=C3=A9rez?= Date: Thu, 15 Sep 2016 10:57:58 -0400 Subject: [PATCH] Writing the Makefile... --- Makefile | 25 ++++++++++++++++++++++++ msx2utf8.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 Makefile create mode 100755 msx2utf8.py diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3c10b3e --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +all: MSX-Screen0.woff MSX-Screen0.ttf MSX-Screen1.woff MSX-Screen1.ttf + +pngs: characters.png + mkdir -p pngs + gm convert -crop 8x8 characters.png +adjoin pngs/%03d.png + touch pngs + +narrow-svgs: pngs + mkdir -p narrow-svgs + for i in pngs/???.png ;\ + do \ + f=$$(basename "$$i") ;\ + gm convert "$$i" -crop 6x8 -filter Point -resize 48x64 -black-threshold 50%% "$$f.bmp" ;\ + potrace "$$f.bmp" -o narrow-svgs/"$${f%%.png}.svg" -i -a 1.01 -s -z black ;\ + rm -f "$$f.bmp" ;\ + done + touch narrow-svgs + +MSX-Screen0.woff: msx-screen0.sfd + +MSX-Screen0.ttf: msx-screen0.sfd + +MSX-Screen1.woff: msx-screen1.sfd + +MSX-Screen1.ttf: msx-screen1.sfd diff --git a/msx2utf8.py b/msx2utf8.py new file mode 100755 index 0000000..fea7455 --- /dev/null +++ b/msx2utf8.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +# -*- coding: utf8 -*- + +import sys +from unicodedata import name + +chars = (r""" !"#$%&'()*+,-./0123456789:;<=>?""" + + r"""@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_""" + + r"""`abcdefghijklmnopqrstuvwxyz{|}~ """ + + r"""ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒ""" + + r"""áíóúñѪº¿⌐¬½¼¡«»ÃãĨĩÕõŨũIJij¾∽◇‰¶§""" + + r"""▂▚▆▔◾▇▎▞▊▕▉▨▧▼▲▶◀⧗⧓▘▗▝▖▒Δǂω█▄▌▐▀""" + + r"""αβΓπΣσμτΦθΩδ∞φ∈∩≡±≥≤⌠⌡÷≈°∙‐√ⁿ²◾■""" + + r""" ☺☻♥♦♣♠·◘○◙♂♀♪♬☼╂┻┳┫┣╋┃━┏┓┗┛╳╱╲┿""") + +def msxchars(): + """ + yields tuples in the form (msx code, unicode character) + """ + for i in range(32): + yield (i, chr(i)) + for i in range(32,256): + if i == 127: + yield (i, chr(i)) + else: + yield (i, chars[i - 32]) + for i in range(65,96): + yield (256 + i, chars[160 + i]) + +charmap = {} + +for m,c in msxchars(): + charmap[m] = c + +if len(sys.argv) < 2: + while True: + b = sys.stdin.buffer.read(1) + if len(b) == 0: + break + code = b[0] + if code == 1: + c = sys.stdin.buffer.read(1) + if len(b) == 0: + sys.stdout.write('\x01') + break + code = 256 + c[0] + char = charmap[code] + sys.stdout.write(char) + +if sys.argv[1] == '-l': + for m,c in msxchars(): + try: + n = name(c) + except ValueError: + n = "" + print(m,ord(c),c,n)