osgText::String:createUTF8EncodedString() now supports 4-byte UTF-8 strings (code points over 0x100000).
This commit is contained in:
parent
3ea101df66
commit
a4b6d8afb5
@ -312,12 +312,19 @@ std::string String::createUTF8EncodedString() const
|
|||||||
utf8string+=(char)(0xc0 | (currentChar>>6));
|
utf8string+=(char)(0xc0 | (currentChar>>6));
|
||||||
utf8string+=(char)(0x80 | (currentChar & 0x3f));
|
utf8string+=(char)(0x80 | (currentChar & 0x3f));
|
||||||
}
|
}
|
||||||
else
|
else if (currentChar < 0x10000)
|
||||||
{
|
{
|
||||||
utf8string+=(char)(0xe0 | (currentChar>>12));
|
utf8string+=(char)(0xe0 | (currentChar>>12));
|
||||||
utf8string+=(char)(0x80 | ((currentChar>>6) & 0x3f));
|
utf8string+=(char)(0x80 | ((currentChar>>6) & 0x3f));
|
||||||
utf8string+=(char)(0x80 | (currentChar & 0x3f));
|
utf8string+=(char)(0x80 | (currentChar & 0x3f));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
utf8string+=(char)(0xf0 | (currentChar >> 18));
|
||||||
|
utf8string+=(char)(0x80 | ((currentChar >> 12) & 0x3f));
|
||||||
|
utf8string+=(char)(0x80 | ((currentChar >> 6) & 0x3f));
|
||||||
|
utf8string+=(char)(0x80 | (currentChar & 0x3f));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return utf8string;
|
return utf8string;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user