Changeset 49837 in webkit


Ignore:
Timestamp:
Oct 19, 2009 9:37:09 PM (15 years ago)
Author:
abarth@webkit.org
Message:

2009-10-19 Jungshik Shin <jshin@chromium.org>

Reviewed by Eric Seidel.

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.

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

  • WebCore.base.exp:
  • page/Settings.cpp:
  • page/Settings.h:
  • platform/text/UScriptCode.h: Added. This is for ports that do not use ICU. the part of ICU's common/unicode/uscript.h that defines script code enum was copied. To keep enums compatible with those in ICU, we don't generate the list out of Scripts.txt of the Unicode Data base or CLDR's data.
Location:
trunk/WebCore
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r49836 r49837  
     12009-10-19  Jungshik Shin  <jshin@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=20797
     6
     7        Make generic font family getters/setters accept an additional
     8        argument (script code). It has a default value so that if an embedder
     9        does not have/want a per-script font family setting, call-sites
     10        don't have to be changed.
     11        This is to prepare for fixing bug 10874 (font selection is not
     12        language-dependent) and bug 18085.
     13
     14        There should be no change in layout and no new layout test
     15        is added.
     16
     17        * WebCore.base.exp:
     18        * page/Settings.cpp:
     19        * page/Settings.h:
     20        * platform/text/UScriptCode.h: Added. This is for ports that
     21          do not use ICU. the part of ICU's common/unicode/uscript.h
     22          that defines script code enum was copied. To keep enums compatible
     23          with those in ICU, we don't generate the list out of Scripts.txt
     24          of the Unicode Data base or CLDR's data.
     25
    1262009-10-19  Evan Stade  <estade@chromium.org>
    227
  • trunk/WebCore/page/Settings.cpp

    r49769 r49837  
    4343    for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext())
    4444        frame->setNeedsReapplyStyles();
     45}
     46
     47static inline void setGenericFontFamilyMap(ScriptFontFamilyMap& fontMap, const AtomicString& family, UScriptCode script, Page* page)
     48{
     49    if (fontMap.set(static_cast<int>(script), family).second)
     50        setNeedsReapplyStylesInAllFrames(page);
     51}
     52
     53static inline const AtomicString& getGenericFontFamilyForScript(const ScriptFontFamilyMap& fontMap, UScriptCode script)
     54{
     55    ScriptFontFamilyMap::const_iterator it = fontMap.find(static_cast<int>(script));
     56    if (it != fontMap.end())
     57        return it->second;
     58    return emptyAtom;
    4559}
    4660
     
    130144}
    131145
    132 void Settings::setStandardFontFamily(const AtomicString& standardFontFamily)
    133 {
    134     if (standardFontFamily == m_standardFontFamily)
    135         return;
    136 
    137     m_standardFontFamily = standardFontFamily;
    138     setNeedsReapplyStylesInAllFrames(m_page);
    139 }
    140 
    141 void Settings::setFixedFontFamily(const AtomicString& fixedFontFamily)
    142 {
    143     if (m_fixedFontFamily == fixedFontFamily)
    144         return;
    145        
    146     m_fixedFontFamily = fixedFontFamily;
    147     setNeedsReapplyStylesInAllFrames(m_page);
    148 }
    149 
    150 void Settings::setSerifFontFamily(const AtomicString& serifFontFamily)
    151 {
    152     if (m_serifFontFamily == serifFontFamily)
    153         return;
    154        
    155     m_serifFontFamily = serifFontFamily;
    156     setNeedsReapplyStylesInAllFrames(m_page);
    157 }
    158 
    159 void Settings::setSansSerifFontFamily(const AtomicString& sansSerifFontFamily)
    160 {
    161     if (m_sansSerifFontFamily == sansSerifFontFamily)
    162         return;
    163        
    164     m_sansSerifFontFamily = sansSerifFontFamily;
    165     setNeedsReapplyStylesInAllFrames(m_page);
    166 }
    167 
    168 void Settings::setCursiveFontFamily(const AtomicString& cursiveFontFamily)
    169 {
    170     if (m_cursiveFontFamily == cursiveFontFamily)
    171         return;
    172        
    173     m_cursiveFontFamily = cursiveFontFamily;
    174     setNeedsReapplyStylesInAllFrames(m_page);
    175 }
    176 
    177 void Settings::setFantasyFontFamily(const AtomicString& fantasyFontFamily)
    178 {
    179     if (m_fantasyFontFamily == fantasyFontFamily)
    180         return;
    181        
    182     m_fantasyFontFamily = fantasyFontFamily;
    183     setNeedsReapplyStylesInAllFrames(m_page);
     146const AtomicString& Settings::standardFontFamily(UScriptCode script) const
     147{
     148    return getGenericFontFamilyForScript(m_standardFontFamilyMap, script);
     149}
     150
     151void Settings::setStandardFontFamily(const AtomicString& family, UScriptCode script)
     152{
     153    setGenericFontFamilyMap(m_standardFontFamilyMap, family, script, m_page);
     154}
     155
     156const AtomicString& Settings::fixedFontFamily(UScriptCode script) const
     157{
     158    return getGenericFontFamilyForScript(m_fixedFontFamilyMap, script);
     159}
     160
     161void Settings::setFixedFontFamily(const AtomicString& family, UScriptCode script)
     162{
     163    setGenericFontFamilyMap(m_fixedFontFamilyMap, family, script, m_page);
     164}
     165
     166const AtomicString& Settings::serifFontFamily(UScriptCode script) const
     167{
     168    return getGenericFontFamilyForScript(m_serifFontFamilyMap, script);
     169}
     170
     171void Settings::setSerifFontFamily(const AtomicString& family, UScriptCode script)
     172{
     173    setGenericFontFamilyMap(m_serifFontFamilyMap, family, script, m_page);
     174}
     175
     176const AtomicString& Settings::sansSerifFontFamily(UScriptCode script) const {
     177    return getGenericFontFamilyForScript(m_sansSerifFontFamilyMap, script);
     178}
     179
     180void Settings::setSansSerifFontFamily(const AtomicString& family, UScriptCode script)
     181{
     182    setGenericFontFamilyMap(m_sansSerifFontFamilyMap, family, script, m_page);
     183}
     184
     185const AtomicString& Settings::cursiveFontFamily(UScriptCode script) const
     186{
     187    return getGenericFontFamilyForScript(m_cursiveFontFamilyMap, script);
     188}
     189
     190void Settings::setCursiveFontFamily(const AtomicString& family, UScriptCode script)
     191{
     192    setGenericFontFamilyMap(m_cursiveFontFamilyMap, family, script, m_page);
     193}
     194
     195const AtomicString& Settings::fantasyFontFamily(UScriptCode script) const
     196{
     197    return getGenericFontFamilyForScript(m_fantasyFontFamilyMap, script);
     198}
     199
     200void Settings::setFantasyFontFamily(const AtomicString& family, UScriptCode script)
     201{
     202    setGenericFontFamilyMap(m_fantasyFontFamilyMap, family, script, m_page);
    184203}
    185204
  • trunk/WebCore/page/Settings.h

    r49769 r49837  
    2929
    3030#include "AtomicString.h"
     31#include "AtomicStringHash.h"
    3132#include "FontRenderingMode.h"
    3233#include "KURL.h"
     34#if USE(ICU_UNICODE)
     35#include "unicode/uscript.h"
     36#else
     37#include "UScriptCode.h"
     38#endif
     39#include <wtf/HashMap.h>
    3340
    3441namespace WebCore {
     
    6572    enum EditingBehavior { EditingMacBehavior, EditingWindowsBehavior };
    6673
     74    typedef HashMap<int, AtomicString> ScriptFontFamilyMap;
     75
    6776    class Settings {
    6877    public:
    6978        Settings(Page*);
    7079
    71         void setStandardFontFamily(const AtomicString&);
    72         const AtomicString& standardFontFamily() const { return m_standardFontFamily; }
    73 
    74         void setFixedFontFamily(const AtomicString&);
    75         const AtomicString& fixedFontFamily() const { return m_fixedFontFamily; }
    76 
    77         void setSerifFontFamily(const AtomicString&);
    78         const AtomicString& serifFontFamily() const { return m_serifFontFamily; }
    79 
    80         void setSansSerifFontFamily(const AtomicString&);
    81         const AtomicString& sansSerifFontFamily() const { return m_sansSerifFontFamily; }
    82 
    83         void setCursiveFontFamily(const AtomicString&);
    84         const AtomicString& cursiveFontFamily() const { return m_cursiveFontFamily; }
    85 
    86         void setFantasyFontFamily(const AtomicString&);
    87         const AtomicString& fantasyFontFamily() const { return m_fantasyFontFamily; }
     80        void setStandardFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     81        const AtomicString& standardFontFamily(UScriptCode script=USCRIPT_COMMON) const;
     82
     83        void setFixedFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     84        const AtomicString& fixedFontFamily(UScriptCode script=USCRIPT_COMMON) const;
     85
     86        void setSerifFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     87        const AtomicString& serifFontFamily(UScriptCode script=USCRIPT_COMMON) const;
     88
     89        void setSansSerifFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     90        const AtomicString& sansSerifFontFamily(UScriptCode script=USCRIPT_COMMON) const;
     91
     92        void setCursiveFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     93        const AtomicString& cursiveFontFamily(UScriptCode script=USCRIPT_COMMON) const;
     94
     95        void setFantasyFontFamily(const AtomicString&, UScriptCode script=USCRIPT_COMMON);
     96        const AtomicString& fantasyFontFamily(UScriptCode script=USCRIPT_COMMON) const;
    8897
    8998        void setMinimumFontSize(int);
     
    289298        String m_localStorageDatabasePath;
    290299        KURL m_userStyleSheetLocation;
    291         AtomicString m_standardFontFamily;
    292         AtomicString m_fixedFontFamily;
    293         AtomicString m_serifFontFamily;
    294         AtomicString m_sansSerifFontFamily;
    295         AtomicString m_cursiveFontFamily;
    296         AtomicString m_fantasyFontFamily;
     300
     301        ScriptFontFamilyMap m_fixedFontFamilyMap;
     302        ScriptFontFamilyMap m_serifFontFamilyMap;
     303        ScriptFontFamilyMap m_sansSerifFontFamilyMap;
     304        ScriptFontFamilyMap m_cursiveFontFamilyMap;
     305        ScriptFontFamilyMap m_fantasyFontFamilyMap;
     306        ScriptFontFamilyMap m_standardFontFamilyMap;
     307
    297308        EditableLinkBehavior m_editableLinkBehavior;
    298309        TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
Note: See TracChangeset for help on using the changeset viewer.