Changeset 90259 in webkit


Ignore:
Timestamp:
Jul 1, 2011 12:23:21 PM (13 years ago)
Author:
jshin@chromium.org
Message:

2011-07-01 Jungshik Shin <jshin@chromium.org>

Reviewed by Alexey Proskuryakov.

Add ScriptCodesFromICU.h to wtf/unicode and make necessary changes in
build files for ports not using ICU.
Add icu/unicode/uscript.h for ports using ICU. It's taken from
ICU 3.6 (the version used on Mac OS 10.5)

http://bugs.webkit.org/show_bug.cgi?id=20797

  • GNUmakefile.list.am:
  • JavaScriptCore.gypi:
  • icu/unicode/uscript.h: Added for UScriptCode enum.
  • wtf/unicode/ScriptCodesFromICU.h: UScriptCode enum added.
  • wtf/unicode/icu/UnicodeIcu.h:
  • wtf/unicode/brew/UnicodeBrew.h:
  • wtf/unicode/glib/UnicodeGLib.h:
  • wtf/unicode/qt4/UnicodeQt4.h:
  • wtf/unicode/wince/UnicodeWinCE.h:

2011-07-01 Jungshik Shin <jshin@chromium.org>

Reviewed by Alexey Proskuryakov.

Add uscript.h to icu/unicode to get JavaScriptGlue get built. The same
file was added to JavaScriptCore/icu/unicode.

http://bugs.webkit.org/show_bug.cgi?id=20797

  • icu/unicode/uscript.h: Added.

2011-07-01 Jungshik Shin <jshin@chromium.org>

Reviewed by Alexey Proskuryakov.

Allow generic font family settings per script code.
https://bugs.webkit.org/show_bug.cgi?id=20797

Make generic font family getters/setters accept an additional
argument (script code). It has a default value so that if an embedder
does not have/want a per-script font family setting, call-sites
don't have to be changed.
This is to prepare for fixing bug 10874 (font selection is not
language-dependent) and bug 18085.

uscript.h has been updated to that of ICU 3.6 (the version of ICU on
Mac OS 10.5)

There should be no change in layout and no new layout test
is added.

  • WebCore.exp.in:
  • icu/unicode/uscript.h: updated to ICU 4.6
  • page/Settings.cpp: (WebCore::setGenericFontFamilyMap): helper to set generic family per script (WebCore::getGenericFontFamilyForScript): helper function used by getters for fooFontFamily. (WebCore::Settings::standardFontFamily): (WebCore::Settings::setStandardFontFamily): (WebCore::Settings::fixedFontFamily): (WebCore::Settings::setFixedFontFamily): (WebCore::Settings::serifFontFamily): (WebCore::Settings::setSerifFontFamily): (WebCore::Settings::sansSerifFontFamily): (WebCore::Settings::setSansSerifFontFamily): (WebCore::Settings::cursiveFontFamily): (WebCore::Settings::setCursiveFontFamily): (WebCore::Settings::fantasyFontFamily): (WebCore::Settings::setFantasyFontFamily):
  • page/Settings.h: setter and getter for FooFontFamily have a new optional argument, scriptCode.
Location:
trunk/Source
Files:
3 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r90247 r90259  
     12011-07-01  Jungshik Shin  <jshin@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        Add ScriptCodesFromICU.h to wtf/unicode and make necessary changes in
     6        build files for ports not using ICU.
     7        Add icu/unicode/uscript.h for ports using ICU. It's taken from
     8        ICU 3.6 (the version used on Mac OS 10.5)
     9
     10        http://bugs.webkit.org/show_bug.cgi?id=20797
     11
     12        * GNUmakefile.list.am:
     13        * JavaScriptCore.gypi:
     14        * icu/unicode/uscript.h: Added for UScriptCode enum.
     15        * wtf/unicode/ScriptCodesFromICU.h: UScriptCode enum added.
     16        * wtf/unicode/icu/UnicodeIcu.h:
     17        * wtf/unicode/brew/UnicodeBrew.h:
     18        * wtf/unicode/glib/UnicodeGLib.h:
     19        * wtf/unicode/qt4/UnicodeQt4.h:
     20        * wtf/unicode/wince/UnicodeWinCE.h:
     21
    1222011-07-01  Gavin Barraclough  <barraclough@apple.com>
    223
  • trunk/Source/JavaScriptCore/GNUmakefile.list.am

    r89817 r90259  
    632632javascriptcore_sources += \
    633633        Source/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h \
     634        Source/JavaScriptCore/wtf/unicode/ScriptCodesFromICU.h \
    634635        Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h \
    635636        Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp
  • trunk/Source/JavaScriptCore/JavaScriptCore.gypi

    r89655 r90259  
    366366            'icu/unicode/unorm.h',
    367367            'icu/unicode/urename.h',
     368            'icu/unicode/uscript.h',
    368369            'icu/unicode/uset.h',
    369370            'icu/unicode/ustring.h',
     
    656657            'wtf/text/WTFString.cpp',
    657658            'wtf/unicode/CollatorDefault.cpp',
     659            'wtf/unicode/ScriptCodesFromICU.h',
    658660            'wtf/unicode/UTF8.cpp',
    659661            'wtf/unicode/UnicodeMacrosFromICU.h',
  • trunk/Source/JavaScriptCore/wtf/unicode/brew/UnicodeBrew.h

    r89655 r90259  
    2626#define UnicodeBrew_h
    2727
     28#include "ScriptCodesFromICU.h"
    2829#include "UnicodeFromICU.h"
    2930#include "UnicodeMacrosFromICU.h"
  • trunk/Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h

    r89655 r90259  
    2626#define UnicodeGLib_h
    2727
     28#include "GOwnPtr.h"
     29#include "ScriptCodesFromICU.h"
    2830#include "UnicodeMacrosFromICU.h"
    29 #include "GOwnPtr.h"
    3031
    3132#include <glib.h>
  • trunk/Source/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h

    r89655 r90259  
    2626#include <stdlib.h>
    2727#include <unicode/uchar.h>
     28#include <unicode/uscript.h>
    2829#include <unicode/ustring.h>
    2930#include <unicode/utf16.h>
  • trunk/Source/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h

    r89655 r90259  
    2424#define WTF_UNICODE_QT4_H
    2525
     26#include "ScriptCodesFromICU.h"
    2627#include "UnicodeMacrosFromICU.h"
    2728
  • trunk/Source/JavaScriptCore/wtf/unicode/wince/UnicodeWinCE.h

    r89655 r90259  
    2525#define WTF_UnicodeWinCE_h
    2626
     27#include "ScriptCodesFromICU.h"
    2728#include "UnicodeMacrosFromICU.h"
    2829
  • trunk/Source/JavaScriptGlue/ChangeLog

    r89655 r90259  
     12011-07-01  Jungshik Shin  <jshin@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        Add uscript.h to icu/unicode to get JavaScriptGlue get built. The same
     6        file was added to JavaScriptCore/icu/unicode.
     7
     8        http://bugs.webkit.org/show_bug.cgi?id=20797
     9
     10        * icu/unicode/uscript.h: Added.
     11
    1122011-06-24  Sheriff Bot  <webkit.review.bot@gmail.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r90253 r90259  
     12011-07-01  Jungshik Shin  <jshin@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        Allow generic font family settings per script code.
     6        https://bugs.webkit.org/show_bug.cgi?id=20797
     7
     8        Make generic font family getters/setters accept an additional
     9        argument (script code). It has a default value so that if an embedder
     10        does not have/want a per-script font family setting, call-sites
     11        don't have to be changed.
     12        This is to prepare for fixing bug 10874 (font selection is not
     13        language-dependent) and bug 18085.
     14
     15        uscript.h has been updated to that of ICU 3.6 (the version of ICU on
     16        Mac OS 10.5)
     17
     18        There should be no change in layout and no new layout test
     19        is added.
     20
     21        * WebCore.exp.in:
     22        * icu/unicode/uscript.h: updated to ICU 4.6
     23        * page/Settings.cpp:
     24        (WebCore::setGenericFontFamilyMap): helper to set generic family per script
     25        (WebCore::getGenericFontFamilyForScript): helper function used by getters for fooFontFamily.
     26        (WebCore::Settings::standardFontFamily):
     27        (WebCore::Settings::setStandardFontFamily):
     28        (WebCore::Settings::fixedFontFamily):
     29        (WebCore::Settings::setFixedFontFamily):
     30        (WebCore::Settings::serifFontFamily):
     31        (WebCore::Settings::setSerifFontFamily):
     32        (WebCore::Settings::sansSerifFontFamily):
     33        (WebCore::Settings::setSansSerifFontFamily):
     34        (WebCore::Settings::cursiveFontFamily):
     35        (WebCore::Settings::setCursiveFontFamily):
     36        (WebCore::Settings::fantasyFontFamily):
     37        (WebCore::Settings::setFantasyFontFamily):
     38        * page/Settings.h: setter and getter for FooFontFamily have a new optional argument, scriptCode.
     39
    1402011-07-01  Tony Chang  <tony@chromium.org>
    241
  • trunk/Source/WebCore/WebCore.exp.in

    r90173 r90259  
    859859__ZN7WebCore8Settings18setDOMPasteAllowedEb
    860860__ZN7WebCore8Settings18setDefaultFontSizeEi
    861 __ZN7WebCore8Settings18setFixedFontFamilyERKN3WTF12AtomicStringE
     861__ZN7WebCore8Settings18setFixedFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    862862__ZN7WebCore8Settings18setMinimumFontSizeEi
    863 __ZN7WebCore8Settings18setSerifFontFamilyERKN3WTF12AtomicStringE
     863__ZN7WebCore8Settings18setSerifFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    864864__ZN7WebCore8Settings18setWebAudioEnabledEb
    865865__ZN7WebCore8Settings19minDOMTimerIntervalEv
    866866__ZN7WebCore8Settings19setShowDebugBordersEb
    867 __ZN7WebCore8Settings20setCursiveFontFamilyERKN3WTF12AtomicStringE
    868 __ZN7WebCore8Settings20setFantasyFontFamilyERKN3WTF12AtomicStringE
     867__ZN7WebCore8Settings20setCursiveFontFamilyERKN3WTF12AtomicStringE11UScriptCode
     868__ZN7WebCore8Settings20setFantasyFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    869869__ZN7WebCore8Settings20setJavaScriptEnabledEb
    870870__ZN7WebCore8Settings20setXSSAuditorEnabledEb
    871871__ZN7WebCore8Settings21setShowRepaintCounterEb
    872 __ZN7WebCore8Settings21setStandardFontFamilyERKN3WTF12AtomicStringE
     872__ZN7WebCore8Settings21setStandardFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    873873__ZN7WebCore8Settings21setWebSecurityEnabledEb
    874874__ZN7WebCore8Settings22setLocalStorageEnabledEb
    875875__ZN7WebCore8Settings22setMinDOMTimerIntervalEd
    876 __ZN7WebCore8Settings22setSansSerifFontFamilyERKN3WTF12AtomicStringE
     876__ZN7WebCore8Settings22setSansSerifFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    877877__ZN7WebCore8Settings22setSessionStorageQuotaEj
    878878__ZN7WebCore8Settings22setShowsURLsInToolTipsEb
  • trunk/Source/WebCore/icu/unicode/uscript.h

    r89655 r90259  
    11/*
    22**********************************************************************
    3 *   Copyright (C) 1997-2004, International Business Machines
     3*   Copyright (C) 1997-2006, International Business Machines
    44*   Corporation and others.  All Rights Reserved.
    55**********************************************************************
     
    1818
    1919/**
    20  * Constants for Unicode script values from ScriptNames.txt .
     20 * \file
     21 * \brief C API: Unicode Script Information
     22 */
     23 
     24/**
     25 * Constants for ISO 15924 script codes.
     26 *
     27 * Many of these script codes - those from Unicode's ScriptNames.txt -
     28 * are character property values for Unicode's Script property.
     29 * See UAX #24 Script Names (http://www.unicode.org/reports/tr24/).
     30 *
     31 * Starting with ICU 3.6, constants for most ISO 15924 script codes
     32 * are included (currently excluding private-use codes Qaaa..Qabx).
     33 * For scripts for which there are codes in ISO 15924 but which are not
     34 * used in the Unicode Character Database (UCD), there are no Unicode characters
     35 * associated with those scripts.
     36 *
     37 * For example, there are no characters that have a UCD script code of
     38 * Hans or Hant. All Han ideographs have the Hani script code.
     39 * The Hans and Hant script codes are used with CLDR data.
     40 *
     41 * ISO 15924 script codes are included for use with CLDR and similar.
    2142 *
    2243 * @stable ICU 2.2
     
    3253      USCRIPT_CHEROKEE     =  6,  /* Cher */
    3354      USCRIPT_COPTIC       =  7,  /* Copt */
    34       USCRIPT_CYRILLIC     =  8,  /* Cyrl (Cyrs) */
     55      USCRIPT_CYRILLIC     =  8,  /* Cyrl */
    3556      USCRIPT_DESERET      =  9,  /* Dsrt */
    3657      USCRIPT_DEVANAGARI   = 10,  /* Deva */
    3758      USCRIPT_ETHIOPIC     = 11,  /* Ethi */
    38       USCRIPT_GEORGIAN     = 12,  /* Geor (Geon, Geoa) */
     59      USCRIPT_GEORGIAN     = 12,  /* Geor */
    3960      USCRIPT_GOTHIC       = 13,  /* Goth */
    4061      USCRIPT_GREEK        = 14,  /* Grek */
     
    4970      USCRIPT_KHMER        = 23,  /* Khmr */
    5071      USCRIPT_LAO          = 24,  /* Laoo */
    51       USCRIPT_LATIN        = 25,  /* Latn (Latf, Latg) */
     72      USCRIPT_LATIN        = 25,  /* Latn */
    5273      USCRIPT_MALAYALAM    = 26,  /* Mlym */
    5374      USCRIPT_MONGOLIAN    = 27,  /* Mong */
     
    5879      USCRIPT_RUNIC        = 32,  /* Runr */
    5980      USCRIPT_SINHALA      = 33,  /* Sinh */
    60       USCRIPT_SYRIAC       = 34,  /* Syrc (Syrj, Syrn, Syre) */
     81      USCRIPT_SYRIAC       = 34,  /* Syrc */
    6182      USCRIPT_TAMIL        = 35,  /* Taml */
    6283      USCRIPT_TELUGU       = 36,  /* Telu */
     
    7596
    7697      /* New scripts in Unicode 4 @stable ICU 2.6 */
    77       USCRIPT_BRAILLE,            /* Brai */
    78       USCRIPT_CYPRIOT,            /* Cprt */
    79       USCRIPT_LIMBU,              /* Limb */
    80       USCRIPT_LINEAR_B,           /* Linb */
    81       USCRIPT_OSMANYA,            /* Osma */
    82       USCRIPT_SHAVIAN,            /* Shaw */
    83       USCRIPT_TAI_LE,             /* Tale */
    84       USCRIPT_UGARITIC,           /* Ugar */
    85 
    86       /** New script code in Unicode 4.0.1 @draft ICU 3.0 */
    87       USCRIPT_KATAKANA_OR_HIRAGANA,/*Hrkt */
    88 
    89       USCRIPT_CODE_LIMIT
     98      USCRIPT_BRAILLE      = 46,  /* Brai */
     99      USCRIPT_CYPRIOT      = 47,  /* Cprt */
     100      USCRIPT_LIMBU        = 48,  /* Limb */
     101      USCRIPT_LINEAR_B     = 49,  /* Linb */
     102      USCRIPT_OSMANYA      = 50,  /* Osma */
     103      USCRIPT_SHAVIAN      = 51,  /* Shaw */
     104      USCRIPT_TAI_LE       = 52,  /* Tale */
     105      USCRIPT_UGARITIC     = 53,  /* Ugar */
     106
     107      /** New script code in Unicode 4.0.1 @stable ICU 3.0 */
     108      USCRIPT_KATAKANA_OR_HIRAGANA = 54,/*Hrkt */
     109     
     110#ifndef U_HIDE_DRAFT_API
     111      /* New scripts in Unicode 4.1 @draft ICU 3.4 */
     112      USCRIPT_BUGINESE      = 55, /* Bugi */
     113      USCRIPT_GLAGOLITIC    = 56, /* Glag */
     114      USCRIPT_KHAROSHTHI    = 57, /* Khar */
     115      USCRIPT_SYLOTI_NAGRI  = 58, /* Sylo */
     116      USCRIPT_NEW_TAI_LUE   = 59, /* Talu */
     117      USCRIPT_TIFINAGH      = 60, /* Tfng */
     118      USCRIPT_OLD_PERSIAN   = 61, /* Xpeo */
     119
     120      /* New script codes from ISO 15924 @draft ICU 3.6 */
     121      USCRIPT_BALINESE                      = 62, /* Bali */
     122      USCRIPT_BATAK                         = 63, /* Batk */
     123      USCRIPT_BLISSYMBOLS                   = 64, /* Blis */
     124      USCRIPT_BRAHMI                        = 65, /* Brah */
     125      USCRIPT_CHAM                          = 66, /* Cham */
     126      USCRIPT_CIRTH                         = 67, /* Cirt */
     127      USCRIPT_OLD_CHURCH_SLAVONIC_CYRILLIC  = 68, /* Cyrs */
     128      USCRIPT_DEMOTIC_EGYPTIAN              = 69, /* Egyd */
     129      USCRIPT_HIERATIC_EGYPTIAN             = 70, /* Egyh */
     130      USCRIPT_EGYPTIAN_HIEROGLYPHS          = 71, /* Egyp */
     131      USCRIPT_KHUTSURI                      = 72, /* Geok */
     132      USCRIPT_SIMPLIFIED_HAN                = 73, /* Hans */
     133      USCRIPT_TRADITIONAL_HAN               = 74, /* Hant */
     134      USCRIPT_PAHAWH_HMONG                  = 75, /* Hmng */
     135      USCRIPT_OLD_HUNGARIAN                 = 76, /* Hung */
     136      USCRIPT_HARAPPAN_INDUS                = 77, /* Inds */
     137      USCRIPT_JAVANESE                      = 78, /* Java */
     138      USCRIPT_KAYAH_LI                      = 79, /* Kali */
     139      USCRIPT_LATIN_FRAKTUR                 = 80, /* Latf */
     140      USCRIPT_LATIN_GAELIC                  = 81, /* Latg */
     141      USCRIPT_LEPCHA                        = 82, /* Lepc */
     142      USCRIPT_LINEAR_A                      = 83, /* Lina */
     143      USCRIPT_MANDAEAN                      = 84, /* Mand */
     144      USCRIPT_MAYAN_HIEROGLYPHS             = 85, /* Maya */
     145      USCRIPT_MEROITIC                      = 86, /* Mero */
     146      USCRIPT_NKO                           = 87, /* Nkoo */
     147      USCRIPT_ORKHON                        = 88, /* Orkh */
     148      USCRIPT_OLD_PERMIC                    = 89, /* Perm */
     149      USCRIPT_PHAGS_PA                      = 90, /* Phag */
     150      USCRIPT_PHOENICIAN                    = 91, /* Phnx */
     151      USCRIPT_PHONETIC_POLLARD              = 92, /* Plrd */
     152      USCRIPT_RONGORONGO                    = 93, /* Roro */
     153      USCRIPT_SARATI                        = 94, /* Sara */
     154      USCRIPT_ESTRANGELO_SYRIAC             = 95, /* Syre */
     155      USCRIPT_WESTERN_SYRIAC                = 96, /* Syrj */
     156      USCRIPT_EASTERN_SYRIAC                = 97, /* Syrn */
     157      USCRIPT_TENGWAR                       = 98, /* Teng */
     158      USCRIPT_VAI                           = 99, /* Vaii */
     159      USCRIPT_VISIBLE_SPEECH                = 100, /* Visp */
     160      USCRIPT_CUNEIFORM                     = 101,/* Xsux */
     161      USCRIPT_UNWRITTEN_LANGUAGES           = 102,/* Zxxx */
     162      USCRIPT_UNKNOWN                       = 103,/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
     163      /* Private use codes from Qaaa - Qabx are not supported*/
     164#endif /* U_HIDE_DRAFT_API */
     165      USCRIPT_CODE_LIMIT    = 104
    90166} UScriptCode;
    91167
  • trunk/Source/WebCore/page/Settings.cpp

    r89669 r90259  
    5151    for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext())
    5252        frame->document()->cachedResourceLoader()->setAutoLoadImages(page->settings()->loadsImagesAutomatically());
     53}
     54
     55static inline void setGenericFontFamilyMap(ScriptFontFamilyMap& fontMap, const AtomicString& family, UScriptCode script, Page* page)
     56{
     57    ScriptFontFamilyMap::iterator it = fontMap.find(static_cast<int>(script));
     58    if (it != fontMap.end() && it->second == family)
     59        return;
     60    fontMap.set(static_cast<int>(script), family);
     61    page->setNeedsRecalcStyleInAllFrames();
     62}
     63
     64static inline const AtomicString& getGenericFontFamilyForScript(const ScriptFontFamilyMap& fontMap, UScriptCode script)
     65{
     66    ScriptFontFamilyMap::const_iterator it = fontMap.find(static_cast<int>(script));
     67    if (it != fontMap.end())
     68        return it->second;
     69    return emptyAtom;
    5370}
    5471
     
    196213}
    197214
    198 void Settings::setStandardFontFamily(const AtomicString& standardFontFamily)
    199 {
    200     if (standardFontFamily == m_standardFontFamily)
    201         return;
    202 
    203     m_standardFontFamily = standardFontFamily;
    204     m_page->setNeedsRecalcStyleInAllFrames();
    205 }
    206 
    207 void Settings::setFixedFontFamily(const AtomicString& fixedFontFamily)
    208 {
    209     if (m_fixedFontFamily == fixedFontFamily)
    210         return;
    211        
    212     m_fixedFontFamily = fixedFontFamily;
    213     m_page->setNeedsRecalcStyleInAllFrames();
    214 }
    215 
    216 void Settings::setSerifFontFamily(const AtomicString& serifFontFamily)
    217 {
    218     if (m_serifFontFamily == serifFontFamily)
    219         return;
    220        
    221     m_serifFontFamily = serifFontFamily;
    222     m_page->setNeedsRecalcStyleInAllFrames();
    223 }
    224 
    225 void Settings::setSansSerifFontFamily(const AtomicString& sansSerifFontFamily)
    226 {
    227     if (m_sansSerifFontFamily == sansSerifFontFamily)
    228         return;
    229        
    230     m_sansSerifFontFamily = sansSerifFontFamily;
    231     m_page->setNeedsRecalcStyleInAllFrames();
    232 }
    233 
    234 void Settings::setCursiveFontFamily(const AtomicString& cursiveFontFamily)
    235 {
    236     if (m_cursiveFontFamily == cursiveFontFamily)
    237         return;
    238        
    239     m_cursiveFontFamily = cursiveFontFamily;
    240     m_page->setNeedsRecalcStyleInAllFrames();
    241 }
    242 
    243 void Settings::setFantasyFontFamily(const AtomicString& fantasyFontFamily)
    244 {
    245     if (m_fantasyFontFamily == fantasyFontFamily)
    246         return;
    247        
    248     m_fantasyFontFamily = fantasyFontFamily;
    249     m_page->setNeedsRecalcStyleInAllFrames();
     215const AtomicString& Settings::standardFontFamily(UScriptCode script) const
     216{
     217    return getGenericFontFamilyForScript(m_standardFontFamilyMap, script);
     218}
     219
     220void Settings::setStandardFontFamily(const AtomicString& family, UScriptCode script)
     221{
     222    setGenericFontFamilyMap(m_standardFontFamilyMap, family, script, m_page);
     223}
     224
     225const AtomicString& Settings::fixedFontFamily(UScriptCode script) const
     226{
     227    return getGenericFontFamilyForScript(m_fixedFontFamilyMap, script);
     228}
     229
     230void Settings::setFixedFontFamily(const AtomicString& family, UScriptCode script)
     231{
     232    setGenericFontFamilyMap(m_fixedFontFamilyMap, family, script, m_page);
     233}
     234
     235const AtomicString& Settings::serifFontFamily(UScriptCode script) const
     236{
     237    return getGenericFontFamilyForScript(m_serifFontFamilyMap, script);
     238}
     239
     240void Settings::setSerifFontFamily(const AtomicString& family, UScriptCode script)
     241{
     242     setGenericFontFamilyMap(m_serifFontFamilyMap, family, script, m_page);
     243}
     244
     245const AtomicString& Settings::sansSerifFontFamily(UScriptCode script) const
     246{
     247    return getGenericFontFamilyForScript(m_sansSerifFontFamilyMap, script);
     248}
     249
     250void Settings::setSansSerifFontFamily(const AtomicString& family, UScriptCode script)
     251{
     252    setGenericFontFamilyMap(m_sansSerifFontFamilyMap, family, script, m_page);
     253}
     254
     255const AtomicString& Settings::cursiveFontFamily(UScriptCode script) const
     256{
     257    return getGenericFontFamilyForScript(m_cursiveFontFamilyMap, script);
     258}
     259
     260void Settings::setCursiveFontFamily(const AtomicString& family, UScriptCode script)
     261{
     262    setGenericFontFamilyMap(m_cursiveFontFamilyMap, family, script, m_page);
     263}
     264
     265const AtomicString& Settings::fantasyFontFamily(UScriptCode script) const
     266{
     267    return getGenericFontFamilyForScript(m_fantasyFontFamilyMap, script);
     268}
     269
     270void Settings::setFantasyFontFamily(const AtomicString& family, UScriptCode script)
     271{
     272    setGenericFontFamilyMap(m_fantasyFontFamilyMap, family, script, m_page);
    250273}
    251274
  • trunk/Source/WebCore/page/Settings.h

    r89669 r90259  
    3232#include "KURL.h"
    3333#include "Timer.h"
     34#include <wtf/HashMap.h>
    3435#include <wtf/text/AtomicString.h>
     36#include <wtf/text/AtomicStringHash.h>
     37#include <wtf/unicode/Unicode.h>
    3538
    3639namespace WebCore {
     
    5255    };
    5356
     57    // UScriptCode uses -1 and 0 for UScriptInvalidCode and UScriptCommon.
     58    // We need to use -2 and -3 for empty value and deleted value.
     59    struct UScriptCodeHashTraits : WTF::GenericHashTraits<int> {
     60        static const bool emptyValueIsZero = false;
     61        static int emptyValue() { return -2; }
     62        static void constructDeletedValue(int& slot) { slot = -3; }
     63        static bool isDeletedValue(int value) { return value == -3; }
     64    };
     65
     66    typedef HashMap<int, AtomicString, DefaultHash<int>::Hash, UScriptCodeHashTraits> ScriptFontFamilyMap;
     67
    5468    class Settings {
    5569        WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
     
    5771        Settings(Page*);
    5872
    59         void setStandardFontFamily(const AtomicString&);
    60         const AtomicString& standardFontFamily() const { return m_standardFontFamily; }
    61 
    62         void setFixedFontFamily(const AtomicString&);
    63         const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; }
    64 
    65         void setSerifFontFamily(const AtomicString&);
    66         const AtomicString& serifFontFamily() const { return m_serifFontFamily; }
    67 
    68         void setSansSerifFontFamily(const AtomicString&);
    69         const AtomicString& sansSerifFontFamily() const { return m_sansSerifFontFamily; }
    70 
    71         void setCursiveFontFamily(const AtomicString&);
    72         const AtomicString& cursiveFontFamily() const { return m_cursiveFontFamily; }
    73 
    74         void setFantasyFontFamily(const AtomicString&);
    75         const AtomicString& fantasyFontFamily() const { return m_fantasyFontFamily; }
     73        void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     74        const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
     75
     76        void setFixedFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     77        const AtomicString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
     78
     79        void setSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     80        const AtomicString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
     81
     82        void setSansSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     83        const AtomicString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
     84
     85        void setCursiveFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     86        const AtomicString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
     87
     88        void setFantasyFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
     89        const AtomicString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
    7690
    7791        void setMinimumFontSize(int);
     
    426440        String m_localStorageDatabasePath;
    427441        KURL m_userStyleSheetLocation;
    428         AtomicString m_standardFontFamily;
    429         AtomicString m_fixedFontFamily;
    430         AtomicString m_serifFontFamily;
    431         AtomicString m_sansSerifFontFamily;
    432         AtomicString m_cursiveFontFamily;
    433         AtomicString m_fantasyFontFamily;
     442        ScriptFontFamilyMap m_standardFontFamilyMap;
     443        ScriptFontFamilyMap m_serifFontFamilyMap;
     444        ScriptFontFamilyMap m_fixedFontFamilyMap;
     445        ScriptFontFamilyMap m_sansSerifFontFamilyMap;
     446        ScriptFontFamilyMap m_cursiveFontFamilyMap;
     447        ScriptFontFamilyMap m_fantasyFontFamilyMap;
    434448        EditableLinkBehavior m_editableLinkBehavior;
    435449        TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
Note: See TracChangeset for help on using the changeset viewer.