X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/db7917f04df76583bb8949283b45e2c4f5c9d48b..5e0d91a196bfe872d04d676e5f6c2d5940786be0:/lib/gdi/font.cpp diff --git a/lib/gdi/font.cpp b/lib/gdi/font.cpp index 2ff5fbf7..3948ea98 100644 --- a/lib/gdi/font.cpp +++ b/lib/gdi/font.cpp @@ -235,6 +235,13 @@ int fontRenderClass::getFont(ePtr &font, const std::string &face, int size return 0; } +void addFont(const char *filename, const char *alias, int scale_factor, int is_replacement) +{ + fontRenderClass::getInstance()->AddFont(filename, alias, scale_factor); + if (is_replacement) + eTextPara::setReplacementFont(alias); +} + DEFINE_REF(Font); Font::Font(fontRenderClass *render, FTC_FaceID faceid, int isize, int tw): tabwidth(tw) @@ -443,7 +450,7 @@ void eTextPara::setFont(Font *fnt, Font *replacement) void shape (std::vector &string, const std::vector &text); -int eTextPara::renderString(const std::string &string, int rflags) +int eTextPara::renderString(const char *string, int rflags) { singleLock s(ftlock); @@ -467,11 +474,12 @@ int eTextPara::renderString(const std::string &string, int rflags) } std::vector uc_string, uc_visual; - uc_string.reserve(string.length()); + if (string) + uc_string.reserve(strlen(string)); - std::string::const_iterator p(string.begin()); + const char *p = string ? string : ""; - while(p != string.end()) + while (*p) { unsigned int unicode=(unsigned char)*p++; @@ -481,28 +489,28 @@ int eTextPara::renderString(const std::string &string, int rflags) { unicode&=0x1F; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; } else if ((unicode & 0xF0)==0xE0) // three bytes { unicode&=0x0F; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; } else if ((unicode & 0xF8)==0xF0) // four bytes { unicode&=0x07; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; unicode<<=6; - if (p != string.end()) + if (*p) unicode|=(*p++)&0x3F; } }