Changeset 89594 in webkit


Ignore:
Timestamp:
Jun 23, 2011 11:23:32 AM (13 years ago)
Author:
jshin@chromium.org
Message:

2011-06-23 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-06-23 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-06-23 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

    r89581 r89594  
     12011-06-23  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-06-23  Ryuan Choi  <ryuan.choi@samsung.com>
    223
  • trunk/Source/JavaScriptCore/GNUmakefile.list.am

    r89069 r89594  
    631631javascriptcore_sources += \
    632632        Source/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h \
     633        Source/JavaScriptCore/wtf/unicode/ScriptCodesFromICU.h \
    633634        Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h \
    634635        Source/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp
  • trunk/Source/JavaScriptCore/JavaScriptCore.gypi

    r89069 r89594  
    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

    r69723 r89594  
    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

    r55158 r89594  
    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

    r50977 r89594  
    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

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

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

    r86598 r89594  
     12011-06-23  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-05-16  David Kilzer  <ddkilzer@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r89592 r89594  
     12011-06-23  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-06-23  Dan Bernstein  <mitz@apple.com>
    241
  • trunk/Source/WebCore/WebCore.exp.in

    r89534 r89594  
    857857__ZN7WebCore8Settings18setDOMPasteAllowedEb
    858858__ZN7WebCore8Settings18setDefaultFontSizeEi
    859 __ZN7WebCore8Settings18setFixedFontFamilyERKN3WTF12AtomicStringE
     859__ZN7WebCore8Settings18setFixedFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    860860__ZN7WebCore8Settings18setMinimumFontSizeEi
    861 __ZN7WebCore8Settings18setSerifFontFamilyERKN3WTF12AtomicStringE
     861__ZN7WebCore8Settings18setSerifFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    862862__ZN7WebCore8Settings18setWebAudioEnabledEb
    863863__ZN7WebCore8Settings19minDOMTimerIntervalEv
    864864__ZN7WebCore8Settings19setShowDebugBordersEb
    865 __ZN7WebCore8Settings20setCursiveFontFamilyERKN3WTF12AtomicStringE
    866 __ZN7WebCore8Settings20setFantasyFontFamilyERKN3WTF12AtomicStringE
     865__ZN7WebCore8Settings20setCursiveFontFamilyERKN3WTF12AtomicStringE11UScriptCode
     866__ZN7WebCore8Settings20setFantasyFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    867867__ZN7WebCore8Settings20setJavaScriptEnabledEb
    868868__ZN7WebCore8Settings20setXSSAuditorEnabledEb
    869869__ZN7WebCore8Settings21setShowRepaintCounterEb
    870 __ZN7WebCore8Settings21setStandardFontFamilyERKN3WTF12AtomicStringE
     870__ZN7WebCore8Settings21setStandardFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    871871__ZN7WebCore8Settings21setWebSecurityEnabledEb
    872872__ZN7WebCore8Settings22setLocalStorageEnabledEb
    873873__ZN7WebCore8Settings22setMinDOMTimerIntervalEd
    874 __ZN7WebCore8Settings22setSansSerifFontFamilyERKN3WTF12AtomicStringE
     874__ZN7WebCore8Settings22setSansSerifFontFamilyERKN3WTF12AtomicStringE11UScriptCode
    875875__ZN7WebCore8Settings22setSessionStorageQuotaEj
    876876__ZN7WebCore8Settings22setShowsURLsInToolTipsEb
  • trunk/Source/WebCore/icu/unicode/uscript.h

    r31638 r89594  
    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

    r89453 r89594  
    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    fontMap.set(static_cast<int>(script), family);
     58    page->setNeedsRecalcStyleInAllFrames();
     59}
     60
     61static inline const AtomicString& getGenericFontFamilyForScript(const ScriptFontFamilyMap& fontMap, UScriptCode script)
     62{
     63    ScriptFontFamilyMap::const_iterator it = fontMap.find(static_cast<int>(script));
     64    if (it != fontMap.end())
     65        return it->second;
     66    return emptyAtom;
    5367}
    5468
     
    193207}
    194208
    195 void Settings::setStandardFontFamily(const AtomicString& standardFontFamily)
    196 {
    197     if (standardFontFamily == m_standardFontFamily)
    198         return;
    199 
    200     m_standardFontFamily = standardFontFamily;
    201     m_page->setNeedsRecalcStyleInAllFrames();
    202 }
    203 
    204 void Settings::setFixedFontFamily(const AtomicString& fixedFontFamily)
    205 {
    206     if (m_fixedFontFamily == fixedFontFamily)
    207         return;
    208        
    209     m_fixedFontFamily = fixedFontFamily;
    210     m_page->setNeedsRecalcStyleInAllFrames();
    211 }
    212 
    213 void Settings::setSerifFontFamily(const AtomicString& serifFontFamily)
    214 {
    215     if (m_serifFontFamily == serifFontFamily)
    216         return;
    217        
    218     m_serifFontFamily = serifFontFamily;
    219     m_page->setNeedsRecalcStyleInAllFrames();
    220 }
    221 
    222 void Settings::setSansSerifFontFamily(const AtomicString& sansSerifFontFamily)
    223 {
    224     if (m_sansSerifFontFamily == sansSerifFontFamily)
    225         return;
    226        
    227     m_sansSerifFontFamily = sansSerifFontFamily;
    228     m_page->setNeedsRecalcStyleInAllFrames();
    229 }
    230 
    231 void Settings::setCursiveFontFamily(const AtomicString& cursiveFontFamily)
    232 {
    233     if (m_cursiveFontFamily == cursiveFontFamily)
    234         return;
    235        
    236     m_cursiveFontFamily = cursiveFontFamily;
    237     m_page->setNeedsRecalcStyleInAllFrames();
    238 }
    239 
    240 void Settings::setFantasyFontFamily(const AtomicString& fantasyFontFamily)
    241 {
    242     if (m_fantasyFontFamily == fantasyFontFamily)
    243         return;
    244        
    245     m_fantasyFontFamily = fantasyFontFamily;
    246     m_page->setNeedsRecalcStyleInAllFrames();
     209const AtomicString& Settings::standardFontFamily(UScriptCode script) const
     210{
     211    return getGenericFontFamilyForScript(m_standardFontFamilyMap, script);
     212}
     213
     214void Settings::setStandardFontFamily(const AtomicString& family, UScriptCode script)
     215{
     216    setGenericFontFamilyMap(m_standardFontFamilyMap, family, script, m_page);
     217}
     218
     219const AtomicString& Settings::fixedFontFamily(UScriptCode script) const
     220{
     221    return getGenericFontFamilyForScript(m_fixedFontFamilyMap, script);
     222}
     223
     224void Settings::setFixedFontFamily(const AtomicString& family, UScriptCode script)
     225{
     226    setGenericFontFamilyMap(m_fixedFontFamilyMap, family, script, m_page);
     227}
     228
     229const AtomicString& Settings::serifFontFamily(UScriptCode script) const
     230{
     231    return getGenericFontFamilyForScript(m_serifFontFamilyMap, script);
     232}
     233
     234void Settings::setSerifFontFamily(const AtomicString& family, UScriptCode script)
     235{
     236     setGenericFontFamilyMap(m_serifFontFamilyMap, family, script, m_page);
     237}
     238
     239const AtomicString& Settings::sansSerifFontFamily(UScriptCode script) const
     240{
     241    return getGenericFontFamilyForScript(m_sansSerifFontFamilyMap, script);
     242}
     243
     244void Settings::setSansSerifFontFamily(const AtomicString& family, UScriptCode script)
     245{
     246    setGenericFontFamilyMap(m_sansSerifFontFamilyMap, family, script, m_page);
     247}
     248
     249const AtomicString& Settings::cursiveFontFamily(UScriptCode script) const
     250{
     251    return getGenericFontFamilyForScript(m_cursiveFontFamilyMap, script);
     252}
     253
     254void Settings::setCursiveFontFamily(const AtomicString& family, UScriptCode script)
     255{
     256    setGenericFontFamilyMap(m_cursiveFontFamilyMap, family, script, m_page);
     257}
     258
     259const AtomicString& Settings::fantasyFontFamily(UScriptCode script) const
     260{
     261    return getGenericFontFamilyForScript(m_fantasyFontFamilyMap, script);
     262}
     263
     264void Settings::setFantasyFontFamily(const AtomicString& family, UScriptCode script)
     265{
     266    setGenericFontFamilyMap(m_fantasyFontFamilyMap, family, script, m_page);
    247267}
    248268
  • trunk/Source/WebCore/page/Settings.h

    r89522 r89594  
    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);
     
    422436        String m_localStorageDatabasePath;
    423437        KURL m_userStyleSheetLocation;
    424         AtomicString m_standardFontFamily;
    425         AtomicString m_fixedFontFamily;
    426         AtomicString m_serifFontFamily;
    427         AtomicString m_sansSerifFontFamily;
    428         AtomicString m_cursiveFontFamily;
    429         AtomicString m_fantasyFontFamily;
     438        ScriptFontFamilyMap m_standardFontFamilyMap;
     439        ScriptFontFamilyMap m_serifFontFamilyMap;
     440        ScriptFontFamilyMap m_fixedFontFamilyMap;
     441        ScriptFontFamilyMap m_sansSerifFontFamilyMap;
     442        ScriptFontFamilyMap m_cursiveFontFamilyMap;
     443        ScriptFontFamilyMap m_fantasyFontFamilyMap;
    430444        EditableLinkBehavior m_editableLinkBehavior;
    431445        TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
Note: See TracChangeset for help on using the changeset viewer.