File: chrome_typography.cc

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (87 lines) | stat: -rw-r--r-- 3,580 bytes parent folder | download | duplicates (6)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ui/views/chrome_typography.h"

#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#include "components/omnibox/browser/omnibox_field_trial.h"
#include "ui/base/default_style.h"
#include "ui/base/pointer/touch_ui_controller.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/font.h"
#include "ui/gfx/platform_font.h"

int GetFontSizeDeltaBoundedByAvailableHeight(int available_height,
                                             int desired_font_size) {
  int size_delta =
      gfx::PlatformFont::GetFontSizeDeltaIgnoringUserOrLocaleSettings(
          desired_font_size);
  ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
  gfx::FontList base_font = bundle.GetFontListWithDelta(size_delta);

  // Shrink large fonts to ensure they fit. Default fonts should fit already.
  // TODO(tapted): Move DeriveWithHeightUpperBound() to ui::ResourceBundle to
  // take advantage of the font cache.
  int user_or_locale_delta =
      size_delta + gfx::PlatformFont::kDefaultBaseFontSize - desired_font_size;
  base_font = base_font.DeriveWithHeightUpperBound(available_height);

  return base_font.GetFontSize() - gfx::PlatformFont::kDefaultBaseFontSize +
         user_or_locale_delta;
}

void ApplyCommonFontStyles(int context,
                           int style,
                           ui::ResourceBundle::FontDetails& details) {
  switch (context) {
    case CONTEXT_TOOLBAR_BUTTON: {
      int height = ui::TouchUiController::Get()->touch_ui() ? 22 : 17;
      // We only want the font size to be constrained by available height, and
      // don't actually have a target font size, so we just need to supply any
      // sufficiently-large value for the second argument here. |height| will
      // always be sufficiently large, since dips are smaller than pts.
      details.size_delta =
          GetFontSizeDeltaBoundedByAvailableHeight(height, height);
      break;
    }
    case CONTEXT_TAB_COUNTER: {
      details.size_delta =
          gfx::PlatformFont::GetFontSizeDeltaIgnoringUserOrLocaleSettings(14);
      details.weight = gfx::Font::Weight::BOLD;
      break;
    }
    case CONTEXT_DEEMPHASIZED:
    case CONTEXT_OMNIBOX_PRIMARY:
    case CONTEXT_OMNIBOX_POPUP:
    case CONTEXT_OMNIBOX_SECTION_HEADER:
    case CONTEXT_OMNIBOX_POPUP_ROW_CHIP: {
      const bool is_touch_ui = ui::TouchUiController::Get()->touch_ui();
      int desired_font_size = is_touch_ui ? 15 : 14;
      const int omnibox_primary_delta =
          GetFontSizeDeltaBoundedByAvailableHeight(
              LocationBarView::GetAvailableTextHeight(), desired_font_size);
      details.size_delta = omnibox_primary_delta;
      if (context == CONTEXT_DEEMPHASIZED) {
        --details.size_delta;
      } else if (context == CONTEXT_OMNIBOX_POPUP_ROW_CHIP) {
        details.size_delta -= 2;
      }
      break;
    }
    case CONTEXT_IPH_BUBBLE_TITLE:
      details.size_delta =
          gfx::PlatformFont::GetFontSizeDeltaIgnoringUserOrLocaleSettings(18);
      details.weight = gfx::Font::Weight::MEDIUM;
      break;
    case CONTEXT_IPH_BUBBLE_BODY:
      details.size_delta =
          gfx::PlatformFont::GetFontSizeDeltaIgnoringUserOrLocaleSettings(14);
      break;
    case CONTEXT_SIDE_PANEL_TITLE:
    case CONTEXT_TOAST_BODY_TEXT:
      details.size_delta =
          gfx::PlatformFont::GetFontSizeDeltaIgnoringUserOrLocaleSettings(13);
      break;
  }
}