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;">
+ بحٓ
+</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;">
+ بحٓ
+</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