Home | History | Annotate | Download | only in graphics
      1 /*
      2  * Copyright (C) 2013 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *
      8  * 1.  Redistributions of source code must retain the above copyright
      9  *     notice, this list of conditions and the following disclaimer.
     10  * 2.  Redistributions in binary form must reproduce the above copyright
     11  *     notice, this list of conditions and the following disclaimer in the
     12  *     documentation and/or other materials provided with the distribution.
     13  *
     14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
     18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     20  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     21  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 // Tests for the Font class.
     27 
     28 #include "config.h"
     29 
     30 #include "core/platform/graphics/Font.h"
     31 
     32 #include <gtest/gtest.h>
     33 
     34 namespace WebCore {
     35 
     36 static void TestSpecificUCharRange(UChar rangeStart, UChar rangeEnd)
     37 {
     38     UChar below[1];
     39     UChar start[1];
     40     UChar midway[1];
     41     UChar end[1];
     42     UChar above[1];
     43 
     44     below[0] = rangeStart - 1;
     45     start[0] = rangeStart;
     46     midway[0] = ((int)rangeStart + (int)rangeEnd) / 2;
     47     end[0] = rangeEnd;
     48     above[0] = rangeEnd + 1;
     49 
     50     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(below, 1));
     51     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(start, 1));
     52     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(midway, 1));
     53     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(end, 1));
     54     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(above, 1));
     55 }
     56 
     57 TEST(FontTest, TestCharacterRangeCodePath)
     58 {
     59     static UChar c1[] = { 0x0 };
     60     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 1));
     61 
     62     TestSpecificUCharRange(0x2E5, 0x2E9);
     63     TestSpecificUCharRange(0x300, 0x36F);
     64     TestSpecificUCharRange(0x0591, 0x05BD);
     65     TestSpecificUCharRange(0x05BF, 0x05CF);
     66     TestSpecificUCharRange(0x0600, 0x109F);
     67     TestSpecificUCharRange(0x1100, 0x11FF);
     68     TestSpecificUCharRange(0x135D, 0x135F);
     69     TestSpecificUCharRange(0x1700, 0x18AF);
     70     TestSpecificUCharRange(0x1900, 0x194F);
     71     TestSpecificUCharRange(0x1980, 0x19DF);
     72     TestSpecificUCharRange(0x1A00, 0x1CFF);
     73 
     74     static UChar c2[] = { 0x1DBF };
     75     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 1));
     76     static UChar c3[] = { 0x1DC0 };
     77     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 1));
     78     static UChar c4[] = { 0x1DD0 };
     79     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 1));
     80     static UChar c5[] = { 0x1DFF };
     81     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c5, 1));
     82     static UChar c6[] = { 0x1E00 };
     83     EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 1));
     84     static UChar c7[] = { 0x2000 };
     85     EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c7, 1));
     86     static UChar c8[] = { 0x2001 };
     87     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c8, 1));
     88 
     89     TestSpecificUCharRange(0x20D0, 0x20FF);
     90     TestSpecificUCharRange(0x2CEF, 0x2CF1);
     91     TestSpecificUCharRange(0x302A, 0x302F);
     92 
     93     TestSpecificUCharRange(0xA67C, 0xA67D);
     94     TestSpecificUCharRange(0xA6F0, 0xA6F1);
     95     TestSpecificUCharRange(0xA800, 0xABFF);
     96 
     97     TestSpecificUCharRange(0xD7B0, 0xD7FF);
     98     TestSpecificUCharRange(0xFE00, 0xFE0F);
     99     TestSpecificUCharRange(0xFE20, 0xFE2F);
    100 }
    101 
    102 TEST(FontTest, TestCharacterRangeCodePathSurrogate1)
    103 {
    104     /* To be surrogate ... */
    105     /* 1st character must be 0xD800 .. 0xDBFF */
    106     /* 2nd character must be 0xdc00 .. 0xdfff */
    107 
    108     /* The following 5 should all be Simple because they are not surrogate. */
    109     static UChar c1[] = { 0xD800, 0xDBFE };
    110     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
    111     static UChar c2[] = { 0xD800, 0xE000 };
    112     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 2));
    113     static UChar c3[] = { 0xDBFF, 0xDBFE };
    114     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c3, 2));
    115     static UChar c4[] = { 0xDBFF, 0xE000 };
    116     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c4, 2));
    117     static UChar c5[] = { 0xDC00, 0xDBFF };
    118     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c5, 2));
    119 
    120     /* To be Complex, the Supplementary Character must be in either */
    121     /* U+1F1E6 through U+1F1FF or U+E0100 through U+E01EF. */
    122     /* That is, a lead of 0xD83C with trail 0xDDE6 .. 0xDDFF or */
    123     /* a lead of 0xDB40 with trail 0xDD00 .. 0xDDEF. */
    124     static UChar c6[] = { 0xD83C, 0xDDE5 };
    125     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c6, 2));
    126     static UChar c7[] = { 0xD83C, 0xDDE6 };
    127     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
    128     static UChar c8[] = { 0xD83C, 0xDDF0 };
    129     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
    130     static UChar c9[] = { 0xD83C, 0xDDFF };
    131     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 2));
    132     static UChar c10[] = { 0xD83C, 0xDE00 };
    133     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c10, 2));
    134 
    135     static UChar c11[] = { 0xDB40, 0xDCFF };
    136     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c11, 2));
    137     static UChar c12[] = { 0xDB40, 0xDD00 };
    138     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c12, 2));
    139     static UChar c13[] = { 0xDB40, 0xDDED };
    140     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c13, 2));
    141     static UChar c14[] = { 0xDB40, 0xDDEF };
    142     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c14, 2));
    143     static UChar c15[] = { 0xDB40, 0xDDF0 };
    144     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c15, 2));
    145 }
    146 
    147 TEST(FontTest, TestCharacterRangeCodePathString)
    148 {
    149     // Simple-Simple is still simple
    150     static UChar c1[] = { 0x2FF, 0x2FF };
    151     EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
    152     // Complex-Simple is Complex
    153     static UChar c2[] = { 0x300, 0x2FF };
    154     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c2, 2));
    155     // Simple-Complex is Complex
    156     static UChar c3[] = { 0x2FF, 0x330 };
    157     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 2));
    158     // Complex-Complex is Complex
    159     static UChar c4[] = { 0x36F, 0x330 };
    160     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 2));
    161     // SimpleWithGlyphOverflow-Simple is SimpleWithGlyphOverflow
    162     static UChar c5[] = { 0x1E00, 0x2FF };
    163     EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c5, 2));
    164     // Simple-SimpleWithGlyphOverflow is SimpleWithGlyphOverflow
    165     static UChar c6[] = { 0x2FF, 0x2000 };
    166     EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 2));
    167     // SimpleWithGlyphOverflow-Complex is Complex
    168     static UChar c7[] = { 0x1E00, 0x330 };
    169     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
    170     // Complex-SimpleWithGlyphOverflow is Complex
    171     static UChar c8[] = { 0x330, 0x2000 };
    172     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
    173     // Surrogate-Complex is Complex
    174     static UChar c9[] = { 0xD83C, 0xDDE5, 0x330 };
    175     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 3));
    176     // Complex-Surrogate is Complex
    177     static UChar c10[] = { 0x330, 0xD83C, 0xDDE5 };
    178     EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c10, 3));
    179 }
    180 
    181 static void TestSpecificUChar32RangeIdeograph(UChar32 rangeStart, UChar32 rangeEnd)
    182 {
    183     EXPECT_FALSE(Font::isCJKIdeograph(rangeStart - 1));
    184     EXPECT_TRUE(Font::isCJKIdeograph(rangeStart));
    185     EXPECT_TRUE(Font::isCJKIdeograph((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
    186     EXPECT_TRUE(Font::isCJKIdeograph(rangeEnd));
    187     EXPECT_FALSE(Font::isCJKIdeograph(rangeEnd + 1));
    188 }
    189 
    190 TEST(FontTest, TestIsCJKIdeograph)
    191 {
    192     // The basic CJK Unified Ideographs block.
    193     TestSpecificUChar32RangeIdeograph(0x4E00, 0x9FFF);
    194     // CJK Unified Ideographs Extension A.
    195     TestSpecificUChar32RangeIdeograph(0x3400, 0x4DBF);
    196     // CJK Unified Ideographs Extension A and Kangxi Radicals.
    197     TestSpecificUChar32RangeIdeograph(0x2E80, 0x2FDF);
    198     // CJK Strokes.
    199     TestSpecificUChar32RangeIdeograph(0x31C0, 0x31EF);
    200     // CJK Compatibility Ideographs.
    201     TestSpecificUChar32RangeIdeograph(0xF900, 0xFAFF);
    202     // CJK Unified Ideographs Extension B.
    203     TestSpecificUChar32RangeIdeograph(0x20000, 0x2A6DF);
    204     // CJK Unified Ideographs Extension C.
    205     // CJK Unified Ideographs Extension D.
    206     TestSpecificUChar32RangeIdeograph(0x2A700, 0x2B81F);
    207     // CJK Compatibility Ideographs Supplement.
    208     TestSpecificUChar32RangeIdeograph(0x2F800, 0x2FA1F);
    209 }
    210 
    211 static void TestSpecificUChar32RangeIdeographSymbol(UChar32 rangeStart, UChar32 rangeEnd)
    212 {
    213     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeStart - 1));
    214     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeStart));
    215     EXPECT_TRUE(Font::isCJKIdeographOrSymbol((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
    216     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeEnd));
    217     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeEnd + 1));
    218 }
    219 
    220 TEST(FontTest, TestIsCJKIdeographOrSymbol)
    221 {
    222     // CJK Compatibility Ideographs Supplement.
    223     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2C7));
    224     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CA));
    225     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CB));
    226     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2D9));
    227 
    228     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2020));
    229     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2021));
    230     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2030));
    231     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203B));
    232     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203C));
    233     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2042));
    234     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2047));
    235     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2048));
    236     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2049));
    237     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2051));
    238     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DD));
    239     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DE));
    240     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2100));
    241     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2103));
    242     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2105));
    243     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2109));
    244     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x210A));
    245     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2113));
    246     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2116));
    247     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2121));
    248     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x212B));
    249     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x213B));
    250     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2150));
    251     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2151));
    252     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2152));
    253 
    254     TestSpecificUChar32RangeIdeographSymbol(0x2156, 0x215A);
    255     TestSpecificUChar32RangeIdeographSymbol(0x2160, 0x216B);
    256     TestSpecificUChar32RangeIdeographSymbol(0x2170, 0x217B);
    257 
    258     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x217F));
    259     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2189));
    260     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2307));
    261     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2312));
    262 
    263     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23BD));
    264     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23BE));
    265     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23C4));
    266     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CC));
    267     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23CD));
    268     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CE));
    269     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2423));
    270 
    271     TestSpecificUChar32RangeIdeographSymbol(0x2460, 0x2492);
    272     TestSpecificUChar32RangeIdeographSymbol(0x249C, 0x24FF);
    273 
    274     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A0));
    275     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A1));
    276     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A2));
    277     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AA));
    278     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AB));
    279     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B1));
    280     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B2));
    281     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B3));
    282     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B6));
    283     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B7));
    284     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BC));
    285     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BD));
    286     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C0));
    287     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C1));
    288     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C6));
    289     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C7));
    290     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C9));
    291     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CB));
    292     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CC));
    293 
    294     TestSpecificUChar32RangeIdeographSymbol(0x25CE, 0x25D3);
    295     TestSpecificUChar32RangeIdeographSymbol(0x25E2, 0x25E6);
    296 
    297     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25EF));
    298 
    299     TestSpecificUChar32RangeIdeographSymbol(0x2600, 0x2603);
    300 
    301     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2605));
    302     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2606));
    303     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x260E));
    304     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2616));
    305     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2617));
    306     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2640));
    307     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2642));
    308 
    309     TestSpecificUChar32RangeIdeographSymbol(0x2660, 0x266F);
    310     TestSpecificUChar32RangeIdeographSymbol(0x2672, 0x267D);
    311 
    312     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26A0));
    313     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BD));
    314     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BE));
    315     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2713));
    316     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x271A));
    317     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x273F));
    318     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2740));
    319     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2756));
    320 
    321     TestSpecificUChar32RangeIdeographSymbol(0x2776, 0x277F);
    322 
    323     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2B1A));
    324 
    325     TestSpecificUChar32RangeIdeographSymbol(0x2FF0, 0x302F);
    326     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3031));
    327     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x312F));
    328     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x3130));
    329 
    330     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x318F));
    331     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3190));
    332     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x319F));
    333     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x31BF));
    334 
    335     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x31FF));
    336     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3200));
    337     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3300));
    338     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x33FF));
    339 
    340     TestSpecificUChar32RangeIdeographSymbol(0xF860, 0xF862);
    341     TestSpecificUChar32RangeIdeographSymbol(0xFE30, 0xFE4F);
    342 
    343     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE10));
    344     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE11));
    345     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE12));
    346     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE19));
    347 
    348     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF0D));
    349     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1B));
    350     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1C));
    351     EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1E));
    352 
    353     TestSpecificUChar32RangeIdeographSymbol(0xFF00, 0xFFEF);
    354 
    355     EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x1F100));
    356 
    357     TestSpecificUChar32RangeIdeographSymbol(0x1F110, 0x1F129);
    358     TestSpecificUChar32RangeIdeographSymbol(0x1F130, 0x1F149);
    359     TestSpecificUChar32RangeIdeographSymbol(0x1F150, 0x1F169);
    360     TestSpecificUChar32RangeIdeographSymbol(0x1F170, 0x1F189);
    361     TestSpecificUChar32RangeIdeographSymbol(0x1F200, 0x1F6FF);
    362 }
    363 
    364 } // namespace WebCore
    365 
    366