add bad char support
This commit is contained in:
@@ -415,6 +415,8 @@ Font* FontManager::LoadFont( const CString &sFontOrTextureFilePath, CString sCha
|
|||||||
CharAliases["menuright"] = 0x100007;
|
CharAliases["menuright"] = 0x100007;
|
||||||
CharAliases["start"] = 0x100008;
|
CharAliases["start"] = 0x100008;
|
||||||
|
|
||||||
|
CharAliases["invalid"] = INVALID_CHAR; /* 0xFFFFFF */
|
||||||
|
|
||||||
for(aliasmap::const_iterator i = CharAliases.begin(); i != CharAliases.end(); ++i)
|
for(aliasmap::const_iterator i = CharAliases.begin(); i != CharAliases.end(); ++i)
|
||||||
{
|
{
|
||||||
CString from = ssprintf("&%s;", i->first.GetString());
|
CString from = ssprintf("&%s;", i->first.GetString());
|
||||||
|
|||||||
@@ -903,6 +903,8 @@ longchar utf8_get_char (const char *p)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const longchar INVALID_CHAR = 0xFFFFFF;
|
||||||
|
|
||||||
lstring CStringToLstring(const CString &str)
|
lstring CStringToLstring(const CString &str)
|
||||||
{
|
{
|
||||||
const char *ptr = str.c_str(), *end = str.c_str()+str.size();
|
const char *ptr = str.c_str(), *end = str.c_str()+str.size();
|
||||||
@@ -912,6 +914,9 @@ lstring CStringToLstring(const CString &str)
|
|||||||
while(ptr && ptr != end)
|
while(ptr && ptr != end)
|
||||||
{
|
{
|
||||||
longchar c = utf8_get_char (ptr);
|
longchar c = utf8_get_char (ptr);
|
||||||
|
if(c == -1)
|
||||||
|
ret.push_back(INVALID_CHAR);
|
||||||
|
else
|
||||||
ret.push_back(c);
|
ret.push_back(c);
|
||||||
ptr = utf8_find_next_char (ptr, end);
|
ptr = utf8_find_next_char (ptr, end);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ void splitrelpath(
|
|||||||
* be 16-bit. This is mostly used within the font and text system. */
|
* be 16-bit. This is mostly used within the font and text system. */
|
||||||
typedef int longchar;
|
typedef int longchar;
|
||||||
typedef basic_string<longchar> lstring;
|
typedef basic_string<longchar> lstring;
|
||||||
|
extern const longchar INVALID_CHAR;
|
||||||
|
|
||||||
lstring CStringToLstring(const CString &str);
|
lstring CStringToLstring(const CString &str);
|
||||||
CString LcharToUTF8( longchar c );
|
CString LcharToUTF8( longchar c );
|
||||||
|
|||||||
Reference in New Issue
Block a user