summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/fonts/font_selector.cc
blob: 90bb107acbc5ef669ce6495ba50a7bf062b6df7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "third_party/blink/renderer/platform/fonts/font_selector.h"

#include "build/build_config.h"
#include "third_party/blink/renderer/platform/fonts/font_cache.h"
#include "third_party/blink/renderer/platform/fonts/font_description.h"
#include "third_party/blink/renderer/platform/fonts/generic_font_family_settings.h"

namespace blink {

AtomicString FontSelector::FamilyNameFromSettings(
    const GenericFontFamilySettings& settings,
    const FontDescription& font_description,
    const AtomicString& generic_family_name) {
#if defined(OS_ANDROID)
  if (font_description.GenericFamily() == FontDescription::kStandardFamily) {
    return FontCache::GetGenericFamilyNameForScript(
        FontFamilyNames::webkit_standard, font_description);
  }

  if (generic_family_name.StartsWith("-webkit-")) {
    return FontCache::GetGenericFamilyNameForScript(generic_family_name,
                                                    font_description);
  }
#else
  UScriptCode script = font_description.GetScript();
  if (font_description.GenericFamily() == FontDescription::kStandardFamily)
    return settings.Standard(script);
  if (generic_family_name == FontFamilyNames::webkit_serif)
    return settings.Serif(script);
  if (generic_family_name == FontFamilyNames::webkit_sans_serif)
    return settings.SansSerif(script);
  if (generic_family_name == FontFamilyNames::webkit_cursive)
    return settings.Cursive(script);
  if (generic_family_name == FontFamilyNames::webkit_fantasy)
    return settings.Fantasy(script);
  if (generic_family_name == FontFamilyNames::webkit_monospace)
    return settings.Fixed(script);
  if (generic_family_name == FontFamilyNames::webkit_pictograph)
    return settings.Pictograph(script);
  if (generic_family_name == FontFamilyNames::webkit_standard)
    return settings.Standard(script);
#endif
  return g_empty_atom;
}

}  // namespace blink