Added new command line option: "encoding"

Added new command line option: "encoding" which allow to
change font encoding used in game messages.

Currently there are three evailable encodings:

    win1250 - Central and Eastern European (languages
              that use Latin script, such as Polish,
              Czech, Slovak, Hungarian, Slovene, Bosnian,
              Croatian, Serbian (Latin script),
              Romanian and Albanian)

    win1251 - languages that use the Cyrillic alphabet
              such as Russian, Bulgarian, Serbian Cyrillic
              and others

    win1252 - Western European (Latin) - default

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
actorid
Lukasz Gromanowski 14 years ago
parent aded4608c0
commit ac9b1715d5

@ -370,7 +370,7 @@ void OMW::Engine::go()
// Create the world
mEnvironment.mWorld = new MWWorld::World (mOgre, mPhysicEngine, mFileCollections, mMaster,
mResDir, mNewGame, mEnvironment);
mResDir, mNewGame, mEnvironment, mEncoding);
// Set up the GUI system
mGuiManager = new OEngine::GUI::MyGUIManager(mOgre.getWindow(), mOgre.getScene(), false, cfgDir);
@ -519,3 +519,8 @@ void OMW::Engine::setCompileAll (bool all)
{
mCompileAll = all;
}
void OMW::Engine::setEncoding(const std::string& encoding)
{
mEncoding = encoding;
}

@ -56,6 +56,7 @@ namespace OMW
class Engine : private Ogre::FrameListener
{
std::string mEncoding;
boost::filesystem::path mDataDir;
boost::filesystem::path mResDir;
OEngine::Render::OgreRenderer mOgre;
@ -157,6 +158,9 @@ namespace OMW
/// Compile all scripts (excludign dialogue scripts) at startup?
void setCompileAll (bool all);
/// Font encoding
void setEncoding(const std::string& encoding);
};
}

@ -80,6 +80,13 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine)
( "fs-strict", boost::program_options::value<bool>()->
implicit_value (true)->default_value (false),
"strict file system handling (no case folding)")
( "encoding", boost::program_options::value<std::string>()->
default_value("win1252"),
"Font encoding used in OpenMW game messages:\n"
"\n\twin1250 - Central and Eastern European such as Polish, Czech, Slovak, Hungarian, Slovene, Bosnian, Croatian, Serbian (Latin script), Romanian and Albanian languages\n"
"\n\twin1251 - Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic and other languages\n"
"\n\twin1252 - Western European (Latin) alphabet, used by default")
;
bpo::variables_map variables;
@ -125,6 +132,24 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine)
if (!run)
return false;
// Font encoding settings
std::string encoding(variables["encoding"].as<std::string>());
if (encoding == "win1250")
{
std::cout << "Using Central and Eastern European font encoding." << std::endl;
engine.setEncoding(encoding);
}
else if (encoding == "win1251")
{
std::cout << "Using Cyrillic font encoding." << std::endl;
engine.setEncoding(encoding);
}
else
{
std::cout << "Using default (English) font encoding." << std::endl;
engine.setEncoding("win1252");
}
// directory settings
if (variables["fs-strict"].as<bool>()==true)
engine.enableFSStrict();

@ -409,7 +409,7 @@ namespace MWWorld
World::World (OEngine::Render::OgreRenderer& renderer, OEngine::Physic::PhysicEngine* physEng,
const Files::Collections& fileCollections,
const std::string& master, const boost::filesystem::path& resDir,
bool newGame, Environment& environment)
bool newGame, Environment& environment, const std::string& encoding)
: mSkyManager (0), mScene (renderer,physEng), mPlayer (0), mCurrentCell (0), mGlobalVariables (0),
mSky (false), mCellChanged (false), mEnvironment (environment)
{
@ -420,6 +420,7 @@ namespace MWWorld
std::cout << "Loading ESM " << masterPath.string() << "\n";
// This parses the ESM file and loads a sample cell
mEsm.setEncoding(encoding);
mEsm.open (masterPath.string());
mStore.load (mEsm);

@ -115,7 +115,7 @@ namespace MWWorld
World (OEngine::Render::OgreRenderer& renderer, OEngine::Physic::PhysicEngine* physEng,
const Files::Collections& fileCollections,
const std::string& master, const boost::filesystem::path& resDir, bool newGame,
Environment& environment);
Environment& environment, const std::string& encoding);
~World();

@ -326,7 +326,7 @@ std::string ESMReader::getString(int size)
mEsm->read(ptr, size);
// Convert to UTF8 and return
return ToUTF8::getUtf8(ToUTF8::WINDOWS_1252);
return ToUTF8::getUtf8(mEncoding);
}
void ESMReader::fail(const std::string &msg)
@ -344,4 +344,21 @@ void ESMReader::fail(const std::string &msg)
throw std::runtime_error(ss.str());
}
void ESMReader::setEncoding(const std::string& encoding)
{
if (encoding == "win1250")
{
mEncoding = ToUTF8::WINDOWS_1250;
}
else if (encoding == "win1251")
{
mEncoding = ToUTF8::WINDOWS_1251;
}
else
{
// Default Latin encoding
mEncoding = ToUTF8::WINDOWS_1252;
}
}
}

@ -350,6 +350,9 @@ public:
/// Used for error handling
void fail(const std::string &msg);
/// Sets font encoding for ESM strings
void setEncoding(const std::string& encoding);
private:
Mangle::Stream::StreamPtr mEsm;
@ -360,6 +363,7 @@ private:
SaveData mSaveData;
MasterList mMasters;
ToUTF8::FromType mEncoding;
};
}
#endif

@ -88,7 +88,23 @@ int main()
// Write namespace
cout << "namespace ToUTF8\n{\n\n";
// Central European and Eastern European languages that use Latin script, such as
// Polish, Czech, Slovak, Hungarian, Slovene, Bosnian, Croatian, Serbian (Latin script), Romanian and Albanian.
cout << "\n/// Central European and Eastern European languages that use Latin script,"
"\n/// such as Polish, Czech, Slovak, Hungarian, Slovene, Bosnian, Croatian,"
"\n/// Serbian (Latin script), Romanian and Albanian."
"\n";
write_table("WINDOWS-1250", "windows_1250");
// Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic and other languages
cout << "\n/// Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic"
"\n/// and other languages"
"\n";
write_table("WINDOWS-1251", "windows_1251");
// English
cout << "\n/// Latin alphabet used by English and some other Western languages"
"\n";
write_table("WINDOWS-1252", "windows_1252");
// Close namespace

@ -4,6 +4,533 @@
namespace ToUTF8
{
/// Central European and Eastern European languages that use Latin script,
/// such as Polish, Czech, Slovak, Hungarian, Slovene, Bosnian, Croatian,
/// Serbian (Latin script), Romanian and Albanian.
static char windows_1250[] =
{
0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7, 0x0, 0x0, 0x0, 0x0,
0x1, 0x8, 0x0, 0x0, 0x0, 0x0,
0x1, 0x9, 0x0, 0x0, 0x0, 0x0,
0x1, 0xa, 0x0, 0x0, 0x0, 0x0,
0x1, 0xb, 0x0, 0x0, 0x0, 0x0,
0x1, 0xc, 0x0, 0x0, 0x0, 0x0,
0x1, 0xd, 0x0, 0x0, 0x0, 0x0,
0x1, 0xe, 0x0, 0x0, 0x0, 0x0,
0x1, 0xf, 0x0, 0x0, 0x0, 0x0,
0x1, 0x10, 0x0, 0x0, 0x0, 0x0,
0x1, 0x11, 0x0, 0x0, 0x0, 0x0,
0x1, 0x12, 0x0, 0x0, 0x0, 0x0,
0x1, 0x13, 0x0, 0x0, 0x0, 0x0,
0x1, 0x14, 0x0, 0x0, 0x0, 0x0,
0x1, 0x15, 0x0, 0x0, 0x0, 0x0,
0x1, 0x16, 0x0, 0x0, 0x0, 0x0,
0x1, 0x17, 0x0, 0x0, 0x0, 0x0,
0x1, 0x18, 0x0, 0x0, 0x0, 0x0,
0x1, 0x19, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0,
0x1, 0x21, 0x0, 0x0, 0x0, 0x0,
0x1, 0x22, 0x0, 0x0, 0x0, 0x0,
0x1, 0x23, 0x0, 0x0, 0x0, 0x0,
0x1, 0x24, 0x0, 0x0, 0x0, 0x0,
0x1, 0x25, 0x0, 0x0, 0x0, 0x0,
0x1, 0x26, 0x0, 0x0, 0x0, 0x0,
0x1, 0x27, 0x0, 0x0, 0x0, 0x0,
0x1, 0x28, 0x0, 0x0, 0x0, 0x0,
0x1, 0x29, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x30, 0x0, 0x0, 0x0, 0x0,
0x1, 0x31, 0x0, 0x0, 0x0, 0x0,
0x1, 0x32, 0x0, 0x0, 0x0, 0x0,
0x1, 0x33, 0x0, 0x0, 0x0, 0x0,
0x1, 0x34, 0x0, 0x0, 0x0, 0x0,
0x1, 0x35, 0x0, 0x0, 0x0, 0x0,
0x1, 0x36, 0x0, 0x0, 0x0, 0x0,
0x1, 0x37, 0x0, 0x0, 0x0, 0x0,
0x1, 0x38, 0x0, 0x0, 0x0, 0x0,
0x1, 0x39, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x40, 0x0, 0x0, 0x0, 0x0,
0x1, 0x41, 0x0, 0x0, 0x0, 0x0,
0x1, 0x42, 0x0, 0x0, 0x0, 0x0,
0x1, 0x43, 0x0, 0x0, 0x0, 0x0,
0x1, 0x44, 0x0, 0x0, 0x0, 0x0,
0x1, 0x45, 0x0, 0x0, 0x0, 0x0,
0x1, 0x46, 0x0, 0x0, 0x0, 0x0,
0x1, 0x47, 0x0, 0x0, 0x0, 0x0,
0x1, 0x48, 0x0, 0x0, 0x0, 0x0,
0x1, 0x49, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x50, 0x0, 0x0, 0x0, 0x0,
0x1, 0x51, 0x0, 0x0, 0x0, 0x0,
0x1, 0x52, 0x0, 0x0, 0x0, 0x0,
0x1, 0x53, 0x0, 0x0, 0x0, 0x0,
0x1, 0x54, 0x0, 0x0, 0x0, 0x0,
0x1, 0x55, 0x0, 0x0, 0x0, 0x0,
0x1, 0x56, 0x0, 0x0, 0x0, 0x0,
0x1, 0x57, 0x0, 0x0, 0x0, 0x0,
0x1, 0x58, 0x0, 0x0, 0x0, 0x0,
0x1, 0x59, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x60, 0x0, 0x0, 0x0, 0x0,
0x1, 0x61, 0x0, 0x0, 0x0, 0x0,
0x1, 0x62, 0x0, 0x0, 0x0, 0x0,
0x1, 0x63, 0x0, 0x0, 0x0, 0x0,
0x1, 0x64, 0x0, 0x0, 0x0, 0x0,
0x1, 0x65, 0x0, 0x0, 0x0, 0x0,
0x1, 0x66, 0x0, 0x0, 0x0, 0x0,
0x1, 0x67, 0x0, 0x0, 0x0, 0x0,
0x1, 0x68, 0x0, 0x0, 0x0, 0x0,
0x1, 0x69, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x70, 0x0, 0x0, 0x0, 0x0,
0x1, 0x71, 0x0, 0x0, 0x0, 0x0,
0x1, 0x72, 0x0, 0x0, 0x0, 0x0,
0x1, 0x73, 0x0, 0x0, 0x0, 0x0,
0x1, 0x74, 0x0, 0x0, 0x0, 0x0,
0x1, 0x75, 0x0, 0x0, 0x0, 0x0,
0x1, 0x76, 0x0, 0x0, 0x0, 0x0,
0x1, 0x77, 0x0, 0x0, 0x0, 0x0,
0x1, 0x78, 0x0, 0x0, 0x0, 0x0,
0x1, 0x79, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7f, 0x0, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x82, 0xac, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x80, 0x9a, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x80, 0x9e, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa6, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa1, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x80, 0xb0, 0x0, 0x0,
0x2, 0xc5, 0xa0, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xb9, 0x0, 0x0,
0x2, 0xc5, 0x9a, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xa4, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xbd, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xb9, 0x0, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x80, 0x98, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x99, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9c, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9d, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa2, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x93, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x94, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x84, 0xa2, 0x0, 0x0,
0x2, 0xc5, 0xa1, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xba, 0x0, 0x0,
0x2, 0xc5, 0x9b, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xa5, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xbe, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xba, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa0, 0x0, 0x0, 0x0,
0x2, 0xcb, 0x87, 0x0, 0x0, 0x0,
0x2, 0xcb, 0x98, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x81, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa4, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x84, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa6, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa7, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa8, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa9, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x9e, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xab, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xac, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xad, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xae, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xbb, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb0, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb1, 0x0, 0x0, 0x0,
0x2, 0xcb, 0x9b, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x82, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb4, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb5, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb6, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb7, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb8, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x85, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x9f, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xbb, 0x0, 0x0, 0x0,
0x2, 0xc4, 0xbd, 0x0, 0x0, 0x0,
0x2, 0xcb, 0x9d, 0x0, 0x0, 0x0,
0x2, 0xc4, 0xbe, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xbc, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x94, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x81, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x82, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x82, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x84, 0x0, 0x0, 0x0,
0x2, 0xc4, 0xb9, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x86, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x87, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x8c, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x89, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x98, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x8b, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x9a, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x8d, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x8e, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x8e, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x90, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x83, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x87, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x93, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x94, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x90, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x96, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x97, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x98, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xae, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x9a, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xb0, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x9c, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x9d, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xa2, 0x0, 0x0, 0x0,
0x2, 0xc3, 0x9f, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x95, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xa1, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xa2, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x83, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xa4, 0x0, 0x0, 0x0,
0x2, 0xc4, 0xba, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x87, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xa7, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x8d, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xa9, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x99, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xab, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x9b, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xad, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xae, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x8f, 0x0, 0x0, 0x0,
0x2, 0xc4, 0x91, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x84, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x88, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xb3, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xb4, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x91, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xb6, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xb7, 0x0, 0x0, 0x0,
0x2, 0xc5, 0x99, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xaf, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xba, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xb1, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xbc, 0x0, 0x0, 0x0,
0x2, 0xc3, 0xbd, 0x0, 0x0, 0x0,
0x2, 0xc5, 0xa3, 0x0, 0x0, 0x0,
0x2, 0xcb, 0x99, 0x0, 0x0, 0x0
};
/// Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic
/// and other languages
static char windows_1251[] =
{
0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7, 0x0, 0x0, 0x0, 0x0,
0x1, 0x8, 0x0, 0x0, 0x0, 0x0,
0x1, 0x9, 0x0, 0x0, 0x0, 0x0,
0x1, 0xa, 0x0, 0x0, 0x0, 0x0,
0x1, 0xb, 0x0, 0x0, 0x0, 0x0,
0x1, 0xc, 0x0, 0x0, 0x0, 0x0,
0x1, 0xd, 0x0, 0x0, 0x0, 0x0,
0x1, 0xe, 0x0, 0x0, 0x0, 0x0,
0x1, 0xf, 0x0, 0x0, 0x0, 0x0,
0x1, 0x10, 0x0, 0x0, 0x0, 0x0,
0x1, 0x11, 0x0, 0x0, 0x0, 0x0,
0x1, 0x12, 0x0, 0x0, 0x0, 0x0,
0x1, 0x13, 0x0, 0x0, 0x0, 0x0,
0x1, 0x14, 0x0, 0x0, 0x0, 0x0,
0x1, 0x15, 0x0, 0x0, 0x0, 0x0,
0x1, 0x16, 0x0, 0x0, 0x0, 0x0,
0x1, 0x17, 0x0, 0x0, 0x0, 0x0,
0x1, 0x18, 0x0, 0x0, 0x0, 0x0,
0x1, 0x19, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0,
0x1, 0x21, 0x0, 0x0, 0x0, 0x0,
0x1, 0x22, 0x0, 0x0, 0x0, 0x0,
0x1, 0x23, 0x0, 0x0, 0x0, 0x0,
0x1, 0x24, 0x0, 0x0, 0x0, 0x0,
0x1, 0x25, 0x0, 0x0, 0x0, 0x0,
0x1, 0x26, 0x0, 0x0, 0x0, 0x0,
0x1, 0x27, 0x0, 0x0, 0x0, 0x0,
0x1, 0x28, 0x0, 0x0, 0x0, 0x0,
0x1, 0x29, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x2f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x30, 0x0, 0x0, 0x0, 0x0,
0x1, 0x31, 0x0, 0x0, 0x0, 0x0,
0x1, 0x32, 0x0, 0x0, 0x0, 0x0,
0x1, 0x33, 0x0, 0x0, 0x0, 0x0,
0x1, 0x34, 0x0, 0x0, 0x0, 0x0,
0x1, 0x35, 0x0, 0x0, 0x0, 0x0,
0x1, 0x36, 0x0, 0x0, 0x0, 0x0,
0x1, 0x37, 0x0, 0x0, 0x0, 0x0,
0x1, 0x38, 0x0, 0x0, 0x0, 0x0,
0x1, 0x39, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x40, 0x0, 0x0, 0x0, 0x0,
0x1, 0x41, 0x0, 0x0, 0x0, 0x0,
0x1, 0x42, 0x0, 0x0, 0x0, 0x0,
0x1, 0x43, 0x0, 0x0, 0x0, 0x0,
0x1, 0x44, 0x0, 0x0, 0x0, 0x0,
0x1, 0x45, 0x0, 0x0, 0x0, 0x0,
0x1, 0x46, 0x0, 0x0, 0x0, 0x0,
0x1, 0x47, 0x0, 0x0, 0x0, 0x0,
0x1, 0x48, 0x0, 0x0, 0x0, 0x0,
0x1, 0x49, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x4f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x50, 0x0, 0x0, 0x0, 0x0,
0x1, 0x51, 0x0, 0x0, 0x0, 0x0,
0x1, 0x52, 0x0, 0x0, 0x0, 0x0,
0x1, 0x53, 0x0, 0x0, 0x0, 0x0,
0x1, 0x54, 0x0, 0x0, 0x0, 0x0,
0x1, 0x55, 0x0, 0x0, 0x0, 0x0,
0x1, 0x56, 0x0, 0x0, 0x0, 0x0,
0x1, 0x57, 0x0, 0x0, 0x0, 0x0,
0x1, 0x58, 0x0, 0x0, 0x0, 0x0,
0x1, 0x59, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x5f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x60, 0x0, 0x0, 0x0, 0x0,
0x1, 0x61, 0x0, 0x0, 0x0, 0x0,
0x1, 0x62, 0x0, 0x0, 0x0, 0x0,
0x1, 0x63, 0x0, 0x0, 0x0, 0x0,
0x1, 0x64, 0x0, 0x0, 0x0, 0x0,
0x1, 0x65, 0x0, 0x0, 0x0, 0x0,
0x1, 0x66, 0x0, 0x0, 0x0, 0x0,
0x1, 0x67, 0x0, 0x0, 0x0, 0x0,
0x1, 0x68, 0x0, 0x0, 0x0, 0x0,
0x1, 0x69, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x6f, 0x0, 0x0, 0x0, 0x0,
0x1, 0x70, 0x0, 0x0, 0x0, 0x0,
0x1, 0x71, 0x0, 0x0, 0x0, 0x0,
0x1, 0x72, 0x0, 0x0, 0x0, 0x0,
0x1, 0x73, 0x0, 0x0, 0x0, 0x0,
0x1, 0x74, 0x0, 0x0, 0x0, 0x0,
0x1, 0x75, 0x0, 0x0, 0x0, 0x0,
0x1, 0x76, 0x0, 0x0, 0x0, 0x0,
0x1, 0x77, 0x0, 0x0, 0x0, 0x0,
0x1, 0x78, 0x0, 0x0, 0x0, 0x0,
0x1, 0x79, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7a, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7b, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7c, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7d, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7e, 0x0, 0x0, 0x0, 0x0,
0x1, 0x7f, 0x0, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x82, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x83, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9a, 0x0, 0x0,
0x2, 0xd1, 0x93, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9e, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa6, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa1, 0x0, 0x0,
0x3, 0xe2, 0x82, 0xac, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xb0, 0x0, 0x0,
0x2, 0xd0, 0x89, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xb9, 0x0, 0x0,
0x2, 0xd0, 0x8a, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x8c, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x8b, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x8f, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x92, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x98, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x99, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9c, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x9d, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xa2, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x93, 0x0, 0x0,
0x3, 0xe2, 0x80, 0x94, 0x0, 0x0,
0x1, 0x20, 0x0, 0x0, 0x0, 0x0, // not part of this charset
0x3, 0xe2, 0x84, 0xa2, 0x0, 0x0,
0x2, 0xd1, 0x99, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x80, 0xba, 0x0, 0x0,
0x2, 0xd1, 0x9a, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x9c, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x9b, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x9f, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa0, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x8e, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x9e, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x88, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa4, 0x0, 0x0, 0x0,
0x2, 0xd2, 0x90, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa6, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa7, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x81, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xa9, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x84, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xab, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xac, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xad, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xae, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x87, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb0, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb1, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x86, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x96, 0x0, 0x0, 0x0,
0x2, 0xd2, 0x91, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb5, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb6, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xb7, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x91, 0x0, 0x0, 0x0,
0x3, 0xe2, 0x84, 0x96, 0x0, 0x0,
0x2, 0xd1, 0x94, 0x0, 0x0, 0x0,
0x2, 0xc2, 0xbb, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x98, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x85, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x95, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x97, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x90, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x91, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x92, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x93, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x94, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x95, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x96, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x97, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x98, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x99, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9a, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9b, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9c, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9d, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9e, 0x0, 0x0, 0x0,
0x2, 0xd0, 0x9f, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa0, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa1, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa2, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa3, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa4, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa5, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa6, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa7, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa8, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xa9, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xaa, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xab, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xac, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xad, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xae, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xaf, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb0, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb1, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb2, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb3, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb4, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb5, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb6, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb7, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb8, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xb9, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xba, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xbb, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xbc, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xbd, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xbe, 0x0, 0x0, 0x0,
0x2, 0xd0, 0xbf, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x80, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x81, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x82, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x83, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x84, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x85, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x86, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x87, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x88, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x89, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8a, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8b, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8c, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8d, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8e, 0x0, 0x0, 0x0,
0x2, 0xd1, 0x8f, 0x0, 0x0, 0x0
};
/// Latin alphabet used by English and some other Western languages
static char windows_1252[] =
{
0x1, 0x0, 0x0, 0x0, 0x0, 0x0,

@ -130,10 +130,28 @@ std::string ToUTF8::getUtf8(ToUTF8::FromType from)
{
// Pick translation array
const char *arr;
if(from == ToUTF8::WINDOWS_1252)
arr = ToUTF8::windows_1252;
else
assert(0);
switch (from)
{
case ToUTF8::WINDOWS_1252:
{
arr = ToUTF8::windows_1252;
break;
}
case ToUTF8::WINDOWS_1250:
{
arr = ToUTF8::windows_1250;
break;
}
case ToUTF8::WINDOWS_1251:
{
arr = ToUTF8::windows_1251;
break;
}
default:
{
assert(0);
}
}
// Double check that the input string stops at some point (it might
// contain zero terminators before this, inside its own data, which

@ -8,8 +8,10 @@ namespace ToUTF8
// These are all the currently supported code pages
enum FromType
{
WINDOWS_1252 // Used by English version of Morrowind (and
// probably others)
WINDOWS_1250, // Central ane Eastern European languages
WINDOWS_1251, // Cyrillic languages
WINDOWS_1252 // Used by English version of Morrowind (and
// probably others)
};
// Return a writable buffer of at least 'size' bytes. The buffer

@ -2,8 +2,9 @@
<MyGUI type="Font">
<Font name="MyGUI_CoreFont.18" source="Comic.TTF" size="18" resolution="72" antialias_colour="false" space_width="4" tab_count="4" spacer="5">
<Font name="MyGUI_CoreFont.18" source="Comic.TTF" size="18" resolution="72" antialias_colour="false" space_width="4" tab_count="4" spacer="5" distance="10">
<Code range="33 126"/>
<Code range="192 382"/><!-- Central and Eastern European languages glyphs -->
<Code range="1025 1105"/>
<Code range="8470 8470" help="№"/>
<Code hide="128"/>
@ -11,15 +12,16 @@
<Code hide="1104"/>
</Font>
<Font name="MonoFont" default_height="17" source="VeraMono.ttf" size="18" resolution="50" antialias_colour="false" space_width="4" tab_width="8" cursor_width="2" distance="5" offset_height="0">
<Font name="MonoFont" default_height="17" source="VeraMono.ttf" size="18" resolution="50" antialias_colour="false" space_width="4" tab_width="8" cursor_width="2" distance="10" offset_height="0">
<Code range="33 126"/>
<Code range="192 382"/><!-- Central and Eastern European glyphs -->
<Code range="1025 1105"/>
</Font>
<!-- Useful for youtube videos :) -->
<Font name="youtube" default_height="34" source="VeraMono.ttf" size="36" resolution="50" antialias_colour="false" space_width="8" tab_width="16" cursor_width="4" distance="10" offset_height="0">
<Font name="youtube" default_height="34" source="VeraMono.ttf" size="36" resolution="50" antialias_colour="false" space_width="8" tab_width="16" cursor_width="4" distance="15" offset_height="0">
<Code range="33 126"/>
<Code range="192 382"/><!-- Central and Eastern European languages glyphs -->
<Code range="1025 1105"/>
</Font>

Loading…
Cancel
Save