text: #pragma once
  
  #include <cstdint>
  
  // Glpyh data
  typedef struct {
      uint16_t offset;            // Offset in bitmap array
      uint8_t width, height;      // Bitmap dimensions in pixels
      uint8_t xAdvance;           // Distance to advance cursor (x axis)
      int8_t xOffset, yOffset;    // Distance from cursor to upper-left corner
  } BitmapFontGlyph;
  
  // Font data
  typedef struct {
      uint8_t *bitmap;            // Glyph bitmaps, concatenated
      BitmapFontGlyph *glyphs;    // Glyph array
      uint8_t first, last;        // ASCII extents
      uint8_t yAdvance;           // Newline distance (y axis)
  } BitmapFont;
  
  static uint8_t font_bitmap[] = {
      0x17, 0x2d, 0xea, 0xab, 0xaf, 0x00, 0xbe, 0x38, 0xfa, 0x00, 0x11, 0x11, 0x11, 0x01, 0x52, 0x52,
      0x0a, 0x06, 0x56, 0x02, 0xa9, 0x01, 0xaa, 0x00, 0xba, 0x00, 0x06, 0x07, 0x01, 0x10, 0x11, 0x11,
      0x00, 0x2e, 0xc6, 0xe8, 0x00, 0xae, 0x02, 0x96, 0x24, 0x0f, 0x87, 0x87, 0x07, 0x64, 0xf5, 0x04,
      0x1f, 0x87, 0x07, 0x16, 0x97, 0x06, 0xa7, 0x24, 0x2e, 0xba, 0xe8, 0x00, 0x2e, 0x7a, 0xe8, 0x00,
      0x05, 0x0d, 0x26, 0xc7, 0x01, 0x19, 0x19, 0x01, 0x1c, 0x51, 0xb2, 0x9a, 0x15, 0x31, 0x00, 0x2e,
      0xfe, 0x18, 0x01, 0x2f, 0xbe, 0xf8, 0x00, 0x3e, 0x84, 0xe0, 0x01, 0x2f, 0xc6, 0xf8, 0x00, 0x3f,
      0x9c, 0xf0, 0x01, 0x3f, 0x9c, 0x10, 0x00, 0x3e, 0xf4, 0xe8, 0x00, 0x31, 0xfe, 0x18, 0x01, 0x1f,
      0x10, 0xc2, 0xe8, 0x00, 0x59, 0x53, 0x09, 0x21, 0x84, 0xf0, 0x01, 0x71, 0xd7, 0x18, 0x01, 0x71,
      0xd6, 0x1c, 0x01, 0x2e, 0xc6, 0xe8, 0x00, 0x2f, 0xbe, 0x10, 0x00, 0x2e, 0xc6, 0xec, 0x01, 0x2f,
      0xbe, 0x14, 0x01, 0x3e, 0x38, 0xf8, 0x00, 0x9f, 0x10, 0x42, 0x00, 0x31, 0xc6, 0xe8, 0x00, 0x31,
      0x2a, 0x45, 0x00, 0xb5, 0x56, 0xa5, 0x00, 0x51, 0x11, 0x15, 0x01, 0x51, 0x11, 0x42, 0x00, 0x1f,
      0x11, 0xf1, 0x01, 0x57, 0x03, 0x41, 0x10, 0x04, 0x01, 0xab, 0x03, 0x2a, 0x1f, 0x09, 0x2e, 0xfe,
      0x18, 0x01, 0x2f, 0xbe, 0xf8, 0x00, 0x3e, 0x84, 0xe0, 0x01, 0x2f, 0xc6, 0xf8, 0x00, 0x3f, 0x9c,
      0xf0, 0x01, 0x3f, 0x9c, 0x10, 0x00, 0x3e, 0xf4, 0xe8, 0x00, 0x31, 0xfe, 0x18, 0x01, 0x1f, 0x10,
      0xc2, 0xe8, 0x00, 0x59, 0x53, 0x09, 0x21, 0x84, 0xf0, 0x01, 0x71, 0xd7, 0x18, 0x01, 0x71, 0xd6,
      0x1c, 0x01, 0x2e, 0xc6, 0xe8, 0x00, 0x2f, 0xbe, 0x10, 0x00, 0x2e, 0xc6, 0xec, 0x01, 0x2f, 0xbe,
      0x14, 0x01, 0x3e, 0x38, 0xf8, 0x00, 0x9f, 0x10, 0x42, 0x00, 0x31, 0xc6, 0xe8, 0x00, 0x31, 0x2a,
      0x45, 0x00, 0xb5, 0x56, 0xa5, 0x00, 0x51, 0x11, 0x15, 0x01, 0x51, 0x11, 0x42, 0x00, 0x1f, 0x11,
      0xf1, 0x01, 0x9a, 0x02, 0x1f, 0x65, 0x01, 0xd0, 0x05
  };
  
  static BitmapFontGlyph font_glyphs[] = {
      { 0, 0, 0, 3, 0, 1 },
      { 0, 1, 5, 2, 0, -4 },
      { 1, 3, 2, 4, 0, -4 },
      { 2, 5, 5, 6, 0, -4 },
      { 6, 5, 5, 6, 0, -4 },
      { 10, 5, 5, 6, 0, -4 },
      { 14, 4, 5, 5, 0, -4 },
      { 17, 2, 2, 3, 0, -4 },
      { 18, 2, 5, 3, 0, -4 },
      { 20, 2, 5, 3, 0, -4 },
      { 22, 3, 3, 4, 0, -4 },
      { 24, 3, 3, 4, 0, -3 },
      { 26, 2, 2, 3, 0, -1 },
      { 27, 3, 1, 4, 0, -2 },
      { 28, 1, 1, 2, 0, 0 },
      { 29, 5, 5, 6, 0, -4 },
      { 33, 5, 5, 6, 0, -4 },
      { 37, 2, 5, 3, 0, -4 },
      { 39, 4, 5, 5, 0, -4 },
      { 42, 4, 5, 5, 0, -4 },
      { 45, 4, 5, 5, 0, -4 },
      { 48, 4, 5, 5, 0, -4 },
      { 51, 4, 5, 5, 0, -4 },
      { 54, 3, 5, 4, 0, -4 },
      { 56, 5, 5, 6, 0, -4 },
      { 60, 5, 5, 6, 0, -4 },
      { 64, 1, 3, 2, 0, -3 },
      { 65, 1, 4, 2, 0, -3 },
      { 66, 2, 3, 3, 0, -3 },
      { 67, 3, 3, 4, 0, -3 },
      { 69, 2, 3, 3, 0, -3 },
      { 70, 2, 5, 3, 0, -4 },
      { 72, 7, 7, 8, 0, -6 },
      { 79, 5, 5, 6, 0, -4 },
      { 83, 5, 5, 6, 0, -4 },
      { 87, 5, 5, 6, 0, -4 },
      { 91, 5, 5, 6, 0, -4 },
      { 95, 5, 5, 6, 0, -4 },
      { 99, 5, 5, 6, 0, -4 },
      { 103, 5, 5, 6, 0, -4 },
      { 107, 5, 5, 6, 0, -4 },
      { 111, 1, 5, 2, 0, -4 },
      { 112, 5, 5, 6, 0, -4 },
      { 116, 4, 5, 5, 0, -4 },
      { 119, 5, 5, 6, 0, -4 },
      { 123, 5, 5, 6, 0, -4 },
      { 127, 5, 5, 6, 0, -4 },
      { 131, 5, 5, 6, 0, -4 },
      { 135, 5, 5, 6, 0, -4 },
      { 139, 5, 5, 6, 0, -4 },
      { 143, 5, 5, 6, 0, -4 },
      { 147, 5, 5, 6, 0, -4 },
      { 151, 5, 5, 6, 0, -4 },
      { 155, 5, 5, 6, 0, -4 },
      { 159, 5, 5, 6, 0, -4 },
      { 163, 5, 5, 6, 0, -4 },
      { 167, 5, 5, 6, 0, -4 },
      { 171, 5, 5, 6, 0, -4 },
      { 175, 5, 5, 6, 0, -4 },
      { 179, 2, 5, 3, 0, -4 },
      { 181, 5, 5, 6, 0, -4 },
      { 185, 2, 5, 3, 0, -4 },
      { 187, 3, 2, 4, 0, -4 },
      { 188, 5, 1, 6, 0, 0 },
      { 189, 2, 2, 3, 0, -4 },
      { 190, 5, 5, 6, 0, -4 },
      { 194, 5, 5, 6, 0, -4 },
      { 198, 5, 5, 6, 0, -4 },
      { 202, 5, 5, 6, 0, -4 },
      { 206, 5, 5, 6, 0, -4 },
      { 210, 5, 5, 6, 0, -4 },
      { 214, 5, 5, 6, 0, -4 },
      { 218, 5, 5, 6, 0, -4 },
      { 222, 1, 5, 2, 0, -4 },
      { 223, 5, 5, 6, 0, -4 },
      { 227, 4, 5, 5, 0, -4 },
      { 230, 5, 5, 6, 0, -4 },
      { 234, 5, 5, 6, 0, -4 },
      { 238, 5, 5, 6, 0, -4 },
      { 242, 5, 5, 6, 0, -4 },
      { 246, 5, 5, 6, 0, -4 },
      { 250, 5, 5, 6, 0, -4 },
      { 254, 5, 5, 6, 0, -4 },
      { 258, 5, 5, 6, 0, -4 },
      { 262, 5, 5, 6, 0, -4 },
      { 266, 5, 5, 6, 0, -4 },
      { 270, 5, 5, 6, 0, -4 },
      { 274, 5, 5, 6, 0, -4 },
      { 278, 5, 5, 6, 0, -4 },
      { 282, 5, 5, 6, 0, -4 },
      { 286, 5, 5, 6, 0, -4 },
      { 290, 2, 5, 3, 0, -4 },
      { 292, 1, 5, 2, 0, -4 },
      { 293, 2, 5, 3, 0, -4 },
      { 295, 5, 3, 6, 0, -3 },
  };
  
  static BitmapFont font = {
      font_bitmap, font_glyphs, 32, 126, 15
  };
  