From 7dd45865a7d7ed7c6e77fd0c777a3231ee7f54f7 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 29 Aug 2019 14:47:59 -0700 Subject: [PATCH] Quote the font family name whenever setting the font-family property. Browsers will only allow font names with spaces or '/' if they are in quotes. Fixes https://github.com/flutter/flutter/issues/39486 --- lib/web_ui/lib/src/engine/text/font_collection.dart | 2 +- lib/web_ui/lib/src/engine/text/paragraph.dart | 10 +++++----- lib/web_ui/lib/src/engine/text/ruler.dart | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/web_ui/lib/src/engine/text/font_collection.dart b/lib/web_ui/lib/src/engine/text/font_collection.dart index 94611b3b09a5b..847a20d0ffc29 100644 --- a/lib/web_ui/lib/src/engine/text/font_collection.dart +++ b/lib/web_ui/lib/src/engine/text/font_collection.dart @@ -189,7 +189,7 @@ class _PolyfillFontManager extends _FontManager { html.document.body.append(paragraph); final int sansSerifWidth = paragraph.offsetWidth; - paragraph.style.fontFamily = '$family, sans-serif'; + paragraph.style.fontFamily = "'$family', sans-serif"; final Completer completer = Completer(); diff --git a/lib/web_ui/lib/src/engine/text/paragraph.dart b/lib/web_ui/lib/src/engine/text/paragraph.dart index 66b1610367538..4a67207ff553e 100644 --- a/lib/web_ui/lib/src/engine/text/paragraph.dart +++ b/lib/web_ui/lib/src/engine/text/paragraph.dart @@ -1072,7 +1072,7 @@ void _applyParagraphStyleToElement({ style._fontStyle == ui.FontStyle.normal ? 'normal' : 'italic'; } if (style._effectiveFontFamily != null) { - cssStyle.fontFamily = style._effectiveFontFamily; + cssStyle.fontFamily = "'${style._effectiveFontFamily}'"; } } else { if (style._textAlign != previousStyle._textAlign) { @@ -1098,7 +1098,7 @@ void _applyParagraphStyleToElement({ : null; } if (style._fontFamily != previousStyle._fontFamily) { - cssStyle.fontFamily = style._fontFamily; + cssStyle.fontFamily = "'${style._fontFamily}'"; } } } @@ -1138,11 +1138,11 @@ void _applyTextStyleToElement({ // consistently use Ahem font. if (isSpan && !ui.debugEmulateFlutterTesterEnvironment) { if (style._fontFamily != null) { - cssStyle.fontFamily = style._fontFamily; + cssStyle.fontFamily = "'${style._fontFamily}'"; } } else { if (style._effectiveFontFamily != null) { - cssStyle.fontFamily = style._effectiveFontFamily; + cssStyle.fontFamily = "'${style._effectiveFontFamily}'"; } } if (style._letterSpacing != null) { @@ -1176,7 +1176,7 @@ void _applyTextStyleToElement({ : null; } if (style._fontFamily != previousStyle._fontFamily) { - cssStyle.fontFamily = style._fontFamily; + cssStyle.fontFamily = "'${style._fontFamily}'"; } if (style._letterSpacing != previousStyle._letterSpacing) { cssStyle.letterSpacing = '${style._letterSpacing}px'; diff --git a/lib/web_ui/lib/src/engine/text/ruler.dart b/lib/web_ui/lib/src/engine/text/ruler.dart index ab51b7cbf1fd0..242621668ffac 100644 --- a/lib/web_ui/lib/src/engine/text/ruler.dart +++ b/lib/web_ui/lib/src/engine/text/ruler.dart @@ -86,7 +86,7 @@ class ParagraphGeometricStyle { result.write(DomRenderer.defaultFontSize); } result.write(' '); - result.write(effectiveFontFamily); + result.write("'$effectiveFontFamily'"); return result.toString(); } @@ -227,7 +227,7 @@ class TextDimensions { void applyStyle(ParagraphGeometricStyle style) { _element.style ..fontSize = style.fontSize != null ? '${style.fontSize.floor()}px' : null - ..fontFamily = style.effectiveFontFamily + ..fontFamily = "'${style.effectiveFontFamily}'" ..fontWeight = style.fontWeight != null ? fontWeightToCss(style.fontWeight) : null ..fontStyle = style.fontStyle != null