1/*
2 * Copyright (C) 2007 Nicholas Shanks <contact@nickshanks.com>
3 * Copyright (C) 2008, 2013 Apple Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of Apple Inc. ("Apple") nor the names of
15 * its contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include "config.h"
31#include "FontDescription.h"
32
33#include "FontCascadeDescription.h"
34#include "LocaleToScriptMapping.h"
35
36namespace WebCore {
37
38FontDescription::FontDescription()
39 : m_fontSelectionRequest { FontCascadeDescription::initialWeight(), FontCascadeDescription::initialStretch(), FontCascadeDescription::initialItalic() }
40 , m_orientation(static_cast<unsigned>(FontOrientation::Horizontal))
41 , m_nonCJKGlyphOrientation(static_cast<unsigned>(NonCJKGlyphOrientation::Mixed))
42 , m_widthVariant(static_cast<unsigned>(FontWidthVariant::RegularWidth))
43 , m_renderingMode(static_cast<unsigned>(FontRenderingMode::Normal))
44 , m_textRendering(static_cast<unsigned>(TextRenderingMode::AutoTextRendering))
45 , m_script(USCRIPT_COMMON)
46 , m_fontSynthesis(FontSynthesisWeight | FontSynthesisStyle | FontSynthesisSmallCaps)
47 , m_variantCommonLigatures(static_cast<unsigned>(FontVariantLigatures::Normal))
48 , m_variantDiscretionaryLigatures(static_cast<unsigned>(FontVariantLigatures::Normal))
49 , m_variantHistoricalLigatures(static_cast<unsigned>(FontVariantLigatures::Normal))
50 , m_variantContextualAlternates(static_cast<unsigned>(FontVariantLigatures::Normal))
51 , m_variantPosition(static_cast<unsigned>(FontVariantPosition::Normal))
52 , m_variantCaps(static_cast<unsigned>(FontVariantCaps::Normal))
53 , m_variantNumericFigure(static_cast<unsigned>(FontVariantNumericFigure::Normal))
54 , m_variantNumericSpacing(static_cast<unsigned>(FontVariantNumericSpacing::Normal))
55 , m_variantNumericFraction(static_cast<unsigned>(FontVariantNumericFraction::Normal))
56 , m_variantNumericOrdinal(static_cast<unsigned>(FontVariantNumericOrdinal::Normal))
57 , m_variantNumericSlashedZero(static_cast<unsigned>(FontVariantNumericSlashedZero::Normal))
58 , m_variantAlternates(static_cast<unsigned>(FontVariantAlternates::Normal))
59 , m_variantEastAsianVariant(static_cast<unsigned>(FontVariantEastAsianVariant::Normal))
60 , m_variantEastAsianWidth(static_cast<unsigned>(FontVariantEastAsianWidth::Normal))
61 , m_variantEastAsianRuby(static_cast<unsigned>(FontVariantEastAsianRuby::Normal))
62 , m_opticalSizing(static_cast<unsigned>(FontOpticalSizing::Enabled))
63 , m_fontStyleAxis(FontCascadeDescription::initialFontStyleAxis() == FontStyleAxis::ital)
64 , m_shouldAllowUserInstalledFonts(static_cast<unsigned>(AllowUserInstalledFonts::No))
65{
66}
67
68void FontDescription::setLocale(const AtomicString& locale)
69{
70 m_locale = locale;
71 m_script = localeToScriptCodeForFontSelection(m_locale);
72}
73
74#if !PLATFORM(COCOA)
75AtomicString FontDescription::platformResolveGenericFamily(UScriptCode, const AtomicString&, const AtomicString&)
76{
77 return nullAtom();
78}
79#endif
80
81} // namespace WebCore
82