mirror of
https://github.com/flutter/flutter
synced 2024-10-14 04:02:56 +00:00
Reland "Framework support for font features in text styles" (#33876)
See https://github.com/flutter/flutter/issues/31691
This commit is contained in:
parent
f0978c225a
commit
95818d2b7a
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:ui' as ui show ParagraphStyle, TextStyle, StrutStyle, lerpDouble, Shadow;
|
||||
import 'dart:ui' as ui show ParagraphStyle, TextStyle, StrutStyle, lerpDouble, Shadow, FontFeature;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
|
@ -316,6 +316,7 @@ class TextStyle extends Diagnosticable {
|
|||
this.foreground,
|
||||
this.background,
|
||||
this.shadows,
|
||||
this.fontFeatures,
|
||||
this.decoration,
|
||||
this.decorationColor,
|
||||
this.decorationStyle,
|
||||
|
@ -562,6 +563,15 @@ class TextStyle extends Diagnosticable {
|
|||
/// equivalent as order produces differing transparency.
|
||||
final List<ui.Shadow> shadows;
|
||||
|
||||
/// A list of [FontFeature]s that affect how the font selects glyphs.
|
||||
///
|
||||
/// Some fonts support multiple variants of how a given character can be
|
||||
/// rendered. For example, a font might provide both proportional and
|
||||
/// tabular numbers, or it might offer versions of the zero digit with
|
||||
/// and without slashes. [FontFeature]s can be used to select which of
|
||||
/// these variants will be used for rendering.
|
||||
final List<ui.FontFeature> fontFeatures;
|
||||
|
||||
/// Creates a copy of this text style but with the given fields replaced with
|
||||
/// the new values.
|
||||
///
|
||||
|
@ -588,6 +598,7 @@ class TextStyle extends Diagnosticable {
|
|||
Paint foreground,
|
||||
Paint background,
|
||||
List<ui.Shadow> shadows,
|
||||
List<ui.FontFeature> fontFeatures,
|
||||
TextDecoration decoration,
|
||||
Color decorationColor,
|
||||
TextDecorationStyle decorationStyle,
|
||||
|
@ -619,6 +630,7 @@ class TextStyle extends Diagnosticable {
|
|||
foreground: foreground ?? this.foreground,
|
||||
background: background ?? this.background,
|
||||
shadows: shadows ?? this.shadows,
|
||||
fontFeatures: fontFeatures ?? this.fontFeatures,
|
||||
decoration: decoration ?? this.decoration,
|
||||
decorationColor: decorationColor ?? this.decorationColor,
|
||||
decorationStyle: decorationStyle ?? this.decorationStyle,
|
||||
|
@ -718,6 +730,7 @@ class TextStyle extends Diagnosticable {
|
|||
foreground: foreground,
|
||||
background: background,
|
||||
shadows: shadows,
|
||||
fontFeatures: fontFeatures,
|
||||
decoration: decoration ?? this.decoration,
|
||||
decorationColor: decorationColor ?? this.decorationColor,
|
||||
decorationStyle: decorationStyle ?? this.decorationStyle,
|
||||
|
@ -776,6 +789,7 @@ class TextStyle extends Diagnosticable {
|
|||
foreground: other.foreground,
|
||||
background: other.background,
|
||||
shadows: other.shadows,
|
||||
fontFeatures: other.fontFeatures,
|
||||
decoration: other.decoration,
|
||||
decorationColor: other.decorationColor,
|
||||
decorationStyle: other.decorationStyle,
|
||||
|
@ -829,6 +843,7 @@ class TextStyle extends Diagnosticable {
|
|||
background: t < 0.5 ? null : b.background,
|
||||
decoration: t < 0.5 ? null : b.decoration,
|
||||
shadows: t < 0.5 ? null : b.shadows,
|
||||
fontFeatures: t < 0.5 ? null : b.fontFeatures,
|
||||
decorationColor: Color.lerp(null, b.decorationColor, t),
|
||||
decorationStyle: t < 0.5 ? null : b.decorationStyle,
|
||||
decorationThickness: t < 0.5 ? null : b.decorationThickness,
|
||||
|
@ -854,6 +869,7 @@ class TextStyle extends Diagnosticable {
|
|||
foreground: t < 0.5 ? a.foreground : null,
|
||||
background: t < 0.5 ? a.background : null,
|
||||
shadows: t < 0.5 ? a.shadows : null,
|
||||
fontFeatures: t < 0.5 ? a.fontFeatures : null,
|
||||
decoration: t < 0.5 ? a.decoration : null,
|
||||
decorationColor: Color.lerp(a.decorationColor, null, t),
|
||||
decorationStyle: t < 0.5 ? a.decorationStyle : null,
|
||||
|
@ -887,6 +903,7 @@ class TextStyle extends Diagnosticable {
|
|||
: b.background ?? (Paint()..color = b.backgroundColor)
|
||||
: null,
|
||||
shadows: t < 0.5 ? a.shadows : b.shadows,
|
||||
fontFeatures: t < 0.5 ? a.fontFeatures : b.fontFeatures,
|
||||
decoration: t < 0.5 ? a.decoration : b.decoration,
|
||||
decorationColor: Color.lerp(a.decorationColor, b.decorationColor, t),
|
||||
decorationStyle: t < 0.5 ? a.decorationStyle : b.decorationStyle,
|
||||
|
@ -919,6 +936,7 @@ class TextStyle extends Diagnosticable {
|
|||
: null
|
||||
),
|
||||
shadows: shadows,
|
||||
fontFeatures: fontFeatures,
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -994,6 +1012,7 @@ class TextStyle extends Diagnosticable {
|
|||
foreground != other.foreground ||
|
||||
background != other.background ||
|
||||
!listEquals(shadows, other.shadows) ||
|
||||
!listEquals(fontFeatures, other.fontFeatures) ||
|
||||
!listEquals(fontFamilyFallback, other.fontFamilyFallback))
|
||||
return RenderComparison.layout;
|
||||
if (color != other.color ||
|
||||
|
@ -1032,6 +1051,7 @@ class TextStyle extends Diagnosticable {
|
|||
decorationStyle == typedOther.decorationStyle &&
|
||||
decorationThickness == typedOther.decorationThickness &&
|
||||
listEquals(shadows, typedOther.shadows) &&
|
||||
listEquals(fontFeatures, typedOther.fontFeatures) &&
|
||||
listEquals(fontFamilyFallback, typedOther.fontFamilyFallback);
|
||||
}
|
||||
|
||||
|
@ -1057,6 +1077,7 @@ class TextStyle extends Diagnosticable {
|
|||
decorationColor,
|
||||
decorationStyle,
|
||||
shadows,
|
||||
fontFeatures,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -719,6 +719,8 @@ class _TextStyleProxy implements TextStyle {
|
|||
double get wordSpacing => _delegate.wordSpacing;
|
||||
@override
|
||||
List<Shadow> get shadows => _delegate.shadows;
|
||||
@override
|
||||
List<ui.FontFeature> get fontFeatures => _delegate.fontFeatures;
|
||||
|
||||
@override
|
||||
String toString({ DiagnosticLevel minLevel = DiagnosticLevel.debug }) =>
|
||||
|
@ -781,6 +783,7 @@ class _TextStyleProxy implements TextStyle {
|
|||
ui.Paint foreground,
|
||||
ui.Paint background,
|
||||
List<Shadow> shadows,
|
||||
List<ui.FontFeature> fontFeatures,
|
||||
TextDecoration decoration,
|
||||
Color decorationColor,
|
||||
TextDecorationStyle decorationStyle,
|
||||
|
|
Loading…
Reference in a new issue