Changeset 124654 in webkit


Ignore:
Timestamp:
Aug 3, 2012 2:30:06 PM (12 years ago)
Author:
mitz@apple.com
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.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r124648 r124654  
     12012-08-03  Dan Bernstein  <mitz@apple.com>
     2
     3        REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
     4        https://bugs.webkit.org/show_bug.cgi?id=92864
     5
     6        Reviewed by Sam Weinig.
     7
     8        * platform/mac/fast/text/combining-character-sequence-vertical-expected.html: Added.
     9        * platform/mac/fast/text/combining-character-sequence-vertical.html: Added.
     10
    1112012-08-03  Dmitry Titov  <dimich@chromium.org>
    212
  • trunk/Source/WebCore/ChangeLog

    r124653 r124654  
     12012-08-03  Dan Bernstein  <mitz@apple.com>
     2
     3        <rdar://problem/12005188> REGRESSION (Safari 5.1 - 6): Cannot correctly display Traditional Mongolian Script
     4        https://bugs.webkit.org/show_bug.cgi?id=92864
     5
     6        Reviewed by Sam Weinig.
     7
     8        Test: platform/mac/fast/text/combining-character-sequence-vertical.html
     9
     10        * platform/graphics/SimpleFontData.cpp:
     11        (WebCore::SimpleFontData::glyphForCharacter): Added this helper function.
     12        * platform/graphics/SimpleFontData.h:
     13        (SimpleFontData): Declared glyphDataForCharacter.
     14        * platform/graphics/mac/FontComplexTextMac.cpp:
     15        (WebCore::Font::fontDataForCombiningCharacterSequence): Added logic to use the appropriate
     16        variant of each font in the fallback list, which mimcs the equivalent logic in
     17        glyphDataAndPageForCharacter().
     18
    1192012-08-03  Kenneth Russell  <kbr@google.com>
    220
  • trunk/Source/WebCore/platform/graphics/SimpleFontData.cpp

    r112816 r124654  
    149149}
    150150
     151Glyph SimpleFontData::glyphForCharacter(UChar32 character) const
     152{
     153    GlyphPageTreeNode* node = GlyphPageTreeNode::getRootChild(this, character / GlyphPage::size);
     154    return node->page() ? node->page()->glyphAt(character % GlyphPage::size) : 0;
     155}
     156
    151157bool SimpleFontData::isSegmented() const
    152158{
  • trunk/Source/WebCore/platform/graphics/SimpleFontData.h

    r124397 r124654  
    154154    virtual bool containsCharacters(const UChar*, int length) const;
    155155
     156    Glyph glyphForCharacter(UChar32) const;
     157
    156158    void determinePitch();
    157159    Pitch pitch() const { return m_treatAsFixedPitch ? FixedPitch : VariablePitch; }
  • trunk/Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp

    r123991 r124654  
    186186    for (const FontData* fontData = fontDataAt(0); fontData; fontData = fontDataAt(++i)) {
    187187        const SimpleFontData* simpleFontData = fontData->fontDataForCharacter(baseCharacter);
    188         if (variant != NormalVariant) {
     188        if (variant == NormalVariant) {
     189            if (simpleFontData->platformData().orientation() == Vertical) {
     190                if (isCJKIdeographOrSymbol(baseCharacter) && !simpleFontData->hasVerticalGlyphs()) {
     191                    variant = BrokenIdeographVariant;
     192                    simpleFontData = simpleFontData->brokenIdeographFontData();
     193                } else if (m_fontDescription.textOrientation() == TextOrientationVerticalRight) {
     194                    SimpleFontData* verticalRightFontData = simpleFontData->verticalRightOrientationFontData();
     195                    Glyph verticalRightGlyph = verticalRightFontData->glyphForCharacter(baseCharacter);
     196                    if (verticalRightGlyph == baseCharacterGlyphData.glyph)
     197                        simpleFontData = verticalRightFontData;
     198                } else {
     199                    SimpleFontData* uprightFontData = simpleFontData->uprightOrientationFontData();
     200                    Glyph uprightGlyph = uprightFontData->glyphForCharacter(baseCharacter);
     201                    if (uprightGlyph != baseCharacterGlyphData.glyph)
     202                        simpleFontData = uprightFontData;
     203                }
     204            }
     205        } else {
    189206            if (const SimpleFontData* variantFontData = simpleFontData->variantFontData(m_fontDescription, variant))
    190207                simpleFontData = variantFontData;
Note: See TracChangeset for help on using the changeset viewer.