From ac9b1715d5ff6a58e0b8e13c4b1e7482033acb4d Mon Sep 17 00:00:00 2001 From: Lukasz Gromanowski Date: Sun, 17 Jul 2011 22:16:50 +0200 Subject: [PATCH] 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 --- apps/openmw/engine.cpp | 7 +- apps/openmw/engine.hpp | 4 + apps/openmw/main.cpp | 25 + apps/openmw/mwworld/world.cpp | 3 +- apps/openmw/mwworld/world.hpp | 2 +- components/esm/esm_reader.cpp | 19 +- components/esm/esm_reader.hpp | 4 + components/to_utf8/gen_iconv.cpp | 16 + components/to_utf8/tables_gen.hpp | 527 ++++++++++++++++++ components/to_utf8/to_utf8.cpp | 26 +- components/to_utf8/to_utf8.hpp | 6 +- .../openmw_resources/openmw.font.xml | 10 +- 12 files changed, 635 insertions(+), 14 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index c344b55aa..264cf5347 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -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; +} \ No newline at end of file diff --git a/apps/openmw/engine.hpp b/apps/openmw/engine.hpp index 4c70d7f35..9d1466655 100644 --- a/apps/openmw/engine.hpp +++ b/apps/openmw/engine.hpp @@ -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); }; } diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index c3d0cc821..d0efb401c 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -80,6 +80,13 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine) ( "fs-strict", boost::program_options::value()-> implicit_value (true)->default_value (false), "strict file system handling (no case folding)") + + ( "encoding", boost::program_options::value()-> + 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()); + 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()==true) engine.enableFSStrict(); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 3a4151e3a..0b750b1c3 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -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); diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 160c20314..188e5dec5 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -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(); diff --git a/components/esm/esm_reader.cpp b/components/esm/esm_reader.cpp index 2c342178b..e9bfcf5ee 100644 --- a/components/esm/esm_reader.cpp +++ b/components/esm/esm_reader.cpp @@ -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; + } +} + } diff --git a/components/esm/esm_reader.hpp b/components/esm/esm_reader.hpp index dea1980e2..e5b230748 100644 --- a/components/esm/esm_reader.hpp +++ b/components/esm/esm_reader.hpp @@ -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 diff --git a/components/to_utf8/gen_iconv.cpp b/components/to_utf8/gen_iconv.cpp index cf4d9ac3f..620205245 100644 --- a/components/to_utf8/gen_iconv.cpp +++ b/components/to_utf8/gen_iconv.cpp @@ -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 diff --git a/components/to_utf8/tables_gen.hpp b/components/to_utf8/tables_gen.hpp index a45d5d181..79945bddc 100644 --- a/components/to_utf8/tables_gen.hpp +++ b/components/to_utf8/tables_gen.hpp @@ -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, diff --git a/components/to_utf8/to_utf8.cpp b/components/to_utf8/to_utf8.cpp index 5f38313aa..3fbbeb733 100644 --- a/components/to_utf8/to_utf8.cpp +++ b/components/to_utf8/to_utf8.cpp @@ -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 diff --git a/components/to_utf8/to_utf8.hpp b/components/to_utf8/to_utf8.hpp index ec2231be7..4cbee1019 100644 --- a/components/to_utf8/to_utf8.hpp +++ b/components/to_utf8/to_utf8.hpp @@ -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 diff --git a/extern/mygui_3.0.1/openmw_resources/openmw.font.xml b/extern/mygui_3.0.1/openmw_resources/openmw.font.xml index 5e283c549..76f164bcb 100644 --- a/extern/mygui_3.0.1/openmw_resources/openmw.font.xml +++ b/extern/mygui_3.0.1/openmw_resources/openmw.font.xml @@ -2,8 +2,9 @@ - + + @@ -11,15 +12,16 @@ - - + + - + +