From 398703a12520dd1a7c2bdbd99d56fe024f761717 Mon Sep 17 00:00:00 2001 From: Junichi Monma Date: Mon, 22 Oct 2012 12:00:53 +0900 Subject: Vertically writing characetrs even if the carrier emoji is available on the device. Bug id: b/7354733 Change-Id: I2688cb856664bd57bcef508644039c8a13ee96e1 --- .../platform/graphics/android/fonts/FontAndroid.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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); -- cgit v1.1