kevin-pearce:
John - How would I add a copyright symbol to any font
Well, the easy way is to just define character 128 (0x80) and use that. Start by changing the font to have a new last character:
const GFXfont FreeSerif12pt7b PROGMEM = {(uint8_t *)FreeSerif12pt7bBitmaps,
(GFXglyph *)FreeSerif12pt7bGlyphs,
0x20, 0x7E, 29};
becomes
const GFXfont FreeSerif12pt7b PROGMEM = {(uint8_t *)FreeSerif12pt7bBitmaps,
(GFXglyph *)FreeSerif12pt7bGlyphs,
0x20, 0x80, 29};
Then, since 0x7F isn't defined you have to add two glyphs to the table of glyphs:
{1803, 5, 21, 12, 2, -16}, // 0x7B '{'
{1817, 1, 17, 5, 2, -16}, // 0x7C '|'
{1820, 5, 21, 12, 5, -15}, // 0x7D '}'
{1834, 12, 3, 12, 0, -6}}; // 0x7E '~'
becomes:
{1803, 5, 21, 12, 2, -16}, // 0x7B '{'
{1817, 1, 17, 5, 2, -16}, // 0x7C '|'
{1820, 5, 21, 12, 5, -15}, // 0x7D '}'
{1834, 12, 3, 12, 0, -6}, // 0x7E '~'
{1845, 0, 0, 6, 0, 1}, // 0x7F ' ' (copied from 0x20 'blank')
{1845, 15, 16, 17, 1, -15}, // 0x80 Copyright Sign (Copied from 'O')
};
Then add the 30 bytes of character image (15 columns of 16 rows) to the end of the bitmap array. The 'O' starts at byte 921 :
[code]0x07, 0xC0, _____*****______
0x30, 0x60, __**_____**_____
0xC0, 0x63, **_______**___**
0x00, 0x66, _________**__**_
0x00, 0xD8, ________**_**___
0x00, 0xF0, ________****____
0x01, 0xE0, _______****_____
0x03, 0xC0, ______****______
0x07, 0x80, _____****_______
0x0F, 0x00, ____****________
0x1B, 0x00, ___**_**________
0x66, 0x00, _**__**_________
0xC6, 0x03, **___**_______**
0x06, 0x0C, _____**_____**__
0x03, 0xE0, ______*****_____
It looks like 16 rows of 15 pixels each. Each line is skewed by a pixel because the bytes hold 8 pixels each. Probably the best solution is to find a font editor.