aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkUtils.cpp
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2008-12-17 16:22:13 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2008-12-17 16:22:13 +0000
commite3be725d2b67982a8751f6f7311b6bb2e50c8028 (patch)
tree1dccd2f1c5826c447b2585ad0b1d38b27174869a /src/core/SkUtils.cpp
parent8a1c16ff38322f0210116fa7293eb8817c7e477e (diff)
merge in from android: fix unichar->utf8 conversion
git-svn-id: http://skia.googlecode.com/svn/trunk@28 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkUtils.cpp')
-rw-r--r--src/core/SkUtils.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/SkUtils.cpp b/src/core/SkUtils.cpp
index 4f5ba6eaf8..20f7ddc759 100644
--- a/src/core/SkUtils.cpp
+++ b/src/core/SkUtils.cpp
@@ -268,7 +268,7 @@ size_t SkUTF8_FromUnichar(SkUnichar uni, char utf8[])
SkDEBUGCODE(SkUnichar orig = uni;)
- while (uni > 0x3F)
+ while (uni > 0x7F >> count)
{
*p++ = (char)(0x80 | (uni & 0x3F));
uni >>= 6;
@@ -545,8 +545,15 @@ void SkUtils::UnitTest()
SkUnichar fUni;
} gTest[] = {
{ "a", 'a' },
+ { "\x7f", 0x7f },
+ { "\xC2\x80", 0x80 },
{ "\xC3\x83", (3 << 6) | 3 },
+ { "\xDF\xBF", 0x7ff },
+ { "\xE0\xA0\x80", 0x800 },
+ { "\xE0\xB0\xB8", 0xC38 },
{ "\xE3\x83\x83", (3 << 12) | (3 << 6) | 3 },
+ { "\xEF\xBF\xBF", 0xFFFF },
+ { "\xF0\x90\x80\x80", 0x10000 },
{ "\xF3\x83\x83\x83", (3 << 18) | (3 << 12) | (3 << 6) | 3 }
};