⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 195402 in webkit


Ignore:
Timestamp:
Jan 20, 2016, 11:57:07 PM (11 years ago)
Author:
bshafiei@apple.com
Message:

Merged r188263. rdar://problem/24208102

Location:
branches/safari-601-branch
Files:
7 edited
2 copied

Legend:

Unmodified
Added
Removed
  • branches/safari-601-branch/LayoutTests/ChangeLog

    r195378 r195402  
     12016-01-20  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r188263.
     4
     5    2015-08-11  Myles C. Maxfield  <mmaxfield@apple.com>
     6
     7            [iOS] Arabic letter Yeh is drawn in LastResort
     8            https://bugs.webkit.org/show_bug.cgi?id=147862
     9            <rdar://problem/22202935>
     10
     11            Reviewed by Darin Adler.
     12
     13            * fast/text/arabic-glyph-cache-fill-combine-expected.html: Added.
     14            * fast/text/arabic-glyph-cache-fill-combine.html: Added.
     15            * platform/mac/TestExpectations: Mark test as iOS-specific
     16            * platform/gtk/TestExpectations: Mark test as iOS-specific
     17            * platform/efl/TestExpectations: Mark test as iOS-specific
     18            * platform/efl/TestExpectations: Mark test as iOS-specific
     19
    1202016-01-20  Matthew Hanson  <matthew_hanson@apple.com>
    221
  • branches/safari-601-branch/LayoutTests/platform/efl/TestExpectations

    r195377 r195402  
    23022302# This test uses an MPEG-4 video
    23032303media/video-seek-to-current-time.html [ Skip ]
     2304
     2305# This test relies on iOS-specific font fallback.
     2306fast/text/arabic-glyph-cache-fill-combine.html [ ImageOnlyFailure ]
  • branches/safari-601-branch/LayoutTests/platform/gtk/TestExpectations

    r195377 r195402  
    24042404# This test uses an MPEG-4 video
    24052405media/video-seek-to-current-time.html [ Skip ]
     2406
     2407# This test relies on iOS-specific font fallback.
     2408fast/text/arabic-glyph-cache-fill-combine.html [ ImageOnlyFailure ]
  • branches/safari-601-branch/LayoutTests/platform/mac/TestExpectations

    r195378 r195402  
    13771377[ Yosemite ElCapitan ] css3/font-variant-small-caps-synthesis-coverage.html [ ImageOnlyFailure ]
    13781378[ Yosemite ElCapitan ] css3/font-variant-petite-caps-synthesis-coverage.html [ ImageOnlyFailure ]
     1379
     1380# This test relies on iOS-specific font fallback.
     1381[ Mavericks Yosemite ElCapitan ] fast/text/arabic-glyph-cache-fill-combine.html [ ImageOnlyFailure ]
  • branches/safari-601-branch/LayoutTests/platform/win/TestExpectations

    r195377 r195402  
    31413141# This test uses an MPEG-4 video
    31423142media/video-seek-to-current-time.html [ Skip ]
     3143
     3144# This test relies on iOS-specific font fallback.
     3145fast/text/arabic-glyph-cache-fill-combine.html [ ImageOnlyFailure ]
  • branches/safari-601-branch/Source/WebCore/ChangeLog

    r195384 r195402  
     12016-01-20  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r188263.
     4
     5    2015-08-11  Myles C. Maxfield  <mmaxfield@apple.com>
     6
     7            [iOS] Arabic letter Yeh is drawn in LastResort
     8            https://bugs.webkit.org/show_bug.cgi?id=147862
     9            <rdar://problem/22202935>
     10
     11            Reviewed by Darin Adler.
     12
     13            In order to perform font fallback, we must know which fonts support which characters. We
     14            perform this check by asking each font to map a sequence of codepoints to glyphs, and
     15            any glyphs which end up with a 0 value are unsupported by the font.
     16
     17            One of the mechanisms that we use to do this is to combine the code points into a string,
     18            and tell Core Text to lay out the string. However, this is fundamentally a different
     19            operation than the one we are trying to perform. Strings combine adjacent codepoints into
     20            grapheme clusters, and CoreText operates on these. However, we are trying to gain
     21            information regarding codepoints, not grapheme clusters.
     22
     23            Instead of taking this string-based approach, we should try harder to use Core Text
     24            functions which operate on ordered collections of characters, rather than strings. In
     25            particular, CTFontGetGlyphsForCharacters() and CTFontGetVerticalGlyphsForCharacters()
     26            have the behavior we want where any unmapped characters end up with a 0 value glyph.
     27
     28            Previously, we were only using the result of those functions if they were successfully
     29            able to map their entire input. However, given the fact that we can degrade gracefully
     30            in the case of a partial mapping, we shouldn't need to bail completely to the
     31            string-based approach should a partial mapping occur.
     32
     33            At some point we should delete the string-based approach entirely. However, this path
     34            is still explicitly used for composite fonts. Fixing that use case is out of scope
     35            for this patch.
     36
     37            Test: fast/text/arabic-glyph-cache-fill-combine.html
     38
     39            * platform/graphics/mac/GlyphPageMac.cpp:
     40            (WebCore::GlyphPage::fill):
     41
    1422016-01-20  Timothy Hatcher  <timothy@apple.com>
    243
  • branches/safari-601-branch/Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp

    r193666 r195402  
    8888            }
    8989        }
    90     } else if (!fontData->platformData().isCompositeFontReference() && ((fontData->platformData().widthVariant() == RegularWidth)
    91         ? CTFontGetVerticalGlyphsForCharacters(fontData->platformData().ctFont(), buffer, glyphs.data(), bufferLength)
    92         : CTFontGetGlyphsForCharacters(fontData->platformData().ctFont(), buffer, glyphs.data(), bufferLength))) {
     90    } else if (!fontData->platformData().isCompositeFontReference()) {
     91        if (fontData->platformData().widthVariant() == RegularWidth)
     92            CTFontGetVerticalGlyphsForCharacters(fontData->platformData().ctFont(), buffer, glyphs.data(), bufferLength);
     93        else
     94            CTFontGetGlyphsForCharacters(fontData->platformData().ctFont(), buffer, glyphs.data(), bufferLength);
    9395        // When buffer consists of surrogate pairs, CTFontGetVerticalGlyphsForCharacters and CTFontGetGlyphsForCharacters
    9496        // place the glyphs at indices corresponding to the first character of each pair.
     
    104106        }
    105107    } else {
     108        // FIXME: webkit.org/b/147859 This code is fundamentally broken. A string is not the same as an ordered sequence of codepoints. In particular, strings
     109        // combine adjacent codepoints into grapheme clusters. We should delete this entire else {} block.
     110
    106111        // We ask CoreText for possible vertical variant glyphs
    107112        RetainPtr<CFStringRef> string = adoptCF(CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, buffer, bufferLength, kCFAllocatorNull));
Note: See TracChangeset for help on using the changeset viewer.