aiie/apple/font.h

363 lines
13 KiB
C

const unsigned char ucase_glyphs[512] =
{
/* : 0x40 @ */
0x1c, 0x22, 0x2a, 0x3a, 0x1a, 0x02, 0x3c, 0x00,
/* : 0x41 A */
0x08, 0x14, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x00,
/* : 0x42 B */
0x1e, 0x22, 0x22, 0x1e, 0x22, 0x22, 0x1e, 0x00,
/* : 0x43 C */
0x1c, 0x22, 0x02, 0x02, 0x02, 0x22, 0x1c, 0x00,
/* : 0x44 D */
0x1e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x00,
/* : 0x45 E */
0x3e, 0x02, 0x02, 0x1e, 0x02, 0x02, 0x3e, 0x00,
/* : 0x46 F */
0x3e, 0x02, 0x02, 0x1e, 0x02, 0x02, 0x02, 0x00,
/* : 0x47 G */
0x3c, 0x02, 0x02, 0x02, 0x32, 0x22, 0x3c, 0x00,
/* : 0x48 H */
0x22, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x22, 0x00,
/* : 0x49 I */
0x1c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00,
/* : 0x4a */
0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x1c, 0x00,
/* : 0x4b */
0x22, 0x12, 0x0a, 0x06, 0x0a, 0x12, 0x22, 0x00,
/* : 0x4c */
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00,
/* : 0x4d */
0x22, 0x36, 0x2a, 0x2a, 0x22, 0x22, 0x22, 0x00,
/* : 0x4e */
0x22, 0x22, 0x26, 0x2a, 0x32, 0x22, 0x22, 0x00,
/* : 0x4f */
0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00,
/* : 0x50 */
0x1e, 0x22, 0x22, 0x1e, 0x02, 0x02, 0x02, 0x00,
/* : 0x51 */
0x1c, 0x22, 0x22, 0x22, 0x2a, 0x12, 0x2c, 0x00,
/* : 0x52 */
0x1e, 0x22, 0x22, 0x1e, 0x0a, 0x12, 0x22, 0x00,
/* : 0x53 */
0x1c, 0x22, 0x02, 0x1c, 0x20, 0x22, 0x1c, 0x00,
/* : 0x54 */
0x3e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
/* : 0x55 */
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00,
/* : 0x56 */
0x22, 0x22, 0x22, 0x22, 0x22, 0x14, 0x08, 0x00,
/* : 0x57 */
0x22, 0x22, 0x22, 0x2a, 0x2a, 0x36, 0x22, 0x00,
/* : 0x58 */
0x22, 0x22, 0x14, 0x08, 0x14, 0x22, 0x22, 0x00,
/* : 0x59 */
0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08, 0x00,
/* : 0x5a */
0x3e, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3e, 0x00,
/* : 0x5b */
0x3e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x00,
/* : 0x5c */
0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
/* : 0x5d */
0x3e, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00,
/* : 0x5e */
0x00, 0x00, 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
/* : 0x5f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00,
/* : 0x20 space */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x21 ! */
0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00,
/* : 0x22 */
0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x23 */
0x14, 0x14, 0x3e, 0x14, 0x3e, 0x14, 0x14, 0x00,
/* : 0x24 */
0x08, 0x3c, 0x0a, 0x1c, 0x28, 0x1e, 0x08, 0x00,
/* : 0x25 */
0x06, 0x26, 0x10, 0x08, 0x04, 0x32, 0x30, 0x00,
/* : 0x26 */
0x04, 0x0a, 0x0a, 0x04, 0x2a, 0x12, 0x2c, 0x00,
/* : 0x27 */
0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x28 */
0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00,
/* : 0x29 */
0x08, 0x10, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00,
/* : 0x2a */
0x08, 0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x08, 0x00,
/* : 0x2b */
0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00,
/* : 0x2c */
0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x00,
/* : 0x2d */
0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
/* : 0x2e */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
/* : 0x2f */
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00,
/* : 0x30 */
0x1c, 0x22, 0x32, 0x2a, 0x26, 0x22, 0x1c, 0x00,
/* : 0x31 */
0x08, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00,
/* : 0x32 */
0x1c, 0x22, 0x20, 0x18, 0x04, 0x02, 0x3e, 0x00,
/* : 0x33 */
0x3e, 0x20, 0x10, 0x18, 0x20, 0x22, 0x1c, 0x00,
/* : 0x34 */
0x10, 0x18, 0x14, 0x12, 0x3e, 0x10, 0x10, 0x00,
/* : 0x35 */
0x3e, 0x02, 0x1e, 0x20, 0x20, 0x22, 0x1c, 0x00,
/* : 0x36 */
0x38, 0x04, 0x02, 0x1e, 0x22, 0x22, 0x1c, 0x00,
/* : 0x37 */
0x3e, 0x20, 0x10, 0x08, 0x04, 0x04, 0x04, 0x00,
/* : 0x38 */
0x1c, 0x22, 0x22, 0x1c, 0x22, 0x22, 0x1c, 0x00,
/* : 0x39 */
0x1c, 0x22, 0x22, 0x3c, 0x20, 0x10, 0x0e, 0x00,
/* : 0x3a */
0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
/* : 0x3b */
0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x04, 0x00,
/* : 0x3c */
0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00,
/* : 0x3d */
0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00,
/* : 0x3e */
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00,
/* : 0x3f */
0x1c, 0x22, 0x10, 0x08, 0x08, 0x00, 0x08, 0x00
};
const unsigned char lcase_glyphs[256] =
{
/* : 0x60 \ */
0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x61 a */
0x00, 0x00, 0x1c, 0x20, 0x3c, 0x22, 0x3c, 0x00,
/* : 0x62 b */
0x02, 0x02, 0x1e, 0x22, 0x22, 0x22, 0x1e, 0x00,
/* : 0x63 c */
0x00, 0x00, 0x3c, 0x02, 0x02, 0x02, 0x3c, 0x00,
/* : 0x64 d */
0x20, 0x20, 0x3c, 0x22, 0x22, 0x22, 0x3c, 0x00,
/* : 0x65 e */
0x00, 0x00, 0x1c, 0x22, 0x3e, 0x02, 0x3c, 0x00,
/* : 0x66 f */
0x18, 0x24, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x00,
/* : 0x67 g */
0x00, 0x00, 0x1c, 0x22, 0x22, 0x3c, 0x20, 0x1c,
/* : 0x68 h */
0x02, 0x02, 0x1e, 0x22, 0x22, 0x22, 0x22, 0x00,
/* : 0x69 i */
0x08, 0x00, 0x0c, 0x08, 0x08, 0x08, 0x1c, 0x00,
/* : 0x6a j */
0x10, 0x00, 0x18, 0x10, 0x10, 0x10, 0x12, 0x0c,
/* : 0x6b k */
0x02, 0x02, 0x22, 0x12, 0x0e, 0x12, 0x22, 0x00,
/* : 0x6c l */
0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00,
/* : 0x6d m */
0x00, 0x00, 0x16, 0x2a, 0x2a, 0x2a, 0x2a, 0x00,
/* : 0x6e n */
0x00, 0x00, 0x1e, 0x22, 0x22, 0x22, 0x22, 0x00,
/* : 0x6f o */
0x00, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00,
/* : 0x70 p */
0x00, 0x00, 0x1e, 0x22, 0x22, 0x1e, 0x02, 0x02,
/* : 0x71 q */
0x00, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x20, 0x20,
/* : 0x72 r */
0x00, 0x00, 0x3a, 0x06, 0x02, 0x02, 0x02, 0x00,
/* : 0x73 s */
0x00, 0x00, 0x3c, 0x02, 0x1c, 0x20, 0x1e, 0x00,
/* : 0x74 t */
0x04, 0x04, 0x3e, 0x04, 0x04, 0x24, 0x18, 0x00,
/* : 0x75 u */
0x00, 0x00, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x00,
/* : 0x76 v */
0x00, 0x00, 0x22, 0x22, 0x22, 0x14, 0x08, 0x00,
/* : 0x77 w */
0x00, 0x00, 0x22, 0x2a, 0x2a, 0x2a, 0x14, 0x00,
/* : 0x78 x */
0x00, 0x00, 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
/* : 0x79 y */
0x00, 0x00, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x1c,
/* : 0x7a z */
0x00, 0x00, 0x3e, 0x10, 0x08, 0x04, 0x3e, 0x00,
/* : 0x7b { */
0x38, 0x0c, 0x0c, 0x06, 0x0c, 0x0c, 0x38, 0x00,
/* : 0x7c flat colon */
0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08, 0x00,
/* : 0x7d } */
0x0e, 0x18, 0x18, 0x30, 0x18, 0x18, 0x0e, 0x00,
/* : 0x7e ~ */
0x2c, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x7f delete block */
0x00, 0x2a, 0x14, 0x2a, 0x14, 0x2a, 0x00, 0x00
};
const unsigned char mousetext_glyphs[256] =
{
/* : 0x00 closed apple */
0x10, 0x08, 0x36, 0x7f, 0x3f, 0x3f, 0x7e, 0x36,
/* : 0x01 open apple */
0x10, 0x08, 0x36, 0x41, 0x21, 0x21, 0x4a, 0x36,
/* : 0x02 mouse pointer arrow */
0x00, 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x36, 0x42,
/* : 0x03 hourglass */
0x7f, 0x22, 0x14, 0x08, 0x08, 0x14, 0x22, 0x7f,
/* : 0x04 checkmark */
0x00, 0x40, 0x20, 0x11, 0x0a, 0x04, 0x04, 0x00,
/* : 0x05 inverted checkmark */
0x7f, 0x3f, 0x5f, 0x6e, 0x75, 0x7b, 0x7b, 0x7f,
/* : 0x06 left half of running person */
0x70, 0x60, 0x7e, 0x31, 0x79, 0x30, 0x3f, 0x02,
/* : 0x07 right half of running person */
0x00, 0x18, 0x07, 0x00, 0x07, 0x0c, 0x08, 0x70,
/* : 0x08 left arrow */
0x08, 0x04, 0x02, 0x7f, 0x02, 0x04, 0x08, 0x00,
/* : 0x09 ... */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
/* : 0x0a down arrow */
0x08, 0x08, 0x08, 0x08, 0x49, 0x2a, 0x1c, 0x08,
/* : 0x0b up arrow */
0x08, 0x1c, 0x2a, 0x49, 0x08, 0x08, 0x08, 0x08,
/* : 0x0c overscore */
0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* : 0x0d carriage return arrow */
0x40, 0x40, 0x40, 0x44, 0x46, 0x7f, 0x06, 0x04,
/* : 0x0e solid block */
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
/* : 0x0f inline left arrow */
0x13, 0x18, 0x1c, 0x7e, 0x1c, 0x18, 0x10, 0x6f,
/* : 0x10 inline right arrow */
0x64, 0x0c, 0x1c, 0x3f, 0x1c, 0x0c, 0x04, 0x7b,
/* : 0x11 inline down arrow */
0x40, 0x48, 0x08, 0x7f, 0x3e, 0x1c, 0x48, 0x40,
/* : 0x12 inline up arrow */
0x40, 0x48, 0x1c, 0x3e, 0x7f, 0x08, 0x48, 0x40,
/* : 0x13 dash */
0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
/* : 0x14 left/bottom border */
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f,
/* : 0x15 right arrow */
0x08, 0x10, 0x20, 0x7f, 0x20, 0x10, 0x08, 0x00,
/* : 0x16 delete char 1 */
0x2a, 0x55, 0x2a, 0x55, 0x2a, 0x55, 0x2a, 0x55,
/* : 0x17 delete char 2 */
0x55, 0x2a, 0x55, 0x2a, 0x55, 0x2a, 0x55, 0x2a,
/* : 0x18 left half of folder */
0x00, 0x3e, 0x41, 0x01, 0x01, 0x01, 0x7f, 0x00,
/* : 0x19 right half of folder */
0x00, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x7f, 0x00,
/* : 0x1a right border */
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
/* : 0x1b diamond */
0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00,
/* : 0x1c top and bottom border */
0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f,
/* : 0x1d crosshairs */
0x14, 0x14, 0x77, 0x00, 0x77, 0x14, 0x14, 0x00,
/* : 0x1e top/right/bottom border with center dot */
0x7f, 0x40, 0x40, 0x4c, 0x4c, 0x40, 0x40, 0x7f,
/* : 0x1f left border */
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
};
const unsigned char interface_glyphs[256] =
{
/* : 0x00 ----------------------- menu borders */
0x00, 0x00, 0x00, 0x00, 0x78, 0x08, 0x08, 0x08,
/* : 0x01 */
0x00, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x08,
/* : 0x02 */
0x08, 0x08, 0x08, 0x08, 0x78, 0x00, 0x00, 0x00,
/* : 0x03 */
0x08, 0x08, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x00,
/* : 0x04 */
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
/* : 0x05 */
0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
/* : 0x06 */
0x08, 0x08, 0x08, 0x08, 0x78, 0x08, 0x08, 0x08,
/* : 0x07 */
0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08,
/* : 0x08 */
0x00, 0x00, 0x00, 0x00, 0x7f, 0x08, 0x08, 0x08,
/* : 0x09 */
0x08, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00,
/* : 0x0A */
0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08,
/* : 0x0B ----------------------- disk icon quad */
0x00, 0x7e, 0x02, 0x02, 0x02, 0x42, 0x22, 0x22,
/* : 0x0C */
0x00, 0x7f, 0x40, 0x20, 0x40, 0x43, 0x44, 0x44,
/* : 0x0D */
0x22, 0x42, 0x02, 0x02, 0x02, 0x02, 0x7e, 0x00,
/* : 0x0E */
0x44, 0x43, 0x40, 0x41, 0x41, 0x41, 0x7e, 0x00,
/* : 0x0F ----------------------- unlock icon */
0x1c, 0x24, 0x04, 0x3e, 0x22, 0x22, 0x2a, 0x3e,
/* : 0x10 ----------------------- reverse return arrow */
0x01, 0x01, 0x01, 0x11, 0x31, 0x7f, 0x30, 0x10,
/* : 0x11 ----------------------- mini-spacebar visual */
0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x3e, 0x00,
/* : 0x12 ----------------------- glyph_joystick */
0x08, 0x08, 0x08, 0x77, 0x08, 0x08, 0x08, 0x08,
/* : 0x13 ----------------------- glyph_ctrl */
0x08, 0x1c, 0x3e, 0x63, 0x7b, 0x63, 0x7f, 0x00,
/* : 0x14 ----------------------- glyph_lowercase */
0x7f, 0x63, 0x5f, 0x43, 0x5d, 0x43, 0x7f, 0x00,
/* : 0x15 ----------------------- glyph_uppercase */
0x77, 0x6b, 0x5d, 0x41, 0x5d, 0x5d, 0x7f, 0x00,
/* : 0x16 ----------------------- glyph_showalt */
0x7f, 0x77, 0x77, 0x41, 0x77, 0x77, 0x7f, 0x00,
/* : 0x17 ----------------------- glyph_backspace */
0x00, 0x08, 0x04, 0x7e, 0x04, 0x08, 0x00, 0x00,
/* : 0x18 ----------------------- glyph_joystick_kpad */
0x08, 0x2a, 0x08, 0x77, 0x08, 0x2a, 0x08, 0x08,
/* : 0x19 ----------------------- glyph_leftspace */
0x00, 0x7e, 0x02, 0x42, 0x42, 0x42, 0x02, 0x7e,
/* : 0x1A ----------------------- glyph_midspace */
0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x7f,
/* : 0x1B ----------------------- glyph_rightspace */
0x00, 0x3f, 0x20, 0x21, 0x21, 0x21, 0x20, 0x3f,
/* : 0x1C ----------------------- glyph_esc */
0x7f, 0x63, 0x5d, 0x41, 0x7d, 0x43, 0x7f, 0x00,
/* : 0x1D ----------------------- glyph_return left */
0x00, 0x00, 0x00, 0x10, 0x18, 0x7c, 0x18, 0x10,
/* : 0x1E ----------------------- glyph_return right */
0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x00, 0x00,
/* : 0x1F ----------------------- glyph_nonactionable */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Generic utility for anything trying to turn those glyph maps into
// characters based on ASCII input
static const unsigned char *asciiToAppleGlyph(unsigned char c)
{
if (c < 32) {
return &ucase_glyphs[32]; // space
} else if (c <= 63) {
// space through ?
return &ucase_glyphs[(c-32+32)*8];
} else if (c <= 95) {
// @ through Z to _
return &ucase_glyphs[(c-64)*8];
} else if (c <= 127) {
// Direct mapping of lcase_glyphs: ` through z to del
return &lcase_glyphs[(c-96)*8];
} else if (c <= 159) {
// map in the 32 mousetext_glyphs
return &mousetext_glyphs[(c-128)*8];
} else if (c <= 191) {
// map in the 32 interface_glyphs
return &interface_glyphs[(c-160)*8];
} else {
return &ucase_glyphs[32]; // space
}
}