Changeset 114187 in webkit


Ignore:
Timestamp:
Apr 13, 2012, 5:33:09 PM (13 years ago)
Author:
xji@chromium.org
Message:

REGRESSION(r102190) [chromium] text rendering (font and font size) in some Arabic/Persian page is wrong
when using certain fonts
https://bugs.webkit.org/show_bug.cgi?id=83523

Reviewed by Kent Tamura.

Revert r102190.
Convert characters being treatAsSpace to white space.

  • platform/graphics/chromium/UniscribeHelper.cpp:

(WebCore::UniscribeHelper::fillRuns):
(WebCore::UniscribeHelper::adjustSpaceAdvances):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r114184 r114187  
     12012-04-13  Xiaomei Ji  <xji@chromium.org>
     2
     3        REGRESSION(r102190) [chromium] text rendering (font and font size) in some Arabic/Persian page is wrong
     4        when using certain fonts
     5        https://bugs.webkit.org/show_bug.cgi?id=83523
     6
     7        Reviewed by Kent Tamura.
     8
     9        Revert r102190.
     10        Convert characters being treatAsSpace to white space.
     11
     12        * platform/graphics/chromium/UniscribeHelper.cpp:
     13        (WebCore::UniscribeHelper::fillRuns):
     14        (WebCore::UniscribeHelper::adjustSpaceAdvances):
     15
    1162012-04-13  Timothy Hatcher  <timothy@apple.com>
    217
  • trunk/Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp

    r113921 r114187  
    542542                                           0, // fNumericOverride    :1;
    543543                                           0, // fLegacyBidiClass    :1;
    544                                            1, // fMergeNeutralItems  :1;
     544                                           0, // fMergeNeutralItems  :1;
    545545                                           0};// fReserved           :7;
    546546    // Calling ScriptApplyDigitSubstitution( 0, &inputControl, &inputState)
     
    576576                                            &m_runs[0], &m_scriptTags[0],
    577577                                            &numberOfItems);
     578
     579            if (SUCCEEDED(hr)) {
     580                // Pack consecutive runs, the script tag of which are
     581                // SCRIPT_TAG_UNKNOWN, to reduce the number of runs.
     582                for (int i = 0; i < numberOfItems; ++i) {
     583                    if (m_scriptTags[i] == SCRIPT_TAG_UNKNOWN) {
     584                        int j = 1;
     585                        while (i + j < numberOfItems && m_scriptTags[i + j] == SCRIPT_TAG_UNKNOWN)
     586                            ++j;
     587                        if (--j) {
     588                            m_runs.remove(i + 1, j);
     589                            m_scriptTags.remove(i + 1, j);
     590                            numberOfItems -= j;
     591                        }
     592                    }
     593                }
     594                m_scriptTags.resize(numberOfItems);
     595            }
    578596        } else {
    579597            hr = ScriptItemize(m_input, m_inputLength,
     
    893911            int currentAdvance = shaping.m_advance[glyphIndex];
    894912
     913            shaping.m_glyphs[glyphIndex] = shaping.m_spaceGlyph;
     914
    895915            if (treatAsSpace) {
    896916                // currentAdvance does not include additional letter-spacing,
     
    914934            shaping.m_offsets[glyphIndex].du = 0;
    915935            shaping.m_offsets[glyphIndex].dv = 0;
    916             shaping.m_glyphs[glyphIndex] = shaping.m_spaceGlyph;
    917936        }
    918937    }
Note: See TracChangeset for help on using the changeset viewer.