Title: [124654] trunk
Revision
124654
Author
[email protected]
Date
2012-08-03 14:30:06 -0700 (Fri, 03 Aug 2012)

Log Message

Source/WebCore: <rdar://problem/12005188> REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
https://bugs.webkit.org/show_bug.cgi?id=92864

Reviewed by Sam Weinig.

Test: platform/mac/fast/text/combining-character-sequence-vertical.html

* platform/graphics/SimpleFontData.cpp:
(WebCore::SimpleFontData::glyphForCharacter): Added this helper function.
* platform/graphics/SimpleFontData.h:
(SimpleFontData): Declared glyphDataForCharacter.
* platform/graphics/mac/FontComplexTextMac.cpp:
(WebCore::Font::fontDataForCombiningCharacterSequence): Added logic to use the appropriate
variant of each font in the fallback list, which mimcs the equivalent logic in
glyphDataAndPageForCharacter().

LayoutTests: REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
https://bugs.webkit.org/show_bug.cgi?id=92864

Reviewed by Sam Weinig.

* platform/mac/fast/text/combining-character-sequence-vertical-expected.html: Added.
* platform/mac/fast/text/combining-character-sequence-vertical.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (124653 => 124654)


--- trunk/LayoutTests/ChangeLog	2012-08-03 21:19:36 UTC (rev 124653)
+++ trunk/LayoutTests/ChangeLog	2012-08-03 21:30:06 UTC (rev 124654)
@@ -1,3 +1,13 @@
+2012-08-03  Dan Bernstein  <[email protected]>
+
+        REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
+        https://bugs.webkit.org/show_bug.cgi?id=92864
+
+        Reviewed by Sam Weinig.
+
+        * platform/mac/fast/text/combining-character-sequence-vertical-expected.html: Added.
+        * platform/mac/fast/text/combining-character-sequence-vertical.html: Added.
+
 2012-08-03  Dmitry Titov  <[email protected]>
 
         Added 'crash' expectation to a flaky test fast/multicol/column-span-parent-continuation-crash.html

Added: trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical-expected.html (0 => 124654)


--- trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical-expected.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical-expected.html	2012-08-03 21:30:06 UTC (rev 124654)
@@ -0,0 +1,3 @@
+<div style="width: 500px; font-family: 'geeza pro'; font-size: 48px; -webkit-transform: translatex(100px) rotate(90deg); -webkit-transform-origin: top left;">
+    &#x0628;&#x062d;&#x0653;
+</div>

Added: trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical.html (0 => 124654)


--- trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/text/combining-character-sequence-vertical.html	2012-08-03 21:30:06 UTC (rev 124654)
@@ -0,0 +1,3 @@
+<div style="width: 100px; font-family: 'geeza pro'; font-size: 48px; -webkit-writing-mode: vertical-rl;">
+    &#x0628;&#x062d;&#x0653;
+</div>

Modified: trunk/Source/WebCore/ChangeLog (124653 => 124654)


--- trunk/Source/WebCore/ChangeLog	2012-08-03 21:19:36 UTC (rev 124653)
+++ trunk/Source/WebCore/ChangeLog	2012-08-03 21:30:06 UTC (rev 124654)
@@ -1,3 +1,21 @@
+2012-08-03  Dan Bernstein  <[email protected]>
+
+        <rdar://problem/12005188> REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
+        https://bugs.webkit.org/show_bug.cgi?id=92864
+
+        Reviewed by Sam Weinig.
+
+        Test: platform/mac/fast/text/combining-character-sequence-vertical.html
+
+        * platform/graphics/SimpleFontData.cpp:
+        (WebCore::SimpleFontData::glyphForCharacter): Added this helper function.
+        * platform/graphics/SimpleFontData.h:
+        (SimpleFontData): Declared glyphDataForCharacter.
+        * platform/graphics/mac/FontComplexTextMac.cpp:
+        (WebCore::Font::fontDataForCombiningCharacterSequence): Added logic to use the appropriate
+        variant of each font in the fallback list, which mimcs the equivalent logic in
+        glyphDataAndPageForCharacter().
+
 2012-08-03  Kenneth Russell  <[email protected]>
 
         [Chromium] Web Inspector: Win Dbg tests timing out (r123556 or r123560?)

Modified: trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp (124653 => 124654)


--- trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp	2012-08-03 21:19:36 UTC (rev 124653)
+++ trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp	2012-08-03 21:30:06 UTC (rev 124654)
@@ -148,6 +148,12 @@
     return this;
 }
 
+Glyph SimpleFontData::glyphForCharacter(UChar32 character) const
+{
+    GlyphPageTreeNode* node = GlyphPageTreeNode::getRootChild(this, character / GlyphPage::size);
+    return node->page() ? node->page()->glyphAt(character % GlyphPage::size) : 0;
+}
+
 bool SimpleFontData::isSegmented() const
 {
     return false;

Modified: trunk/Source/WebCore/platform/graphics/SimpleFontData.h (124653 => 124654)


--- trunk/Source/WebCore/platform/graphics/SimpleFontData.h	2012-08-03 21:19:36 UTC (rev 124653)
+++ trunk/Source/WebCore/platform/graphics/SimpleFontData.h	2012-08-03 21:30:06 UTC (rev 124654)
@@ -153,6 +153,8 @@
     virtual const SimpleFontData* fontDataForCharacter(UChar32) const;
     virtual bool containsCharacters(const UChar*, int length) const;
 
+    Glyph glyphForCharacter(UChar32) const;
+
     void determinePitch();
     Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }
 

Modified: trunk/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp (124653 => 124654)


--- trunk/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp	2012-08-03 21:19:36 UTC (rev 124653)
+++ trunk/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp	2012-08-03 21:30:06 UTC (rev 124654)
@@ -185,7 +185,24 @@
     unsigned i = 0;
     for (const FontData* fontData = fontDataAt(0); fontData; fontData = fontDataAt(++i)) {
         const SimpleFontData* simpleFontData = fontData->fontDataForCharacter(baseCharacter);
-        if (variant != NormalVariant) {
+        if (variant == NormalVariant) {
+            if (simpleFontData->platformData().orientation() == Vertical) {
+                if (isCJKIdeographOrSymbol(baseCharacter) && !simpleFontData->hasVerticalGlyphs()) {
+                    variant = BrokenIdeographVariant;
+                    simpleFontData = simpleFontData->brokenIdeographFontData();
+                } else if (m_fontDescription.textOrientation() == TextOrientationVerticalRight) {
+                    SimpleFontData* verticalRightFontData = simpleFontData->verticalRightOrientationFontData();
+                    Glyph verticalRightGlyph = verticalRightFontData->glyphForCharacter(baseCharacter);
+                    if (verticalRightGlyph == baseCharacterGlyphData.glyph)
+                        simpleFontData = verticalRightFontData;
+                } else {
+                    SimpleFontData* uprightFontData = simpleFontData->uprightOrientationFontData();
+                    Glyph uprightGlyph = uprightFontData->glyphForCharacter(baseCharacter);
+                    if (uprightGlyph != baseCharacterGlyphData.glyph)
+                        simpleFontData = uprightFontData;
+                }
+            }
+        } else {
             if (const SimpleFontData* variantFontData = simpleFontData->variantFontData(m_fontDescription, variant))
                 simpleFontData = variantFontData;
         }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to