From 7bdc84940d14bda468b05cc7becde59fca378644 Mon Sep 17 00:00:00 2001 From: joshualitt Date: Wed, 20 Apr 2022 16:01:12 -0700 Subject: [PATCH] [web] Migrate Flutter Web to JS static interop - 9. (flutter/engine#32564) --- .../lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart | 6 +++++- .../lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 20740c1206a..86f23a36984 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2071,9 +2071,13 @@ extension SkFontFeatureExtension on SkFontFeature { class SkTypeface {} @JS('window.flutterCanvasKit.Font') +@staticInterop class SkFont { external factory SkFont(SkTypeface typeface); - external Uint8List getGlyphIDs(String text); +} + +extension SkFontExtension on SkFont { + external Uint16List getGlyphIDs(String text); external void getGlyphBounds( List glyphs, SkPaint? paint, Uint8List? output); } diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart index b66660f1fc8..eb1224c054c 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart @@ -131,7 +131,7 @@ class FontFallbackData { List.filled(codeUnits.length, false); final String testString = String.fromCharCodes(codeUnits); for (final SkFont font in fonts) { - final Uint8List glyphs = font.getGlyphIDs(testString); + final Uint16List glyphs = font.getGlyphIDs(testString); assert(glyphs.length == codeUnitsSupported.length); for (int i = 0; i < glyphs.length; i++) { codeUnitsSupported[i] |= glyphs[i] != 0 || _isControlCode(codeUnits[i]); @@ -182,7 +182,7 @@ class FontFallbackData { continue; } for (final SkFont font in fontsForFamily) { - final Uint8List glyphs = font.getGlyphIDs(testString); + final Uint16List glyphs = font.getGlyphIDs(testString); assert(glyphs.length == codeUnitsSupported.length); for (int i = 0; i < glyphs.length; i++) { final bool codeUnitSupported = glyphs[i] != 0;