#!/usr/bin/python3 # Prints tables with all characters supported by LineBlockCharactersDrawer, # one for normal weight and one for bold. first = 0x2500 last = 0x259F cpPerLine = 32 lineFmt = "\033[48;5;243;38;5;231m" def fmtLine(text): return "{}\033[{}X {}\033[49;39m".format(lineFmt, cpPerLine*2+1, text) def fmtCh(text): return "\033[48;5;231;38;5;16m{}{}".format(text, lineFmt) def fmtRefCh(text): return "\033[48;5;252;38;5;16m{}{}".format(text, lineFmt) def setNoWrap(enable): print("\033[?7l" if enable else "\033[?7h", end="") def setBold(enable): print("\033[1m" if enable else "\033[21m", end="") def fmtBold(text): return "\033[1m{}\033[21m".format(text) refChars = [["|", "│┃"], ["_-", "─━"], ["L", "└┗"], ["+", "┼╋"], ["=F", "╒╬"], ["/", "╱"], ["\\", "╲"], ["X", "╳"]] boxes = \ " +-----------+ ************* ,============, ╲\\ ╱/\n" \ " | ┌───────┐ | @ ┏━━━━━━━┓ @ # ╔════════╗ # ╲\\╱/ \n" \ " | │ Light │ | @ ┃ Heavy ┃ @ # ║ Double ║ # ╳X \n" \ " | └───────┘ | @ ┗━━━━━━━┛ @ # ╚════════╝ # ╱/╲\\ \n" \ " +-----------+ ************* \"============\" ╱/ ╲\\\n" \ lines = [] for cp in range(first, last+1): columnId = int((cp - first) % cpPerLine) lineId = int((cp - first) / cpPerLine) if columnId == 0: lines.append([]) lines[lineId].append(chr(cp)) setNoWrap(True) refCharsLine = " ".join(fmtRefCh(rc[0]) + fmtCh(rc[1]) for rc in refChars) print(fmtLine("{:8s} line width reference: {}".format("Normal", refCharsLine))) print(fmtLine("")) for line in lines: print(fmtLine(" ".join(fmtCh(ch) for ch in line))) print(fmtLine("")) print("\n" + boxes) setBold(True) refCharsLine = " ".join(fmtRefCh(rc[0]) + fmtCh(rc[1]) for rc in refChars) print(fmtLine("{:8s} line width reference: {}".format("Bold", refCharsLine))) print(fmtLine("")) for line in lines: print(fmtLine(" ".join(fmtCh(ch) for ch in line))) print(fmtLine("")) print("\n" + boxes) setBold(False) setNoWrap(False)