typography.dart 54.3 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'package:flutter/foundation.dart';
6
import 'package:flutter/painting.dart';
7 8

import 'colors.dart';
9
import 'text_theme.dart';
10

11 12 13 14
/// A characterization of the of a [TextTheme]'s glyphs that is used to define
/// its localized [TextStyle] geometry for [ThemeData.textTheme].
///
/// The script category defines the overall geometry of a [TextTheme] for
Dan Field's avatar
Dan Field committed
15
/// the [Typography.geometryThemeFor] method in terms of the
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
/// three language categories defined in <https://material.io/go/design-typography>.
///
/// Generally speaking, font sizes for [ScriptCategory.tall] and
/// [ScriptCategory.dense] scripts - for text styles that are smaller than the
/// title style - are one unit larger than they are for
/// [ScriptCategory.englishLike] scripts.
enum ScriptCategory {
  /// The languages of Western, Central, and Eastern Europe and much of
  /// Africa are typically written in the Latin alphabet. Vietnamese is a
  /// notable exception in that, while it uses a localized form of the Latin
  /// writing system, its accented glyphs can be much taller than those
  /// found in Western European languages. The Greek and Cyrillic writing
  /// systems are very similar to Latin.
  englishLike,

  /// Language scripts that require extra line height to accommodate larger
  /// glyphs, including Chinese, Japanese, and Korean.
  dense,

  /// Language scripts that require extra line height to accommodate
  /// larger glyphs, including South and Southeast Asian and
  /// Middle-Eastern languages, like Arabic, Hindi, Telugu, Thai, and
  /// Vietnamese.
  tall,
}
41

42
/// The color and geometry [TextTheme]s for Material apps.
43
///
44 45 46 47 48 49
/// The text theme provided by the overall [Theme],
/// [ThemeData.textTheme], is based on the current locale's
/// [MaterialLocalizations.scriptCategory] and is created
/// by merging a color text theme - [black] for
/// [Brightness.light] themes and [white] for [Brightness.dark]
/// themes -  and a geometry text theme, one of [englishLike], [dense],
50
/// or [tall], depending on the locale.
51
///
52 53
/// To lookup the localized text theme use
/// `Theme.of(context).textTheme`.
54
///
55
/// The color text themes are [blackMountainView], [whiteMountainView],
56
/// [blackCupertino], and [whiteCupertino]. The Mountain View theme [TextStyle]s
57 58 59 60
/// are based on the Roboto fonts as used on Android. The Cupertino themes are
/// based on the [San Francisco
/// font](https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/)
/// fonts as used by Apple on iOS.
61
///
62 63 64 65 66
/// Two sets of geometry themes are provided: 2014 and 2018. The 2014 themes
/// correspond to the original version of the Material Design spec and are
/// the defaults. The 2018 themes correspond the second iteration of the
/// specification and feature different font sizes, font weights, and
/// letter spacing values.
67
///
68 69 70 71
/// By default, [ThemeData.typography] is `Typography.material2014(platform:
/// platform)` which uses [englishLike2014], [dense2014] and [tall2014]. To use
/// the 2018 text theme geometries, specify a value using the [material2018]
/// constructor:
72 73
///
/// ```dart
74
/// typography: Typography.material2018(platform: platform)
75
/// ```
76
///
77 78
/// See also:
///
79
///  * <https://material.io/design/typography/>
80
@immutable
81
class Typography with Diagnosticable {
82
  /// Creates a typography instance.
83
  ///
84
  /// This constructor is identical to [Typography.material2018].
85
  factory Typography({
86 87 88 89 90 91
    TargetPlatform? platform,
    TextTheme? black,
    TextTheme? white,
    TextTheme? englishLike,
    TextTheme? dense,
    TextTheme? tall,
92
  }) = Typography.material2018;
93 94 95

  /// Creates a typography instance using material design's 2014 defaults.
  ///
96 97 98
  /// If [platform] is [TargetPlatform.iOS] or [TargetPlatform.macOS], the
  /// default values for [black] and [white] are [blackCupertino] and
  /// [whiteCupertino] respectively. Otherwise they are [blackMountainView] and
99
  /// [whiteMountainView]. If [platform] is null then both [black] and [white]
100
  /// must be specified.
101
  ///
102 103
  /// The default values for [englishLike], [dense], and [tall] are
  /// [englishLike2014], [dense2014], and [tall2014].
104
  factory Typography.material2014({
105 106 107 108 109 110
    TargetPlatform? platform = TargetPlatform.android,
    TextTheme? black,
    TextTheme? white,
    TextTheme? englishLike,
    TextTheme? dense,
    TextTheme? tall,
111
  }) {
112
    assert(platform != null || (black != null && white != null));
113 114 115 116 117 118 119 120 121 122 123 124 125 126
    return Typography._withPlatform(
      platform,
      black, white,
      englishLike ?? englishLike2014,
      dense ?? dense2014,
      tall ?? tall2014,
    );
  }

  /// Creates a typography instance using material design's 2018 defaults.
  ///
  /// If [platform] is [TargetPlatform.iOS] or [TargetPlatform.macOS], the
  /// default values for [black] and [white] are [blackCupertino] and
  /// [whiteCupertino] respectively. Otherwise they are [blackMountainView] and
127
  /// [whiteMountainView]. If [platform] is null then both [black] and [white]
128 129 130 131 132
  /// must be specified.
  ///
  /// The default values for [englishLike], [dense], and [tall] are
  /// [englishLike2018], [dense2018], and [tall2018].
  factory Typography.material2018({
133 134 135 136 137 138
    TargetPlatform? platform = TargetPlatform.android,
    TextTheme? black,
    TextTheme? white,
    TextTheme? englishLike,
    TextTheme? dense,
    TextTheme? tall,
139 140 141 142 143 144 145 146 147 148 149 150
  }) {
    assert(platform != null || (black != null && white != null));
    return Typography._withPlatform(
      platform,
      black, white,
      englishLike ?? englishLike2018,
      dense ?? dense2018,
      tall ?? tall2018,
    );
  }

  factory Typography._withPlatform(
151 152 153
    TargetPlatform? platform,
    TextTheme? black,
    TextTheme? white,
154 155 156 157 158 159 160 161
    TextTheme englishLike,
    TextTheme dense,
    TextTheme tall,
  ) {
    assert(platform != null || (black != null && white != null));
    assert(englishLike != null);
    assert(dense != null);
    assert(tall != null);
162 163 164 165 166 167 168 169 170
    switch (platform) {
      case TargetPlatform.iOS:
        black ??= blackCupertino;
        white ??= whiteCupertino;
        break;
      case TargetPlatform.android:
      case TargetPlatform.fuchsia:
        black ??= blackMountainView;
        white ??= whiteMountainView;
171 172 173 174 175
        break;
      case TargetPlatform.windows:
        black ??= blackRedmond;
        white ??= whiteRedmond;
        break;
176 177 178 179
      case TargetPlatform.macOS:
        black ??= blackRedwoodCity;
        white ??= whiteRedwoodCity;
        break;
180 181 182 183
      case TargetPlatform.linux:
        black ??= blackHelsinki;
        white ??= whiteHelsinki;
        break;
184 185
      case null:
        break;
186
    }
187
    return Typography._(black!, white!, englishLike, dense, tall);
188
  }
189

190 191 192 193 194 195
  const Typography._(this.black, this.white, this.englishLike, this.dense, this.tall)
    : assert(black != null),
      assert(white != null),
      assert(englishLike != null),
      assert(dense != null),
      assert(tall != null);
196

197
  /// A material design text theme with dark glyphs.
198
  ///
199 200
  /// This [TextTheme] should provide color but not geometry (font size,
  /// weight, etc). A text theme's geometry depends on the locale. To look
Michael Goderbauer's avatar
Michael Goderbauer committed
201
  /// up a localized [TextTheme], use the overall [Theme], for example:
202
  /// `Theme.of(context).textTheme`.
203
  ///
204 205 206
  /// The [englishLike], [dense], and [tall] text theme's provide locale-specific
  /// geometry.
  final TextTheme black;
207

208
  /// A material design text theme with light glyphs.
209
  ///
210 211
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  /// A text theme's geometry depends on the locale. To look up a localized
Ben Konyi's avatar
Ben Konyi committed
212
  /// [TextTheme], use the overall [Theme], for example:
213
  /// `Theme.of(context).textTheme`.
214
  ///
215 216 217 218 219 220
  /// The [englishLike], [dense], and [tall] text theme's provide locale-specific
  /// geometry.
  final TextTheme white;

  /// Defines text geometry for [ScriptCategory.englishLike] scripts, such as
  /// English, French, Russian, etc.
221
  ///
222 223 224
  /// This text theme is merged with either [black] or [white], depending
  /// on the overall [ThemeData.brightness], when the current locale's
  /// [MaterialLocalizations.scriptCategory] is [ScriptCategory.englishLike].
225
  ///
Kate Lovett's avatar
Kate Lovett committed
226
  /// To look up a localized [TextTheme], use the overall [Theme], for
227 228 229 230 231
  /// example: `Theme.of(context).textTheme`.
  final TextTheme englishLike;

  /// Defines text geometry for dense scripts, such as Chinese, Japanese
  /// and Korean.
232
  ///
233 234 235
  /// This text theme is merged with either [black] or [white], depending
  /// on the overall [ThemeData.brightness], when the current locale's
  /// [MaterialLocalizations.scriptCategory] is [ScriptCategory.dense].
236
  ///
Kate Lovett's avatar
Kate Lovett committed
237
  /// To look up a localized [TextTheme], use the overall [Theme], for
238 239 240 241
  /// example: `Theme.of(context).textTheme`.
  final TextTheme dense;

  /// Defines text geometry for tall scripts, such as Farsi, Hindi, and Thai.
242
  ///
243 244 245
  /// This text theme is merged with either [black] or [white], depending
  /// on the overall [ThemeData.brightness], when the current locale's
  /// [MaterialLocalizations.scriptCategory] is [ScriptCategory.tall].
246
  ///
Kate Lovett's avatar
Kate Lovett committed
247
  /// To look up a localized [TextTheme], use the overall [Theme], for
248 249 250 251 252 253 254 255 256 257 258 259 260 261
  /// example: `Theme.of(context).textTheme`.
  final TextTheme tall;

  /// Returns one of [englishLike], [dense], or [tall].
  TextTheme geometryThemeFor(ScriptCategory category) {
    assert(category != null);
    switch (category) {
      case ScriptCategory.englishLike:
        return englishLike;
      case ScriptCategory.dense:
        return dense;
      case ScriptCategory.tall:
        return tall;
    }
262 263
  }

264 265 266
  /// Creates a copy of this [Typography] with the given fields
  /// replaced by the non-null parameter values.
  Typography copyWith({
267 268 269 270 271
    TextTheme? black,
    TextTheme? white,
    TextTheme? englishLike,
    TextTheme? dense,
    TextTheme? tall,
272
  }) {
273 274 275 276 277 278
    return Typography._(
      black ?? this.black,
      white ?? this.white,
      englishLike ?? this.englishLike,
      dense ?? this.dense,
      tall ?? this.tall,
279 280 281
    );
  }

282
  /// Linearly interpolate between two [Typography] objects.
283
  ///
284
  /// {@macro dart.ui.shadow.lerp}
285
  static Typography lerp(Typography a, Typography b, double t) {
286 287 288 289 290 291
    return Typography._(
      TextTheme.lerp(a.black, b.black, t),
      TextTheme.lerp(a.white, b.white, t),
      TextTheme.lerp(a.englishLike, b.englishLike, t),
      TextTheme.lerp(a.dense, b.dense, t),
      TextTheme.lerp(a.tall, b.tall, t),
292 293
    );
  }
294 295

  @override
296
  bool operator ==(Object other) {
297 298
    if (identical(this, other))
      return true;
299
    if (other.runtimeType != runtimeType)
300
      return false;
301 302 303 304 305 306
    return other is Typography
        && other.black == black
        && other.white == white
        && other.englishLike == englishLike
        && other.dense == dense
        && other.tall == tall;
307 308 309 310 311
  }

  @override
  int get hashCode {
    return hashValues(
312 313 314 315 316
      black,
      white,
      englishLike,
      dense,
      tall,
317 318
    );
  }
319 320

  @override
321 322
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
323
    final Typography defaultTypography = Typography.material2014();
324 325 326 327 328
    properties.add(DiagnosticsProperty<TextTheme>('black', black, defaultValue: defaultTypography.black));
    properties.add(DiagnosticsProperty<TextTheme>('white', white, defaultValue: defaultTypography.white));
    properties.add(DiagnosticsProperty<TextTheme>('englishLike', englishLike, defaultValue: defaultTypography.englishLike));
    properties.add(DiagnosticsProperty<TextTheme>('dense', dense, defaultValue: defaultTypography.dense));
    properties.add(DiagnosticsProperty<TextTheme>('tall', tall, defaultValue: defaultTypography.tall));
329 330
  }

331 332 333
  /// A material design text theme with dark glyphs based on Roboto.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
334
  static const TextTheme blackMountainView = TextTheme(
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349
    displayLarge : TextStyle(debugLabel: 'blackMountainView displayLarge', fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'blackMountainView displayMedium', fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'blackMountainView displaySmall', fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'blackMountainView headlineLarge', fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'blackMountainView headlineMedium', fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'blackMountainView headlineSmall', fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'blackMountainView titleLarge', fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'blackMountainView titleMedium', fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'blackMountainView titleSmall', fontFamily: 'Roboto', color: Colors.black,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'blackMountainView bodyLarge', fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'blackMountainView bodyMedium', fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'blackMountainView bodySmall',   fontFamily: 'Roboto', color: Colors.black54, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'blackMountainView labelLarge',    fontFamily: 'Roboto', color: Colors.black87, decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'blackMountainView labelMedium',  fontFamily: 'Roboto', color: Colors.black,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'blackMountainView labelSmall',  fontFamily: 'Roboto', color: Colors.black,   decoration: TextDecoration.none),
350 351
  );

352 353 354
  /// A material design text theme with light glyphs based on Roboto.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
355
  static const TextTheme whiteMountainView = TextTheme(
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
    displayLarge : TextStyle(debugLabel: 'whiteMountainView displayLarge', fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'whiteMountainView displayMedium', fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'whiteMountainView displaySmall', fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'whiteMountainView headlineLarge', fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'whiteMountainView headlineMedium', fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'whiteMountainView headlineSmall', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'whiteMountainView titleLarge', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'whiteMountainView titleMedium', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'whiteMountainView titleSmall', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'whiteMountainView bodyLarge', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'whiteMountainView bodyMedium', fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'whiteMountainView bodySmall',   fontFamily: 'Roboto', color: Colors.white70, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'whiteMountainView labelLarge',    fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'whiteMountainView labelMedium',  fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'whiteMountainView labelSmall',  fontFamily: 'Roboto', color: Colors.white,   decoration: TextDecoration.none),
371 372
  );

373 374 375 376
  /// A material design text theme with dark glyphs based on Segoe UI.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  static const TextTheme blackRedmond = TextTheme(
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
    displayLarge : TextStyle(debugLabel: 'blackRedmond displayLarge', fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'blackRedmond displayMedium', fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'blackRedmond displaySmall', fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'blackRedmond headlineLarge', fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'blackRedmond headlineMedium', fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'blackRedmond headlineSmall', fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'blackRedmond titleLarge', fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'blackRedmond titleMedium', fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'blackRedmond titleSmall', fontFamily: 'Segoe UI', color: Colors.black,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'blackRedmond bodyLarge', fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'blackRedmond bodyMedium', fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'blackRedmond bodySmall',   fontFamily: 'Segoe UI', color: Colors.black54, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'blackRedmond labelLarge',    fontFamily: 'Segoe UI', color: Colors.black87, decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'blackRedmond labelMedium',  fontFamily: 'Segoe UI', color: Colors.black,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'blackRedmond labelSmall',  fontFamily: 'Segoe UI', color: Colors.black,   decoration: TextDecoration.none),
392 393 394 395 396 397
  );

  /// A material design text theme with light glyphs based on Segoe UI.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  static const TextTheme whiteRedmond = TextTheme(
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
    displayLarge : TextStyle(debugLabel: 'whiteRedmond displayLarge', fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'whiteRedmond displayMedium', fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'whiteRedmond displaySmall', fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'whiteRedmond headlineLarge', fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'whiteRedmond headlineMedium', fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'whiteRedmond headlineSmall', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'whiteRedmond titleLarge', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'whiteRedmond titleMedium', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'whiteRedmond titleSmall', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'whiteRedmond bodyLarge', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'whiteRedmond bodyMedium', fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'whiteRedmond bodySmall',   fontFamily: 'Segoe UI', color: Colors.white70, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'whiteRedmond labelLarge',    fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'whiteRedmond labelMedium',  fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'whiteRedmond labelSmall',  fontFamily: 'Segoe UI', color: Colors.white,   decoration: TextDecoration.none),
413 414 415 416 417 418 419 420 421
  );

  static const List<String> _helsinkiFontFallbacks = <String>['Ubuntu', 'Cantarell', 'DejaVu Sans', 'Liberation Sans', 'Arial'];
  /// A material design text theme with dark glyphs based on Roboto, with
  /// fallback fonts that are likely (but not guaranteed) to be installed on
  /// Linux.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  static const TextTheme blackHelsinki = TextTheme(
422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
    displayLarge : TextStyle(debugLabel: 'blackHelsinki displayLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'blackHelsinki displayMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'blackHelsinki displaySmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'blackHelsinki headlineLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'blackHelsinki headlineMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'blackHelsinki headlineSmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'blackHelsinki titleLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'blackHelsinki titleMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'blackHelsinki titleSmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'blackHelsinki bodyLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'blackHelsinki bodyMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'blackHelsinki bodySmall',   fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black54, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'blackHelsinki labelLarge',    fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black87, decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'blackHelsinki labelMedium',  fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'blackHelsinki labelSmall',  fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.black,   decoration: TextDecoration.none),
437 438 439 440 441 442
  );

  /// A material design text theme with light glyphs based on Roboto, with fallbacks of DejaVu Sans, Liberation Sans and Arial.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  static const TextTheme whiteHelsinki = TextTheme(
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457
    displayLarge : TextStyle(debugLabel: 'whiteHelsinki displayLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'whiteHelsinki displayMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'whiteHelsinki displaySmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'whiteHelsinki headlineLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'whiteHelsinki headlineMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'whiteHelsinki headlineSmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'whiteHelsinki titleLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'whiteHelsinki titleMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'whiteHelsinki titleSmall', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'whiteHelsinki bodyLarge', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'whiteHelsinki bodyMedium', fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'whiteHelsinki bodySmall',   fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white70, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'whiteHelsinki labelLarge',    fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'whiteHelsinki labelMedium',  fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'whiteHelsinki labelSmall',  fontFamily: 'Roboto', fontFamilyFallback: _helsinkiFontFallbacks, color: Colors.white,   decoration: TextDecoration.none),
458 459
  );

460 461 462
  /// A material design text theme with dark glyphs based on San Francisco.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
463 464
  ///
  /// This theme uses the iOS version of the font names.
465
  static const TextTheme blackCupertino = TextTheme(
466 467 468 469 470 471 472 473 474 475 476 477 478 479 480
    displayLarge : TextStyle(debugLabel: 'blackCupertino displayLarge', fontFamily: '.SF UI Display', color: Colors.black54, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'blackCupertino displayMedium', fontFamily: '.SF UI Display', color: Colors.black54, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'blackCupertino displaySmall', fontFamily: '.SF UI Display', color: Colors.black54, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'blackCupertino headlineLarge', fontFamily: '.SF UI Display', color: Colors.black54, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'blackCupertino headlineMedium', fontFamily: '.SF UI Display', color: Colors.black54, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'blackCupertino headlineSmall', fontFamily: '.SF UI Display', color: Colors.black87, decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'blackCupertino titleLarge', fontFamily: '.SF UI Display', color: Colors.black87, decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'blackCupertino titleMedium', fontFamily: '.SF UI Text', color: Colors.black87, decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'blackCupertino titleSmall', fontFamily: '.SF UI Text', color: Colors.black,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'blackCupertino bodyLarge', fontFamily: '.SF UI Text', color: Colors.black87, decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'blackCupertino bodyMedium', fontFamily: '.SF UI Text', color: Colors.black87, decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'blackCupertino bodySmall',   fontFamily: '.SF UI Text', color: Colors.black54, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'blackCupertino labelLarge',    fontFamily: '.SF UI Text', color: Colors.black87, decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'blackCupertino labelMedium',  fontFamily: '.SF UI Text', color: Colors.black,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'blackCupertino labelSmall',  fontFamily: '.SF UI Text', color: Colors.black,   decoration: TextDecoration.none),
481 482
  );

483 484 485
  /// A material design text theme with light glyphs based on San Francisco.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
486 487
  ///
  /// This theme uses the iOS version of the font names.
488
  static const TextTheme whiteCupertino = TextTheme(
489 490 491 492 493 494 495 496 497 498 499 500 501 502 503
    displayLarge : TextStyle(debugLabel: 'whiteCupertino displayLarge', fontFamily: '.SF UI Display', color: Colors.white70, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'whiteCupertino displayMedium', fontFamily: '.SF UI Display', color: Colors.white70, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'whiteCupertino displaySmall', fontFamily: '.SF UI Display', color: Colors.white70, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'whiteCupertino headlineLarge', fontFamily: '.SF UI Display', color: Colors.white70, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'whiteCupertino headlineMedium', fontFamily: '.SF UI Display', color: Colors.white70, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'whiteCupertino headlineSmall', fontFamily: '.SF UI Display', color: Colors.white,   decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'whiteCupertino titleLarge', fontFamily: '.SF UI Display', color: Colors.white,   decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'whiteCupertino titleMedium', fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
    titleSmall   : TextStyle(debugLabel: 'whiteCupertino titleSmall',   fontFamily: '.SF UI Text', color: Colors.white, decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'whiteCupertino bodyLarge', fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'whiteCupertino bodyMedium', fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
    bodySmall    : TextStyle(debugLabel: 'whiteCupertino bodySmall',    fontFamily: '.SF UI Text', color: Colors.white70,   decoration: TextDecoration.none),
    labelLarge : TextStyle(debugLabel: 'whiteCupertino labelLarge', fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'whiteCupertino labelMedium',  fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'whiteCupertino labelSmall',  fontFamily: '.SF UI Text', color: Colors.white,   decoration: TextDecoration.none),
504 505
  );

506 507 508 509 510 511
  /// A material design text theme with dark glyphs based on San Francisco.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  ///
  /// This theme uses the macOS version of the font names.
  static const TextTheme blackRedwoodCity = TextTheme(
512 513 514 515 516 517 518 519 520 521 522 523 524 525 526
    displayLarge : TextStyle(debugLabel: 'blackRedwoodCity displayLarge', fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'blackRedwoodCity displayMedium', fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'blackRedwoodCity displaySmall', fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'blackRedwoodCity headlineLarge', fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'blackRedwoodCity headlineMedium', fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'blackRedwoodCity headlineSmall', fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'blackRedwoodCity titleLarge', fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'blackRedwoodCity titleMedium', fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    titleSmall : TextStyle(debugLabel: 'blackRedwoodCity titleSmall', fontFamily: '.AppleSystemUIFont', color: Colors.black,   decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'blackRedwoodCity bodyLarge', fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'blackRedwoodCity bodyMedium', fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    bodySmall   : TextStyle(debugLabel: 'blackRedwoodCity bodySmall',   fontFamily: '.AppleSystemUIFont', color: Colors.black54, decoration: TextDecoration.none),
    labelLarge    : TextStyle(debugLabel: 'blackRedwoodCity labelLarge',    fontFamily: '.AppleSystemUIFont', color: Colors.black87, decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'blackRedwoodCity labelMedium',  fontFamily: '.AppleSystemUIFont', color: Colors.black,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'blackRedwoodCity labelSmall',  fontFamily: '.AppleSystemUIFont', color: Colors.black,   decoration: TextDecoration.none),
527 528 529 530 531 532 533 534
  );

  /// A material design text theme with light glyphs based on San Francisco.
  ///
  /// This [TextTheme] provides color but not geometry (font size, weight, etc).
  ///
  /// This theme uses the macOS version of the font names.
  static const TextTheme whiteRedwoodCity = TextTheme(
535 536 537 538 539 540 541 542 543 544 545 546 547 548 549
    displayLarge : TextStyle(debugLabel: 'whiteRedwoodCity displayLarge', fontFamily: '.AppleSystemUIFont', color: Colors.white70, decoration: TextDecoration.none),
    displayMedium : TextStyle(debugLabel: 'whiteRedwoodCity displayMedium', fontFamily: '.AppleSystemUIFont', color: Colors.white70, decoration: TextDecoration.none),
    displaySmall : TextStyle(debugLabel: 'whiteRedwoodCity displaySmall', fontFamily: '.AppleSystemUIFont', color: Colors.white70, decoration: TextDecoration.none),
    headlineLarge : TextStyle(debugLabel: 'whiteRedwoodCity headlineLarge', fontFamily: '.AppleSystemUIFont', color: Colors.white70, decoration: TextDecoration.none),
    headlineMedium : TextStyle(debugLabel: 'whiteRedwoodCity headlineMedium', fontFamily: '.AppleSystemUIFont', color: Colors.white70, decoration: TextDecoration.none),
    headlineSmall : TextStyle(debugLabel: 'whiteRedwoodCity headlineSmall', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    titleLarge : TextStyle(debugLabel: 'whiteRedwoodCity titleLarge', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    titleMedium : TextStyle(debugLabel: 'whiteRedwoodCity titleMedium', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    titleSmall   : TextStyle(debugLabel: 'whiteRedwoodCity titleSmall',   fontFamily: '.AppleSystemUIFont', color: Colors.white, decoration: TextDecoration.none),
    bodyLarge : TextStyle(debugLabel: 'whiteRedwoodCity bodyLarge', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    bodyMedium : TextStyle(debugLabel: 'whiteRedwoodCity bodyMedium', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    bodySmall    : TextStyle(debugLabel: 'whiteRedwoodCity bodySmall',    fontFamily: '.AppleSystemUIFont', color: Colors.white70,   decoration: TextDecoration.none),
    labelLarge : TextStyle(debugLabel: 'whiteRedwoodCity labelLarge', fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    labelMedium  : TextStyle(debugLabel: 'whiteRedwoodCity labelMedium',  fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
    labelSmall  : TextStyle(debugLabel: 'whiteRedwoodCity labelSmall',  fontFamily: '.AppleSystemUIFont', color: Colors.white,   decoration: TextDecoration.none),
550 551
  );

552 553 554
  /// Defines text geometry for [ScriptCategory.englishLike] scripts, such as
  /// English, French, Russian, etc.
  static const TextTheme englishLike2014 = TextTheme(
555 556 557 558 559 560 561 562 563 564 565 566 567 568 569
    displayLarge : TextStyle(debugLabel: 'englishLike displayLarge 2014', inherit: false, fontSize: 112.0, fontWeight: FontWeight.w100, textBaseline: TextBaseline.alphabetic),
    displayMedium : TextStyle(debugLabel: 'englishLike displayMedium 2014', inherit: false, fontSize:  56.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    displaySmall : TextStyle(debugLabel: 'englishLike displaySmall 2014', inherit: false, fontSize:  45.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineLarge : TextStyle(debugLabel: 'englishLike headlineLarge 2014', inherit: false, fontSize:  40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineMedium : TextStyle(debugLabel: 'englishLike headlineMedium 2014', inherit: false, fontSize:  34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineSmall : TextStyle(debugLabel: 'englishLike headlineSmall 2014', inherit: false, fontSize:  24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleLarge : TextStyle(debugLabel: 'englishLike titleLarge 2014',    inherit: false, fontSize:  20.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic),
    titleMedium : TextStyle(debugLabel: 'englishLike titleMedium 2014',  inherit: false, fontSize:  16.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleSmall : TextStyle(debugLabel: 'englishLike titleSmall 2014', inherit: false, fontSize:  14.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.1),
    bodyLarge : TextStyle(debugLabel: 'englishLike bodyLarge 2014',    inherit: false, fontSize:  14.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic),
    bodyMedium : TextStyle(debugLabel: 'englishLike bodyMedium 2014',    inherit: false, fontSize:  14.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    bodySmall   : TextStyle(debugLabel: 'englishLike bodySmall 2014',  inherit: false, fontSize:  12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelLarge    : TextStyle(debugLabel: 'englishLike labelLarge 2014',   inherit: false, fontSize:  14.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic),
    labelMedium  : TextStyle(debugLabel: 'englishLike labelMedium 2014', inherit: false, fontSize:  12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelSmall  : TextStyle(debugLabel: 'englishLike labelSmall 2014', inherit: false, fontSize:  10.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 1.5),
570
  );
571

572 573 574 575
  /// Defines text geometry for [ScriptCategory.englishLike] scripts, such as
  /// English, French, Russian, etc.
  ///
  /// The font sizes, weights, and letter spacings in this version match the
576
  /// [2018 Material Design specification](https://material.io/go/design-typography#typography-styles).
577
  static const TextTheme englishLike2018 = TextTheme(
578 579 580 581 582 583 584 585 586 587 588 589 590 591 592
    displayLarge : TextStyle(debugLabel: 'englishLike displayLarge 2018', fontSize: 96.0, fontWeight: FontWeight.w300, textBaseline: TextBaseline.alphabetic, letterSpacing: -1.5),
    displayMedium : TextStyle(debugLabel: 'englishLike displayMedium 2018', fontSize: 60.0, fontWeight: FontWeight.w300, textBaseline: TextBaseline.alphabetic, letterSpacing: -0.5),
    displaySmall : TextStyle(debugLabel: 'englishLike displaySmall 2018', fontSize: 48.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.0),
    headlineLarge : TextStyle(debugLabel: 'englishLike headlineLarge 2018', fontSize: 40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.25),
    headlineMedium : TextStyle(debugLabel: 'englishLike headlineMedium 2018', fontSize: 34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.25),
    headlineSmall : TextStyle(debugLabel: 'englishLike headlineSmall 2018', fontSize: 24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.0),
    titleLarge : TextStyle(debugLabel: 'englishLike titleLarge 2018', fontSize: 20.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.15),
    titleMedium : TextStyle(debugLabel: 'englishLike titleMedium 2018', fontSize: 16.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.15),
    titleSmall : TextStyle(debugLabel: 'englishLike titleSmall 2018', fontSize: 14.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.1),
    bodyLarge : TextStyle(debugLabel: 'englishLike bodyLarge 2018', fontSize: 16.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.5),
    bodyMedium : TextStyle(debugLabel: 'englishLike bodyMedium 2018', fontSize: 14.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.25),
    bodySmall    : TextStyle(debugLabel: 'englishLike bodySmall 2018',    fontSize: 12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 0.4),
    labelLarge   : TextStyle(debugLabel: 'englishLike labelLarge 2018',   fontSize: 14.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic, letterSpacing: 1.25),
    labelMedium  : TextStyle(debugLabel: 'englishLike labelMedium 2018',  fontSize: 11.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 1.5),
    labelSmall  : TextStyle(debugLabel: 'englishLike labelSmall 2018',  fontSize: 10.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic, letterSpacing: 1.5),
593
  );
594

595 596 597
  /// Defines text geometry for dense scripts, such as Chinese, Japanese
  /// and Korean.
  static const TextTheme dense2014 = TextTheme(
598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
    displayLarge : TextStyle(debugLabel: 'dense displayLarge 2014', inherit: false, fontSize: 112.0, fontWeight: FontWeight.w100, textBaseline: TextBaseline.ideographic),
    displayMedium : TextStyle(debugLabel: 'dense displayMedium 2014', inherit: false, fontSize:  56.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    displaySmall : TextStyle(debugLabel: 'dense displaySmall 2014', inherit: false, fontSize:  45.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineLarge : TextStyle(debugLabel: 'dense headlineLarge 2014', inherit: false, fontSize:  40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineMedium : TextStyle(debugLabel: 'dense headlineMedium 2014', inherit: false, fontSize:  34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineSmall : TextStyle(debugLabel: 'dense headlineSmall 2014', inherit: false, fontSize:  24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    titleLarge : TextStyle(debugLabel: 'dense titleLarge 2014',    inherit: false, fontSize:  21.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    titleMedium : TextStyle(debugLabel: 'dense titleMedium 2014',  inherit: false, fontSize:  17.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    titleSmall : TextStyle(debugLabel: 'dense titleSmall 2014', inherit: false, fontSize:  15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    bodyLarge : TextStyle(debugLabel: 'dense bodyLarge 2014',    inherit: false, fontSize:  15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    bodyMedium : TextStyle(debugLabel: 'dense bodyMedium 2014',    inherit: false, fontSize:  15.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    bodySmall   : TextStyle(debugLabel: 'dense bodySmall 2014',  inherit: false, fontSize:  13.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    labelLarge    : TextStyle(debugLabel: 'dense labelLarge 2014',   inherit: false, fontSize:  15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    labelMedium  : TextStyle(debugLabel: 'dense labelMedium 2014', inherit: false, fontSize:  12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    labelSmall  : TextStyle(debugLabel: 'dense labelSmall 2014', inherit: false, fontSize:  11.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
613
  );
614

615 616
  /// Defines text geometry for dense scripts, such as Chinese, Japanese
  /// and Korean.
617
  ///
618
  /// The font sizes, weights, and letter spacings in this version match the
619
  /// 2018 [Material Design specification](https://material.io/go/design-typography#typography-styles).
620
  static const TextTheme dense2018 = TextTheme(
621 622 623 624 625 626 627 628 629 630 631 632 633 634 635
    displayLarge : TextStyle(debugLabel: 'dense displayLarge 2018', fontSize: 96.0, fontWeight: FontWeight.w100, textBaseline: TextBaseline.ideographic),
    displayMedium : TextStyle(debugLabel: 'dense displayMedium 2018', fontSize: 60.0, fontWeight: FontWeight.w100, textBaseline: TextBaseline.ideographic),
    displaySmall : TextStyle(debugLabel: 'dense displaySmall 2018', fontSize: 48.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineLarge : TextStyle(debugLabel: 'dense headlineLarge 2018', fontSize: 40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineMedium : TextStyle(debugLabel: 'dense headlineMedium 2018', fontSize: 34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    headlineSmall : TextStyle(debugLabel: 'dense headlineSmall 2018', fontSize: 24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    titleLarge : TextStyle(debugLabel: 'dense titleLarge 2018', fontSize: 21.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    titleMedium : TextStyle(debugLabel: 'dense titleMedium 2018', fontSize: 17.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    titleSmall : TextStyle(debugLabel: 'dense titleSmall 2018', fontSize: 15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    bodyLarge : TextStyle(debugLabel: 'dense bodyLarge 2018', fontSize: 17.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    bodyMedium : TextStyle(debugLabel: 'dense bodyMedium 2018', fontSize: 15.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    bodySmall    : TextStyle(debugLabel: 'dense bodySmall 2018',    fontSize: 13.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    labelLarge   : TextStyle(debugLabel: 'dense labelLarge 2018',   fontSize: 15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.ideographic),
    labelMedium  : TextStyle(debugLabel: 'dense labelMedium 2018',  fontSize: 12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
    labelSmall  : TextStyle(debugLabel: 'dense labelSmall 2018',  fontSize: 11.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.ideographic),
636 637
  );

638 639
  /// Defines text geometry for tall scripts, such as Farsi, Hindi, and Thai.
  static const TextTheme tall2014 = TextTheme(
640 641 642 643 644 645 646 647 648 649 650 651 652 653 654
    displayLarge : TextStyle(debugLabel: 'tall displayLarge 2014', inherit: false, fontSize: 112.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    displayMedium : TextStyle(debugLabel: 'tall displayMedium 2014', inherit: false, fontSize:  56.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    displaySmall : TextStyle(debugLabel: 'tall displaySmall 2014', inherit: false, fontSize:  45.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineLarge : TextStyle(debugLabel: 'tall headlineLarge 2014', inherit: false, fontSize:  40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineMedium : TextStyle(debugLabel: 'tall headlineMedium 2014', inherit: false, fontSize:  34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineSmall : TextStyle(debugLabel: 'tall headlineSmall 2014', inherit: false, fontSize:  24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleLarge : TextStyle(debugLabel: 'tall titleLarge 2014',    inherit: false, fontSize:  21.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    titleMedium : TextStyle(debugLabel: 'tall titleMedium 2014',  inherit: false, fontSize:  17.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleSmall : TextStyle(debugLabel: 'tall titleSmall 2014', inherit: false, fontSize:  15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic),
    bodyLarge : TextStyle(debugLabel: 'tall bodyLarge 2014',    inherit: false, fontSize:  15.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    bodyMedium : TextStyle(debugLabel: 'tall bodyMedium 2014',    inherit: false, fontSize:  15.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    bodySmall   : TextStyle(debugLabel: 'tall bodySmall 2014',  inherit: false, fontSize:  13.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelLarge    : TextStyle(debugLabel: 'tall labelLarge 2014',   inherit: false, fontSize:  15.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    labelMedium  : TextStyle(debugLabel: 'tall labelMedium 2014', inherit: false, fontSize:  12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelSmall  : TextStyle(debugLabel: 'tall labelSmall 2014', inherit: false, fontSize:  11.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
655 656
  );

657 658 659
  /// Defines text geometry for tall scripts, such as Farsi, Hindi, and Thai.
  ///
  /// The font sizes, weights, and letter spacings in this version match the
660
  /// 2018 [Material Design specification](https://material.io/go/design-typography#typography-styles).
661
  static const TextTheme tall2018 = TextTheme(
662 663 664 665 666 667 668 669 670 671 672 673 674 675 676
    displayLarge : TextStyle(debugLabel: 'tall displayLarge 2018', fontSize: 96.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    displayMedium : TextStyle(debugLabel: 'tall displayMedium 2018', fontSize: 60.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    displaySmall : TextStyle(debugLabel: 'tall displaySmall 2018', fontSize: 48.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineLarge : TextStyle(debugLabel: 'tall headlineLarge 2018', fontSize: 40.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineMedium : TextStyle(debugLabel: 'tall headlineMedium 2018', fontSize: 34.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    headlineSmall : TextStyle(debugLabel: 'tall headlineSmall 2018', fontSize: 24.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleLarge : TextStyle(debugLabel: 'tall titleLarge 2018', fontSize: 21.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    titleMedium : TextStyle(debugLabel: 'tall titleMedium 2018', fontSize: 17.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    titleSmall : TextStyle(debugLabel: 'tall titleSmall 2018', fontSize: 15.0, fontWeight: FontWeight.w500, textBaseline: TextBaseline.alphabetic),
    bodyLarge : TextStyle(debugLabel: 'tall bodyLarge 2018', fontSize: 17.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    bodyMedium : TextStyle(debugLabel: 'tall bodyMedium 2018', fontSize: 15.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    bodySmall    : TextStyle(debugLabel: 'tall bodySmall 2018',    fontSize: 13.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelLarge   : TextStyle(debugLabel: 'tall labelLarge 2018',   fontSize: 15.0, fontWeight: FontWeight.w700, textBaseline: TextBaseline.alphabetic),
    labelMedium  : TextStyle(debugLabel: 'tall labelMedium 2018',  fontSize: 12.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
    labelSmall  : TextStyle(debugLabel: 'tall labelSmall 2018',  fontSize: 11.0, fontWeight: FontWeight.w400, textBaseline: TextBaseline.alphabetic),
677 678
  );
}