Changeset 180087 in webkit


Ignore:
Timestamp:
Feb 13, 2015 3:44:02 PM (9 years ago)
Author:
enrica@apple.com
Message:

Additional emoji group support.
https://bugs.webkit.org/show_bug.cgi?id=141539
rdar://problem/19727527

Reviewed by Sam Weinig.

Source/WebCore:

Adding some new emoji ligatures.
Updated existing test to include the new sequences.

  • platform/text/TextBreakIterator.cpp:

(WebCore::cursorMovementIterator):

  • rendering/RenderText.cpp:

(WebCore::isEmojiGroupCandidate):

LayoutTests:

Updating test to reflect the new emoji ligatures supported.

  • editing/deleting/delete-emoji-expected.txt:
  • editing/deleting/delete-emoji.html:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r180078 r180087  
     12015-02-12  Enrica Casucci  <enrica@apple.com>
     2
     3        Additional emoji group support.
     4        https://bugs.webkit.org/show_bug.cgi?id=141539
     5        rdar://problem/19727527
     6
     7        Reviewed by Sam Weinig.
     8
     9        Updating test to reflect the new emoji ligatures supported.
     10
     11        * editing/deleting/delete-emoji-expected.txt:
     12        * editing/deleting/delete-emoji.html:
     13
    1142015-02-13  Brent Fulgham  <bfulgham@apple.com>
    215
  • trunk/LayoutTests/editing/deleting/delete-emoji-expected.txt

    r179567 r180087  
    22
    33Dump of markup 1:
    4 | "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦<#selection-caret>
     4| "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦👩‍❤️‍👩👨‍❤️‍👨👩‍❤️‍💋‍👩👨‍❤️‍💋‍👨<#selection-caret>
    55"
    66
    77Dump of markup 2:
     8| "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦👩‍❤️‍👩👨‍❤️‍👨👩‍❤️‍💋‍👩<#selection-caret>"
     9
     10Dump of markup 3:
     11| "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦👩‍❤️‍👩👨‍❤️‍👨<#selection-caret>"
     12
     13Dump of markup 4:
     14| "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦👩‍❤️‍👩<#selection-caret>"
     15
     16Dump of markup 5:
     17| "👦🏻👦🏾🏻👦🏾👦👩‍👩‍👦<#selection-caret>"
     18
     19Dump of markup 6:
    820| "👦🏻👦🏾🏻👦🏾👦<#selection-caret>"
    921
    10 Dump of markup 3:
     22Dump of markup 7:
    1123| "👦🏻👦🏾🏻👦🏾<#selection-caret>"
    1224
    13 Dump of markup 4:
     25Dump of markup 8:
    1426| "👦🏻👦🏾🏻<#selection-caret>"
    1527
    16 Dump of markup 5:
     28Dump of markup 9:
    1729| "👦🏻👦🏾<#selection-caret>"
  • trunk/LayoutTests/editing/deleting/delete-emoji.html

    r179567 r180087  
    22<html>
    33<body>
    4 <div id="test" contenteditable="true">&#x1F466;&#x1F3FB;&#x1F466;&#x1F3FE;&#x1F3FB;&#x1F466;&#x1F3FE;&#x1F466;&#x1F469;&#x200D;&#x1F469;&#x200D;&#x1F466;
     4<div id="test" contenteditable="true">&#x1F466;&#x1F3FB;&#x1F466;&#x1F3FE;&#x1F3FB;&#x1F466;&#x1F3FE;&#x1F466;&#x1F469;&#x200D;&#x1F469;&#x200D;&#x1F466;&#x1F469;&#x200D;&#x2764;&#xFE0F;&#x200D;&#x1F469;&#x1F468;&#x200D;&#x2764;&#xFE0F;&#x200D;&#x1F468;&#x1F469;&#x200D;&#x2764;&#xFE0F;&#x200D;&#x1F48B;&#x200D;&#x1F469;&#x1F468;&#x200D;&#x2764;&#xFE0F;&#x200D;&#x1F48B;&#x200D;&#x1F468;
    55</div>
    66<script src="../../resources/dump-as-markup.js"></script>
     
    1010var selection = window.getSelection();
    1111var testElement = document.getElementById('test');
    12 selection.setBaseAndExtent(testElement.firstChild, 20, testElement.firstChild, 20);
     12selection.setBaseAndExtent(testElement.firstChild, 56, testElement.firstChild, 56);
     13Markup.dump("test");
     14document.execCommand("Delete");
     15Markup.dump("test");
     16document.execCommand("Delete");
     17Markup.dump("test");
     18document.execCommand("Delete");
     19Markup.dump("test");
     20document.execCommand("Delete");
    1321Markup.dump("test");
    1422document.execCommand("Delete");
  • trunk/Source/WebCore/ChangeLog

    r180082 r180087  
     12015-02-12  Enrica Casucci  <enrica@apple.com>
     2
     3        Additional emoji group support.
     4        https://bugs.webkit.org/show_bug.cgi?id=141539
     5        rdar://problem/19727527
     6
     7        Reviewed by Sam Weinig.
     8
     9        Adding some new emoji ligatures.
     10        Updated existing test to include the new sequences.
     11
     12        * platform/text/TextBreakIterator.cpp:
     13        (WebCore::cursorMovementIterator):
     14        * rendering/RenderText.cpp:
     15        (WebCore::isEmojiGroupCandidate):
     16
    1172015-02-13  Alex Christensen  <achristensen@webkit.org>
    218
  • trunk/Source/WebCore/platform/text/TextBreakIterator.cpp

    r179567 r180087  
    209209        "$RI      = [\\U0001F1E6-\\U0001F1FF];" // Emoji regional indicators
    210210        "$ZWJ     = \\u200D;"               // Zero width joiner
    211         "$EmojiForModsAndSeqs = [\\U0001F466-\\U0001F469];" // Emoji that take Fitzpatrick modifiers AND participate in ZWJ sequences
    212         "$EmojiForModsOnly = [\\u261D \\u270A-\\u270C \\U0001F385 \\U0001F3C3-\\U0001F3C4 \\U0001F3C7 \\U0001F3CA \\U0001F442-\\U0001F443 \\U0001F446-\\U0001F450 \\U0001F46E-\\U0001F478 \\U0001F47C \\U0001F481-\\U0001F483 \\U0001F485-\\U0001F487 \\U0001F4AA \\U0001F645-\\U0001F647 \\U0001F64B-\\U0001F64F \\U0001F6B4-\\U0001F6B6 \\U0001F6C0];" // Emoji that take Fitzpatrick modifiers
     211        "$EmojiVar = [\\uFE0F];"            // Emoji-style variation selector
     212        "$EmojiForSeqs = [\\u2764 \\U0001F466-\\U0001F469 \\U0001F48B];" // Emoji that participate in ZWJ sequences
     213        "$EmojiForMods = [\\u261D \\u270A-\\u270C \\U0001F385 \\U0001F3C3-\\U0001F3C4 \\U0001F3C7 \\U0001F3CA \\U0001F442-\\U0001F443 \\U0001F446-\\U0001F450 \\U0001F466-\\U0001F469 \\U0001F46E-\\U0001F478 \\U0001F47C \\U0001F481-\\U0001F483 \\U0001F485-\\U0001F487 \\U0001F4AA \\U0001F645-\\U0001F647 \\U0001F64B-\\U0001F64F \\U0001F6B4-\\U0001F6B6 \\U0001F6C0];" // Emoji that take Fitzpatrick modifiers
    213214        "$EmojiMods = [\\U0001F3FB-\\U0001F3FF];" // Fitzpatrick modifiers
    214215        "!!chain;"
     
    230231        "$Kan0 $KanV $Kan1;"               // Kannada Virama (forward)
    231232        "$Mal0 $MalV $Mal1;"               // Malayalam Virama (forward)
    232         "$ZWJ $EmojiForModsAndSeqs;"       // Don't break in emoji ZWJ sequences
    233         "[$EmojiForModsAndSeqs $EmojiForModsOnly] $EmojiMods;" // Don't break between relevant emoji and Fitzpatrick modifier
     233        "$ZWJ $EmojiForSeqs;"              // Don't break in emoji ZWJ sequences
     234        "$EmojiForMods $EmojiVar? $EmojiMods;" // Don't break between relevant emoji (possibly with variation selector) and Fitzpatrick modifier
    234235        "!!reverse;"
    235236        "$LF $CR;"
     
    249250        "$Kan1 $KanV $Kan0;"               // Kannada Virama (backward)
    250251        "$Mal1 $MalV $Mal0;"               // Malayalam Virama (backward)
    251         "$EmojiForModsAndSeqs $ZWJ;"       // Don't break in emoji ZWJ sequences
    252         "$EmojiMods [$EmojiForModsAndSeqs $EmojiForModsOnly];" // Don't break between relevant emoji and Fitzpatrick modifier
     252        "$EmojiForSeqs $ZWJ;"              // Don't break in emoji ZWJ sequences
     253        "$EmojiMods $EmojiVar? $EmojiForMods;" // Don't break between relevant emoji (possibly with variation selector) and Fitzpatrick modifier
     254        "[$EmojiVar $EmojiMods]+ $EmojiForMods;"
     255        "$EmojiForMods [$EmojiVar $EmojiMods]+;"
    253256        "!!safe_reverse;"
    254257        "!!safe_forward;";
     
    407410    "$ZW = [:LineBreak = ZWSpace:];"
    408411    "$ZWJ = \\u200D;"
    409     "$EmojiForModsAndSeqs = [\\U0001F466-\\U0001F469];"
    410     "$EmojiForModsOnly = [\\u261D \\u270A-\\u270C \\U0001F385 \\U0001F3C3-\\U0001F3C4 \\U0001F3C7 \\U0001F3CA \\U0001F442-\\U0001F443 \\U0001F446-\\U0001F450 \\U0001F46E-\\U0001F478 \\U0001F47C \\U0001F481-\\U0001F483 \\U0001F485-\\U0001F487 \\U0001F4AA \\U0001F645-\\U0001F647 \\U0001F64B-\\U0001F64F \\U0001F6B4-\\U0001F6B6 \\U0001F6C0];"
     412    "$EmojiVar = \\uFE0F;"
     413    "$EmojiForSeqs = [\\u2764 \\U0001F466-\\U0001F469 \\U0001F48B];"
     414    "$EmojiForMods = [\\u261D \\u270A-\\u270C \\U0001F385 \\U0001F3C3-\\U0001F3C4 \\U0001F3C7 \\U0001F3CA \\U0001F442-\\U0001F443 \\U0001F446-\\U0001F450 \\U0001F466-\\U0001F469 \\U0001F46E-\\U0001F478 \\U0001F47C \\U0001F481-\\U0001F483 \\U0001F485-\\U0001F487 \\U0001F4AA \\U0001F645-\\U0001F647 \\U0001F64B-\\U0001F64F \\U0001F6B4-\\U0001F6B6 \\U0001F6C0];"
    411415    "$EmojiMods = [\\U0001F3FB-\\U0001F3FF];"
    412416    "$dictionary = [:LineBreak = Complex_Context:];"
     
    486490    "$CAN_CM $CM* [$SP $ZW];"
    487491    "$CM+ [$SP $ZW];"
    488     "[$EmojiForModsAndSeqs $EmojiMods] $ZWJ $EmojiForModsAndSeqs;"
     492    "$EmojiForSeqs $EmojiVar? $EmojiMods? $ZWJ $EmojiForSeqs;"
    489493    "$CAN_CM $CM+;"
    490494    "$CM+;"
     
    554558    "$CM+ $OPcm;"
    555559    "$CPcm ($ALcm | $HLcm | $NUcm);"
    556     "[$EmojiForModsAndSeqs $EmojiForModsOnly] $EmojiMods;";
     560    "$EmojiForMods $EmojiVar? $EmojiMods;";
    557561
    558562static const char* uax14Reverse =
     
    592596    "[$SP $ZW] [$LB4NonBreaks-$CM];"
    593597    "[$SP $ZW] $CM+ $CAN_CM;"
    594     "$EmojiForModsAndSeqs $ZWJ [$EmojiForModsAndSeqs $EmojiMods];"
     598    "$EmojiForSeqs $ZWJ $EmojiMods? $EmojiVar? $EmojiForSeqs;"
    595599    "$CM+ $CAN_CM;"
    596600    "$CM* $WJ $CM* $CAN_CM;"
     
    650654    "$CM* $OP $CM* ($ALPlus | $HL | $NU);"
    651655    "$CM* ($ALPlus | $HL | $NU) $CM* $CP;"
    652     "$EmojiMods [$EmojiForModsAndSeqs $EmojiForModsOnly];";
     656    "$EmojiMods $EmojiVar? $EmojiForMods;";
    653657
    654658static const char* uax14SafeForward =
  • trunk/Source/WebCore/rendering/RenderText.cpp

    r179567 r180087  
    14411441static inline bool isEmojiGroupCandidate(UChar32 character)
    14421442{
    1443     return character >= 0x1F466 && character <= 0x1F469;
     1443    return (character >= 0x1F466 && character <= 0x1F469) || character == 0x2764 || character == 0x1F48B;
    14441444}
    14451445
Note: See TracChangeset for help on using the changeset viewer.