Skip to content

Instantly share code, notes, and snippets.

@mxashlynn
Last active February 22, 2026 07:14
Show Gist options
  • Select an option

  • Save mxashlynn/98363621672f6f811b4f429f2e9b69c8 to your computer and use it in GitHub Desktop.

Select an option

Save mxashlynn/98363621672f6f811b4f429f2e9b69c8 to your computer and use it in GitHub Desktop.
A description of how GB Studio's font mappings actually work

1. MxAshlynn Short Codes: Glyph Combos

2. GB Studio Default: "ASCII" Characters

3. GB Studio Canonical Encoding: Font Mapping

4. Paige's Version: MxAshlynn Font Format

Glyph Combos

I use these glyph combos in my fonts:

🅰   (A)         ⒶⓁ  [ALT]
🅱   (B)         🄲🅁  [CONTROL]
🅢🅣🅡 (START)     ⒺⓃⓉ [ENTER]
🆂🅴🅻 (SELECT)    🅂🄷🄵 [SHIFT]

⊕αβ🖤💀
🗹⊙🛈❔❕

"ASCII" Characters

By default, GB Studio uses the Windows Code Page 1252.

As of February 2026, the official documentation still incorrectly identifies this as ASCII, but there are diferences which have lead to confusion and a lack of interoperability between GB Studio and Unicode.

All of the characters that GB Studio maps from this codepage (with delete replaced by ⌦, nonbreaking space replaced by ␣, soft hyphen replaced by ⁃, and other nonprinting characters replaced by �) are given here in the order GB Studio uses:

 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~⌦
����������������
����������������
␣¡¢£¤¥¦§¨©ª«¬⁃®¯
°±²³´µ¶·¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
ÐÑÒÓÔÕÖרÙÚÛÜÝÞß
àáâãäåæçèéêëìíîï
ðñòóôõö÷øùúûüýþÿ

In general, the nonprinting characters are hard to work with without a font mapping.

Font Mapping

A much more flexible and reliable way to organize GB Studio font files is using a font mapping.

Unfortunately, the exact form of this file is not well documented as of February 2026. So, here is an example of the default font mapping:

{
  "name": "GBS Mono",
  "mapping": {
    " ": 32,
    "!": 33,
    "\"": 34,
    "#": 35,
    "$": 36,
    "%": 37,
    "&": 38,
    "'": 39,
    "(": 40,
    ")": 41,
    "*": 42,
    "+": 43,
    ",": 44,
    "-": 45,
    ".": 46,
    "/": 47,

    "0": 48,
    "1": 49,
    "2": 50,
    "3": 51,
    "4": 52,
    "5": 53,
    "6": 54,
    "7": 55,
    "8": 56,
    "9": 57,
    ":": 58,
    ";": 59,
    "<": 60,
    "=": 61,
    ">": 62,
    "?": 63,

    "@": 64,
    "A": 65,
    "B": 66,
    "C": 67,
    "D": 68,
    "E": 69,
    "F": 70,
    "G": 71,
    "H": 72,
    "I": 73,
    "J": 74,
    "K": 75,
    "L": 76,
    "M": 77,
    "N": 78,
    "O": 79,

    "P": 80,
    "Q": 81,
    "R": 82,
    "S": 83,
    "T": 84,
    "U": 85,
    "V": 86,
    "W": 87,
    "X": 88,
    "Y": 89,
    "Z": 90,
    "[": 91,
    "\\": 92,
    "]": 93,
    "^": 94,
    "_": 95,

    "`": 96,
    "a": 97,
    "b": 98,
    "c": 99,
    "d": 100,
    "e": 101,
    "f": 102,
    "g": 103,
    "h": 104,
    "i": 105,
    "j": 106,
    "k": 107,
    "l": 108,
    "m": 109,
    "n": 110,
    "o": 111,

    "p": 112,
    "q": 113,
    "r": 114,
    "s": 115,
    "t": 116,
    "u": 117,
    "v": 118,
    "w": 119,
    "x": 120,
    "y": 121,
    "z": 122,
    "{": 123,
    "|": 124,
    "}": 125,
    "~": 126,
    "⌫": 127,

    "€": 128,
    "▒": 129,
    "‚": 130,
    "ƒ": 131,
    "„": 132,
    "…": 133,
    "†": 134,
    "‡": 135,
    "ˆ": 136,
    "‰": 137,
    "Š": 138,
    "‹": 139,
    "Œ": 140,
    "▒": 141,
    "Ž": 142,
    "▒": 143,

    "▒": 144,
    "‘": 145,
    "’": 146,
    "“": 147,
    "”": 148,
    "•": 149,
    "–": 150,
    "—": 151,
    "˜": 152,
    "™": 153,
    "š": 154,
    "›": 155,
    "œ": 156,
    "▒": 157,
    "ž": 158,
    "Ÿ": 159,

    "␣": 160,
    "¡": 161,
    "¢": 162,
    "£": 163,
    "¤": 164,
    "¥": 165,
    "¦": 166,
    "§": 167,
    "¨": 168,
    "©": 169,
    "ª": 170,
    "«": 171,
    "¬": 172,
    "⁃": 173,
    "®": 174,
    "¯": 175,

    "°": 176,
    "±": 177,
    "²": 178,
    "³": 179,
    "´": 180,
    "µ": 181,
    "¶": 182,
    "·": 183,
    "¸": 184,
    "¹": 185,
    "º": 186,
    "»": 187,
    "¼": 188,
    "½": 189,
    "¾": 190,
    "¿": 191,

    "À": 192,
    "Á": 193,
    "Â": 194,
    "Ã": 195,
    "Ä": 196,
    "Å": 197,
    "Æ": 198,
    "Ç": 199,
    "È": 200,
    "É": 201,
    "Ê": 202,
    "Ë": 203,
    "Ì": 204,
    "Í": 205,
    "Î": 206,
    "Ï": 207,

    "Ð": 208,
    "Ñ": 209,
    "Ò": 210,
    "Ó": 211,
    "Ô": 212,
    "Õ": 213,
    "Ö": 214,
    "×": 215,
    "Ø": 216,
    "Ù": 217,
    "Ú": 218,
    "Û": 219,
    "Ü": 220,
    "Ý": 221,
    "Þ": 222,
    "ß": 223,

    "à": 224,
    "á": 225,
    "â": 226,
    "ã": 227,
    "ä": 228,
    "å": 229,
    "æ": 230,
    "ç": 231,
    "è": 232,
    "é": 233,
    "ê": 234,
    "ë": 235,
    "ì": 236,
    "í": 237,
    "î": 238,
    "ï": 239,

    "ð": 240,
    "ñ": 241,
    "ò": 242,
    "ó": 243,
    "ô": 244,
    "õ": 245,
    "ö": 246,
    "÷": 247,
    "ø": 248,
    "ù": 249,
    "ú": 250,
    "û": 251,
    "ü": 252,
    "ý": 253,
    "þ": 254,
    "ÿ": 255
  }
}

Note the redundant assignment of the medium shade dither glyph, ▒.

Paige's Version

Here is shortened version I use in my GB Studio fonts:

{
  "name": "MxAshlynn Font Format",
  "mapping": {
    " ": 32,
    "!": 33,
    "\"": 34,
    "#": 35,
    "$": 36,
    "%": 37,
    "&": 38,
    "'": 39,
    "(": 40,
    ")": 41,
    "*": 42,
    "+": 43,
    ",": 44,
    "-": 45,
    ".": 46,
    "/": 47,

    "0": 48,
    "1": 49,
    "2": 50,
    "3": 51,
    "4": 52,
    "5": 53,
    "6": 54,
    "7": 55,
    "8": 56,
    "9": 57,
    ":": 58,
    ";": 59,
    "<": 60,
    "=": 61,
    ">": 62,
    "?": 63,

    "@": 64,
    "A": 65,
    "B": 66,
    "C": 67,
    "D": 68,
    "E": 69,
    "F": 70,
    "G": 71,
    "H": 72,
    "I": 73,
    "J": 74,
    "K": 75,
    "L": 76,
    "M": 77,
    "N": 78,
    "O": 79,

    "P": 80,
    "Q": 81,
    "R": 82,
    "S": 83,
    "T": 84,
    "U": 85,
    "V": 86,
    "W": 87,
    "X": 88,
    "Y": 89,
    "Z": 90,
    "[": 91,
    "\": 92,
    "]": 93,
    "^": 94,
    "_": 95,

    "`": 96,
    "a": 97,
    "b": 98,
    "c": 99,
    "d": 100,
    "e": 101,
    "f": 102,
    "g": 103,
    "h": 104,
    "i": 105,
    "j": 106,
    "k": 107,
    "l": 108,
    "m": 109,
    "n": 110,
    "o": 111,

    "p": 112,
    "q": 113,
    "r": 114,
    "s": 115,
    "t": 116,
    "u": 117,
    "v": 118,
    "w": 119,
    "x": 120,
    "y": 121,
    "z": 122,
    "{": 123,
    "|": 124,
    "}": 125,
    "~": 126,
    "…": 127,

    "⊕": 208,
    "α": 209,
    "β": 210,
    "🖤": 211,
    "💀": 212,

    "⬆": 224,
    "⬇": 225,
    "🅰": 226,
    "Ⓐ": 227,
    "Ⓛ": 228,
    "🅢": 229,
    "🅣": 230,
    "🅡": 231,
    "🆂": 232,
    "🅴": 233,
    "🅻": 234,
    "✔": 235,
    "🗹": 236,
    "⊙": 237,
    "👆": 238,
    "👇": 239,

    "⬅": 240,
    "➡": 241,
    "🅱": 242,
    "🄲": 243,
    "🅁": 244,
    "Ⓔ": 245,
    "Ⓝ": 246,
    "Ⓣ": 247,
    "🅂": 248,
    "🄷": 249,
    "🄵": 250,
    "🛈": 251,
    "❔": 252,
    "❕": 253,
    "👈": 254,
    "👉": 255
  }
}

Comments are disabled for this gist.