| # Lint as: python2, python3 |
| # Copyright 2016 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ASCII font table for LCM display.""" |
| |
| from __future__ import absolute_import |
| from __future__ import division |
| from __future__ import print_function |
| import copy |
| from six.moves import range |
| |
| FONT_WIDTH = 8 |
| FONT_HEIGHT = 16 |
| FONT_PAGES = FONT_HEIGHT / 8 |
| |
| # Customized symbols (overwrite extended ASCII codes) |
| CURSOR = '\x80\x81' |
| SMILE = '\x82\x83' |
| ARROW_UP = '\x84' |
| ARROW_DOWN = '\x85' |
| ARROW_LEFT = '\x86' |
| ARROW_RIGHT = '\x87' |
| |
| FONT_BITMAP = { |
| # Standard ASCII characters |
| '\x20': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # Space |
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], |
| '\x21': [0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, # ! |
| 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00], |
| '\x22': [0x00, 0x00, 0xf0, 0x30, 0x00, 0xf0, 0x30, 0x00, # " |
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], |
| '\x23': [0x00, 0x40, 0xe0, 0x58, 0x40, 0xe0, 0x58, 0x00, # # |
| 0x00, 0x1a, 0x07, 0x02, 0x1a, 0x07, 0x02, 0x00], |
| '\x24': [0x00, 0x00, 0x60, 0x90, 0x98, 0x30, 0x00, 0x00, # $ |
| 0x00, 0x00, 0x06, 0x04, 0x1c, 0x03, 0x00, 0x00], |
| '\x25': [0x00, 0x20, 0x50, 0x20, 0x80, 0x80, 0x00, 0x00, # % |
| 0x00, 0x01, 0x01, 0x05, 0x0a, 0x04, 0x00, 0x00], |
| '\x26': [0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x00, # & |
| 0x00, 0x00, 0x06, 0x09, 0x0b, 0x0c, 0x0a, 0x00], |
| '\x27': [0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, # ' |
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], |
| '\x28': [0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, # ( |
| 0x00, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00], |
| '\x29': [0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, # ) |
| 0x00, 0x00, 0x30, 0x0f, 0x00, 0x00, 0x00, 0x00], |
| '\x2a': [0x00, 0x00, 0x20, 0xa0, 0x70, 0xa0, 0x20, 0x00, # * |
| 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00], |
| '\x2b': [0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, # + |
| 0x00, 0x01, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01], |
| '\x2c': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # , |
| 0x00, 0x00, 0x30, 0x1c, 0x04, 0x00, 0x00, 0x00], |
| '\x2d': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # - |
| 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00], |
| '\x2e': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # . |
| 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00], |
| '\x2f': [0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00, # / |
| 0x00, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00], |
| '\x30': [0x00, 0xe0, 0x10, 0x10, 0x10, 0x10, 0xe0, 0x00, # 0 |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x31': [0x00, 0x00, 0x20, 0x20, 0xf0, 0x00, 0x00, 0x00, # 1 |
| 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00], |
| '\x32': [0x00, 0x20, 0x10, 0x10, 0x90, 0x60, 0x00, 0x00, # 2 |
| 0x00, 0x0c, 0x0a, 0x09, 0x08, 0x0c, 0x00, 0x00], |
| '\x33': [0x00, 0x20, 0x10, 0x90, 0x90, 0x60, 0x00, 0x00, # 3 |
| 0x00, 0x04, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00], |
| '\x34': [0x00, 0x00, 0xc0, 0x20, 0x10, 0xf0, 0x00, 0x00, # 4 |
| 0x00, 0x01, 0x01, 0x01, 0x09, 0x0f, 0x09, 0x00], |
| '\x35': [0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, 0x10, 0x00, # 5 |
| 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x36': [0x00, 0x00, 0xc0, 0xa0, 0x90, 0x90, 0x10, 0x00, # 6 |
| 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x37': [0x00, 0x30, 0x10, 0x10, 0x10, 0x90, 0x70, 0x00, # 7 |
| 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00], |
| '\x38': [0x00, 0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, # 8 |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x39': [0x00, 0xe0, 0x10, 0x10, 0x10, 0x10, 0xe0, 0x00, # 9 |
| 0x00, 0x08, 0x09, 0x09, 0x09, 0x05, 0x03, 0x00], |
| '\x3a': [0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, # : |
| 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00], |
| '\x3b': [0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, # ; |
| 0x00, 0x00, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00], |
| '\x3c': [0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x00, # < |
| 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x00], |
| '\x3d': [0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, # = |
| 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00], |
| '\x3e': [0x00, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, # > |
| 0x00, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00], |
| '\x3f': [0x00, 0x00, 0x20, 0x10, 0x10, 0x10, 0xe0, 0x00, # ? |
| 0x00, 0x00, 0x00, 0x08, 0x0a, 0x01, 0x00, 0x00], |
| '\x40': [0x00, 0xf0, 0x08, 0x88, 0x48, 0xf0, 0x00, 0x00, # @ |
| 0x00, 0x0f, 0x10, 0x11, 0x12, 0x0b, 0x00, 0x00], |
| '\x41': [0x00, 0x00, 0x00, 0xd0, 0x30, 0xc0, 0x00, 0x00, # A |
| 0x00, 0x08, 0x0c, 0x0b, 0x02, 0x0b, 0x0c, 0x08], |
| '\x42': [0x00, 0x10, 0xf0, 0x90, 0x90, 0x90, 0x60, 0x00, # B |
| 0x00, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x43': [0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x30, 0x00, # C |
| 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x00], |
| '\x44': [0x00, 0x10, 0xf0, 0x10, 0x10, 0x20, 0xc0, 0x00, # D |
| 0x00, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x03, 0x00], |
| '\x45': [0x00, 0x10, 0xf0, 0x90, 0xd0, 0x10, 0x30, 0x00, # E |
| 0x00, 0x08, 0x0f, 0x08, 0x09, 0x08, 0x0c, 0x00], |
| '\x46': [0x00, 0x10, 0xf0, 0x90, 0xd0, 0x10, 0x30, 0x00, # F |
| 0x00, 0x08, 0x0f, 0x08, 0x01, 0x00, 0x00, 0x00], |
| '\x47': [0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x30, 0x00, # G |
| 0x00, 0x03, 0x04, 0x08, 0x08, 0x09, 0x07, 0x01], |
| '\x48': [0x00, 0x10, 0xf0, 0x90, 0x80, 0x90, 0xf0, 0x10, # H |
| 0x00, 0x08, 0x0f, 0x08, 0x00, 0x08, 0x0f, 0x08], |
| '\x49': [0x00, 0x00, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x00, # I |
| 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00], |
| '\x4a': [0x00, 0x00, 0x00, 0x10, 0x10, 0xf0, 0x10, 0x00, # J |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00], |
| '\x4b': [0x00, 0x10, 0xf0, 0x10, 0x80, 0x50, 0x30, 0x10, # K |
| 0x00, 0x08, 0x0f, 0x09, 0x01, 0x02, 0x0c, 0x08], |
| '\x4c': [0x00, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, # L |
| 0x00, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x0e, 0x00], |
| '\x4d': [0x00, 0x10, 0xf0, 0x70, 0x80, 0x70, 0xf0, 0x10, # M |
| 0x00, 0x08, 0x0f, 0x08, 0x01, 0x08, 0x0f, 0x08], |
| '\x4e': [0x10, 0xf0, 0x30, 0xc0, 0x00, 0x10, 0xf0, 0x10, # N |
| 0x08, 0x0f, 0x08, 0x00, 0x03, 0x0c, 0x0f, 0x00], |
| '\x4f': [0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x20, 0xc0, # O |
| 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03], |
| '\x50': [0x00, 0x10, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, # P |
| 0x00, 0x08, 0x0f, 0x09, 0x01, 0x01, 0x00, 0x00], |
| '\x51': [0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x20, 0xc0, # Q |
| 0x00, 0x03, 0x04, 0x18, 0x18, 0x18, 0x14, 0x13], |
| '\x52': [0x00, 0x10, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, # R |
| 0x00, 0x08, 0x0f, 0x09, 0x01, 0x03, 0x04, 0x08], |
| '\x53': [0x00, 0x60, 0x90, 0x90, 0x90, 0xa0, 0x30, 0x00, # S |
| 0x00, 0x0c, 0x04, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x54': [0x00, 0x30, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x30, # T |
| 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00], |
| '\x55': [0x00, 0x10, 0xf0, 0x10, 0x00, 0x10, 0xf0, 0x10, # U |
| 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x56': [0x10, 0x70, 0x90, 0x00, 0x00, 0x90, 0x70, 0x10, # V |
| 0x00, 0x00, 0x03, 0x0c, 0x0c, 0x03, 0x00, 0x00], |
| '\x57': [0x00, 0x10, 0xf0, 0x10, 0x80, 0x10, 0xf0, 0x10, # W |
| 0x00, 0x00, 0x07, 0x08, 0x07, 0x08, 0x07, 0x00], |
| '\x58': [0x00, 0x10, 0x30, 0x50, 0x80, 0x50, 0x30, 0x10, # X |
| 0x00, 0x08, 0x0c, 0x0a, 0x01, 0x0a, 0x0c, 0x08], |
| '\x59': [0x00, 0x10, 0x30, 0xd0, 0x00, 0xd0, 0x30, 0x10, # Y |
| 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00], |
| '\x5a': [0x00, 0x00, 0x30, 0x10, 0x90, 0x50, 0x30, 0x00, # Z |
| 0x00, 0x00, 0x0c, 0x0a, 0x09, 0x08, 0x0c, 0x00], |
| '\x5b': [0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x00, 0x00, # [ |
| 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x00, 0x00], |
| '\x5c': [0x00, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, # \ |
| 0x00, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00], |
| '\x5d': [0x00, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, # ] |
| 0x00, 0x20, 0x20, 0x3f, 0x00, 0x00, 0x00, 0x00], |
| '\x5e': [0x00, 0x40, 0x20, 0x18, 0x20, 0x40, 0x00, 0x00, # ^ |
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], |
| '\x5f': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # _ |
| 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80], |
| '\x60': [0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, # ` |
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], |
| '\x61': [0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, # a |
| 0x00, 0x06, 0x09, 0x09, 0x09, 0x05, 0x0f, 0x08], |
| '\x62': [0x10, 0xf0, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, # b |
| 0x08, 0x0f, 0x04, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x63': [0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0xc0, 0x00, # c |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00], |
| '\x64': [0x00, 0x80, 0x40, 0x40, 0x40, 0x90, 0xf0, 0x00, # d |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x04, 0x0f, 0x08], |
| '\x65': [0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, # e |
| 0x00, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00], |
| '\x66': [0x00, 0x40, 0x40, 0xe0, 0x50, 0x50, 0x50, 0x00, # f |
| 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00], |
| '\x67': [0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0xc0, 0x40, # g |
| 0x00, 0x07, 0x28, 0x28, 0x28, 0x24, 0x1f, 0x00], |
| '\x68': [0x00, 0x10, 0xf0, 0x80, 0x40, 0x40, 0x80, 0x00, # h |
| 0x00, 0x08, 0x0f, 0x08, 0x00, 0x08, 0x0f, 0x08], |
| '\x69': [0x00, 0x00, 0x40, 0x40, 0xd0, 0x00, 0x00, 0x00, # i |
| 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00], |
| '\x6a': [0x00, 0x00, 0x40, 0x40, 0x50, 0xc0, 0x00, 0x00, # j |
| 0x00, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00], |
| '\x6b': [0x00, 0x10, 0xf0, 0x00, 0x40, 0xc0, 0x40, 0x40, # k |
| 0x00, 0x08, 0x0f, 0x01, 0x03, 0x0c, 0x08, 0x08], |
| '\x6c': [0x00, 0x00, 0x00, 0x10, 0xf0, 0x00, 0x00, 0x00, # l |
| 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00], |
| '\x6d': [0x40, 0xc0, 0x80, 0x40, 0x80, 0x80, 0x40, 0x80, # m |
| 0x08, 0x0f, 0x08, 0x00, 0x0f, 0x08, 0x00, 0x0f], |
| '\x6e': [0x00, 0x40, 0xc0, 0x80, 0x40, 0x40, 0x80, 0x00, # n |
| 0x00, 0x08, 0x0f, 0x08, 0x00, 0x08, 0x0f, 0x08], |
| '\x6f': [0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, # o |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00], |
| '\x70': [0x00, 0x40, 0xc0, 0x80, 0x40, 0x40, 0x80, 0x00, # p |
| 0x00, 0x20, 0x3f, 0x28, 0x08, 0x08, 0x07, 0x00], |
| '\x71': [0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0xc0, 0x40, # q |
| 0x00, 0x07, 0x08, 0x08, 0x08, 0x24, 0x3f, 0x20], |
| '\x72': [0x00, 0x40, 0xc0, 0x80, 0x40, 0x40, 0x40, 0x00, # r |
| 0x00, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00], |
| '\x73': [0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, # s |
| 0x00, 0x0c, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00], |
| '\x74': [0x00, 0x40, 0xe0, 0x40, 0x40, 0x40, 0x00, 0x00, # t |
| 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x04, 0x00], |
| '\x75': [0x00, 0x40, 0xc0, 0x00, 0x00, 0x40, 0xc0, 0x00, # u |
| 0x00, 0x00, 0x07, 0x08, 0x08, 0x04, 0x0f, 0x08], |
| '\x76': [0x40, 0xc0, 0x40, 0x00, 0x00, 0x40, 0xc0, 0x40, # v |
| 0x00, 0x00, 0x03, 0x0c, 0x0c, 0x03, 0x00, 0x00], |
| '\x77': [0x00, 0x40, 0xc0, 0x40, 0x00, 0x40, 0xc0, 0x40, # w |
| 0x00, 0x00, 0x07, 0x08, 0x07, 0x08, 0x07, 0x00], |
| '\x78': [0x00, 0x40, 0xc0, 0x00, 0x00, 0xc0, 0x40, 0x00, # x |
| 0x00, 0x08, 0x0c, 0x03, 0x03, 0x0c, 0x08, 0x00], |
| '\x79': [0x00, 0x40, 0xc0, 0x40, 0x00, 0x40, 0xc0, 0x40, # y |
| 0x00, 0x00, 0x21, 0x26, 0x38, 0x06, 0x01, 0x00], |
| '\x7a': [0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x40, 0x00, # z |
| 0x00, 0x00, 0x0c, 0x0a, 0x09, 0x08, 0x0c, 0x00], |
| '\x7b': [0x00, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00, # { |
| 0x00, 0x00, 0x01, 0x0e, 0x10, 0x00, 0x00, 0x00], |
| '\x7c': [0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, # | |
| 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00], |
| '\x7d': [0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, # } |
| 0x00, 0x00, 0x10, 0x0e, 0x01, 0x00, 0x00, 0x00], |
| '\x7e': [0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, # ~ |
| 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00], |
| '\x7f': [0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, # DEL |
| 0x1f, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00], |
| # Customized symbols |
| CURSOR[0]: [0x00, 0x00, 0xfe, 0x7c, 0xfc, 0xf8, 0xf8, 0xf0, |
| 0x00, 0x00, 0x7f, 0x20, 0x30, 0x10, 0x19, 0x0f], |
| CURSOR[1]: [0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, |
| 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00], |
| SMILE[0]: [0x00, 0xc0, 0x30, 0x08, 0x04, 0xf4, 0x02, 0x02, |
| 0x00, 0x03, 0x0c, 0x12, 0x24, 0x28, 0x48, 0x48], |
| SMILE[1]: [0x02, 0x02, 0xf4, 0x04, 0x08, 0x30, 0xc0, 0x00, |
| 0x48, 0x48, 0x28, 0x24, 0x12, 0x0c, 0x03, 0x00], |
| ARROW_UP: [0x00, 0x00, 0xc0, 0xf0, 0xf0, 0xc0, 0x00, 0x00, |
| 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00], |
| ARROW_DOWN: [0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, |
| 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, 0x00], |
| ARROW_LEFT: [0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xf0, 0x00, |
| 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0f, 0x00], |
| ARROW_RIGHT: [0x00, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, |
| 0x00, 0x0f, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00] |
| } |
| |
| |
| def GetFont(char): |
| """Gets font bitmap for input character. |
| |
| Args: |
| char: The character |
| |
| Returns: |
| A list of bytes for font bitmap. Return all-zero if input char is not |
| supported in font table. |
| """ |
| try: |
| return FONT_BITMAP[char] |
| except KeyError: |
| return [0x00] * 16 |
| |
| |
| def GetUnderlineFont(char): |
| """Gets font bitmap with underline for input character. |
| |
| Args: |
| char: The character |
| |
| Returns: |
| A list of bytes for font bitmap. |
| """ |
| bitmap = copy.deepcopy(GetFont(char)) |
| for byte in range(8, 16): |
| bitmap[byte] |= 0x40 |
| return bitmap |
| |
| |
| def GetHighlightFont(char): |
| """Gets font bitmap with highlight for input character. |
| |
| Args: |
| char: The character |
| |
| Returns: |
| A list of bytes for font bitmap. |
| """ |
| bitmap = copy.deepcopy(GetFont(char)) |
| for byte in range(16): |
| bitmap[byte] ^= 0xff |
| return bitmap |