BURIED: Add the CP-1252 charset mapping

This commit is contained in:
Matthew Hoops 2013-06-19 21:23:34 -04:00 committed by Eugene Sandulenko
parent faca37064b
commit 27b938d47f

View file

@ -84,6 +84,79 @@ byte *GraphicsManager::getDefaultPalette() const {
return palette;
}
#define REQUIRED(x) (((uint32)(x)) | 0x80000000)
#define NOT_REQUIRED(x) (x)
static const uint32 s_codePage1252[256] = {
NOT_REQUIRED(0x0000), NOT_REQUIRED(0x0001), NOT_REQUIRED(0x0002), NOT_REQUIRED(0x0003),
NOT_REQUIRED(0x0004), NOT_REQUIRED(0x0005), NOT_REQUIRED(0x0006), NOT_REQUIRED(0x0007),
NOT_REQUIRED(0x0008), NOT_REQUIRED(0x0009), NOT_REQUIRED(0x000A), NOT_REQUIRED(0x000B),
NOT_REQUIRED(0x000C), NOT_REQUIRED(0x000D), NOT_REQUIRED(0x000E), NOT_REQUIRED(0x000F),
NOT_REQUIRED(0x0010), NOT_REQUIRED(0x0011), NOT_REQUIRED(0x0012), NOT_REQUIRED(0x0013),
NOT_REQUIRED(0x0014), NOT_REQUIRED(0x0015), NOT_REQUIRED(0x0016), NOT_REQUIRED(0x0017),
NOT_REQUIRED(0x0018), NOT_REQUIRED(0x0019), NOT_REQUIRED(0x001A), NOT_REQUIRED(0x001B),
NOT_REQUIRED(0x001C), NOT_REQUIRED(0x001D), NOT_REQUIRED(0x001E), NOT_REQUIRED(0x001F),
REQUIRED(0x0020), REQUIRED(0x0021), REQUIRED(0x0022), REQUIRED(0x0023),
REQUIRED(0x0024), REQUIRED(0x0025), REQUIRED(0x0026), REQUIRED(0x0027),
REQUIRED(0x0028), REQUIRED(0x0029), REQUIRED(0x002A), REQUIRED(0x002B),
REQUIRED(0x002C), REQUIRED(0x002D), REQUIRED(0x002E), REQUIRED(0x002F),
REQUIRED(0x0030), REQUIRED(0x0031), REQUIRED(0x0032), REQUIRED(0x0033),
REQUIRED(0x0034), REQUIRED(0x0035), REQUIRED(0x0036), REQUIRED(0x0037),
REQUIRED(0x0038), REQUIRED(0x0039), REQUIRED(0x003A), REQUIRED(0x003B),
REQUIRED(0x003C), REQUIRED(0x003D), REQUIRED(0x003E), REQUIRED(0x003F),
REQUIRED(0x0040), REQUIRED(0x0041), REQUIRED(0x0042), REQUIRED(0x0043),
REQUIRED(0x0044), REQUIRED(0x0045), REQUIRED(0x0046), REQUIRED(0x0047),
REQUIRED(0x0048), REQUIRED(0x0049), REQUIRED(0x004A), REQUIRED(0x004B),
REQUIRED(0x004C), REQUIRED(0x004D), REQUIRED(0x004E), REQUIRED(0x004F),
REQUIRED(0x0050), REQUIRED(0x0051), REQUIRED(0x0052), REQUIRED(0x0053),
REQUIRED(0x0054), REQUIRED(0x0055), REQUIRED(0x0056), REQUIRED(0x0057),
REQUIRED(0x0058), REQUIRED(0x0059), REQUIRED(0x005A), REQUIRED(0x005B),
REQUIRED(0x005C), REQUIRED(0x005D), REQUIRED(0x005E), REQUIRED(0x005F),
REQUIRED(0x0060), REQUIRED(0x0061), REQUIRED(0x0062), REQUIRED(0x0063),
REQUIRED(0x0064), REQUIRED(0x0065), REQUIRED(0x0066), REQUIRED(0x0067),
REQUIRED(0x0068), REQUIRED(0x0069), REQUIRED(0x006A), REQUIRED(0x006B),
REQUIRED(0x006C), REQUIRED(0x006D), REQUIRED(0x006E), REQUIRED(0x006F),
REQUIRED(0x0070), REQUIRED(0x0071), REQUIRED(0x0072), REQUIRED(0x0073),
REQUIRED(0x0074), REQUIRED(0x0075), REQUIRED(0x0076), REQUIRED(0x0077),
REQUIRED(0x0078), REQUIRED(0x0079), REQUIRED(0x007A), REQUIRED(0x007B),
REQUIRED(0x007C), REQUIRED(0x007D), REQUIRED(0x007E), NOT_REQUIRED(0x007F),
NOT_REQUIRED(0xFFFE), NOT_REQUIRED(0xFFFE), REQUIRED(0x201A), REQUIRED(0x0192),
REQUIRED(0x201E), REQUIRED(0x2026), REQUIRED(0x2020), REQUIRED(0x2021),
REQUIRED(0x02C6), REQUIRED(0x2030), REQUIRED(0x0160), REQUIRED(0x2039),
REQUIRED(0x0152), NOT_REQUIRED(0xFFFE), NOT_REQUIRED(0xFFFE), NOT_REQUIRED(0xFFFE),
NOT_REQUIRED(0xFFFE), REQUIRED(0x2018), REQUIRED(0x2019), REQUIRED(0x201C),
REQUIRED(0x201D), REQUIRED(0x2022), REQUIRED(0x2013), REQUIRED(0x2014),
REQUIRED(0x02DC), REQUIRED(0x2122), REQUIRED(0x0161), REQUIRED(0x203A),
REQUIRED(0x0153), NOT_REQUIRED(0xFFFE), NOT_REQUIRED(0xFFFE), REQUIRED(0x0178),
REQUIRED(0x00A0), REQUIRED(0x00A1), REQUIRED(0x00A2), REQUIRED(0x00A3),
REQUIRED(0x00A4), REQUIRED(0x00A5), REQUIRED(0x00A6), REQUIRED(0x00A7),
REQUIRED(0x00A8), REQUIRED(0x00A9), REQUIRED(0x00AA), REQUIRED(0x00AB),
REQUIRED(0x00AC), REQUIRED(0x00AD), REQUIRED(0x00AE), REQUIRED(0x00AF),
REQUIRED(0x00B0), REQUIRED(0x00B1), REQUIRED(0x00B2), REQUIRED(0x00B3),
REQUIRED(0x00B4), REQUIRED(0x00B5), REQUIRED(0x00B6), REQUIRED(0x00B7),
REQUIRED(0x00B8), REQUIRED(0x00B9), REQUIRED(0x00BA), REQUIRED(0x00BB),
REQUIRED(0x00BC), REQUIRED(0x00BD), REQUIRED(0x00BE), REQUIRED(0x00BF),
REQUIRED(0x00C0), REQUIRED(0x00C1), REQUIRED(0x00C2), REQUIRED(0x00C3),
REQUIRED(0x00C4), REQUIRED(0x00C5), REQUIRED(0x00C6), REQUIRED(0x00C7),
REQUIRED(0x00C8), REQUIRED(0x00C9), REQUIRED(0x00CA), REQUIRED(0x00CB),
REQUIRED(0x00CC), REQUIRED(0x00CD), REQUIRED(0x00CE), REQUIRED(0x00CF),
REQUIRED(0x00D0), REQUIRED(0x00D1), REQUIRED(0x00D2), REQUIRED(0x00D3),
REQUIRED(0x00D4), REQUIRED(0x00D5), REQUIRED(0x00D6), REQUIRED(0x00D7),
REQUIRED(0x00D8), REQUIRED(0x00D9), REQUIRED(0x00DA), REQUIRED(0x00DB),
REQUIRED(0x00DC), REQUIRED(0x00DD), REQUIRED(0x00DE), REQUIRED(0x00DF),
REQUIRED(0x00E0), REQUIRED(0x00E1), REQUIRED(0x00E2), REQUIRED(0x00E3),
REQUIRED(0x00E4), REQUIRED(0x00E5), REQUIRED(0x00E6), REQUIRED(0x00E7),
REQUIRED(0x00E8), REQUIRED(0x00E9), REQUIRED(0x00EA), REQUIRED(0x00EB),
REQUIRED(0x00EC), REQUIRED(0x00ED), REQUIRED(0x00EE), REQUIRED(0x00EF),
REQUIRED(0x00F0), REQUIRED(0x00F1), REQUIRED(0x00F2), REQUIRED(0x00F3),
REQUIRED(0x00F4), REQUIRED(0x00F5), REQUIRED(0x00F6), REQUIRED(0x00F7),
REQUIRED(0x00F8), REQUIRED(0x00F9), REQUIRED(0x00FA), REQUIRED(0x00FB),
REQUIRED(0x00FC), REQUIRED(0x00FD), REQUIRED(0x00FE), REQUIRED(0x00FF)
};
#undef REQUIRED
#undef NOT_REQUIRED
Graphics::Font *GraphicsManager::createFont(int size) const {
Common::SeekableReadStream *stream = 0;
@ -136,10 +209,8 @@ Graphics::Font *GraphicsManager::createFont(int size) const {
// TODO: Make the monochrome mode optional
// Win3.1 obviously only had raster fonts, but BIT Win3.1 will render
// with the TrueType font on Win7/Win8 (at least)
// TODO: The mapping is code page 1252, but it should be 1:1 to Unicode
// for the characters we need.
// TODO: shift-jis (code page 932) for the Japanese version (again, buy for clone2727)
Graphics::Font *font = Graphics::loadTTFFont(*stream, size, 0, Graphics::kTTFRenderModeMonochrome, 0);
Graphics::Font *font = Graphics::loadTTFFont(*stream, size, 0, Graphics::kTTFRenderModeMonochrome, s_codePage1252);
delete stream;
return font;
}