summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunichi Monma <monma@google.com>2012-10-22 12:00:53 +0900
committerJunichi Monma <monma@google.com>2012-10-29 11:20:48 +0900
commit398703a12520dd1a7c2bdbd99d56fe024f761717 (patch)
treec28273cad9d36b023f3b5c4b100de38740fefda4
parent923f222d2281bf1faac6221b3fb1298940a6d205 (diff)
downloadexternal_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.cpp15
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);