From 583caa867b052e4287bf531eb9576716ee1ed5a4 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Wed, 28 Mar 2007 23:21:31 +0000 Subject: [PATCH] Player: Add mappings and glyphs for extended latin A characters which exist in hardware on old LCD. Makes polish, czech, ... work properly. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12954 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd-charset-player.c | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/firmware/drivers/lcd-charset-player.c b/firmware/drivers/lcd-charset-player.c index 3844124779..4b261790ca 100644 --- a/firmware/drivers/lcd-charset-player.c +++ b/firmware/drivers/lcd-charset-player.c @@ -57,6 +57,16 @@ enum { XF_oTILDE, XF_oDIERESIS, XF_DIVISION, XF_oSLASH, XF_uGRAVE, XF_uACUTE, XF_uCIRCUMFLEX, XF_uDIERESIS, XF_yACUTE, XF_yDIERESIS, + + /* Latin extended A */ + XF_aOGONEK, XF_cACUTE, XF_cCARON, XF_dCARON, + XF_dSTROKE, XF_eOGONEK, XF_eCARON, XF_DOTLESSi, + XF_lSTROKE, XF_nACUTE, XF_nCARON, XF_ODBLACUTE, + XF_oDBLACUTE, XF_rCARON, XF_sACUTE, XF_SCEDILLA, + XF_sCEDILLA, XF_sCARON, XF_tCARON, XF_uRING, + XF_UDBLACUTE, XF_uDBLACUTE, XF_zACUTE, XF_zDOT, + XF_zCARON, +#define XF_DSTROKE XF_ETH /* Greek */ XF_GR_DELTA, XF_GR_THETA, XF_GR_LAMBDA, XF_GR_XI, @@ -294,6 +304,34 @@ static const struct xchar_info xchar_info_newlcd[] = { { 0xff, XF_yDIERESIS, 1, 0x79 }, /* ÿ (y dieresis) */ + /* Latin extended A */ + { 0x0105, XF_aOGONEK, 1, 0x61 }, /* a ogonek */ + { 0x0107, XF_cACUTE, 1, 0x63 }, /* c acute */ + { 0x010d, XF_cCARON, 1, 0x63 }, /* c caron */ + { 0x010f, XF_dCARON, 1, 0x64 }, /* d caron */ + { 0x0110, XF_DSTROKE, 1, 0x44 }, /* D stroke */ + { 0x0111, XF_dSTROKE, 1, 0x64 }, /* d stroke */ + { 0x0119, XF_eOGONEK, 1, 0x65 }, /* e ogonek */ + { 0x011b, XF_eCARON, 1, 0x65 }, /* e caron */ + { 0x0131, XF_DOTLESSi, 1, 0x69 }, /* dotless i */ + { 0x0142, XF_lSTROKE, 1, 0x6c }, /* l stroke */ + { 0x0144, XF_nACUTE, 1, 0x6e }, /* n acute */ + { 0x0148, XF_nCARON, 1, 0x6e }, /* n caron */ + { 0x0150, XF_ODBLACUTE, 1, 0x4f }, /* O double acute */ + { 0x0151, XF_oDBLACUTE, 1, 0x6f }, /* o double acute */ + { 0x0159, XF_rCARON, 1, 0x72 }, /* r caron */ + { 0x015b, XF_sACUTE, 1, 0x73 }, /* s acute */ + { 0x015e, XF_SCEDILLA, 1, 0x53 }, /* S cedilla */ + { 0x015f, XF_sCEDILLA, 1, 0x73 }, /* s cedilla */ + { 0x0161, XF_sCARON, 1, 0x73 }, /* s caron */ + { 0x0165, XF_tCARON, 1, 0x74 }, /* t caron */ + { 0x016f, XF_uRING, 1, 0x75 }, /* u with ring above */ + { 0x0170, XF_UDBLACUTE, 1, 0x55 }, /* U double acute */ + { 0x0171, XF_uDBLACUTE, 1, 0x75 }, /* u double acute */ + { 0x017a, XF_zACUTE, 1, 0x7a }, /* z acute */ + { 0x017c, XF_zDOT, 1, 0x7a }, /* z with dot above */ + { 0x017e, XF_zCARON, 1, 0x7a }, /* z caron */ + /* Greek */ { 0x037e, 0, 0, 0x3b }, /* greek question mark */ @@ -762,6 +800,34 @@ static const struct xchar_info xchar_info_oldlcd[] = { { 0xfd, 0, 0, 0xaf }, /* ý (y acute) */ { 0xff, XF_yDIERESIS, 1, 0x7d }, /* ÿ (y dieresis) */ + + /* Latin extended A */ + { 0x0105, 0, 0, 0xb3 }, /* a ogonek */ + { 0x0107, 0, 0, 0xb1 }, /* c acute */ + { 0x010d, 0, 0, 0xab }, /* c caron */ + { 0x010f, 0, 0, 0xbc }, /* d caron */ + { 0x0110, 0, 0, 0x95 }, /* D stroke */ + { 0x0111, 0, 0, 0xb0 }, /* d stroke */ + { 0x0119, 0, 0, 0xb2 }, /* e ogonek */ + { 0x011b, 0, 0, 0xad }, /* e caron */ + { 0x0131, 0, 0, 0xc6 }, /* dotless i */ + { 0x0142, 0, 0, 0xb8 }, /* l stroke */ + { 0x0144, 0, 0, 0xb7 }, /* n acute */ + { 0x0148, 0, 0, 0xba }, /* n caron */ + { 0x0150, 0, 0, 0xc8 }, /* O double acute */ + { 0x0151, 0, 0, 0xca }, /* o double acute */ + { 0x0159, 0, 0, 0xaa }, /* r caron */ + { 0x015b, 0, 0, 0xb6 }, /* s acute */ + { 0x015e, 0, 0, 0xc3 }, /* S cedilla */ + { 0x015f, 0, 0, 0xc4 }, /* s cedilla */ + { 0x0161, 0, 0, 0xac }, /* s caron */ + { 0x0165, 0, 0, 0xbb }, /* t caron */ + { 0x016f, 0, 0, 0xae }, /* u with ring above */ + { 0x0170, 0, 0, 0xc7 }, /* U double acute */ + { 0x0171, 0, 0, 0xc9 }, /* u double acute */ + { 0x017a, 0, 0, 0xb5 }, /* z acute */ + { 0x017c, 0, 0, 0xb4 }, /* z with dot above */ + { 0x017e, 0, 0, 0xbd }, /* z caron */ /* Greek */ { 0x037e, 0, 0, 0x3f }, /* greek question mark */ @@ -1069,6 +1135,32 @@ const unsigned char xfont_fixed[][8] = { [XF_uDIERESIS] = { 0x00, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d, 0x00}, /* ü */ [XF_yACUTE] = { 0x02, 0x04, 0x11, 0x11, 0x0f, 0x01, 0x0e, 0x00}, /* ý */ [XF_yDIERESIS] = { 0x0a, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x0e, 0x00}, /* ÿ */ + /* Latin extended A */ + [XF_aOGONEK] = { 0x0e, 0x01, 0x0f, 0x11, 0x0f, 0x02, 0x03, 0x00}, + [XF_cACUTE] = { 0x02, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00}, + [XF_cCARON] = { 0x0a, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00}, + [XF_dCARON] = { 0x05, 0x05, 0x0c, 0x14, 0x14, 0x14, 0x0c, 0x00}, + [XF_dSTROKE] = { 0x02, 0x0f, 0x02, 0x0e, 0x12, 0x12, 0x0e, 0x00}, + [XF_eOGONEK] = { 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x04, 0x06, 0x00}, + [XF_eCARON] = { 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x00}, + [XF_DOTLESSi] = { 0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e, 0x00}, + [XF_lSTROKE] = { 0x0c, 0x04, 0x06, 0x0c, 0x04, 0x04, 0x0e, 0x00}, + [XF_nACUTE] = { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11, 0x00}, + [XF_nCARON] = { 0x0a, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11, 0x00}, + [XF_ODBLACUTE] = { 0x09, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e, 0x00}, + [XF_oDBLACUTE] = { 0x09, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e, 0x00}, + [XF_rCARON] = { 0x0a, 0x04, 0x0b, 0x0c, 0x08, 0x08, 0x08, 0x00}, + [XF_sACUTE] = { 0x02, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e, 0x00}, + [XF_SCEDILLA] = { 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x0c, 0x00}, + [XF_sCEDILLA] = { 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x00}, + [XF_sCARON] = { 0x0a, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e, 0x00}, + [XF_tCARON] = { 0x09, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x06, 0x00}, + [XF_uRING] = { 0x04, 0x0a, 0x04, 0x11, 0x11, 0x13, 0x0d, 0x00}, + [XF_UDBLACUTE] = { 0x05, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e, 0x00}, + [XF_uDBLACUTE] = { 0x09, 0x12, 0x00, 0x11, 0x11, 0x13, 0x0d, 0x00}, + [XF_zACUTE] = { 0x02, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f, 0x00}, + [XF_zDOT] = { 0x04, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f, 0x00}, + [XF_zCARON] = { 0x0a, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f, 0x00}, /* Greek */ [XF_GR_DELTA] = { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x1f, 0x00}, [XF_GR_THETA] = { 0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x0e, 0x00},