forked from teamnwah/openmw-tes3coop
Use Morrowind's fonts
This commit is contained in:
parent
8bd712cc95
commit
daab4f55a3
17 changed files with 579 additions and 70 deletions
|
@ -33,7 +33,7 @@ add_openmw_dir (mwgui
|
||||||
enchantingdialog trainingwindow travelwindow imagebutton exposedwindow cursor spellicons
|
enchantingdialog trainingwindow travelwindow imagebutton exposedwindow cursor spellicons
|
||||||
merchantrepair repair soulgemdialog companionwindow bookpage journalviewmodel journalbooks
|
merchantrepair repair soulgemdialog companionwindow bookpage journalviewmodel journalbooks
|
||||||
keywordsearch itemmodel containeritemmodel inventoryitemmodel sortfilteritemmodel itemview
|
keywordsearch itemmodel containeritemmodel inventoryitemmodel sortfilteritemmodel itemview
|
||||||
tradeitemmodel companionitemmodel pickpocketitemmodel
|
tradeitemmodel companionitemmodel pickpocketitemmodel fontloader
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwdialogue
|
add_openmw_dir (mwdialogue
|
||||||
|
|
|
@ -380,7 +380,7 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
|
||||||
|
|
||||||
mEnvironment.setWindowManager (new MWGui::WindowManager(
|
mEnvironment.setWindowManager (new MWGui::WindowManager(
|
||||||
mExtensions, mFpsLevel, mOgre, mCfgMgr.getLogPath().string() + std::string("/"),
|
mExtensions, mFpsLevel, mOgre, mCfgMgr.getLogPath().string() + std::string("/"),
|
||||||
mCfgMgr.getCachePath ().string(), mScriptConsoleMode, mTranslationDataStorage));
|
mCfgMgr.getCachePath ().string(), mScriptConsoleMode, mTranslationDataStorage, mEncoding));
|
||||||
if (mNewGame)
|
if (mNewGame)
|
||||||
mEnvironment.getWindowManager()->setNewGame(true);
|
mEnvironment.getWindowManager()->setNewGame(true);
|
||||||
|
|
||||||
|
|
|
@ -223,6 +223,9 @@ struct TypesetBookImpl::Typesetter : BookTypesetter
|
||||||
|
|
||||||
Style * createStyle (char const * fontName, Colour fontColour)
|
Style * createStyle (char const * fontName, Colour fontColour)
|
||||||
{
|
{
|
||||||
|
if (strcmp(fontName, "") == 0)
|
||||||
|
return createStyle(MyGUI::FontManager::getInstance().getDefaultFont().c_str(), fontColour);
|
||||||
|
|
||||||
for (Styles::iterator i = mBook->mStyles.begin (); i != mBook->mStyles.end (); ++i)
|
for (Styles::iterator i = mBook->mStyles.begin (); i != mBook->mStyles.end (); ++i)
|
||||||
if (i->match (fontName, fontColour, fontColour, fontColour, 0))
|
if (i->match (fontName, fontColour, fontColour, fontColour, 0))
|
||||||
return &*i;
|
return &*i;
|
||||||
|
@ -405,7 +408,8 @@ struct TypesetBookImpl::Typesetter : BookTypesetter
|
||||||
while (!stream.eof () && !ucsLineBreak (stream.peek ()) && ucsBreakingSpace (stream.peek ()))
|
while (!stream.eof () && !ucsLineBreak (stream.peek ()) && ucsBreakingSpace (stream.peek ()))
|
||||||
{
|
{
|
||||||
MyGUI::GlyphInfo* gi = style->mFont->getGlyphInfo (stream.peek ());
|
MyGUI::GlyphInfo* gi = style->mFont->getGlyphInfo (stream.peek ());
|
||||||
space_width += gi->advance;
|
if (gi)
|
||||||
|
space_width += gi->advance + gi->bearingX;
|
||||||
stream.consume ();
|
stream.consume ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,7 +418,8 @@ struct TypesetBookImpl::Typesetter : BookTypesetter
|
||||||
while (!stream.eof () && !ucsLineBreak (stream.peek ()) && !ucsBreakingSpace (stream.peek ()))
|
while (!stream.eof () && !ucsLineBreak (stream.peek ()) && !ucsBreakingSpace (stream.peek ()))
|
||||||
{
|
{
|
||||||
MyGUI::GlyphInfo* gi = style->mFont->getGlyphInfo (stream.peek ());
|
MyGUI::GlyphInfo* gi = style->mFont->getGlyphInfo (stream.peek ());
|
||||||
word_width += gi->advance + gi->bearingX;
|
if (gi)
|
||||||
|
word_width += gi->advance + gi->bearingX;
|
||||||
word_height = line_height;
|
word_height = line_height;
|
||||||
++character_count;
|
++character_count;
|
||||||
stream.consume ();
|
stream.consume ();
|
||||||
|
@ -628,6 +633,9 @@ namespace
|
||||||
{
|
{
|
||||||
MyGUI::GlyphInfo* gi = mFont->getGlyphInfo (ch);
|
MyGUI::GlyphInfo* gi = mFont->getGlyphInfo (ch);
|
||||||
|
|
||||||
|
if (!gi)
|
||||||
|
return;
|
||||||
|
|
||||||
MyGUI::FloatRect vr;
|
MyGUI::FloatRect vr;
|
||||||
|
|
||||||
vr.left = mCursor.left + gi->bearingX;
|
vr.left = mCursor.left + gi->bearingX;
|
||||||
|
@ -647,7 +655,8 @@ namespace
|
||||||
{
|
{
|
||||||
MyGUI::GlyphInfo* gi = mFont->getGlyphInfo (ch);
|
MyGUI::GlyphInfo* gi = mFont->getGlyphInfo (ch);
|
||||||
|
|
||||||
mCursor.left += gi->bearingX + gi->advance;
|
if (gi)
|
||||||
|
mCursor.left += gi->bearingX + gi->advance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -115,7 +115,7 @@ namespace MWGui
|
||||||
|
|
||||||
void Response::write(BookTypesetter::Ptr typesetter, KeywordSearchT* keywordSearch, std::map<std::string, Link*>& topicLinks) const
|
void Response::write(BookTypesetter::Ptr typesetter, KeywordSearchT* keywordSearch, std::map<std::string, Link*>& topicLinks) const
|
||||||
{
|
{
|
||||||
BookTypesetter::Style* title = typesetter->createStyle("EB Garamond", MyGUI::Colour(223/255.f, 201/255.f, 159/255.f));
|
BookTypesetter::Style* title = typesetter->createStyle("", MyGUI::Colour(223/255.f, 201/255.f, 159/255.f));
|
||||||
typesetter->sectionBreak(9);
|
typesetter->sectionBreak(9);
|
||||||
if (mTitle != "")
|
if (mTitle != "")
|
||||||
typesetter->write(title, to_utf8_span(mTitle.c_str()));
|
typesetter->write(title, to_utf8_span(mTitle.c_str()));
|
||||||
|
@ -159,7 +159,7 @@ namespace MWGui
|
||||||
|
|
||||||
if (hyperLinks.size() && MWBase::Environment::get().getWindowManager()->getTranslationDataStorage().hasTranslation())
|
if (hyperLinks.size() && MWBase::Environment::get().getWindowManager()->getTranslationDataStorage().hasTranslation())
|
||||||
{
|
{
|
||||||
BookTypesetter::Style* style = typesetter->createStyle("EB Garamond", MyGUI::Colour(202/255.f, 165/255.f, 96/255.f));
|
BookTypesetter::Style* style = typesetter->createStyle("", MyGUI::Colour(202/255.f, 165/255.f, 96/255.f));
|
||||||
size_t formatted = 0; // points to the first character that is not laid out yet
|
size_t formatted = 0; // points to the first character that is not laid out yet
|
||||||
for (std::map<Range, intptr_t>::iterator it = hyperLinks.begin(); it != hyperLinks.end(); ++it)
|
for (std::map<Range, intptr_t>::iterator it = hyperLinks.begin(); it != hyperLinks.end(); ++it)
|
||||||
{
|
{
|
||||||
|
@ -197,7 +197,7 @@ namespace MWGui
|
||||||
|
|
||||||
void Response::addTopicLink(BookTypesetter::Ptr typesetter, intptr_t topicId, size_t begin, size_t end) const
|
void Response::addTopicLink(BookTypesetter::Ptr typesetter, intptr_t topicId, size_t begin, size_t end) const
|
||||||
{
|
{
|
||||||
BookTypesetter::Style* style = typesetter->createStyle("EB Garamond", MyGUI::Colour(202/255.f, 165/255.f, 96/255.f));
|
BookTypesetter::Style* style = typesetter->createStyle("", MyGUI::Colour(202/255.f, 165/255.f, 96/255.f));
|
||||||
|
|
||||||
const MyGUI::Colour linkHot (143/255.f, 155/255.f, 218/255.f);
|
const MyGUI::Colour linkHot (143/255.f, 155/255.f, 218/255.f);
|
||||||
const MyGUI::Colour linkNormal (112/255.f, 126/255.f, 207/255.f);
|
const MyGUI::Colour linkNormal (112/255.f, 126/255.f, 207/255.f);
|
||||||
|
@ -215,7 +215,7 @@ namespace MWGui
|
||||||
|
|
||||||
void Message::write(BookTypesetter::Ptr typesetter, KeywordSearchT* keywordSearch, std::map<std::string, Link*>& topicLinks) const
|
void Message::write(BookTypesetter::Ptr typesetter, KeywordSearchT* keywordSearch, std::map<std::string, Link*>& topicLinks) const
|
||||||
{
|
{
|
||||||
BookTypesetter::Style* title = typesetter->createStyle("EB Garamond", MyGUI::Colour(223/255.f, 201/255.f, 159/255.f));
|
BookTypesetter::Style* title = typesetter->createStyle("", MyGUI::Colour(223/255.f, 201/255.f, 159/255.f));
|
||||||
typesetter->sectionBreak(9);
|
typesetter->sectionBreak(9);
|
||||||
typesetter->write(title, to_utf8_span(mText.c_str()));
|
typesetter->write(title, to_utf8_span(mText.c_str()));
|
||||||
}
|
}
|
||||||
|
@ -465,7 +465,7 @@ namespace MWGui
|
||||||
(*it)->write(typesetter, &mKeywordSearch, mTopicLinks);
|
(*it)->write(typesetter, &mKeywordSearch, mTopicLinks);
|
||||||
|
|
||||||
|
|
||||||
BookTypesetter::Style* body = typesetter->createStyle("EB Garamond", MyGUI::Colour::White);
|
BookTypesetter::Style* body = typesetter->createStyle("", MyGUI::Colour::White);
|
||||||
|
|
||||||
// choices
|
// choices
|
||||||
const MyGUI::Colour linkHot (223/255.f, 201/255.f, 159/255.f);
|
const MyGUI::Colour linkHot (223/255.f, 201/255.f, 159/255.f);
|
||||||
|
|
238
apps/openmw/mwgui/fontloader.cpp
Normal file
238
apps/openmw/mwgui/fontloader.cpp
Normal file
|
@ -0,0 +1,238 @@
|
||||||
|
#include "fontloader.hpp"
|
||||||
|
|
||||||
|
#include <OgreResourceGroupManager.h>
|
||||||
|
#include <OgreTextureManager.h>
|
||||||
|
|
||||||
|
#include <MyGUI_ResourceManager.h>
|
||||||
|
#include <MyGUI_FontManager.h>
|
||||||
|
#include <MyGUI_ResourceManualFont.h>
|
||||||
|
#include <MyGUI_XmlDocument.h>
|
||||||
|
#include <MyGUI_FactoryManager.h>
|
||||||
|
|
||||||
|
#include <components/misc/stringops.hpp>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
unsigned long utf8ToUnicode(const std::string& utf8)
|
||||||
|
{
|
||||||
|
size_t i = 0;
|
||||||
|
unsigned long unicode;
|
||||||
|
size_t todo;
|
||||||
|
unsigned char ch = utf8[i++];
|
||||||
|
if (ch <= 0x7F)
|
||||||
|
{
|
||||||
|
unicode = ch;
|
||||||
|
todo = 0;
|
||||||
|
}
|
||||||
|
else if (ch <= 0xBF)
|
||||||
|
{
|
||||||
|
throw std::logic_error("not a UTF-8 string");
|
||||||
|
}
|
||||||
|
else if (ch <= 0xDF)
|
||||||
|
{
|
||||||
|
unicode = ch&0x1F;
|
||||||
|
todo = 1;
|
||||||
|
}
|
||||||
|
else if (ch <= 0xEF)
|
||||||
|
{
|
||||||
|
unicode = ch&0x0F;
|
||||||
|
todo = 2;
|
||||||
|
}
|
||||||
|
else if (ch <= 0xF7)
|
||||||
|
{
|
||||||
|
unicode = ch&0x07;
|
||||||
|
todo = 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw std::logic_error("not a UTF-8 string");
|
||||||
|
}
|
||||||
|
for (size_t j = 0; j < todo; ++j)
|
||||||
|
{
|
||||||
|
unsigned char ch = utf8[i++];
|
||||||
|
if (ch < 0x80 || ch > 0xBF)
|
||||||
|
throw std::logic_error("not a UTF-8 string");
|
||||||
|
unicode <<= 6;
|
||||||
|
unicode += ch & 0x3F;
|
||||||
|
}
|
||||||
|
if (unicode >= 0xD800 && unicode <= 0xDFFF)
|
||||||
|
throw std::logic_error("not a UTF-8 string");
|
||||||
|
if (unicode > 0x10FFFF)
|
||||||
|
throw std::logic_error("not a UTF-8 string");
|
||||||
|
|
||||||
|
return unicode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
|
||||||
|
FontLoader::FontLoader(ToUTF8::FromType encoding)
|
||||||
|
{
|
||||||
|
if (encoding == ToUTF8::WINDOWS_1252)
|
||||||
|
mEncoding = ToUTF8::CP437;
|
||||||
|
else
|
||||||
|
mEncoding = encoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FontLoader::loadAllFonts()
|
||||||
|
{
|
||||||
|
Ogre::StringVector groups = Ogre::ResourceGroupManager::getSingleton().getResourceGroups ();
|
||||||
|
for (Ogre::StringVector::iterator it = groups.begin(); it != groups.end(); ++it)
|
||||||
|
{
|
||||||
|
Ogre::StringVectorPtr resourcesInThisGroup = Ogre::ResourceGroupManager::getSingleton ().findResourceNames (*it, "*.fnt");
|
||||||
|
for (Ogre::StringVector::iterator resource = resourcesInThisGroup->begin(); resource != resourcesInThisGroup->end(); ++resource)
|
||||||
|
{
|
||||||
|
loadFont(*resource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
} Point;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
float u1; // appears unused, always 0
|
||||||
|
Point top_left;
|
||||||
|
Point top_right;
|
||||||
|
Point bottom_left;
|
||||||
|
Point bottom_right;
|
||||||
|
float width;
|
||||||
|
float height;
|
||||||
|
float u2; // appears unused, always 0
|
||||||
|
float kerning;
|
||||||
|
float ascent;
|
||||||
|
} GlyphInfo;
|
||||||
|
|
||||||
|
void FontLoader::loadFont(const std::string &fileName)
|
||||||
|
{
|
||||||
|
Ogre::DataStreamPtr file = Ogre::ResourceGroupManager::getSingleton().openResource(fileName);
|
||||||
|
|
||||||
|
float fontSize;
|
||||||
|
int one;
|
||||||
|
file->read(&fontSize, sizeof(fontSize));
|
||||||
|
|
||||||
|
file->read(&one, sizeof(int));
|
||||||
|
assert(one == 1);
|
||||||
|
file->read(&one, sizeof(int));
|
||||||
|
assert(one == 1);
|
||||||
|
|
||||||
|
char name_[284];
|
||||||
|
file->read(name_, sizeof(name_));
|
||||||
|
std::string name(name_);
|
||||||
|
|
||||||
|
GlyphInfo data[256];
|
||||||
|
file->read(data, sizeof(data));
|
||||||
|
file->close();
|
||||||
|
|
||||||
|
// Create the font texture
|
||||||
|
std::string bitmapFilename = "Fonts/" + std::string(name) + ".tex";
|
||||||
|
Ogre::DataStreamPtr bitmapFile = Ogre::ResourceGroupManager::getSingleton().openResource(bitmapFilename);
|
||||||
|
|
||||||
|
int width, height;
|
||||||
|
bitmapFile->read(&width, sizeof(int));
|
||||||
|
bitmapFile->read(&height, sizeof(int));
|
||||||
|
|
||||||
|
std::vector<Ogre::uchar> textureData;
|
||||||
|
textureData.resize(width*height*4);
|
||||||
|
bitmapFile->read(&textureData[0], width*height*4);
|
||||||
|
bitmapFile->close();
|
||||||
|
|
||||||
|
std::string textureName = name;
|
||||||
|
Ogre::Image image;
|
||||||
|
image.loadDynamicImage(&textureData[0], width, height, Ogre::PF_BYTE_RGBA);
|
||||||
|
Ogre::TexturePtr texture = Ogre::TextureManager::getSingleton().createManual(textureName,
|
||||||
|
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
|
||||||
|
Ogre::TEX_TYPE_2D,
|
||||||
|
width, height, 0, Ogre::PF_BYTE_RGBA);
|
||||||
|
texture->loadImage(image);
|
||||||
|
|
||||||
|
// Register the font with MyGUI
|
||||||
|
MyGUI::ResourceManualFont* font = static_cast<MyGUI::ResourceManualFont*>(
|
||||||
|
MyGUI::FactoryManager::getInstance().createObject("Resource", "ResourceManualFont"));
|
||||||
|
// We need to emulate loading from XML because the data members are private as of mygui 3.2.0
|
||||||
|
MyGUI::xml::Document xmlDocument;
|
||||||
|
MyGUI::xml::ElementPtr root = xmlDocument.createRoot("ResourceManualFont");
|
||||||
|
|
||||||
|
if (name.size() >= 5 && Misc::StringUtils::ciEqual(name.substr(0, 5), "magic"))
|
||||||
|
root->addAttribute("name", "Magic Cards");
|
||||||
|
else if (name.size() >= 7 && Misc::StringUtils::ciEqual(name.substr(0, 7), "century"))
|
||||||
|
root->addAttribute("name", "Century Gothic");
|
||||||
|
else if (name.size() >= 7 && Misc::StringUtils::ciEqual(name.substr(0, 7), "daedric"))
|
||||||
|
root->addAttribute("name", "Daedric");
|
||||||
|
else
|
||||||
|
return; // no point in loading it, since there is no way of using additional fonts
|
||||||
|
|
||||||
|
MyGUI::xml::ElementPtr defaultHeight = root->createChild("Property");
|
||||||
|
defaultHeight->addAttribute("key", "DefaultHeight");
|
||||||
|
defaultHeight->addAttribute("value", fontSize);
|
||||||
|
MyGUI::xml::ElementPtr source = root->createChild("Property");
|
||||||
|
source->addAttribute("key", "Source");
|
||||||
|
source->addAttribute("value", std::string(textureName));
|
||||||
|
MyGUI::xml::ElementPtr codes = root->createChild("Codes");
|
||||||
|
|
||||||
|
for(int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
int x1 = data[i].top_left.x*width;
|
||||||
|
int y1 = data[i].top_left.y*height;
|
||||||
|
int w = data[i].top_right.x*width - x1;
|
||||||
|
int h = data[i].bottom_left.y*height - y1;
|
||||||
|
|
||||||
|
ToUTF8::Utf8Encoder encoder(mEncoding);
|
||||||
|
unsigned long unicodeVal = utf8ToUnicode(encoder.getUtf8(std::string(1, (unsigned char)(i))));
|
||||||
|
|
||||||
|
MyGUI::xml::ElementPtr code = codes->createChild("Code");
|
||||||
|
code->addAttribute("index", unicodeVal);
|
||||||
|
code->addAttribute("coord", MyGUI::utility::toString(x1) + " "
|
||||||
|
+ MyGUI::utility::toString(y1) + " "
|
||||||
|
+ MyGUI::utility::toString(w) + " "
|
||||||
|
+ MyGUI::utility::toString(h));
|
||||||
|
code->addAttribute("advance", data[i].width);
|
||||||
|
code->addAttribute("bearing", MyGUI::utility::toString(data[i].kerning) + " "
|
||||||
|
+ MyGUI::utility::toString((fontSize-data[i].ascent)));
|
||||||
|
|
||||||
|
// ASCII vertical bar, use this as text input cursor
|
||||||
|
if (i == 124)
|
||||||
|
{
|
||||||
|
MyGUI::xml::ElementPtr cursorCode = codes->createChild("Code");
|
||||||
|
cursorCode->addAttribute("index", MyGUI::FontCodeType::Cursor);
|
||||||
|
cursorCode->addAttribute("coord", MyGUI::utility::toString(x1) + " "
|
||||||
|
+ MyGUI::utility::toString(y1) + " "
|
||||||
|
+ MyGUI::utility::toString(w) + " "
|
||||||
|
+ MyGUI::utility::toString(h));
|
||||||
|
cursorCode->addAttribute("advance", data[i].width);
|
||||||
|
cursorCode->addAttribute("bearing", MyGUI::utility::toString(data[i].kerning) + " "
|
||||||
|
+ MyGUI::utility::toString((fontSize-data[i].ascent)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// These are required as well, but the fonts don't provide them
|
||||||
|
for (int i=0; i<3; ++i)
|
||||||
|
{
|
||||||
|
MyGUI::FontCodeType::Enum type;
|
||||||
|
if(i == 0)
|
||||||
|
type = MyGUI::FontCodeType::Selected;
|
||||||
|
else if (i == 1)
|
||||||
|
type = MyGUI::FontCodeType::SelectedBack;
|
||||||
|
else if (i == 2)
|
||||||
|
type = MyGUI::FontCodeType::NotDefined;
|
||||||
|
|
||||||
|
MyGUI::xml::ElementPtr cursorCode = codes->createChild("Code");
|
||||||
|
cursorCode->addAttribute("index", type);
|
||||||
|
cursorCode->addAttribute("coord", "0 0 0 0");
|
||||||
|
cursorCode->addAttribute("advance", "0");
|
||||||
|
cursorCode->addAttribute("bearing", "0 0");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
font->deserialization(root, MyGUI::Version(3,2,0));
|
||||||
|
|
||||||
|
MyGUI::ResourceManager::getInstance().addResource(font);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
25
apps/openmw/mwgui/fontloader.hpp
Normal file
25
apps/openmw/mwgui/fontloader.hpp
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef MWGUI_FONTLOADER_H
|
||||||
|
#define MWGUI_FONTLOADER_H
|
||||||
|
|
||||||
|
#include <components/to_utf8/to_utf8.hpp>
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// @brief loads Morrowind's .fnt/.tex fonts for use with MyGUI and Ogre
|
||||||
|
class FontLoader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FontLoader (ToUTF8::FromType encoding);
|
||||||
|
void loadAllFonts ();
|
||||||
|
|
||||||
|
private:
|
||||||
|
ToUTF8::FromType mEncoding;
|
||||||
|
|
||||||
|
void loadFont (const std::string& fileName);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -202,14 +202,14 @@ namespace MWGui
|
||||||
|
|
||||||
float BookTextParser::widthForCharGlyph(unsigned unicodeChar) const
|
float BookTextParser::widthForCharGlyph(unsigned unicodeChar) const
|
||||||
{
|
{
|
||||||
std::string fontName(mTextStyle.mFont == "Default" ? "EB Garamond" : mTextStyle.mFont);
|
std::string fontName(mTextStyle.mFont == "Default" ? MyGUI::FontManager::getInstance().getDefaultFont() : mTextStyle.mFont);
|
||||||
return MyGUI::FontManager::getInstance().getByName(fontName)
|
return MyGUI::FontManager::getInstance().getByName(fontName)
|
||||||
->getGlyphInfo(unicodeChar)->width;
|
->getGlyphInfo(unicodeChar)->width;
|
||||||
}
|
}
|
||||||
|
|
||||||
float BookTextParser::currentFontHeight() const
|
float BookTextParser::currentFontHeight() const
|
||||||
{
|
{
|
||||||
std::string fontName(mTextStyle.mFont == "Default" ? "EB Garamond" : mTextStyle.mFont);
|
std::string fontName(mTextStyle.mFont == "Default" ? MyGUI::FontManager::getInstance().getDefaultFont() : mTextStyle.mFont);
|
||||||
return MyGUI::FontManager::getInstance().getByName(fontName)->getDefaultHeight();
|
return MyGUI::FontManager::getInstance().getByName(fontName)->getDefaultHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,14 +189,14 @@ book JournalBooks::createEmptyJournalBook ()
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = createTypesetter ();
|
BookTypesetter::Ptr typesetter = createTypesetter ();
|
||||||
|
|
||||||
BookTypesetter::Style* header = typesetter->createStyle ("EB Garamond", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
BookTypesetter::Style* header = typesetter->createStyle ("", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
||||||
BookTypesetter::Style* body = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* body = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
typesetter->write (header, to_utf8_span ("You have no journal entries!"));
|
typesetter->write (header, to_utf8_span ("You have no journal entries!"));
|
||||||
typesetter->lineBreak ();
|
typesetter->lineBreak ();
|
||||||
typesetter->write (body, to_utf8_span ("You should have gone though the starting quest and got an initial quest."));
|
typesetter->write (body, to_utf8_span ("You should have gone though the starting quest and got an initial quest."));
|
||||||
|
|
||||||
BookTypesetter::Style* big = typesetter->createStyle ("EB Garamond 24", MyGUI::Colour::Black);
|
BookTypesetter::Style* big = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
BookTypesetter::Style* test = typesetter->createStyle ("MonoFont", MyGUI::Colour::Blue);
|
BookTypesetter::Style* test = typesetter->createStyle ("MonoFont", MyGUI::Colour::Blue);
|
||||||
|
|
||||||
typesetter->sectionBreak (20);
|
typesetter->sectionBreak (20);
|
||||||
|
@ -231,8 +231,8 @@ book JournalBooks::createJournalBook ()
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = createTypesetter ();
|
BookTypesetter::Ptr typesetter = createTypesetter ();
|
||||||
|
|
||||||
BookTypesetter::Style* header = typesetter->createStyle ("EB Garamond", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
BookTypesetter::Style* header = typesetter->createStyle ("", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
||||||
BookTypesetter::Style* body = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* body = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
mModel->visitJournalEntries (0, AddJournalEntry (typesetter, body, header, true));
|
mModel->visitJournalEntries (0, AddJournalEntry (typesetter, body, header, true));
|
||||||
|
|
||||||
|
@ -243,8 +243,8 @@ book JournalBooks::createTopicBook (uintptr_t topicId)
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = createTypesetter ();
|
BookTypesetter::Ptr typesetter = createTypesetter ();
|
||||||
|
|
||||||
BookTypesetter::Style* header = typesetter->createStyle ("EB Garamond", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
BookTypesetter::Style* header = typesetter->createStyle ("", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
||||||
BookTypesetter::Style* body = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* body = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
mModel->visitTopicName (topicId, AddTopicName (typesetter, header));
|
mModel->visitTopicName (topicId, AddTopicName (typesetter, header));
|
||||||
|
|
||||||
|
@ -259,8 +259,8 @@ book JournalBooks::createQuestBook (uintptr_t questId)
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = createTypesetter ();
|
BookTypesetter::Ptr typesetter = createTypesetter ();
|
||||||
|
|
||||||
BookTypesetter::Style* header = typesetter->createStyle ("EB Garamond", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
BookTypesetter::Style* header = typesetter->createStyle ("", MyGUI::Colour (0.60f, 0.00f, 0.00f));
|
||||||
BookTypesetter::Style* body = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* body = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
mModel->visitQuestName (questId, AddQuestName (typesetter, header));
|
mModel->visitQuestName (questId, AddQuestName (typesetter, header));
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ book JournalBooks::createTopicIndexBook ()
|
||||||
|
|
||||||
typesetter->setSectionAlignment (BookTypesetter::AlignCenter);
|
typesetter->setSectionAlignment (BookTypesetter::AlignCenter);
|
||||||
|
|
||||||
BookTypesetter::Style* body = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* body = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
for (int i = 0; i < 26; ++i)
|
for (int i = 0; i < 26; ++i)
|
||||||
{
|
{
|
||||||
|
@ -300,7 +300,7 @@ book JournalBooks::createTopicIndexBook ()
|
||||||
book JournalBooks::createTopicIndexBook (char character)
|
book JournalBooks::createTopicIndexBook (char character)
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = BookTypesetter::create (0x7FFFFFFF, 0x7FFFFFFF);
|
BookTypesetter::Ptr typesetter = BookTypesetter::create (0x7FFFFFFF, 0x7FFFFFFF);
|
||||||
BookTypesetter::Style* style = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* style = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
mModel->visitTopicNamesStartingWith (character, AddTopicLink (typesetter, style));
|
mModel->visitTopicNamesStartingWith (character, AddTopicLink (typesetter, style));
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ book JournalBooks::createTopicIndexBook (char character)
|
||||||
book JournalBooks::createQuestIndexBook (bool activeOnly)
|
book JournalBooks::createQuestIndexBook (bool activeOnly)
|
||||||
{
|
{
|
||||||
BookTypesetter::Ptr typesetter = BookTypesetter::create (0x7FFFFFFF, 0x7FFFFFFF);
|
BookTypesetter::Ptr typesetter = BookTypesetter::create (0x7FFFFFFF, 0x7FFFFFFF);
|
||||||
BookTypesetter::Style* base = typesetter->createStyle ("EB Garamond", MyGUI::Colour::Black);
|
BookTypesetter::Style* base = typesetter->createStyle ("", MyGUI::Colour::Black);
|
||||||
|
|
||||||
mModel->visitQuestNames (activeOnly, AddQuestLink (typesetter, base));
|
mModel->visitQuestNames (activeOnly, AddQuestLink (typesetter, base));
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include "inventorywindow.hpp"
|
#include "inventorywindow.hpp"
|
||||||
#include "bookpage.hpp"
|
#include "bookpage.hpp"
|
||||||
#include "itemview.hpp"
|
#include "itemview.hpp"
|
||||||
|
#include "fontloader.hpp"
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
|
@ -49,7 +50,7 @@ namespace MWGui
|
||||||
WindowManager::WindowManager(
|
WindowManager::WindowManager(
|
||||||
const Compiler::Extensions& extensions, int fpsLevel, OEngine::Render::OgreRenderer *ogre,
|
const Compiler::Extensions& extensions, int fpsLevel, OEngine::Render::OgreRenderer *ogre,
|
||||||
const std::string& logpath, const std::string& cacheDir, bool consoleOnlyScripts,
|
const std::string& logpath, const std::string& cacheDir, bool consoleOnlyScripts,
|
||||||
Translation::Storage& translationDataStorage)
|
Translation::Storage& translationDataStorage, ToUTF8::FromType encoding)
|
||||||
: mGuiManager(NULL)
|
: mGuiManager(NULL)
|
||||||
, mRendering(ogre)
|
, mRendering(ogre)
|
||||||
, mHud(NULL)
|
, mHud(NULL)
|
||||||
|
@ -109,6 +110,10 @@ namespace MWGui
|
||||||
mGuiManager = new OEngine::GUI::MyGUIManager(mRendering->getWindow(), mRendering->getScene(), false, logpath);
|
mGuiManager = new OEngine::GUI::MyGUIManager(mRendering->getWindow(), mRendering->getScene(), false, logpath);
|
||||||
mGui = mGuiManager->getGui();
|
mGui = mGuiManager->getGui();
|
||||||
|
|
||||||
|
// Load fonts
|
||||||
|
FontLoader fontLoader (encoding);
|
||||||
|
fontLoader.loadAllFonts();
|
||||||
|
|
||||||
//Register own widgets with MyGUI
|
//Register own widgets with MyGUI
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWSkill>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWSkill>("Widget");
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWAttribute>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::MWAttribute>("Widget");
|
||||||
|
|
|
@ -83,7 +83,7 @@ namespace MWGui
|
||||||
WindowManager(const Compiler::Extensions& extensions, int fpsLevel,
|
WindowManager(const Compiler::Extensions& extensions, int fpsLevel,
|
||||||
OEngine::Render::OgreRenderer *mOgre, const std::string& logpath,
|
OEngine::Render::OgreRenderer *mOgre, const std::string& logpath,
|
||||||
const std::string& cacheDir, bool consoleOnlyScripts,
|
const std::string& cacheDir, bool consoleOnlyScripts,
|
||||||
Translation::Storage& translationDataStorage);
|
Translation::Storage& translationDataStorage, ToUTF8::FromType encoding);
|
||||||
virtual ~WindowManager();
|
virtual ~WindowManager();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -46,7 +46,7 @@ void writeMissing(bool last)
|
||||||
int write_table(const std::string &charset, const std::string &tableName)
|
int write_table(const std::string &charset, const std::string &tableName)
|
||||||
{
|
{
|
||||||
// Write table header
|
// Write table header
|
||||||
cout << "static char " << tableName << "[] =\n{\n";
|
cout << "static signed char " << tableName << "[] =\n{\n";
|
||||||
|
|
||||||
// Open conversion system
|
// Open conversion system
|
||||||
iconv_t cd = iconv_open ("UTF-8", charset.c_str());
|
iconv_t cd = iconv_open ("UTF-8", charset.c_str());
|
||||||
|
@ -106,6 +106,8 @@ int main()
|
||||||
"\n";
|
"\n";
|
||||||
write_table("WINDOWS-1252", "windows_1252");
|
write_table("WINDOWS-1252", "windows_1252");
|
||||||
|
|
||||||
|
write_table("CP437", "cp437");
|
||||||
|
|
||||||
// Close namespace
|
// Close namespace
|
||||||
cout << "\n}\n\n";
|
cout << "\n}\n\n";
|
||||||
|
|
||||||
|
|
|
@ -790,6 +790,265 @@ static signed char windows_1252[] =
|
||||||
2, -61, -66, 0, 0, 0,
|
2, -61, -66, 0, 0, 0,
|
||||||
2, -61, -65, 0, 0, 0
|
2, -61, -65, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
static signed char cp437[] =
|
||||||
|
{
|
||||||
|
1, 0, 0, 0, 0, 0,
|
||||||
|
1, 1, 0, 0, 0, 0,
|
||||||
|
1, 2, 0, 0, 0, 0,
|
||||||
|
1, 3, 0, 0, 0, 0,
|
||||||
|
1, 4, 0, 0, 0, 0,
|
||||||
|
1, 5, 0, 0, 0, 0,
|
||||||
|
1, 6, 0, 0, 0, 0,
|
||||||
|
1, 7, 0, 0, 0, 0,
|
||||||
|
1, 8, 0, 0, 0, 0,
|
||||||
|
1, 9, 0, 0, 0, 0,
|
||||||
|
1, 10, 0, 0, 0, 0,
|
||||||
|
1, 11, 0, 0, 0, 0,
|
||||||
|
1, 12, 0, 0, 0, 0,
|
||||||
|
1, 13, 0, 0, 0, 0,
|
||||||
|
1, 14, 0, 0, 0, 0,
|
||||||
|
1, 15, 0, 0, 0, 0,
|
||||||
|
1, 16, 0, 0, 0, 0,
|
||||||
|
1, 17, 0, 0, 0, 0,
|
||||||
|
1, 18, 0, 0, 0, 0,
|
||||||
|
1, 19, 0, 0, 0, 0,
|
||||||
|
1, 20, 0, 0, 0, 0,
|
||||||
|
1, 21, 0, 0, 0, 0,
|
||||||
|
1, 22, 0, 0, 0, 0,
|
||||||
|
1, 23, 0, 0, 0, 0,
|
||||||
|
1, 24, 0, 0, 0, 0,
|
||||||
|
1, 25, 0, 0, 0, 0,
|
||||||
|
1, 26, 0, 0, 0, 0,
|
||||||
|
1, 27, 0, 0, 0, 0,
|
||||||
|
1, 28, 0, 0, 0, 0,
|
||||||
|
1, 29, 0, 0, 0, 0,
|
||||||
|
1, 30, 0, 0, 0, 0,
|
||||||
|
1, 31, 0, 0, 0, 0,
|
||||||
|
1, 32, 0, 0, 0, 0,
|
||||||
|
1, 33, 0, 0, 0, 0,
|
||||||
|
1, 34, 0, 0, 0, 0,
|
||||||
|
1, 35, 0, 0, 0, 0,
|
||||||
|
1, 36, 0, 0, 0, 0,
|
||||||
|
1, 37, 0, 0, 0, 0,
|
||||||
|
1, 38, 0, 0, 0, 0,
|
||||||
|
1, 39, 0, 0, 0, 0,
|
||||||
|
1, 40, 0, 0, 0, 0,
|
||||||
|
1, 41, 0, 0, 0, 0,
|
||||||
|
1, 42, 0, 0, 0, 0,
|
||||||
|
1, 43, 0, 0, 0, 0,
|
||||||
|
1, 44, 0, 0, 0, 0,
|
||||||
|
1, 45, 0, 0, 0, 0,
|
||||||
|
1, 46, 0, 0, 0, 0,
|
||||||
|
1, 47, 0, 0, 0, 0,
|
||||||
|
1, 48, 0, 0, 0, 0,
|
||||||
|
1, 49, 0, 0, 0, 0,
|
||||||
|
1, 50, 0, 0, 0, 0,
|
||||||
|
1, 51, 0, 0, 0, 0,
|
||||||
|
1, 52, 0, 0, 0, 0,
|
||||||
|
1, 53, 0, 0, 0, 0,
|
||||||
|
1, 54, 0, 0, 0, 0,
|
||||||
|
1, 55, 0, 0, 0, 0,
|
||||||
|
1, 56, 0, 0, 0, 0,
|
||||||
|
1, 57, 0, 0, 0, 0,
|
||||||
|
1, 58, 0, 0, 0, 0,
|
||||||
|
1, 59, 0, 0, 0, 0,
|
||||||
|
1, 60, 0, 0, 0, 0,
|
||||||
|
1, 61, 0, 0, 0, 0,
|
||||||
|
1, 62, 0, 0, 0, 0,
|
||||||
|
1, 63, 0, 0, 0, 0,
|
||||||
|
1, 64, 0, 0, 0, 0,
|
||||||
|
1, 65, 0, 0, 0, 0,
|
||||||
|
1, 66, 0, 0, 0, 0,
|
||||||
|
1, 67, 0, 0, 0, 0,
|
||||||
|
1, 68, 0, 0, 0, 0,
|
||||||
|
1, 69, 0, 0, 0, 0,
|
||||||
|
1, 70, 0, 0, 0, 0,
|
||||||
|
1, 71, 0, 0, 0, 0,
|
||||||
|
1, 72, 0, 0, 0, 0,
|
||||||
|
1, 73, 0, 0, 0, 0,
|
||||||
|
1, 74, 0, 0, 0, 0,
|
||||||
|
1, 75, 0, 0, 0, 0,
|
||||||
|
1, 76, 0, 0, 0, 0,
|
||||||
|
1, 77, 0, 0, 0, 0,
|
||||||
|
1, 78, 0, 0, 0, 0,
|
||||||
|
1, 79, 0, 0, 0, 0,
|
||||||
|
1, 80, 0, 0, 0, 0,
|
||||||
|
1, 81, 0, 0, 0, 0,
|
||||||
|
1, 82, 0, 0, 0, 0,
|
||||||
|
1, 83, 0, 0, 0, 0,
|
||||||
|
1, 84, 0, 0, 0, 0,
|
||||||
|
1, 85, 0, 0, 0, 0,
|
||||||
|
1, 86, 0, 0, 0, 0,
|
||||||
|
1, 87, 0, 0, 0, 0,
|
||||||
|
1, 88, 0, 0, 0, 0,
|
||||||
|
1, 89, 0, 0, 0, 0,
|
||||||
|
1, 90, 0, 0, 0, 0,
|
||||||
|
1, 91, 0, 0, 0, 0,
|
||||||
|
1, 92, 0, 0, 0, 0,
|
||||||
|
1, 93, 0, 0, 0, 0,
|
||||||
|
1, 94, 0, 0, 0, 0,
|
||||||
|
1, 95, 0, 0, 0, 0,
|
||||||
|
1, 96, 0, 0, 0, 0,
|
||||||
|
1, 97, 0, 0, 0, 0,
|
||||||
|
1, 98, 0, 0, 0, 0,
|
||||||
|
1, 99, 0, 0, 0, 0,
|
||||||
|
1, 100, 0, 0, 0, 0,
|
||||||
|
1, 101, 0, 0, 0, 0,
|
||||||
|
1, 102, 0, 0, 0, 0,
|
||||||
|
1, 103, 0, 0, 0, 0,
|
||||||
|
1, 104, 0, 0, 0, 0,
|
||||||
|
1, 105, 0, 0, 0, 0,
|
||||||
|
1, 106, 0, 0, 0, 0,
|
||||||
|
1, 107, 0, 0, 0, 0,
|
||||||
|
1, 108, 0, 0, 0, 0,
|
||||||
|
1, 109, 0, 0, 0, 0,
|
||||||
|
1, 110, 0, 0, 0, 0,
|
||||||
|
1, 111, 0, 0, 0, 0,
|
||||||
|
1, 112, 0, 0, 0, 0,
|
||||||
|
1, 113, 0, 0, 0, 0,
|
||||||
|
1, 114, 0, 0, 0, 0,
|
||||||
|
1, 115, 0, 0, 0, 0,
|
||||||
|
1, 116, 0, 0, 0, 0,
|
||||||
|
1, 117, 0, 0, 0, 0,
|
||||||
|
1, 118, 0, 0, 0, 0,
|
||||||
|
1, 119, 0, 0, 0, 0,
|
||||||
|
1, 120, 0, 0, 0, 0,
|
||||||
|
1, 121, 0, 0, 0, 0,
|
||||||
|
1, 122, 0, 0, 0, 0,
|
||||||
|
1, 123, 0, 0, 0, 0,
|
||||||
|
1, 124, 0, 0, 0, 0,
|
||||||
|
1, 125, 0, 0, 0, 0,
|
||||||
|
1, 126, 0, 0, 0, 0,
|
||||||
|
1, 127, 0, 0, 0, 0,
|
||||||
|
2, -61, -121, 0, 0, 0,
|
||||||
|
2, -61, -68, 0, 0, 0,
|
||||||
|
2, -61, -87, 0, 0, 0,
|
||||||
|
2, -61, -94, 0, 0, 0,
|
||||||
|
2, -61, -92, 0, 0, 0,
|
||||||
|
2, -61, -96, 0, 0, 0,
|
||||||
|
2, -61, -91, 0, 0, 0,
|
||||||
|
2, -61, -89, 0, 0, 0,
|
||||||
|
2, -61, -86, 0, 0, 0,
|
||||||
|
2, -61, -85, 0, 0, 0,
|
||||||
|
2, -61, -88, 0, 0, 0,
|
||||||
|
2, -61, -81, 0, 0, 0,
|
||||||
|
2, -61, -82, 0, 0, 0,
|
||||||
|
2, -61, -84, 0, 0, 0,
|
||||||
|
2, -61, -124, 0, 0, 0,
|
||||||
|
2, -61, -123, 0, 0, 0,
|
||||||
|
2, -61, -119, 0, 0, 0,
|
||||||
|
2, -61, -90, 0, 0, 0,
|
||||||
|
2, -61, -122, 0, 0, 0,
|
||||||
|
2, -61, -76, 0, 0, 0,
|
||||||
|
2, -61, -74, 0, 0, 0,
|
||||||
|
2, -61, -78, 0, 0, 0,
|
||||||
|
2, -61, -69, 0, 0, 0,
|
||||||
|
2, -61, -71, 0, 0, 0,
|
||||||
|
2, -61, -65, 0, 0, 0,
|
||||||
|
2, -61, -106, 0, 0, 0,
|
||||||
|
2, -61, -100, 0, 0, 0,
|
||||||
|
2, -62, -94, 0, 0, 0,
|
||||||
|
2, -62, -93, 0, 0, 0,
|
||||||
|
2, -62, -91, 0, 0, 0,
|
||||||
|
3, -30, -126, -89, 0, 0,
|
||||||
|
2, -58, -110, 0, 0, 0,
|
||||||
|
2, -61, -95, 0, 0, 0,
|
||||||
|
2, -61, -83, 0, 0, 0,
|
||||||
|
2, -61, -77, 0, 0, 0,
|
||||||
|
2, -61, -70, 0, 0, 0,
|
||||||
|
2, -61, -79, 0, 0, 0,
|
||||||
|
2, -61, -111, 0, 0, 0,
|
||||||
|
2, -62, -86, 0, 0, 0,
|
||||||
|
2, -62, -70, 0, 0, 0,
|
||||||
|
2, -62, -65, 0, 0, 0,
|
||||||
|
3, -30, -116, -112, 0, 0,
|
||||||
|
2, -62, -84, 0, 0, 0,
|
||||||
|
2, -62, -67, 0, 0, 0,
|
||||||
|
2, -62, -68, 0, 0, 0,
|
||||||
|
2, -62, -95, 0, 0, 0,
|
||||||
|
2, -62, -85, 0, 0, 0,
|
||||||
|
2, -62, -69, 0, 0, 0,
|
||||||
|
3, -30, -106, -111, 0, 0,
|
||||||
|
3, -30, -106, -110, 0, 0,
|
||||||
|
3, -30, -106, -109, 0, 0,
|
||||||
|
3, -30, -108, -126, 0, 0,
|
||||||
|
3, -30, -108, -92, 0, 0,
|
||||||
|
3, -30, -107, -95, 0, 0,
|
||||||
|
3, -30, -107, -94, 0, 0,
|
||||||
|
3, -30, -107, -106, 0, 0,
|
||||||
|
3, -30, -107, -107, 0, 0,
|
||||||
|
3, -30, -107, -93, 0, 0,
|
||||||
|
3, -30, -107, -111, 0, 0,
|
||||||
|
3, -30, -107, -105, 0, 0,
|
||||||
|
3, -30, -107, -99, 0, 0,
|
||||||
|
3, -30, -107, -100, 0, 0,
|
||||||
|
3, -30, -107, -101, 0, 0,
|
||||||
|
3, -30, -108, -112, 0, 0,
|
||||||
|
3, -30, -108, -108, 0, 0,
|
||||||
|
3, -30, -108, -76, 0, 0,
|
||||||
|
3, -30, -108, -84, 0, 0,
|
||||||
|
3, -30, -108, -100, 0, 0,
|
||||||
|
3, -30, -108, -128, 0, 0,
|
||||||
|
3, -30, -108, -68, 0, 0,
|
||||||
|
3, -30, -107, -98, 0, 0,
|
||||||
|
3, -30, -107, -97, 0, 0,
|
||||||
|
3, -30, -107, -102, 0, 0,
|
||||||
|
3, -30, -107, -108, 0, 0,
|
||||||
|
3, -30, -107, -87, 0, 0,
|
||||||
|
3, -30, -107, -90, 0, 0,
|
||||||
|
3, -30, -107, -96, 0, 0,
|
||||||
|
3, -30, -107, -112, 0, 0,
|
||||||
|
3, -30, -107, -84, 0, 0,
|
||||||
|
3, -30, -107, -89, 0, 0,
|
||||||
|
3, -30, -107, -88, 0, 0,
|
||||||
|
3, -30, -107, -92, 0, 0,
|
||||||
|
3, -30, -107, -91, 0, 0,
|
||||||
|
3, -30, -107, -103, 0, 0,
|
||||||
|
3, -30, -107, -104, 0, 0,
|
||||||
|
3, -30, -107, -110, 0, 0,
|
||||||
|
3, -30, -107, -109, 0, 0,
|
||||||
|
3, -30, -107, -85, 0, 0,
|
||||||
|
3, -30, -107, -86, 0, 0,
|
||||||
|
3, -30, -108, -104, 0, 0,
|
||||||
|
3, -30, -108, -116, 0, 0,
|
||||||
|
3, -30, -106, -120, 0, 0,
|
||||||
|
3, -30, -106, -124, 0, 0,
|
||||||
|
3, -30, -106, -116, 0, 0,
|
||||||
|
3, -30, -106, -112, 0, 0,
|
||||||
|
3, -30, -106, -128, 0, 0,
|
||||||
|
2, -50, -79, 0, 0, 0,
|
||||||
|
2, -61, -97, 0, 0, 0,
|
||||||
|
2, -50, -109, 0, 0, 0,
|
||||||
|
2, -49, -128, 0, 0, 0,
|
||||||
|
2, -50, -93, 0, 0, 0,
|
||||||
|
2, -49, -125, 0, 0, 0,
|
||||||
|
2, -62, -75, 0, 0, 0,
|
||||||
|
2, -49, -124, 0, 0, 0,
|
||||||
|
2, -50, -90, 0, 0, 0,
|
||||||
|
2, -50, -104, 0, 0, 0,
|
||||||
|
2, -50, -87, 0, 0, 0,
|
||||||
|
2, -50, -76, 0, 0, 0,
|
||||||
|
3, -30, -120, -98, 0, 0,
|
||||||
|
2, -49, -122, 0, 0, 0,
|
||||||
|
2, -50, -75, 0, 0, 0,
|
||||||
|
3, -30, -120, -87, 0, 0,
|
||||||
|
3, -30, -119, -95, 0, 0,
|
||||||
|
2, -62, -79, 0, 0, 0,
|
||||||
|
3, -30, -119, -91, 0, 0,
|
||||||
|
3, -30, -119, -92, 0, 0,
|
||||||
|
3, -30, -116, -96, 0, 0,
|
||||||
|
3, -30, -116, -95, 0, 0,
|
||||||
|
2, -61, -73, 0, 0, 0,
|
||||||
|
3, -30, -119, -120, 0, 0,
|
||||||
|
2, -62, -80, 0, 0, 0,
|
||||||
|
3, -30, -120, -103, 0, 0,
|
||||||
|
2, -62, -73, 0, 0, 0,
|
||||||
|
3, -30, -120, -102, 0, 0,
|
||||||
|
3, -30, -127, -65, 0, 0,
|
||||||
|
2, -62, -78, 0, 0, 0,
|
||||||
|
3, -30, -106, -96, 0, 0,
|
||||||
|
2, -62, -96, 0, 0, 0
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,12 @@ Utf8Encoder::Utf8Encoder(const FromType sourceEncoding):
|
||||||
translationArray = ToUTF8::windows_1251;
|
translationArray = ToUTF8::windows_1251;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ToUTF8::CP437:
|
||||||
|
{
|
||||||
|
translationArray = ToUTF8::cp437;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
|
@ -12,8 +12,9 @@ namespace ToUTF8
|
||||||
{
|
{
|
||||||
WINDOWS_1250, // Central ane Eastern European languages
|
WINDOWS_1250, // Central ane Eastern European languages
|
||||||
WINDOWS_1251, // Cyrillic languages
|
WINDOWS_1251, // Cyrillic languages
|
||||||
WINDOWS_1252 // Used by English version of Morrowind (and
|
WINDOWS_1252, // Used by English version of Morrowind (and
|
||||||
// probably others)
|
// probably others)
|
||||||
|
CP437 // Used for fonts (*.fnt) if data files encoding is 1252. Otherwise, uses the same encoding as the data files.
|
||||||
};
|
};
|
||||||
|
|
||||||
FromType calculateEncoding(const std::string& encodingName);
|
FromType calculateEncoding(const std::string& encodingName);
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
<MyGUI type="Skin">
|
<MyGUI type="Skin">
|
||||||
<Skin name = "TextBox" size = "16 16">
|
<Skin name = "TextBox" size = "16 16">
|
||||||
<Property key="FontName" value = "EB Garamond" />
|
|
||||||
<Property key="FontHeight" value = "16" />
|
<Property key="FontHeight" value = "16" />
|
||||||
<Property key="TextAlign" value = "ALIGN_DEFAULT" />
|
<Property key="TextAlign" value = "ALIGN_DEFAULT" />
|
||||||
<Property key="TextColour" value = "0.7 0.7 0.7" />
|
<Property key="TextColour" value = "0.7 0.7 0.7" />
|
||||||
|
|
|
@ -23,56 +23,21 @@
|
||||||
</Codes>
|
</Codes>
|
||||||
</Resource>
|
</Resource>
|
||||||
|
|
||||||
<Resource type="ResourceTrueTypeFont" name="EB Garamond 24">
|
<Resource type="ResourceTrueTypeFont" name="MonoFont">
|
||||||
<Property key="Source" value="EBGaramond-Regular.ttf"/>
|
<Property key="Source" value="DejaVuLGCSansMono.ttf"/>
|
||||||
<Property key="Size" value="24"/>
|
<Property key="Size" value="18"/>
|
||||||
<Property key="Resolution" value="72"/>
|
<Property key="Resolution" value="50"/>
|
||||||
<Property key="Antialias" value="false"/>
|
<Property key="Antialias" value="false"/>
|
||||||
<Property key="TabWidth" value="8"/>
|
<Property key="TabWidth" value="8"/>
|
||||||
<Property key="OffsetHeight" value="0"/>
|
<Property key="OffsetHeight" value="0"/>
|
||||||
<Codes>
|
<Codes>
|
||||||
<Code range="33 126"/>
|
<Code range="33 126"/>
|
||||||
<Code range="160"/> <!-- Non-breaking space -->
|
<Code range="192 382"/>
|
||||||
<Code range="192 382"/> <!-- Central and Eastern European languages glyphs -->
|
|
||||||
<Code range="1025 1105"/>
|
<Code range="1025 1105"/>
|
||||||
<Code range="2026"/> <!-- Ellipsis -->
|
|
||||||
<Code range="8470"/>
|
<Code range="8470"/>
|
||||||
<Code range="8211"/> <!-- Minus -->
|
|
||||||
<Code range="8216 8217"/> <!-- Single quotes -->
|
|
||||||
<Code range="8220 8221"/> <!-- Right and Left Double Quotation mark -->
|
|
||||||
<Code hide="128"/>
|
<Code hide="128"/>
|
||||||
<Code hide="1026 1039"/>
|
<Code hide="1026 1039"/>
|
||||||
<Code hide="1104"/>
|
<Code hide="1104"/>
|
||||||
</Codes>
|
</Codes>
|
||||||
</Resource>
|
</Resource>
|
||||||
<Resource type="ResourceTrueTypeFont" name="Daedric">
|
|
||||||
<!--<Property key="Source" value="Oblivion/Oblivion Worn.ttf"/>-->
|
|
||||||
<Property key="Source" value="Oblivion/Oblivion.ttf"/>
|
|
||||||
<Property key="Size" value="24"/>
|
|
||||||
<Property key="Resolution" value="72"/>
|
|
||||||
<Property key="Antialias" value="false"/>
|
|
||||||
<Property key="TabWidth" value="8"/>
|
|
||||||
<Property key="OffsetHeight" value="0"/>
|
|
||||||
<Codes>
|
|
||||||
<Code range="65 122"/>
|
|
||||||
</Codes>
|
|
||||||
</Resource>
|
|
||||||
|
|
||||||
<Resource type="ResourceTrueTypeFont" name="MonoFont">
|
|
||||||
<Property key="Source" value="DejaVuLGCSansMono.ttf"/>
|
|
||||||
<Property key="Size" value="18"/>
|
|
||||||
<Property key="Resolution" value="50"/>
|
|
||||||
<Property key="Antialias" value="false"/>
|
|
||||||
<Property key="TabWidth" value="8"/>
|
|
||||||
<Property key="OffsetHeight" value="0"/>
|
|
||||||
<Codes>
|
|
||||||
<Code range="33 126"/>
|
|
||||||
<Code range="192 382"/>
|
|
||||||
<Code range="1025 1105"/>
|
|
||||||
<Code range="8470"/>
|
|
||||||
<Code hide="128"/>
|
|
||||||
<Code hide="1026 1039"/>
|
|
||||||
<Code hide="1104"/>
|
|
||||||
</Codes>
|
|
||||||
</Resource>
|
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MyGUI>
|
<MyGUI>
|
||||||
<MyGUI type="Font">
|
<MyGUI type="Font">
|
||||||
<Property key="Default" value="EB Garamond"/>
|
<Property key="Default" value="Magic Cards"/>
|
||||||
|
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
<MyGUI type="Pointer">
|
<MyGUI type="Pointer">
|
||||||
|
|
Loading…
Reference in a new issue