diff options
author | Junichi Monma <monma@google.com> | 2012-10-22 12:00:53 +0900 |
---|---|---|
committer | Junichi Monma <monma@google.com> | 2012-10-29 11:20:48 +0900 |
commit | 398703a12520dd1a7c2bdbd99d56fe024f761717 (patch) | |
tree | c28273cad9d36b023f3b5c4b100de38740fefda4 | |
parent | 923f222d2281bf1faac6221b3fb1298940a6d205 (diff) | |
download | external_webkit-398703a12520dd1a7c2bdbd99d56fe024f761717.zip external_webkit-398703a12520dd1a7c2bdbd99d56fe024f761717.tar.gz external_webkit-398703a12520dd1a7c2bdbd99d56fe024f761717.tar.bz2 |
Vertically writing characetrs even if the carrier emoji is available on the device.
Bug id: b/7354733
Change-Id: I2688cb856664bd57bcef508644039c8a13ee96e1
-rw-r--r-- | Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp b/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp index 03d2fb2..ebdf6c9 100644 --- a/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/fonts/FontAndroid.cpp @@ -228,11 +228,20 @@ void Font::drawGlyphs(GraphicsContext* gc, const SimpleFontData* font, // set filtering, to make scaled images look nice(r) paint.setFilterBitmap(true); + SkMatrix rotator; + rotator.reset(); + if (font->platformData().orientation() == Vertical) { + canvas->save(); + canvas->rotate(-90); + rotator.setRotate(90); + } + int localIndex = 0; int localCount = 0; for (int i = 0; i < numGlyphs; i++) { if (EmojiFont::IsEmojiGlyph(glyphs[i])) { if (localCount) { + rotator.mapPoints(&pos[localIndex], localCount); canvas->drawPosText(&glyphs[localIndex], localCount * sizeof(uint16_t), &pos[localIndex], paint); @@ -248,12 +257,18 @@ void Font::drawGlyphs(GraphicsContext* gc, const SimpleFontData* font, x += SkFloatToScalar(adv[i].width()); y += SkFloatToScalar(adv[i].height()); } + // draw the last run of glyphs (if any) if (localCount) { + rotator.mapPoints(&pos[localIndex], localCount); canvas->drawPosText(&glyphs[localIndex], localCount * sizeof(uint16_t), &pos[localIndex], paint); + } + + if (font->platformData().orientation() == Vertical) + canvas->restore(); } else { for (int i = 0; i < numGlyphs; i++) { pos[i].set(x, y); |