This is an automated email generated because a ref change occurred in the git repository for project gfxprim.git.
The branch, master has been updated via da4d05501970c57531ab9243239873c733993690 (commit) via 7d4836a776c798bab9ba8cb8a367c12d07d98ae7 (commit) from edf5e7cc9c3fece148b15f59939164d9017de42f (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit da4d05501970c57531ab9243239873c733993690 Author: Cyril Hrubis metan@ucw.cz Date: Sat, 23 Sep 2017 10:51:05 +0200 URL: http://repo.or.cz/gfxprim.git/da4d05501970c575
demos: Add termini libvterm based terminal
Signed-off-by: Cyril Hrubis metan@ucw.cz --- configure | 3 + demos/Makefile | 4 + demos/termini/.gitignore | 1 + demos/termini/Makefile | 17 ++ demos/termini/runtest.sh | 9 + demos/termini/termini.c | 612 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 646 insertions(+) create mode 100644 demos/termini/.gitignore create mode 100644 demos/termini/Makefile create mode 100755 demos/termini/runtest.sh create mode 100644 demos/termini/termini.c
diff --git a/configure b/configure index 7d7a3c056d4a..a01830e050d8 100755 --- a/configure +++ b/configure @@ -404,6 +404,9 @@ if __name__ == '__main__': ["V4L2", "Video for linux 2", [header_exists, "linux/videodev2.h"], "", "", ["grabbers"]], + ["libvterm", + "Implementation of a VT220/xterm/ECMA-48 terminal emulator", + [header_exists, "vterm.h"], "", "", [""]], ["pthread", "Posix Threads", [header_exists, "pthread.h"], "-pthread", "-pthread", ["core"]], diff --git a/demos/Makefile b/demos/Makefile index 1943f919b785..bf71c075d541 100644 --- a/demos/Makefile +++ b/demos/Makefile @@ -1,3 +1,7 @@ TOPDIR=.. +include $(TOPDIR)/config.gen.mk SUBDIRS=grinder spiv particle ttf2img c_simple bogoman +ifeq ($(HAVE_LIBVTERM),yes) +SUBDIRS+=termini +endif include $(TOPDIR)/post.mk diff --git a/demos/termini/.gitignore b/demos/termini/.gitignore new file mode 100644 index 000000000000..23409a7d1275 --- /dev/null +++ b/demos/termini/.gitignore @@ -0,0 +1 @@ +termini diff --git a/demos/termini/Makefile b/demos/termini/Makefile new file mode 100644 index 000000000000..f54364741e4d --- /dev/null +++ b/demos/termini/Makefile @@ -0,0 +1,17 @@ +TOPDIR=../.. +include $(TOPDIR)/pre.mk + +CSOURCES=$(shell echo *.c) + +INCLUDE= +LDFLAGS+=-L$(TOPDIR)/build/ + +LDLIBS+=-lgfxprim-backends -lgfxprim -lvterm -lutil + +APPS=termini + +INSTALL_BIN=termini + +include $(TOPDIR)/app.mk +include $(TOPDIR)/install.mk +include $(TOPDIR)/post.mk diff --git a/demos/termini/runtest.sh b/demos/termini/runtest.sh new file mode 100755 index 000000000000..dac7bc8b8671 --- /dev/null +++ b/demos/termini/runtest.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# +# Run dynamically linked test. +# + +PROG="$1" +shift + +LD_LIBRARY_PATH=../../build/ ./$PROG "$@" diff --git a/demos/termini/termini.c b/demos/termini/termini.c new file mode 100644 index 000000000000..488bd8f73d4e --- /dev/null +++ b/demos/termini/termini.c @@ -0,0 +1,612 @@ +/***************************************************************************** + * This file is part of gfxprim library. * + * * + * Gfxprim is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2.1 of the License, or (at your option) any later version. * + * * + * Gfxprim is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with gfxprim; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301 USA * + * * + * Copyright (C) 2017 Cyril Hrubis metan@ucw.cz * + * * + *****************************************************************************/ + + /* + + TERMINI -- minimal terminal emulator. + + */ + +#include <stdio.h> +#include <fcntl.h> +#include <poll.h> +#include <pty.h> +#include <vterm.h> +#include <GP.h> + +static GP_Backend *backend; + +static VTerm *vt; +static VTermScreen *vts; + +static unsigned int cols; +static unsigned int rows; +static unsigned int char_width; +static unsigned int char_height; +static GP_TextStyle *text_style; +static GP_TextStyle *text_style_bold; + +static GP_Pixel colors[16]; + +/* delay before we repaint merged damage */ +static int repaint_sleep_ms = -1; + +/* HACK to draw frames */ +static void draw_utf8_frames(int x, int y, uint32_t val, GP_Pixel fg) +{ + switch (val) { + case 0x2500: /* Horizontal line */ + GP_HLineXYW(backend->pixmap, x, y + char_height/2, char_width, fg); + break; + case 0x2502: /* Vertical line */ + GP_VLineXYH(backend->pixmap, x + char_width/2, y, char_height, fg); + break; + case 0x250c: /* Upper left corner */ + GP_HLineXYW(backend->pixmap, x + char_width/2, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y + char_height/2, char_height/2+1, fg); + break; + case 0x2510: /* Upper right corner */ + GP_HLineXYW(backend->pixmap, x, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y + char_height/2, char_height/2+1, fg); + break; + case 0x2514: /* Bottom left corner */ + GP_HLineXYW(backend->pixmap, x + char_width/2, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y, char_height/2, fg); + break; + case 0x2518: /* Bottom right corner */ + GP_HLineXYW(backend->pixmap, x, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y, char_height/2+1, fg); + break; + case 0x251c: /* Left vertical tee */ + GP_HLineXYW(backend->pixmap, x + char_width/2, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y, char_height, fg); + break; + case 0x2524: /* Right vertical tee */ + GP_HLineXYW(backend->pixmap, x, y + char_height/2, char_width/2, fg); + GP_VLineXYH(backend->pixmap, x + char_width/2, y, char_height, fg); + break; + default: + fprintf(stderr, "WARN: unhandled utf8 char %x\n", val); + } +} + +static void draw_cell(VTermPos pos) +{ + VTermScreenCell c; + + vterm_screen_get_cell(vts, pos, &c); + + GP_Pixel bg = colors[c.bg.red]; + GP_Pixel fg = colors[c.fg.red]; + + if (c.attrs.reverse) + GP_SWAP(bg, fg); + + char buf[2] = {c.chars[0], 0}; + + int x = pos.col * char_width; + int y = pos.row * char_height; + + GP_FillRectXYWH(backend->pixmap, x, y, char_width, char_height, bg); + + //fprintf(stderr, "Drawing %x %c %02i %02i\n", buf[0], buf[0], pos.row, pos.col); + + if (c.width > 1) + fprintf(stderr, "%i\n", c.width); + + if (c.chars[0] > 0x7f) { + draw_utf8_frames(x, y, c.chars[0], fg); + return; + } + + GP_TextStyle *style = c.attrs.bold ? text_style_bold : text_style; + + GP_Text(backend->pixmap, style, x, y, GP_ALIGN_RIGHT | GP_VALIGN_BELOW, fg, bg, buf); +} + +static void update_rect(VTermRect rect) +{ + int x = rect.start_col * char_width; + int y = rect.start_row * char_height; + int w = rect.end_col * char_width; + int h = rect.end_row * char_height; + + GP_BackendUpdateRectXYXY(backend, x, y, w, h); +} + +static VTermRect damaged; +static int damage_repainted = 1; + +static void merge_damage(VTermRect rect) +{ + if (damage_repainted) { + damaged = rect; + damage_repainted = 0; + return; + } + + damaged.start_col = GP_MIN(damaged.start_col, rect.start_col); + damaged.end_col = GP_MAX(damaged.end_col, rect.end_col); + + damaged.start_row = GP_MIN(damaged.start_row, rect.start_row); + damaged.end_row = GP_MAX(damaged.end_row, rect.end_row); + +} + +static void repaint_damage(void) +{ + int row, col; + + for (row = damaged.start_row; row < damaged.end_row; row++) { + for (col = damaged.start_col; col < damaged.end_col; col++) { + VTermPos pos = {.row = row, .col = col}; + draw_cell(pos); + } + } + + update_rect(damaged); + damage_repainted = 1; + repaint_sleep_ms = -1; +} + + +static int term_damage(VTermRect rect, void *user_data) +{ + (void)user_data; + + merge_damage(rect); +// fprintf(stderr, "rect: %i %i %i %i\n", rect.start_row, rect.end_row, rect.start_col, rect.end_col); + repaint_sleep_ms = 1; + + return 1; +} + +static int term_moverect(VTermRect dest, VTermRect src, void *user_data) +{ + (void)dest; + (void)src; + (void)user_data; + fprintf(stderr, "Move rect!\n"); + + return 0; +} + +static int term_movecursor(VTermPos pos, VTermPos oldpos, int visible, void *user_data) +{ + (void)user_data; + unsigned int x = oldpos.col * char_width; + unsigned int y = oldpos.row * char_height; + + draw_cell(oldpos); + GP_BackendUpdateRectXYWH(backend, x, y, char_width, char_height); + + x = pos.col * char_width; + y = pos.row * char_height; + + GP_RectXYWH(backend->pixmap, x, y, char_width, char_height, 0xffffff); + GP_BackendUpdateRectXYWH(backend, x, y, char_width, char_height); + + //fprintf(stderr, "Move cursor %i %i -> %i %i!\n", oldpos.col, oldpos.row, pos.col, pos.row); + + //vterm_screen_flush_damage(vts); + + return 1; +} + +static int term_settermprop(VTermProp prop, VTermValue *val, void *user_data) +{ + (void)user_data; + + switch (prop) { + case VTERM_PROP_TITLE: + fprintf(stderr, "caption %s\n", val->string); + GP_BackendSetCaption(backend, val->string); + return 1; + case VTERM_PROP_ALTSCREEN: + fprintf(stderr, "altscreen\n"); + return 0; + case VTERM_PROP_ICONNAME: + fprintf(stderr, "iconname %s\n", val->string); + return 0; + case VTERM_PROP_CURSORSHAPE: + fprintf(stderr, "cursorshape %i\n", val->number); + return 0; + case VTERM_PROP_REVERSE: + fprintf(stderr, "reverse %i\n", val->boolean); + return 0; + case VTERM_PROP_CURSORVISIBLE: + fprintf(stderr, "cursorvisible %i\n", val->boolean); + return 0; + case VTERM_PROP_CURSORBLINK: + fprintf(stderr, "blink %i\n", val->boolean); + return 0; + case VTERM_PROP_MOUSE: + fprintf(stderr, "mouse %i\n", val->number); + return 0; + default: + break; + } + + fprintf(stderr, "Set term prop!\n"); + + return 0; +} + +static int term_screen_resize(int new_rows, int new_cols, void *user) +{ + (void)new_rows; + (void)new_cols; + (void)user; + + fprintf(stderr, "Resize %i %i\n", new_rows, new_cols); + + return 1; +} + +static int term_bell(void *user) +{ + (void)user; + fprintf(stderr, "Bell!\n"); + + return 1; +} + +static int term_sb_pushline(int cols, const VTermScreenCell *cells, void *user) +{ + (void)cols; + (void)cells; + (void)user; + + fprintf(stderr, "Pushline!\n"); + + return 0; +} + +static VTermScreenCallbacks screen_callbacks = { + .damage = term_damage, +// .moverect = term_moverect, + .movecursor = term_movecursor, + .settermprop = term_settermprop, + .bell = term_bell, +// .sb_pushline = term_sb_pushline, + .resize = term_screen_resize, +// .sb_popline = term_sb_popline, +}; + +static void term_init(void) +{ + int i; + + vt = vterm_new(rows, cols); + vterm_set_utf8(vt, 1); + + vts = vterm_obtain_screen(vt); + vterm_screen_enable_altscreen(vts, 1); + vterm_screen_set_callbacks(vts, &screen_callbacks, NULL); + VTermState *vs = vterm_obtain_state(vt); + vterm_state_set_bold_highbright(vs, 1); + + //vterm_screen_set_damage_merge(vts, VTERM_DAMAGE_SCROLL); + //vterm_screen_set_damage_merge(vts, VTERM_DAMAGE_ROW); + + /* We use the vterm color as an array index */ + for (i = 0; i < 16; i++) { + VTermColor col = {i, i, i}; + vterm_state_set_palette_color(vs, i, &col); + } + + VTermColor bg = {0, 0, 0}; + VTermColor fg = {7, 7, 7}; + + vterm_state_set_default_colors(vs, &fg, &bg); + + vterm_screen_reset(vts, 1); +} + +/* + * Forks and runs a shell, returns master fd. + */ +static int open_console(void) +{ + int fd, pid, flags; + + pid = forkpty(&fd, NULL, NULL, NULL); + if (pid < 0) + return -1; + + if (pid == 0) { + char *shell = getenv("SHELL"); + + if (!shell) + shell = "/bin/sh"; + + putenv("TERM=xterm"); + + execl(shell, shell, NULL); + } + + flags = fcntl(fd, F_GETFL, 0); + fcntl(fd, F_SETFL, flags | O_NONBLOCK); + + return fd; +} + +static void close_console(int fd) +{ + close(fd); +} + +static int console_read(int fd) +{ + char buf[1024]; + int len; + + len = read(fd, buf, sizeof(buf)); + + if (len > 0) + vterm_input_write(vt, buf, len); + + return len; +} + +static void console_write(int fd, char *buf, int buf_len) +{ + write(fd, buf, buf_len); +} + +static void console_resize(int fd, int cols, int rows) +{ + struct winsize size = {rows, cols, 0, 0}; + ioctl(fd, TIOCSWINSZ, &size); +} + +static void do_exit(int fd) +{ + close_console(fd); + GP_BackendExit(backend); + vterm_free(vt); +} + +static void event_to_console(GP_Event *ev, int fd) +{ + int ctrl = GP_EventGetKey(ev, GP_KEY_RIGHT_CTRL) || + GP_EventGetKey(ev, GP_KEY_LEFT_CTRL); + + if (ctrl) { + if (ev->val.key.ascii >= 'a' && ev->val.key.ascii <= 'z') { + char buf = ev->val.key.ascii - 'a' + 1; + console_write(fd, &buf, 1); + } + return; + } + + if (ev->val.key.ascii) { + write(fd, &ev->val.key.ascii, 1); + return; + } + + switch (ev->val.key.key) { + case GP_KEY_UP: + console_write(fd, "\eOA", 3); + break; + case GP_KEY_DOWN: + console_write(fd, "\eOB", 3); + break; + case GP_KEY_RIGHT: + console_write(fd, "\eOC", 3); + break; + case GP_KEY_LEFT: + console_write(fd, "\eOD", 3); + break; + case GP_KEY_DELETE: + console_write(fd, "\e[3~", 4); + break; + case GP_KEY_PAGE_UP: + console_write(fd, "\e[5~", 4); + break; + case GP_KEY_PAGE_DOWN: + console_write(fd, "\e[6~", 4); + break; + case GP_KEY_HOME: + console_write(fd, "\e[7~", 4); + break; + case GP_KEY_END: + console_write(fd, "\e[8~", 4); + break; + case GP_KEY_F1: + console_write(fd, "\e[11~", 5); + break; + case GP_KEY_F2: + console_write(fd, "\e[12~", 5); + break; + case GP_KEY_F3: + console_write(fd, "\e[13~", 5); + break; + case GP_KEY_F4: + console_write(fd, "\e[14~", 5); + break; + case GP_KEY_F5: + console_write(fd, "\e[15~", 5); + break; + case GP_KEY_F6: + console_write(fd, "\e[17~", 5); + break; + case GP_KEY_F7: + console_write(fd, "\e[18~", 5); + break; + case GP_KEY_F8: + console_write(fd, "\e[19~", 5); + break; + case GP_KEY_F9: + console_write(fd, "\e[20~", 5); + break; + case GP_KEY_F10: + console_write(fd, "\e[21~", 5); + break; + case GP_KEY_F11: + console_write(fd, "\e[23~", 5); + break; + case GP_KEY_F12: + console_write(fd, "\e[24~", 5); + break; + } +} + +struct RGB { + uint8_t r; + uint8_t g; + uint8_t b; +}; + +struct RGB RGB_colors[16] = { + /* BLACK */ + {0x00, 0x00, 0x00}, + /* RED */ + {0xff, 0x00, 0x00}, + /* GREEN */ + {0x00, 0xff, 0x00}, + /* YELLOW */ + {0xff, 0xff, 0x00}, + /* BLUE */ + {0x00, 0x00, 0xff}, + /* MAGENTA */ + {0xff, 0x00, 0xff}, + /* CYAN */ + {0x00, 0xff, 0xff}, + /* GRAY */ + {0xee, 0xee, 0xee}, + + /* BRIGHT BLACK */ + {0x44, 0x44, 0x44}, + /* BRIGHT RED */ + {0xff, 0x44, 0x44}, + /* BRIGHT GREEN */ + {0x44, 0xff, 0x44}, + /* BRIGHT YELLOW */ + {0xff, 0xff, 0x44}, + /* BRIGHT BLUE */ + {0x44, 0x44, 0xff}, + /* BRIGHT MAGENTA */ + {0xff, 0x44, 0xff}, + /* BRIGHT CYAN */ + {0x44, 0xff, 0xff}, + /* WHITE */ + {0xff, 0xff, 0xff}, +}; + + +static void backend_init(void) +{ + int i; + + backend = GP_BackendInit("X11", "Termini"); + if (backend == NULL) { + fprintf(stderr, "Failed to initalize backend\n"); + exit(1); + } + + for (i = 0; i < 16; i++) { + colors[i] = GP_RGBToPixmapPixel(RGB_colors[i].r, + RGB_colors[i].g, + RGB_colors[i].b, + backend->pixmap); + } +} + +int main(int argc, char *argv[]) +{ + backend_init(); + + GP_TextStyle style = { + .font = GP_FontHaxorNarrow17, + //.font = &GP_DefaultConsoleFont, + .pixel_xmul = 1, + .pixel_ymul = 1, + }; + + GP_TextStyle style_bold = { + .font = GP_FontHaxorNarrowBold17, + //.font = &GP_DefaultConsoleFont, + .pixel_xmul = 1, + .pixel_ymul = 1, + }; + + text_style = &style; + text_style_bold = &style_bold; + + char_width = GP_TextMaxWidth(text_style, 1); + char_height = GP_TextHeight(text_style); + + cols = GP_PixmapW(backend->pixmap)/char_width; + rows = GP_PixmapH(backend->pixmap)/char_height; + + fprintf(stderr, "Cols %i Rows %i\n", cols, rows); + + term_init(); + + int fd = open_console(); + + struct pollfd fds[2] = { + {.fd = fd, .events = POLLIN}, + {.fd = backend->fd, .events = POLLIN} + }; + + for (;;) { + GP_Event ev; + + if (poll(fds, 2, repaint_sleep_ms) == 0) + repaint_damage(); + + while (GP_BackendPollEvent(backend, &ev)) { + switch (ev.type) { + case GP_EV_KEY: + if (ev.code == GP_EV_KEY_UP) + break; + + event_to_console(&ev, fd); + break; + case GP_EV_SYS: + switch (ev.code) { + case GP_EV_SYS_RESIZE: + GP_BackendResizeAck(backend); + cols = ev.val.sys.w/char_width; + rows = ev.val.sys.h/char_height; + vterm_set_size(vt, rows, cols); + console_resize(fd, cols, rows); + GP_Fill(backend->pixmap, 0); + VTermRect rect = {.start_row = 0, .start_col = 0, .end_row = rows, .end_col = cols}; + term_damage(rect, NULL); + //TODO cursor + break; + case GP_EV_SYS_QUIT: + do_exit(fd); + break; + } + break; + } + } + + console_read(fd); + } + + return 0; +}
commit 7d4836a776c798bab9ba8cb8a367c12d07d98ae7 Author: Cyril Hrubis metan@ucw.cz Date: Fri, 29 Sep 2017 19:01:14 +0200 URL: http://repo.or.cz/gfxprim.git/7d4836a776c798ba
text: Add HaxorNarrow fonts.
Signed-off-by: Cyril Hrubis metan@ucw.cz --- build/syms/Text_symbols.txt | 6 + include/text/GP_Font.h | 9 +- include/text/GP_Fonts.h | 12 + libs/text/GP_HaxorNarrow15.c | 442 +++++++++++++++++++++++++++++++++++ libs/text/GP_HaxorNarrow16.c | 442 +++++++++++++++++++++++++++++++++++ libs/text/GP_HaxorNarrow17.c | 442 +++++++++++++++++++++++++++++++++++ libs/text/GP_Text.gen.c.t | 4 +- 7 files changed, 1352 insertions(+), 5 deletions(-) create mode 100644 libs/text/GP_HaxorNarrow15.c create mode 100644 libs/text/GP_HaxorNarrow16.c create mode 100644 libs/text/GP_HaxorNarrow17.c
diff --git a/build/syms/Text_symbols.txt b/build/syms/Text_symbols.txt index 3b04747fb71c..21019ba20dfa 100644 --- a/build/syms/Text_symbols.txt +++ b/build/syms/Text_symbols.txt @@ -24,3 +24,9 @@ GP_DefaultConsoleFont GP_FontTiny GP_FontTinyMono GP_FontC64 +GP_FontHaxorNarrow15 +GP_FontHaxorNarrowBold15 +GP_FontHaxorNarrow16 +GP_FontHaxorNarrowBold16 +GP_FontHaxorNarrow17 +GP_FontHaxorNarrowBold17 diff --git a/include/text/GP_Font.h b/include/text/GP_Font.h index a6a584c22f99..e14e6cb12bc6 100644 --- a/include/text/GP_Font.h +++ b/include/text/GP_Font.h @@ -143,9 +143,12 @@ typedef struct GP_FontFace { /* * Offsets to the glyph data. * - * If glyph_offset[0] == 0, the table glyph_offsets holds - * offsets for all characters in glyphs. Otherwise the - * glyph_offset[0] defines step in the glyph table. + * If glyph_offset[0] == 0, the table glyph_offsets holds offsets for + * all characters in glyphs, the last offset i.e. offsets[len] holds + * the size of glyphs array. + * + * If glyph_offset[0] != 0 the glyph_offset[0] defines step in the + * glyph table. */ uint32_t glyph_offsets[]; } GP_FontFace; diff --git a/include/text/GP_Fonts.h b/include/text/GP_Fonts.h index 3a54da300bc8..b2176cd56451 100644 --- a/include/text/GP_Fonts.h +++ b/include/text/GP_Fonts.h @@ -44,4 +44,16 @@ extern const GP_FontFace *GP_FontTiny; */ extern const GP_FontFace *GP_FontC64;
+/* + * HaxorNarrow family, converted from bdf fonts from: + * + * https://github.com/metan-ucw/fonts + */ +extern const GP_FontFace *GP_FontHaxorNarrow15; +extern const GP_FontFace *GP_FontHaxorNarrowBold15; +extern const GP_FontFace *GP_FontHaxorNarrow16; +extern const GP_FontFace *GP_FontHaxorNarrowBold16; +extern const GP_FontFace *GP_FontHaxorNarrow17; +extern const GP_FontFace *GP_FontHaxorNarrowBold17; + #endif /* TEXT_GP_FONTS_H */ diff --git a/libs/text/GP_HaxorNarrow15.c b/libs/text/GP_HaxorNarrow15.c new file mode 100644 index 000000000000..1dffc3848246 --- /dev/null +++ b/libs/text/GP_HaxorNarrow15.c @@ -0,0 +1,442 @@ +/* Generated file, do not touch */ + +#include <text/GP_Font.h> + +static uint8_t font_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 8, + 0x00, 0x00, 0x00, + /* '!' */ 1, 11, 3, 11, 8, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, + /* '"' */ 5, 4, 1, 12, 8, + 0xd8, 0x48, 0x48, 0x90, 0x00, 0x00, 0x00, + /* '#' */ 7, 10, 0, 10, 8, + 0x14, 0x14, 0x14, 0x7e, 0x28, 0x28, 0xfc, 0x50, 0x50, 0x50, 0x00, + /* '$' */ 7, 11, 0, 11, 8, + 0x10, 0x7c, 0x92, 0x90, 0x90, 0x7c, 0x12, 0x12, 0x92, 0x7c, 0x10, + /* '%' */ 7, 11, 0, 11, 8, + 0x62, 0x92, 0x94, 0x68, 0x08, 0x10, 0x20, 0x2c, 0x52, 0x92, 0x8c, + /* '&' */ 7, 11, 0, 11, 8, + 0x30, 0x48, 0x48, 0x48, 0x30, 0x52, 0x8a, 0x8a, 0x86, 0x84, 0x7a, + /* ''' */ 2, 4, 2, 12, 8, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '(' */ 4, 13, 1, 12, 8, + 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x00, 0x00, + /* ')' */ 4, 13, 1, 12, 8, + 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, + /* '*' */ 5, 6, 1, 9, 8, + 0x20, 0xa8, 0x70, 0x70, 0xa8, 0x20, 0x00, + /* '+' */ 7, 7, 0, 9, 8, + 0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, + /* ',' */ 2, 4, 2, 3, 8, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '-' */ 5, 1, 1, 6, 8, + 0xf8, 0x00, 0x00, + /* '.' */ 2, 2, 2, 2, 8, + 0xc0, 0xc0, 0x00, + /* '/' */ 6, 11, 0, 11, 8, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, + /* '0' */ 6, 11, 0, 11, 8, + 0x30, 0x48, 0x84, 0x84, 0x94, 0xb4, 0xa4, 0x84, 0x84, 0x48, 0x30, + /* '1' */ 4, 11, 1, 11, 8, + 0x30, 0x50, 0x90, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + /* '2' */ 5, 11, 1, 11, 8, + 0x70, 0x88, 0x08, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0xf8, + /* '3' */ 5, 11, 1, 11, 8, + 0x70, 0x88, 0x08, 0x08, 0x08, 0x30, 0x08, 0x08, 0x08, 0x88, 0x70, + /* '4' */ 6, 11, 1, 11, 8, + 0x08, 0x18, 0x18, 0x28, 0x48, 0x48, 0x88, 0xfc, 0x08, 0x08, 0x08, + /* '5' */ 5, 11, 1, 11, 8, + 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x08, 0x08, 0x08, 0x08, 0x88, 0x70, + /* '6' */ 5, 11, 1, 11, 8, + 0x70, 0x88, 0x80, 0x80, 0xf0, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, + /* '7' */ 5, 11, 1, 11, 8, + 0xf8, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, + /* '8' */ 5, 11, 1, 11, 8, + 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, + /* '9' */ 5, 11, 1, 11, 8, + 0x70, 0x88, 0x88, 0x88, 0x88, 0x78, 0x08, 0x08, 0x08, 0x88, 0x70, + /* ':' */ 2, 8, 2, 9, 8, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* ';' */ 2, 9, 2, 9, 8, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, + /* '<' */ 5, 9, 0, 10, 8, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, + /* '=' */ 6, 5, 0, 8, 8, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + /* '>' */ 5, 9, 0, 10, 8, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, + /* '?' */ 6, 11, 0, 11, 8, + 0x78, 0x84, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x20, 0x20, + /* '@' */ 6, 11, 0, 11, 8, + 0x78, 0x84, 0x84, 0x9c, 0xa4, 0xa4, 0xa4, 0x9c, 0x80, 0x80, 0x78, + /* 'A' */ 5, 11, 0, 11, 8, + 0x20, 0x50, 0x50, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x88, + /* 'B' */ 5, 11, 0, 11, 8, + 0xf0, 0x88, 0x88, 0x88, 0x88, 0xf0, 0x88, 0x88, 0x88, 0x88, 0xf0, + /* 'C' */ 5, 11, 0, 11, 8, + 0x70, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x70, + /* 'D' */ 5, 11, 0, 11, 8, + 0xe0, 0x90, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x90, 0xe0, + /* 'E' */ 5, 11, 0, 11, 8, + 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x80, 0xf8, + /* 'F' */ 5, 11, 0, 11, 8, + 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + /* 'G' */ 5, 11, 0, 11, 8, + 0x70, 0x88, 0x80, 0x80, 0x80, 0x98, 0x88, 0x88, 0x88, 0x88, 0x70, + /* 'H' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, + /* 'I' */ 3, 11, 1, 11, 8, + 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xe0, + /* 'J' */ 5, 11, 0, 11, 8, + 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0x70, + /* 'K' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x90, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x90, 0x88, 0x88, + /* 'L' */ 5, 11, 0, 11, 8, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, + /* 'M' */ 5, 11, 0, 11, 8, + 0x88, 0xd8, 0xd8, 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + /* 'N' */ 5, 11, 0, 11, 8, + 0x88, 0xc8, 0xc8, 0xa8, 0xa8, 0x98, 0x98, 0x88, 0x88, 0x88, 0x88, + /* 'O' */ 5, 11, 0, 11, 8, + 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, + /* 'P' */ 5, 11, 0, 11, 8, + 0xf0, 0x88, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x80, + /* 'Q' */ 5, 11, 0, 11, 8, + 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xa8, 0x90, 0x68, + /* 'R' */ 5, 11, 0, 11, 8, + 0xf0, 0x88, 0x88, 0x88, 0x88, 0xf0, 0x90, 0x90, 0x88, 0x88, 0x88, + /* 'S' */ 5, 11, 0, 11, 8, + 0x70, 0x88, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x88, 0x70, + /* 'T' */ 5, 11, 0, 11, 8, + 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + /* 'U' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, + /* 'V' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50, 0x50, 0x20, 0x20, + /* 'W' */ 7, 11, 0, 11, 8, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, 0xaa, 0xaa, 0x44, 0x44, + /* 'X' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x50, 0x50, 0x88, 0x88, 0x88, + /* 'Y' */ 5, 11, 0, 11, 8, + 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + /* 'Z' */ 5, 11, 0, 11, 8, + 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0xf8, + /* '[' */ 3, 12, 1, 12, 8, + 0xe0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe0, 0x00, 0x00, 0x00, + /* '' */ 6, 11, 0, 11, 8, + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, + /* ']' */ 3, 12, 1, 12, 8, + 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, + /* '^' */ 5, 4, 1, 11, 8, + 0x20, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, + /* '_' */ 6, 1, 0, 1, 8, + 0xfc, 0x00, 0x00, + /* '`' */ 3, 3, 1, 13, 8, + 0x80, 0x40, 0x20, + /* 'a' */ 5, 8, 0, 8, 8, + 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00, 0x00, + /* 'b' */ 5, 11, 0, 11, 8, + 0x80, 0x80, 0x80, 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0xc8, 0xb0, + /* 'c' */ 5, 8, 0, 8, 8, + 0x70, 0x88, 0x80, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, 0x00, 0x00, + /* 'd' */ 5, 11, 0, 11, 8, + 0x08, 0x08, 0x08, 0x68, 0x98, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68, + /* 'e' */ 5, 8, 0, 8, 8, + 0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x88, 0x70, 0x00, 0x00, 0x00, + /* 'f' */ 5, 11, 0, 11, 8, + 0x38, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + /* 'g' */ 6, 10, 0, 8, 8, + 0x7c, 0x88, 0x88, 0x88, 0x70, 0x80, 0x78, 0x84, 0x84, 0x78, 0x00, + /* 'h' */ 5, 11, 0, 11, 8, + 0x80, 0x80, 0x80, 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + /* 'i' */ 5, 11, 0, 11, 8, + 0x20, 0x00, 0x00, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, + /* 'j' */ 5, 13, 0, 11, 8, + 0x08, 0x00, 0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, + /* 'k' */ 5, 11, 0, 11, 8, + 0x80, 0x80, 0x80, 0x88, 0x90, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x88, + /* 'l' */ 5, 11, 0, 11, 8, + 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, + /* 'm' */ 5, 8, 0, 8, 8, + 0xf0, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x00, 0x00, 0x00, + /* 'n' */ 5, 8, 0, 8, 8, + 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, + /* 'o' */ 5, 8, 0, 8, 8, + 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, + /* 'p' */ 5, 10, 0, 8, 8, + 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, + /* 'q' */ 5, 10, 0, 8, 8, + 0x68, 0x98, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68, 0x08, 0x08, 0x00, + /* 'r' */ 5, 8, 1, 8, 8, + 0xb0, 0xc8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* 's' */ 5, 8, 0, 8, 8, + 0x70, 0x88, 0x80, 0x60, 0x10, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, + /* 't' */ 5, 11, 0, 11, 8, + 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x38, + /* 'u' */ 5, 8, 0, 8, 8, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00, 0x00, + /* 'v' */ 5, 8, 0, 8, 8, + 0x88, 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, + /* 'w' */ 5, 8, 0, 8, 8, + 0x88, 0x88, 0x88, 0xa8, 0xa8, 0xa8, 0x50, 0x50, 0x00, 0x00, 0x00, + /* 'x' */ 5, 8, 0, 8, 8, + 0x88, 0x88, 0x50, 0x20, 0x20, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00, + /* 'y' */ 5, 11, 0, 8, 8, + 0x88, 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x40, 0x40, 0x80, 0x80, + /* 'z' */ 5, 8, 0, 8, 8, + 0xf8, 0x08, 0x10, 0x20, 0x20, 0x40, 0x80, 0xf8, 0x00, 0x00, 0x00, + /* '{' */ 3, 13, 2, 12, 8, + 0x60, 0x80, 0x80, 0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0x80, 0x80, 0x60, 0x00, 0x00, + /* '|' */ 1, 11, 3, 11, 8, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + /* '}' */ 3, 13, 3, 12, 8, + 0xc0, 0x20, 0x20, 0x20, 0x40, 0x40, 0x20, 0x40, 0x40, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, + /* '~' */ 7, 3, 0, 7, 8, + 0x60, 0x92, 0x0c, +}; + +static struct GP_FontFace font = { + .family_name = "HaxorNarrow15", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 13, + .descend = 3, + .max_glyph_width = 7, + .max_glyph_advance = 8, + .glyphs = &font_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x0018, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, + 0x0070, 0x0084, 0x0098, 0x00a4, 0x00b0, 0x00bc, 0x00c4, 0x00cc, + 0x00dc, 0x00ec, 0x00fc, 0x010c, 0x011c, 0x012c, 0x013c, 0x014c, + 0x015c, 0x016c, 0x017c, 0x018c, 0x019c, 0x01ac, 0x01b8, 0x01c8, + 0x01d8, 0x01e8, 0x01f8, 0x0208, 0x0218, 0x0228, 0x0238, 0x0248, + 0x0258, 0x0268, 0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8, + 0x02d8, 0x02e8, 0x02f8, 0x0308, 0x0318, 0x0328, 0x0338, 0x0348, + 0x0358, 0x0368, 0x0378, 0x0388, 0x039c, 0x03ac, 0x03c0, 0x03cc, + 0x03d4, 0x03dc, 0x03ec, 0x03fc, 0x040c, 0x041c, 0x042c, 0x043c, + 0x044c, 0x045c, 0x046c, 0x0480, 0x0490, 0x04a0, 0x04b0, 0x04c0, + 0x04d0, 0x04e0, 0x04f0, 0x0500, 0x0510, 0x0520, 0x0530, 0x0540, + 0x0550, 0x0560, 0x0570, 0x0580, 0x0594, 0x05a4, 0x05b8, 0x05c0, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrow15 = &font; +static uint8_t font_bold_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 8, + 0x00, 0x00, 0x00, + /* '!' */ 2, 11, 3, 11, 8, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0xc0, 0xc0, + /* '"' */ 6, 4, 1, 12, 8, + 0xfc, 0x6c, 0x6c, 0xd8, 0x00, 0x00, 0x00, + /* '#' */ 7, 10, 0, 10, 8, + 0x1e, 0x1e, 0x1e, 0x7f, 0x3c, 0x3c, 0xfe, 0x78, 0x78, 0x78, 0x00, + /* '$' */ 7, 11, 0, 11, 8, + 0x18, 0x7e, 0xdb, 0xd8, 0xd8, 0x7e, 0x1b, 0x1b, 0xdb, 0x7e, 0x18, + /* '%' */ 7, 11, 0, 11, 8, + 0x73, 0xdb, 0xde, 0x7c, 0x0c, 0x18, 0x30, 0x3e, 0x7b, 0xdb, 0xce, + /* '&' */ 7, 11, 0, 11, 8, + 0x38, 0x6c, 0x6c, 0x6c, 0x38, 0x7b, 0xcf, 0xcf, 0xc7, 0xc6, 0x7f, + /* ''' */ 3, 4, 2, 12, 8, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '(' */ 5, 13, 1, 12, 8, + 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x18, 0x00, 0x00, + /* ')' */ 5, 13, 1, 12, 8, + 0xc0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, + /* '*' */ 6, 6, 1, 9, 8, + 0x30, 0xfc, 0x78, 0x78, 0xfc, 0x30, 0x00, + /* '+' */ 7, 7, 0, 9, 8, + 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, + /* ',' */ 3, 4, 2, 3, 8, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '-' */ 6, 1, 1, 6, 8, + 0xfc, 0x00, 0x00, + /* '.' */ 3, 2, 2, 2, 8, + 0xe0, 0xe0, 0x00, + /* '/' */ 7, 11, 0, 11, 8, + 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, + /* '0' */ 7, 11, 0, 11, 8, + 0x38, 0x6c, 0xc6, 0xc6, 0xde, 0xfe, 0xf6, 0xc6, 0xc6, 0x6c, 0x38, + /* '1' */ 5, 11, 1, 11, 8, + 0x38, 0x78, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + /* '2' */ 6, 11, 1, 11, 8, + 0x78, 0xcc, 0x0c, 0x0c, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfc, + /* '3' */ 6, 11, 1, 11, 8, + 0x78, 0xcc, 0x0c, 0x0c, 0x0c, 0x38, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, + /* '4' */ 7, 11, 1, 11, 8, + 0x0c, 0x1c, 0x1c, 0x3c, 0x6c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, + /* '5' */ 6, 11, 1, 11, 8, + 0xfc, 0xc0, 0xc0, 0xc0, 0xf8, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, + /* '6' */ 6, 11, 1, 11, 8, + 0x78, 0xcc, 0xc0, 0xc0, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, + /* '7' */ 6, 11, 1, 11, 8, + 0xfc, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, + /* '8' */ 6, 11, 1, 11, 8, + 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, + /* '9' */ 6, 11, 1, 11, 8, + 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, + /* ':' */ 3, 8, 2, 9, 8, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, + /* ';' */ 3, 9, 2, 9, 8, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x60, 0xc0, 0x00, 0x00, + /* '<' */ 6, 9, 0, 10, 8, + 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00, + /* '=' */ 7, 5, 0, 8, 8, + 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + /* '>' */ 6, 9, 0, 10, 8, + 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x00, 0x00, + /* '?' */ 7, 11, 0, 11, 8, + 0x7c, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x30, 0x30, + /* '@' */ 7, 11, 0, 11, 8, + 0x7c, 0xc6, 0xc6, 0xde, 0xf6, 0xf6, 0xf6, 0xde, 0xc0, 0xc0, 0x7c, + /* 'A' */ 6, 11, 0, 11, 8, + 0x30, 0x78, 0x78, 0xcc, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc, 0xcc, + /* 'B' */ 6, 11, 0, 11, 8, + 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, + /* 'C' */ 6, 11, 0, 11, 8, + 0x78, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0x78, + /* 'D' */ 6, 11, 0, 11, 8, + 0xf0, 0xd8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xd8, 0xf0, + /* 'E' */ 6, 11, 0, 11, 8, + 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, + /* 'F' */ 6, 11, 0, 11, 8, + 0xfc, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + /* 'G' */ 6, 11, 0, 11, 8, + 0x78, 0xcc, 0xc0, 0xc0, 0xc0, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, + /* 'H' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, + /* 'I' */ 4, 11, 1, 11, 8, + 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, + /* 'J' */ 6, 11, 0, 11, 8, + 0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, + /* 'K' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0xd8, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xd8, 0xcc, 0xcc, + /* 'L' */ 6, 11, 0, 11, 8, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, + /* 'M' */ 6, 11, 0, 11, 8, + 0xcc, 0xfc, 0xfc, 0xfc, 0xfc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, + /* 'N' */ 6, 11, 0, 11, 8, + 0xcc, 0xec, 0xec, 0xfc, 0xfc, 0xdc, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, + /* 'O' */ 6, 11, 0, 11, 8, + 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, + /* 'P' */ 6, 11, 0, 11, 8, + 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + /* 'Q' */ 6, 11, 0, 11, 8, + 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0xd8, 0x7c, + /* 'R' */ 6, 11, 0, 11, 8, + 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, 0xd8, 0xd8, 0xcc, 0xcc, 0xcc, + /* 'S' */ 6, 11, 0, 11, 8, + 0x78, 0xcc, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0xcc, 0x78, + /* 'T' */ 6, 11, 0, 11, 8, + 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + /* 'U' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, + /* 'V' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x78, 0x78, 0x78, 0x30, 0x30, + /* 'W' */ 7, 11, 0, 11, 8, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0xff, 0x66, 0x66, + /* 'X' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0x78, 0x78, 0x30, 0x30, 0x78, 0x78, 0xcc, 0xcc, 0xcc, + /* 'Y' */ 6, 11, 0, 11, 8, + 0xcc, 0xcc, 0xcc, 0x78, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + /* 'Z' */ 6, 11, 0, 11, 8, + 0xfc, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xfc, + /* '[' */ 4, 12, 1, 12, 8, + 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x00, 0x00, 0x00, + /* '' */ 7, 11, 0, 11, 8, + 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, + /* ']' */ 4, 12, 1, 12, 8, + 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x00, 0x00, 0x00, + /* '^' */ 6, 4, 1, 11, 8, + 0x30, 0x78, 0x78, 0xcc, 0x00, 0x00, 0x00, + /* '_' */ 7, 1, 0, 1, 8, + 0xfe, 0x00, 0x00, + /* '`' */ 4, 3, 1, 13, 8, + 0xc0, 0x60, 0x30, + /* 'a' */ 6, 8, 0, 8, 8, + 0x78, 0xcc, 0x0c, 0x7c, 0xcc, 0xcc, 0xdc, 0x7c, 0x00, 0x00, 0x00, + /* 'b' */ 6, 11, 0, 11, 8, + 0xc0, 0xc0, 0xc0, 0xf8, 0xec, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xf8, + /* 'c' */ 6, 8, 0, 8, 8, + 0x78, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0x78, 0x00, 0x00, 0x00, + /* 'd' */ 6, 11, 0, 11, 8, + 0x0c, 0x0c, 0x0c, 0x7c, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x7c, + /* 'e' */ 6, 8, 0, 8, 8, + 0x78, 0xcc, 0xcc, 0xfc, 0xc0, 0xc0, 0xcc, 0x78, 0x00, 0x00, 0x00, + /* 'f' */ 6, 11, 0, 11, 8, + 0x3c, 0x60, 0x60, 0xfc, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + /* 'g' */ 7, 10, 0, 8, 8, + 0x7e, 0xcc, 0xcc, 0xcc, 0x78, 0xc0, 0x7c, 0xc6, 0xc6, 0x7c, 0x00, + /* 'h' */ 6, 11, 0, 11, 8, + 0xc0, 0xc0, 0xc0, 0xf8, 0xec, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, + /* 'i' */ 6, 11, 0, 11, 8, + 0x30, 0x00, 0x00, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, + /* 'j' */ 6, 13, 0, 11, 8, + 0x0c, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, 0x00, 0x00, + /* 'k' */ 6, 11, 0, 11, 8, + 0xc0, 0xc0, 0xc0, 0xcc, 0xd8, 0xd8, 0xf0, 0xf0, 0xd8, 0xcc, 0xcc, + /* 'l' */ 6, 11, 0, 11, 8, + 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, + /* 'm' */ 6, 8, 0, 8, 8, + 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, + /* 'n' */ 6, 8, 0, 8, 8, + 0xf8, 0xec, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, + /* 'o' */ 6, 8, 0, 8, 8, + 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, + /* 'p' */ 6, 10, 0, 8, 8, + 0xf8, 0xec, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xf8, 0xc0, 0xc0, 0x00, + /* 'q' */ 6, 10, 0, 8, 8, + 0x7c, 0xdc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x7c, 0x0c, 0x0c, 0x00, + /* 'r' */ 6, 8, 1, 8, 8, + 0xf8, 0xec, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* 's' */ 6, 8, 0, 8, 8, + 0x78, 0xcc, 0xc0, 0x70, 0x18, 0x0c, 0xcc, 0x78, 0x00, 0x00, 0x00, + /* 't' */ 6, 11, 0, 11, 8, + 0x60, 0x60, 0x60, 0xfc, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x3c, + /* 'u' */ 6, 8, 0, 8, 8, + 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x7c, 0x00, 0x00, 0x00, + /* 'v' */ 6, 8, 0, 8, 8, + 0xcc, 0xcc, 0xcc, 0x78, 0x78, 0x78, 0x30, 0x30, 0x00, 0x00, 0x00, + /* 'w' */ 6, 8, 0, 8, 8, + 0xcc, 0xcc, 0xcc, 0xfc, 0xfc, 0xfc, 0x78, 0x78, 0x00, 0x00, 0x00, + /* 'x' */ 6, 8, 0, 8, 8, + 0xcc, 0xcc, 0x78, 0x30, 0x30, 0x78, 0xcc, 0xcc, 0x00, 0x00, 0x00, + /* 'y' */ 6, 11, 0, 8, 8, + 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x78, 0x30, 0x60, 0x60, 0xc0, 0xc0, + /* 'z' */ 6, 8, 0, 8, 8, + 0xfc, 0x0c, 0x18, 0x30, 0x30, 0x60, 0xc0, 0xfc, 0x00, 0x00, 0x00, + /* '{' */ 4, 13, 2, 12, 8, + 0x70, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0xc0, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x70, 0x00, 0x00, + /* '|' */ 2, 11, 3, 11, 8, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + /* '}' */ 4, 13, 3, 12, 8, + 0xe0, 0x30, 0x30, 0x30, 0x60, 0x60, 0x30, 0x60, 0x60, 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, + /* '~' */ 7, 3, 0, 7, 8, + 0x70, 0xdb, 0x0e, +}; + +static struct GP_FontFace font_bold = { + .family_name = "HaxorNarrowBold15", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 13, + .descend = 3, + .max_glyph_width = 7, + .max_glyph_advance = 8, + .glyphs = &font_bold_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x0018, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, + 0x0070, 0x0084, 0x0098, 0x00a4, 0x00b0, 0x00bc, 0x00c4, 0x00cc, + 0x00dc, 0x00ec, 0x00fc, 0x010c, 0x011c, 0x012c, 0x013c, 0x014c, + 0x015c, 0x016c, 0x017c, 0x018c, 0x019c, 0x01ac, 0x01b8, 0x01c8, + 0x01d8, 0x01e8, 0x01f8, 0x0208, 0x0218, 0x0228, 0x0238, 0x0248, + 0x0258, 0x0268, 0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8, + 0x02d8, 0x02e8, 0x02f8, 0x0308, 0x0318, 0x0328, 0x0338, 0x0348, + 0x0358, 0x0368, 0x0378, 0x0388, 0x039c, 0x03ac, 0x03c0, 0x03cc, + 0x03d4, 0x03dc, 0x03ec, 0x03fc, 0x040c, 0x041c, 0x042c, 0x043c, + 0x044c, 0x045c, 0x046c, 0x0480, 0x0490, 0x04a0, 0x04b0, 0x04c0, + 0x04d0, 0x04e0, 0x04f0, 0x0500, 0x0510, 0x0520, 0x0530, 0x0540, + 0x0550, 0x0560, 0x0570, 0x0580, 0x0594, 0x05a4, 0x05b8, 0x05c0, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrowBold15 = &font_bold; diff --git a/libs/text/GP_HaxorNarrow16.c b/libs/text/GP_HaxorNarrow16.c new file mode 100644 index 000000000000..ee5ad84b7371 --- /dev/null +++ b/libs/text/GP_HaxorNarrow16.c @@ -0,0 +1,442 @@ +/* Generated file, do not touch */ + +#include <text/GP_Font.h> + +static uint8_t font_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 9, + 0x00, 0x00, 0x00, + /* '!' */ 1, 12, 4, 12, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, + /* '"' */ 7, 4, 0, 12, 9, + 0xee, 0x22, 0x22, 0x44, 0x00, 0x00, 0x00, + /* '#' */ 8, 11, 0, 11, 9, + 0x12, 0x12, 0x12, 0x7f, 0x24, 0x24, 0x24, 0xfe, 0x48, 0x48, 0x48, + /* '$' */ 7, 12, 0, 12, 9, + 0x10, 0x7c, 0x92, 0x90, 0x90, 0x70, 0x1c, 0x12, 0x12, 0x92, 0x7c, 0x10, 0x00, 0x00, 0x00, + /* '%' */ 7, 12, 0, 12, 9, + 0x62, 0x92, 0x94, 0x64, 0x08, 0x10, 0x10, 0x20, 0x4c, 0x52, 0x92, 0x8c, 0x00, 0x00, 0x00, + /* '&' */ 7, 12, 0, 12, 9, + 0x30, 0x48, 0x48, 0x48, 0x30, 0x60, 0xd2, 0x92, 0x8a, 0x8a, 0xc4, 0x7a, 0x00, 0x00, 0x00, + /* ''' */ 2, 4, 2, 12, 9, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '(' */ 4, 14, 1, 13, 9, + 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x00, + /* ')' */ 4, 14, 1, 13, 9, + 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x00, + /* '*' */ 5, 6, 1, 10, 9, + 0x20, 0xa8, 0x70, 0x70, 0xa8, 0x20, 0x00, + /* '+' */ 7, 7, 0, 9, 9, + 0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, + /* ',' */ 2, 4, 2, 3, 9, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '-' */ 5, 1, 1, 6, 9, + 0xf8, 0x00, 0x00, + /* '.' */ 2, 3, 2, 3, 9, + 0xc0, 0xc0, 0xc0, + /* '/' */ 5, 12, 1, 12, 9, + 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, + /* '0' */ 7, 12, 0, 12, 9, + 0x38, 0x44, 0x82, 0x82, 0x8a, 0x92, 0x92, 0xa2, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, + /* '1' */ 4, 12, 1, 12, 9, + 0x30, 0x50, 0x90, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, + /* '2' */ 6, 12, 1, 12, 9, + 0x78, 0x84, 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, + /* '3' */ 6, 12, 1, 12, 9, + 0x78, 0x84, 0x04, 0x04, 0x04, 0x38, 0x04, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, 0x00, + /* '4' */ 6, 12, 1, 12, 9, + 0x08, 0x18, 0x18, 0x28, 0x28, 0x48, 0x48, 0x88, 0xfc, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, + /* '5' */ 6, 12, 1, 12, 9, + 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, 0x00, + /* '6' */ 6, 12, 1, 12, 9, + 0x78, 0x84, 0x80, 0x80, 0x80, 0xf8, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* '7' */ 6, 12, 1, 12, 9, + 0xfc, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, + /* '8' */ 6, 12, 1, 12, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* '9' */ 6, 12, 1, 12, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x7c, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, 0x00, + /* ':' */ 2, 8, 3, 9, 9, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* ';' */ 2, 9, 3, 9, 9, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, + /* '<' */ 5, 9, 1, 10, 9, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, + /* '=' */ 6, 5, 0, 8, 9, + 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, + /* '>' */ 5, 9, 1, 10, 9, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, + /* '?' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, + /* '@' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x84, 0x84, 0x9c, 0xa4, 0xa4, 0xa4, 0x9c, 0x80, 0x80, 0x78, 0x00, 0x00, 0x00, + /* 'A' */ 6, 12, 0, 12, 9, + 0x30, 0x48, 0x48, 0x48, 0x84, 0x84, 0x84, 0xfc, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'B' */ 6, 12, 0, 12, 9, + 0xf8, 0x84, 0x84, 0x84, 0x84, 0xf8, 0x84, 0x84, 0x84, 0x84, 0x84, 0xf8, 0x00, 0x00, 0x00, + /* 'C' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'D' */ 6, 12, 0, 12, 9, + 0xf0, 0x88, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x88, 0xf0, 0x00, 0x00, 0x00, + /* 'E' */ 5, 12, 0, 12, 9, + 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00, + /* 'F' */ 5, 12, 0, 12, 9, + 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* 'G' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'H' */ 6, 12, 0, 12, 9, + 0x84, 0x84, 0x84, 0x84, 0x84, 0xfc, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'I' */ 5, 12, 0, 12, 9, + 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, 0x00, + /* 'J' */ 6, 12, 0, 12, 9, + 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'K' */ 6, 12, 0, 12, 9, + 0x84, 0x84, 0x88, 0x90, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x88, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'L' */ 6, 12, 0, 12, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, + /* 'M' */ 7, 12, 0, 12, 9, + 0x82, 0xc6, 0xaa, 0xaa, 0x92, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00, + /* 'N' */ 6, 12, 0, 12, 9, + 0x84, 0xc4, 0xa4, 0xa4, 0x94, 0x94, 0x8c, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'O' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'P' */ 6, 12, 0, 12, 9, + 0xf8, 0x84, 0x84, 0x84, 0x84, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* 'Q' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x94, 0x88, 0x74, 0x00, 0x00, 0x00, + /* 'R' */ 6, 12, 0, 12, 9, + 0xf8, 0x84, 0x84, 0x84, 0x84, 0xf8, 0x88, 0x88, 0x88, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'S' */ 6, 12, 0, 12, 9, + 0x78, 0x84, 0x80, 0x80, 0x40, 0x30, 0x08, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'T' */ 7, 12, 0, 12, 9, + 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, + /* 'U' */ 6, 12, 0, 12, 9, + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, + /* 'V' */ 7, 12, 0, 12, 9, + 0x82, 0x82, 0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10, 0x10, 0x00, 0x00, 0x00, + /* 'W' */ 7, 12, 0, 12, 9, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, 0xaa, 0xaa, 0x44, 0x44, 0x00, 0x00, 0x00, + /* 'X' */ 7, 12, 0, 12, 9, + 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x10, 0x28, 0x28, 0x44, 0x82, 0x82, 0x00, 0x00, 0x00, + /* 'Y' */ 7, 12, 0, 12, 9, + 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, + /* 'Z' */ 6, 12, 0, 12, 9, + 0xfc, 0x04, 0x04, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, + /* '[' */ 3, 13, 2, 13, 9, + 0xe0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe0, 0x00, 0x00, + /* '' */ 5, 12, 1, 12, 9, + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, + /* ']' */ 3, 13, 2, 13, 9, + 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, + /* '^' */ 5, 5, 1, 12, 9, + 0x20, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, + /* '_' */ 7, 1, 0, 1, 9, + 0xfe, 0x00, 0x00, + /* '`' */ 3, 3, 1, 13, 9, + 0x80, 0x40, 0x20, + /* 'a' */ 6, 9, 0, 9, 9, + 0x78, 0x84, 0x04, 0x04, 0x7c, 0x84, 0x84, 0x8c, 0x74, 0x00, 0x00, + /* 'b' */ 6, 12, 0, 12, 9, + 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x00, 0x00, 0x00, + /* 'c' */ 6, 9, 0, 9, 9, + 0x78, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, 0x78, 0x00, 0x00, + /* 'd' */ 6, 12, 0, 12, 9, + 0x04, 0x04, 0x04, 0x74, 0x8c, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x00, 0x00, 0x00, + /* 'e' */ 6, 9, 0, 9, 9, + 0x78, 0x84, 0x84, 0x84, 0xfc, 0x80, 0x80, 0x84, 0x78, 0x00, 0x00, + /* 'f' */ 6, 12, 0, 12, 9, + 0x1c, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, + /* 'g' */ 7, 12, 0, 9, 9, + 0x7e, 0x84, 0x84, 0x84, 0x78, 0x80, 0x80, 0x7c, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, + /* 'h' */ 6, 12, 0, 12, 9, + 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'i' */ 5, 12, 1, 12, 9, + 0x20, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, 0x00, + /* 'j' */ 5, 14, 1, 12, 9, + 0x08, 0x00, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, + /* 'k' */ 6, 12, 0, 12, 9, + 0x80, 0x80, 0x80, 0x84, 0x88, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x84, 0x84, 0x00, 0x00, 0x00, + /* 'l' */ 5, 12, 1, 12, 9, + 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, 0x00, + /* 'm' */ 7, 9, 0, 9, 9, + 0xec, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, + /* 'n' */ 6, 9, 0, 9, 9, + 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, + /* 'o' */ 6, 9, 0, 9, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, + /* 'p' */ 6, 12, 0, 9, 9, + 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* 'q' */ 6, 12, 0, 9, 9, + 0x74, 0x8c, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, + /* 'r' */ 6, 9, 0, 9, 9, + 0xb8, 0xc4, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, + /* 's' */ 6, 9, 0, 9, 9, + 0x78, 0x84, 0x80, 0x80, 0x78, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, + /* 't' */ 6, 12, 0, 12, 9, + 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x00, 0x00, 0x00, + /* 'u' */ 6, 9, 0, 9, 9, + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x00, 0x00, + /* 'v' */ 7, 9, 0, 9, 9, + 0x82, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10, 0x00, 0x00, + /* 'w' */ 7, 9, 0, 9, 9, + 0x82, 0x82, 0x82, 0x82, 0x92, 0xaa, 0xaa, 0x44, 0x44, 0x00, 0x00, + /* 'x' */ 7, 9, 0, 9, 9, + 0x82, 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82, 0x82, 0x00, 0x00, + /* 'y' */ 7, 12, 0, 9, 9, + 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, + /* 'z' */ 6, 9, 0, 9, 9, + 0xfc, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, + /* '{' */ 3, 13, 2, 13, 9, + 0x60, 0x80, 0x80, 0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0x80, 0x80, 0x60, 0x00, 0x00, + /* '|' */ 1, 12, 3, 12, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* '}' */ 3, 13, 3, 13, 9, + 0xc0, 0x20, 0x20, 0x20, 0x40, 0x40, 0x20, 0x40, 0x40, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, + /* '~' */ 7, 3, 0, 7, 9, + 0x60, 0x92, 0x0c, +}; + +static struct GP_FontFace font = { + .family_name = "HaxorNarrow16", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 15, + .descend = 3, + .max_glyph_width = 8, + .max_glyph_advance = 9, + .glyphs = &font_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x001c, 0x0028, 0x0038, 0x004c, 0x0060, 0x0074, + 0x0080, 0x0094, 0x00a8, 0x00b4, 0x00c0, 0x00cc, 0x00d4, 0x00dc, + 0x00f0, 0x0104, 0x0118, 0x012c, 0x0140, 0x0154, 0x0168, 0x017c, + 0x0190, 0x01a4, 0x01b8, 0x01c8, 0x01d8, 0x01e8, 0x01f4, 0x0204, + 0x0218, 0x022c, 0x0240, 0x0254, 0x0268, 0x027c, 0x0290, 0x02a4, + 0x02b8, 0x02cc, 0x02e0, 0x02f4, 0x0308, 0x031c, 0x0330, 0x0344, + 0x0358, 0x036c, 0x0380, 0x0394, 0x03a8, 0x03bc, 0x03d0, 0x03e4, + 0x03f8, 0x040c, 0x0420, 0x0434, 0x0448, 0x045c, 0x0470, 0x047c, + 0x0484, 0x048c, 0x049c, 0x04b0, 0x04c0, 0x04d4, 0x04e4, 0x04f8, + 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0580, 0x0590, + 0x05a0, 0x05b4, 0x05c8, 0x05d8, 0x05e8, 0x05fc, 0x060c, 0x061c, + 0x062c, 0x063c, 0x0650, 0x0660, 0x0674, 0x0688, 0x069c, 0x06a4, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrow16 = &font; +static uint8_t font_bold_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 9, + 0x00, 0x00, 0x00, + /* '!' */ 2, 12, 4, 12, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* '"' */ 8, 4, 0, 12, 9, + 0xff, 0x33, 0x33, 0x66, 0x00, 0x00, 0x00, + /* '#' */ 8, 11, 0, 11, 9, + 0x1b, 0x1b, 0x1b, 0x7f, 0x36, 0x36, 0x36, 0xff, 0x6c, 0x6c, 0x6c, + /* '$' */ 8, 12, 0, 12, 9, + 0x18, 0x7e, 0xdb, 0xd8, 0xd8, 0x78, 0x1e, 0x1b, 0x1b, 0xdb, 0x7e, 0x18, 0x00, 0x00, 0x00, + /* '%' */ 8, 12, 0, 12, 9, + 0x73, 0xdb, 0xde, 0x76, 0x0c, 0x18, 0x18, 0x30, 0x6e, 0x7b, 0xdb, 0xce, 0x00, 0x00, 0x00, + /* '&' */ 8, 12, 0, 12, 9, + 0x38, 0x6c, 0x6c, 0x6c, 0x38, 0x70, 0xfb, 0xdb, 0xcf, 0xcf, 0xe6, 0x7f, 0x00, 0x00, 0x00, + /* ''' */ 3, 4, 2, 12, 9, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '(' */ 5, 14, 1, 13, 9, + 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x18, 0x00, + /* ')' */ 5, 14, 1, 13, 9, + 0xc0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xc0, 0x00, + /* '*' */ 6, 6, 1, 10, 9, + 0x30, 0xfc, 0x78, 0x78, 0xfc, 0x30, 0x00, + /* '+' */ 8, 7, 0, 9, 9, + 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, + /* ',' */ 3, 4, 2, 3, 9, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '-' */ 6, 1, 1, 6, 9, + 0xfc, 0x00, 0x00, + /* '.' */ 3, 3, 2, 3, 9, + 0xe0, 0xe0, 0xe0, + /* '/' */ 6, 12, 1, 12, 9, + 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* '0' */ 8, 12, 0, 12, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xcf, 0xdb, 0xdb, 0xf3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, + /* '1' */ 5, 12, 1, 12, 9, + 0x38, 0x78, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, + /* '2' */ 7, 12, 1, 12, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, + /* '3' */ 7, 12, 1, 12, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* '4' */ 7, 12, 1, 12, 9, + 0x0c, 0x1c, 0x1c, 0x3c, 0x3c, 0x6c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, + /* '5' */ 7, 12, 1, 12, 9, + 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* '6' */ 7, 12, 1, 12, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* '7' */ 7, 12, 1, 12, 9, + 0xfe, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, + /* '8' */ 7, 12, 1, 12, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* '9' */ 7, 12, 1, 12, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* ':' */ 3, 8, 3, 9, 9, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, + /* ';' */ 3, 9, 3, 9, 9, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x60, 0xc0, 0x00, 0x00, + /* '<' */ 6, 9, 1, 10, 9, + 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00, + /* '=' */ 7, 5, 0, 8, 9, + 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + /* '>' */ 6, 9, 1, 10, 9, + 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x00, 0x00, + /* '?' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, + /* '@' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xf6, 0xf6, 0xf6, 0xde, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, + /* 'A' */ 7, 12, 0, 12, 9, + 0x38, 0x6c, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'B' */ 7, 12, 0, 12, 9, + 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, + /* 'C' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'D' */ 7, 12, 0, 12, 9, + 0xf8, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc, 0xf8, 0x00, 0x00, 0x00, + /* 'E' */ 6, 12, 0, 12, 9, + 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0x00, 0x00, 0x00, + /* 'F' */ 6, 12, 0, 12, 9, + 0xfc, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* 'G' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xce, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'H' */ 7, 12, 0, 12, 9, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'I' */ 6, 12, 0, 12, 9, + 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, 0x00, + /* 'J' */ 7, 12, 0, 12, 9, + 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'K' */ 7, 12, 0, 12, 9, + 0xc6, 0xc6, 0xcc, 0xd8, 0xd8, 0xf0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'L' */ 7, 12, 0, 12, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, + /* 'M' */ 8, 12, 0, 12, 9, + 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, + /* 'N' */ 7, 12, 0, 12, 9, + 0xc6, 0xe6, 0xf6, 0xf6, 0xde, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'O' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'P' */ 7, 12, 0, 12, 9, + 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* 'Q' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xde, 0xcc, 0x7e, 0x00, 0x00, 0x00, + /* 'R' */ 7, 12, 0, 12, 9, + 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0xcc, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'S' */ 7, 12, 0, 12, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0x60, 0x38, 0x0c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'T' */ 8, 12, 0, 12, 9, + 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, + /* 'U' */ 7, 12, 0, 12, 9, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, + /* 'V' */ 8, 12, 0, 12, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, + /* 'W' */ 8, 12, 0, 12, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, + /* 'X' */ 8, 12, 0, 12, 9, + 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, + /* 'Y' */ 8, 12, 0, 12, 9, + 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, + /* 'Z' */ 7, 12, 0, 12, 9, + 0xfe, 0x06, 0x06, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, + /* '[' */ 4, 13, 2, 13, 9, + 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x00, 0x00, + /* '' */ 6, 12, 1, 12, 9, + 0xc0, 0xc0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00, 0x00, + /* ']' */ 4, 13, 2, 13, 9, + 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x00, 0x00, + /* '^' */ 6, 5, 1, 12, 9, + 0x30, 0x78, 0x78, 0xcc, 0xcc, 0x00, 0x00, + /* '_' */ 8, 1, 0, 1, 9, + 0xff, 0x00, 0x00, + /* '`' */ 4, 3, 1, 13, 9, + 0xc0, 0x60, 0x30, + /* 'a' */ 7, 9, 0, 9, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x7e, 0xc6, 0xc6, 0xce, 0x7e, 0x00, 0x00, + /* 'b' */ 7, 12, 0, 12, 9, + 0xc0, 0xc0, 0xc0, 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xfc, 0x00, 0x00, 0x00, + /* 'c' */ 7, 9, 0, 9, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, + /* 'd' */ 7, 12, 0, 12, 9, + 0x06, 0x06, 0x06, 0x7e, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x00, 0x00, 0x00, + /* 'e' */ 7, 9, 0, 9, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, + /* 'f' */ 7, 12, 0, 12, 9, + 0x1e, 0x30, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, + /* 'g' */ 8, 12, 0, 9, 9, + 0x7f, 0xc6, 0xc6, 0xc6, 0x7c, 0xc0, 0xc0, 0x7e, 0xc3, 0xc3, 0xc3, 0x7e, 0x00, 0x00, 0x00, + /* 'h' */ 7, 12, 0, 12, 9, + 0xc0, 0xc0, 0xc0, 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'i' */ 6, 12, 1, 12, 9, + 0x30, 0x00, 0x00, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, 0x00, + /* 'j' */ 6, 14, 1, 12, 9, + 0x0c, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, 0x00, + /* 'k' */ 7, 12, 0, 12, 9, + 0xc0, 0xc0, 0xc0, 0xc6, 0xcc, 0xd8, 0xf0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00, + /* 'l' */ 6, 12, 1, 12, 9, + 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, 0x00, + /* 'm' */ 8, 9, 0, 9, 9, + 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, + /* 'n' */ 7, 9, 0, 9, 9, + 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, + /* 'o' */ 7, 9, 0, 9, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, + /* 'p' */ 7, 12, 0, 9, 9, + 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* 'q' */ 7, 12, 0, 9, 9, + 0x7e, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, + /* 'r' */ 7, 9, 0, 9, 9, + 0xfc, 0xe6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, + /* 's' */ 7, 9, 0, 9, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, + /* 't' */ 7, 12, 0, 12, 9, + 0x30, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x1e, 0x00, 0x00, 0x00, + /* 'u' */ 7, 9, 0, 9, 9, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x00, 0x00, + /* 'v' */ 8, 9, 0, 9, 9, + 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, + /* 'w' */ 8, 9, 0, 9, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0x66, 0x66, 0x00, 0x00, + /* 'x' */ 8, 9, 0, 9, 9, + 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, + /* 'y' */ 8, 12, 0, 9, 9, + 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, + /* 'z' */ 7, 9, 0, 9, 9, + 0xfe, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x60, 0xc0, 0xfe, 0x00, 0x00, + /* '{' */ 4, 13, 2, 13, 9, + 0x70, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0xc0, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x70, 0x00, 0x00, + /* '|' */ 2, 12, 3, 12, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* '}' */ 4, 13, 3, 13, 9, + 0xe0, 0x30, 0x30, 0x30, 0x60, 0x60, 0x30, 0x60, 0x60, 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, + /* '~' */ 8, 3, 0, 7, 9, + 0x70, 0xdb, 0x0e, +}; + +static struct GP_FontFace font_bold = { + .family_name = "HaxorNarrowBold16", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 15, + .descend = 3, + .max_glyph_width = 8, + .max_glyph_advance = 9, + .glyphs = &font_bold_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x001c, 0x0028, 0x0038, 0x004c, 0x0060, 0x0074, + 0x0080, 0x0094, 0x00a8, 0x00b4, 0x00c0, 0x00cc, 0x00d4, 0x00dc, + 0x00f0, 0x0104, 0x0118, 0x012c, 0x0140, 0x0154, 0x0168, 0x017c, + 0x0190, 0x01a4, 0x01b8, 0x01c8, 0x01d8, 0x01e8, 0x01f4, 0x0204, + 0x0218, 0x022c, 0x0240, 0x0254, 0x0268, 0x027c, 0x0290, 0x02a4, + 0x02b8, 0x02cc, 0x02e0, 0x02f4, 0x0308, 0x031c, 0x0330, 0x0344, + 0x0358, 0x036c, 0x0380, 0x0394, 0x03a8, 0x03bc, 0x03d0, 0x03e4, + 0x03f8, 0x040c, 0x0420, 0x0434, 0x0448, 0x045c, 0x0470, 0x047c, + 0x0484, 0x048c, 0x049c, 0x04b0, 0x04c0, 0x04d4, 0x04e4, 0x04f8, + 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0580, 0x0590, + 0x05a0, 0x05b4, 0x05c8, 0x05d8, 0x05e8, 0x05fc, 0x060c, 0x061c, + 0x062c, 0x063c, 0x0650, 0x0660, 0x0674, 0x0688, 0x069c, 0x06a4, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrowBold16 = &font_bold; diff --git a/libs/text/GP_HaxorNarrow17.c b/libs/text/GP_HaxorNarrow17.c new file mode 100644 index 000000000000..46d3d9bbdfad --- /dev/null +++ b/libs/text/GP_HaxorNarrow17.c @@ -0,0 +1,442 @@ +/* Generated file, do not touch */ + +#include <text/GP_Font.h> + +static uint8_t font_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 9, + 0x00, 0x00, 0x00, + /* '!' */ 1, 13, 4, 13, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, + /* '"' */ 7, 4, 0, 13, 9, + 0xee, 0x22, 0x22, 0x44, 0x00, 0x00, 0x00, + /* '#' */ 8, 11, 0, 11, 9, + 0x12, 0x12, 0x12, 0x7f, 0x24, 0x24, 0x24, 0xfe, 0x48, 0x48, 0x48, + /* '$' */ 7, 13, 0, 13, 9, + 0x10, 0x7c, 0x92, 0x90, 0x90, 0x50, 0x38, 0x14, 0x12, 0x12, 0x92, 0x7c, 0x10, 0x00, 0x00, + /* '%' */ 7, 13, 0, 13, 9, + 0x62, 0x92, 0x94, 0x64, 0x08, 0x08, 0x10, 0x20, 0x20, 0x4c, 0x52, 0x92, 0x8c, 0x00, 0x00, + /* '&' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x44, 0x44, 0x48, 0x30, 0x60, 0xd2, 0x92, 0x8a, 0x8a, 0xc4, 0x7a, 0x00, 0x00, + /* ''' */ 2, 4, 2, 13, 9, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '(' */ 4, 15, 1, 14, 9, + 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, + /* ')' */ 4, 15, 1, 14, 9, + 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, + /* '*' */ 5, 6, 1, 10, 9, + 0x20, 0xa8, 0x70, 0x70, 0xa8, 0x20, 0x00, + /* '+' */ 7, 7, 0, 10, 9, + 0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, + /* ',' */ 2, 4, 2, 3, 9, + 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, + /* '-' */ 5, 1, 1, 7, 9, + 0xf8, 0x00, 0x00, + /* '.' */ 2, 3, 2, 3, 9, + 0xc0, 0xc0, 0xc0, + /* '/' */ 5, 13, 1, 13, 9, + 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0x00, + /* '0' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x82, 0x82, 0x82, 0x8a, 0x92, 0xa2, 0x82, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, + /* '1' */ 4, 13, 1, 13, 9, + 0x30, 0x50, 0x90, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, + /* '2' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x84, 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x00, + /* '3' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x04, 0x04, 0x04, 0x38, 0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, + /* '4' */ 7, 13, 0, 13, 9, + 0x04, 0x0c, 0x0c, 0x14, 0x24, 0x24, 0x44, 0x84, 0xfe, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, + /* '5' */ 6, 13, 1, 13, 9, + 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, + /* '6' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x80, 0x80, 0x80, 0xf8, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, + /* '7' */ 7, 13, 0, 13, 9, + 0xfe, 0x02, 0x02, 0x04, 0x04, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, + /* '8' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, + /* '9' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, 0x7c, 0x04, 0x04, 0x04, 0x04, 0x84, 0x78, 0x00, 0x00, + /* ':' */ 2, 8, 3, 10, 9, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* ';' */ 2, 9, 3, 10, 9, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, + /* '<' */ 7, 9, 0, 11, 9, + 0x02, 0x0c, 0x10, 0x60, 0x80, 0x60, 0x10, 0x0c, 0x02, 0x00, 0x00, + /* '=' */ 7, 5, 0, 9, 9, + 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + /* '>' */ 7, 9, 0, 11, 9, + 0x80, 0x60, 0x10, 0x0c, 0x02, 0x0c, 0x10, 0x60, 0x80, 0x00, 0x00, + /* '?' */ 6, 13, 1, 13, 9, + 0x78, 0x84, 0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, + /* '@' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x82, 0x82, 0x9e, 0xa2, 0xa2, 0xa2, 0xa2, 0x9c, 0x80, 0x42, 0x3c, 0x00, 0x00, + /* 'A' */ 7, 13, 0, 13, 9, + 0x10, 0x28, 0x28, 0x44, 0x44, 0x44, 0x82, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, + /* 'B' */ 7, 13, 0, 13, 9, + 0xfc, 0x82, 0x82, 0x82, 0x82, 0xfc, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfc, 0x00, 0x00, + /* 'C' */ 7, 13, 0, 13, 9, + 0x3c, 0x42, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x42, 0x3c, 0x00, 0x00, + /* 'D' */ 7, 13, 0, 13, 9, + 0xf8, 0x84, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x84, 0xf8, 0x00, 0x00, + /* 'E' */ 6, 13, 0, 13, 9, + 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, + /* 'F' */ 6, 13, 0, 13, 9, + 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, + /* 'G' */ 7, 13, 0, 13, 9, + 0x7c, 0x82, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8e, 0x82, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x00, + /* 'H' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, + /* 'I' */ 5, 13, 1, 13, 9, + 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, + /* 'J' */ 7, 13, 0, 13, 9, + 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x7c, 0x00, 0x00, + /* 'K' */ 7, 13, 0, 13, 9, + 0x84, 0x84, 0x88, 0x90, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x88, 0x84, 0x84, 0x82, 0x00, 0x00, + /* 'L' */ 7, 13, 0, 13, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfe, 0x00, 0x00, + /* 'M' */ 7, 13, 0, 13, 9, + 0x82, 0xc6, 0xaa, 0xaa, 0x92, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, + /* 'N' */ 7, 13, 0, 13, 9, + 0x82, 0xc2, 0xa2, 0xa2, 0x92, 0x8a, 0x8a, 0x86, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, + /* 'O' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, + /* 'P' */ 7, 13, 0, 13, 9, + 0xf8, 0x84, 0x82, 0x82, 0x82, 0x84, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, + /* 'Q' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x8a, 0x44, 0x3a, 0x00, 0x00, + /* 'R' */ 7, 13, 0, 13, 9, + 0xfc, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfc, 0x88, 0x84, 0x84, 0x82, 0x82, 0x82, 0x00, 0x00, + /* 'S' */ 7, 13, 0, 13, 9, + 0x38, 0x44, 0x82, 0x80, 0x80, 0x40, 0x38, 0x04, 0x02, 0x02, 0x82, 0x44, 0x38, 0x00, 0x00, + /* 'T' */ 7, 13, 0, 13, 9, + 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, + /* 'U' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, + /* 'V' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x82, 0x82, 0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10, 0x10, 0x00, 0x00, + /* 'W' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x00, 0x00, + /* 'X' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x28, 0x28, 0x44, 0x44, 0x82, 0x82, 0x00, 0x00, + /* 'Y' */ 7, 13, 0, 13, 9, + 0x82, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, + /* 'Z' */ 7, 13, 0, 13, 9, + 0xfe, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0xfe, 0x00, 0x00, + /* '[' */ 3, 13, 2, 13, 9, + 0xe0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe0, 0x00, 0x00, + /* '' */ 5, 13, 1, 13, 9, + 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, + /* ']' */ 3, 13, 2, 13, 9, + 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, + /* '^' */ 7, 4, 0, 13, 9, + 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, + /* '_' */ 8, 1, 0, 1, 9, + 0xff, 0x00, 0x00, + /* '`' */ 3, 3, 1, 13, 9, + 0x80, 0x40, 0x20, + /* 'a' */ 6, 10, 1, 10, 9, + 0x78, 0x84, 0x04, 0x04, 0x7c, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x00, + /* 'b' */ 6, 13, 1, 13, 9, + 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x00, 0x00, + /* 'c' */ 6, 10, 1, 10, 9, + 0x38, 0x44, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x44, 0x38, 0x00, + /* 'd' */ 6, 13, 1, 13, 9, + 0x04, 0x04, 0x04, 0x74, 0x8c, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x00, 0x00, + /* 'e' */ 6, 10, 1, 10, 9, + 0x78, 0x84, 0x84, 0x84, 0xfc, 0x80, 0x80, 0x80, 0x84, 0x78, 0x00, + /* 'f' */ 7, 13, 0, 13, 9, + 0x1c, 0x22, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, + /* 'g' */ 7, 13, 0, 10, 9, + 0x7e, 0x84, 0x84, 0x84, 0x84, 0x78, 0x80, 0x80, 0x7c, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x00, + /* 'h' */ 6, 13, 1, 13, 9, + 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, + /* 'i' */ 5, 13, 2, 13, 9, + 0x20, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, + /* 'j' */ 5, 15, 1, 13, 9, + 0x08, 0x00, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x70, + /* 'k' */ 6, 13, 1, 13, 9, + 0x80, 0x80, 0x80, 0x84, 0x88, 0x90, 0xa0, 0xc0, 0xe0, 0x90, 0x88, 0x84, 0x84, 0x00, 0x00, + /* 'l' */ 5, 13, 2, 13, 9, + 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x00, 0x00, + /* 'm' */ 7, 10, 0, 10, 9, + 0xec, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, + /* 'n' */ 6, 10, 1, 10, 9, + 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, + /* 'o' */ 7, 10, 0, 10, 9, + 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x00, + /* 'p' */ 6, 13, 1, 10, 9, + 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80, 0x80, 0x00, 0x00, + /* 'q' */ 6, 13, 1, 10, 9, + 0x74, 0x8c, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x04, 0x04, 0x04, 0x00, 0x00, + /* 'r' */ 6, 10, 1, 10, 9, + 0xb8, 0xc4, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, + /* 's' */ 7, 10, 0, 10, 9, + 0x3c, 0x42, 0x40, 0x40, 0x30, 0x0c, 0x02, 0x02, 0x82, 0x7c, 0x00, + /* 't' */ 7, 13, 0, 13, 9, + 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x1c, 0x00, 0x00, + /* 'u' */ 6, 10, 1, 10, 9, + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x00, + /* 'v' */ 7, 10, 0, 10, 9, + 0x82, 0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10, 0x00, + /* 'w' */ 7, 10, 0, 10, 9, + 0x82, 0x82, 0x82, 0x82, 0x92, 0x92, 0xaa, 0xaa, 0x44, 0x44, 0x00, + /* 'x' */ 7, 10, 0, 10, 9, + 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x82, 0x82, 0x00, + /* 'y' */ 7, 13, 0, 10, 9, + 0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, + /* 'z' */ 7, 10, 0, 10, 9, + 0xfe, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x40, 0x80, 0xfe, 0x00, + /* '{' */ 3, 13, 2, 13, 9, + 0x60, 0x80, 0x80, 0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0x80, 0x80, 0x60, 0x00, 0x00, + /* '|' */ 1, 12, 3, 12, 9, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + /* '}' */ 3, 13, 3, 13, 9, + 0xc0, 0x20, 0x20, 0x20, 0x40, 0x40, 0x20, 0x40, 0x40, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, + /* '~' */ 7, 3, 0, 7, 9, + 0x60, 0x92, 0x0c, +}; + +static struct GP_FontFace font = { + .family_name = "HaxorNarrow17", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 16, + .descend = 3, + .max_glyph_width = 8, + .max_glyph_advance = 9, + .glyphs = &font_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x001c, 0x0028, 0x0038, 0x004c, 0x0060, 0x0074, + 0x0080, 0x0094, 0x00a8, 0x00b4, 0x00c0, 0x00cc, 0x00d4, 0x00dc, + 0x00f0, 0x0104, 0x0118, 0x012c, 0x0140, 0x0154, 0x0168, 0x017c, + 0x0190, 0x01a4, 0x01b8, 0x01c8, 0x01d8, 0x01e8, 0x01f4, 0x0204, + 0x0218, 0x022c, 0x0240, 0x0254, 0x0268, 0x027c, 0x0290, 0x02a4, + 0x02b8, 0x02cc, 0x02e0, 0x02f4, 0x0308, 0x031c, 0x0330, 0x0344, + 0x0358, 0x036c, 0x0380, 0x0394, 0x03a8, 0x03bc, 0x03d0, 0x03e4, + 0x03f8, 0x040c, 0x0420, 0x0434, 0x0448, 0x045c, 0x0470, 0x047c, + 0x0484, 0x048c, 0x049c, 0x04b0, 0x04c0, 0x04d4, 0x04e4, 0x04f8, + 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0580, 0x0590, + 0x05a0, 0x05b4, 0x05c8, 0x05d8, 0x05e8, 0x05fc, 0x060c, 0x061c, + 0x062c, 0x063c, 0x0650, 0x0660, 0x0674, 0x0688, 0x069c, 0x06a4, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrow17 = &font; +static uint8_t font_bold_glyphs[] = { + /* ' ' */ 0, 0, 0, 0, 9, + 0x00, 0x00, 0x00, + /* '!' */ 2, 13, 4, 13, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, + /* '"' */ 8, 4, 0, 13, 9, + 0xff, 0x33, 0x33, 0x66, 0x00, 0x00, 0x00, + /* '#' */ 8, 11, 0, 11, 9, + 0x1b, 0x1b, 0x1b, 0x7f, 0x36, 0x36, 0x36, 0xff, 0x6c, 0x6c, 0x6c, + /* '$' */ 8, 13, 0, 13, 9, + 0x18, 0x7e, 0xdb, 0xd8, 0xd8, 0x78, 0x3c, 0x1e, 0x1b, 0x1b, 0xdb, 0x7e, 0x18, 0x00, 0x00, + /* '%' */ 8, 13, 0, 13, 9, + 0x73, 0xdb, 0xde, 0x76, 0x0c, 0x0c, 0x18, 0x30, 0x30, 0x6e, 0x7b, 0xdb, 0xce, 0x00, 0x00, + /* '&' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0x66, 0x66, 0x6c, 0x38, 0x70, 0xfb, 0xdb, 0xcf, 0xcf, 0xe6, 0x7f, 0x00, 0x00, + /* ''' */ 3, 4, 2, 13, 9, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '(' */ 5, 15, 1, 14, 9, + 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x18, + /* ')' */ 5, 15, 1, 14, 9, + 0xc0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xc0, + /* '*' */ 6, 6, 1, 10, 9, + 0x30, 0xfc, 0x78, 0x78, 0xfc, 0x30, 0x00, + /* '+' */ 8, 7, 0, 10, 9, + 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, + /* ',' */ 3, 4, 2, 3, 9, + 0xe0, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, + /* '-' */ 6, 1, 1, 7, 9, + 0xfc, 0x00, 0x00, + /* '.' */ 3, 3, 2, 3, 9, + 0xe0, 0xe0, 0xe0, + /* '/' */ 6, 13, 1, 13, 9, + 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x00, 0x00, + /* '0' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xc3, 0xcf, 0xdb, 0xf3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, + /* '1' */ 5, 13, 1, 13, 9, + 0x38, 0x78, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, + /* '2' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xfe, 0x00, 0x00, + /* '3' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, + /* '4' */ 8, 13, 0, 13, 9, + 0x06, 0x0e, 0x0e, 0x1e, 0x36, 0x36, 0x66, 0xc6, 0xff, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, + /* '5' */ 7, 13, 1, 13, 9, + 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, + /* '6' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, + /* '7' */ 8, 13, 0, 13, 9, + 0xff, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, + /* '8' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, + /* '9' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, + /* ':' */ 3, 8, 3, 10, 9, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, + /* ';' */ 3, 9, 3, 10, 9, + 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x60, 0xc0, 0x00, 0x00, + /* '<' */ 8, 9, 0, 11, 9, + 0x03, 0x0e, 0x18, 0x70, 0xc0, 0x70, 0x18, 0x0e, 0x03, 0x00, 0x00, + /* '=' */ 8, 5, 0, 9, 9, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, + /* '>' */ 8, 9, 0, 11, 9, + 0xc0, 0x70, 0x18, 0x0e, 0x03, 0x0e, 0x18, 0x70, 0xc0, 0x00, 0x00, + /* '?' */ 7, 13, 1, 13, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + /* '@' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xdf, 0xf3, 0xf3, 0xf3, 0xf3, 0xde, 0xc0, 0x63, 0x3e, 0x00, 0x00, + /* 'A' */ 8, 13, 0, 13, 9, + 0x18, 0x3c, 0x3c, 0x66, 0x66, 0x66, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + /* 'B' */ 8, 13, 0, 13, 9, + 0xfe, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0x00, 0x00, + /* 'C' */ 8, 13, 0, 13, 9, + 0x3e, 0x63, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x63, 0x3e, 0x00, 0x00, + /* 'D' */ 8, 13, 0, 13, 9, + 0xfc, 0xc6, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc6, 0xfc, 0x00, 0x00, + /* 'E' */ 7, 13, 0, 13, 9, + 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, + /* 'F' */ 7, 13, 0, 13, 9, + 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, + /* 'G' */ 8, 13, 0, 13, 9, + 0x7e, 0xc3, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, 0xc3, 0xc3, 0xc3, 0xc3, 0x7e, 0x00, 0x00, + /* 'H' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + /* 'I' */ 6, 13, 1, 13, 9, + 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, + /* 'J' */ 8, 13, 0, 13, 9, + 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xc3, 0xc3, 0x7e, 0x00, 0x00, + /* 'K' */ 8, 13, 0, 13, 9, + 0xc6, 0xc6, 0xcc, 0xd8, 0xd8, 0xf0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc6, 0xc6, 0xc3, 0x00, 0x00, + /* 'L' */ 8, 13, 0, 13, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, + /* 'M' */ 8, 13, 0, 13, 9, + 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + /* 'N' */ 8, 13, 0, 13, 9, + 0xc3, 0xe3, 0xf3, 0xf3, 0xdb, 0xcf, 0xcf, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + /* 'O' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, + /* 'P' */ 8, 13, 0, 13, 9, + 0xfc, 0xc6, 0xc3, 0xc3, 0xc3, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, + /* 'Q' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xcf, 0x66, 0x3f, 0x00, 0x00, + /* 'R' */ 8, 13, 0, 13, 9, + 0xfe, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0xcc, 0xc6, 0xc6, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + /* 'S' */ 8, 13, 0, 13, 9, + 0x3c, 0x66, 0xc3, 0xc0, 0xc0, 0x60, 0x3c, 0x06, 0x03, 0x03, 0xc3, 0x66, 0x3c, 0x00, 0x00, + /* 'T' */ 8, 13, 0, 13, 9, + 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, + /* 'U' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, + /* 'V' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00, + /* 'W' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0xff, 0xff, 0x66, 0x66, 0x00, 0x00, + /* 'X' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0x00, 0x00, + /* 'Y' */ 8, 13, 0, 13, 9, + 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, + /* 'Z' */ 8, 13, 0, 13, 9, + 0xff, 0x03, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xff, 0x00, 0x00, + /* '[' */ 4, 13, 2, 13, 9, + 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x00, 0x00, + /* '' */ 6, 13, 1, 13, 9, + 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00, + /* ']' */ 4, 13, 2, 13, 9, + 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x00, 0x00, + /* '^' */ 8, 4, 0, 13, 9, + 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, + /* '_' */ 8, 1, 0, 1, 9, + 0xff, 0x00, 0x00, + /* '`' */ 4, 3, 1, 13, 9, + 0xc0, 0x60, 0x30, + /* 'a' */ 7, 10, 1, 10, 9, + 0x7c, 0xc6, 0x06, 0x06, 0x7e, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x00, + /* 'b' */ 7, 13, 1, 13, 9, + 0xc0, 0xc0, 0xc0, 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xfc, 0x00, 0x00, + /* 'c' */ 7, 10, 1, 10, 9, + 0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00, + /* 'd' */ 7, 13, 1, 13, 9, + 0x06, 0x06, 0x06, 0x7e, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x00, 0x00, + /* 'e' */ 7, 10, 1, 10, 9, + 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, + /* 'f' */ 8, 13, 0, 13, 9, + 0x1e, 0x33, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, + /* 'g' */ 8, 13, 0, 10, 9, + 0x7f, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0xc0, 0xc0, 0x7e, 0xc3, 0xc3, 0xc3, 0x7e, 0x00, 0x00, + /* 'h' */ 7, 13, 1, 13, 9, + 0xc0, 0xc0, 0xc0, 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, + /* 'i' */ 6, 13, 2, 13, 9, + 0x30, 0x00, 0x00, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, + /* 'j' */ 6, 15, 1, 13, 9, + 0x0c, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0x78, + /* 'k' */ 7, 13, 1, 13, 9, + 0xc0, 0xc0, 0xc0, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc6, 0x00, 0x00, + /* 'l' */ 6, 13, 2, 13, 9, + 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00, 0x00, + /* 'm' */ 8, 10, 0, 10, 9, + 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, + /* 'n' */ 7, 10, 1, 10, 9, + 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, + /* 'o' */ 8, 10, 0, 10, 9, + 0x3c, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, + /* 'p' */ 7, 13, 1, 10, 9, + 0xfc, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, 0x00, + /* 'q' */ 7, 13, 1, 10, 9, + 0x7e, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, + /* 'r' */ 7, 10, 1, 10, 9, + 0xfc, 0xe6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, + /* 's' */ 8, 10, 0, 10, 9, + 0x3e, 0x63, 0x60, 0x60, 0x38, 0x0e, 0x03, 0x03, 0xc3, 0x7e, 0x00, + /* 't' */ 8, 13, 0, 13, 9, + 0x30, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, + /* 'u' */ 7, 10, 1, 10, 9, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7e, 0x00, + /* 'v' */ 8, 10, 0, 10, 9, + 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x00, + /* 'w' */ 8, 10, 0, 10, 9, + 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0xff, 0x66, 0x66, 0x00, + /* 'x' */ 8, 10, 0, 10, 9, + 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x66, 0xc3, 0xc3, 0x00, + /* 'y' */ 8, 13, 0, 10, 9, + 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, + /* 'z' */ 8, 10, 0, 10, 9, + 0xff, 0x03, 0x06, 0x0c, 0x18, 0x18, 0x30, 0x60, 0xc0, 0xff, 0x00, + /* '{' */ 4, 13, 2, 13, 9, + 0x70, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0xc0, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x70, 0x00, 0x00, + /* '|' */ 2, 12, 3, 12, 9, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + /* '}' */ 4, 13, 3, 13, 9, + 0xe0, 0x30, 0x30, 0x30, 0x60, 0x60, 0x30, 0x60, 0x60, 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, + /* '~' */ 8, 3, 0, 7, 9, + 0x70, 0xdb, 0x0e, +}; + +static struct GP_FontFace font_bold = { + .family_name = "HaxorNarrowBold17", + .style_name = "Mono", + .charset = GP_CHARSET_7BIT, + .ascend = 16, + .descend = 3, + .max_glyph_width = 8, + .max_glyph_advance = 9, + .glyphs = &font_bold_glyphs, + .glyph_offsets = { + 0x0000, 0x0008, 0x001c, 0x0028, 0x0038, 0x004c, 0x0060, 0x0074, + 0x0080, 0x0094, 0x00a8, 0x00b4, 0x00c0, 0x00cc, 0x00d4, 0x00dc, + 0x00f0, 0x0104, 0x0118, 0x012c, 0x0140, 0x0154, 0x0168, 0x017c, + 0x0190, 0x01a4, 0x01b8, 0x01c8, 0x01d8, 0x01e8, 0x01f4, 0x0204, + 0x0218, 0x022c, 0x0240, 0x0254, 0x0268, 0x027c, 0x0290, 0x02a4, + 0x02b8, 0x02cc, 0x02e0, 0x02f4, 0x0308, 0x031c, 0x0330, 0x0344, + 0x0358, 0x036c, 0x0380, 0x0394, 0x03a8, 0x03bc, 0x03d0, 0x03e4, + 0x03f8, 0x040c, 0x0420, 0x0434, 0x0448, 0x045c, 0x0470, 0x047c, + 0x0484, 0x048c, 0x049c, 0x04b0, 0x04c0, 0x04d4, 0x04e4, 0x04f8, + 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0580, 0x0590, + 0x05a0, 0x05b4, 0x05c8, 0x05d8, 0x05e8, 0x05fc, 0x060c, 0x061c, + 0x062c, 0x063c, 0x0650, 0x0660, 0x0674, 0x0688, 0x069c, 0x06a4, + } +}; + +const struct GP_FontFace *GP_FontHaxorNarrowBold17 = &font_bold; diff --git a/libs/text/GP_Text.gen.c.t b/libs/text/GP_Text.gen.c.t index 189cf7f2f031..4e06be6cc5e5 100644 --- a/libs/text/GP_Text.gen.c.t +++ b/libs/text/GP_Text.gen.c.t @@ -56,8 +56,8 @@ static void text_draw_1BPP_{{ pt.name }}(GP_Pixmap *pixmap, const GP_TextStyle *
int start_x = x + (i + glyph->bearing_x) * x_mul;
- if (p == str) - start_x -= glyph->bearing_x * x_mul; + //if (p == str) + // start_x -= glyph->bearing_x * x_mul;
int start_y = y - (glyph->bearing_y - style->font->ascend) * y_mul;
-----------------------------------------------------------------------
Summary of changes: build/syms/Text_symbols.txt | 6 + configure | 3 + demos/Makefile | 4 + demos/termini/.gitignore | 1 + demos/{particle => termini}/Makefile | 10 +- demos/{ttf2img => termini}/runtest.sh | 0 demos/termini/termini.c | 612 ++++++++++++++++++++++++++ include/text/GP_Font.h | 9 +- include/text/GP_Fonts.h | 12 + libs/text/GP_HaxorNarrow15.c | 442 +++++++++++++++++++ libs/text/GP_HaxorNarrow16.c | 442 +++++++++++++++++++ libs/text/GP_HaxorNarrow17.c | 442 +++++++++++++++++++ libs/text/GP_Text.gen.c.t | 4 +- 13 files changed, 1978 insertions(+), 9 deletions(-) create mode 100644 demos/termini/.gitignore copy demos/{particle => termini}/Makefile (57%) copy demos/{ttf2img => termini}/runtest.sh (100%) create mode 100644 demos/termini/termini.c create mode 100644 libs/text/GP_HaxorNarrow15.c create mode 100644 libs/text/GP_HaxorNarrow16.c create mode 100644 libs/text/GP_HaxorNarrow17.c
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos@gmail.com if you want to unsubscribe, or site admin admin@repo.or.cz if you receive no reply.