Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 5b9cd44

Browse files
author
Harry Terkelsen
authored
Automatically download Noto fonts as backup fonts in CanvasKit mode (#23728)
* Revert "Revert "[CanvasKit] Automatically fall back to Noto fonts (#23096)" (#23357)" This reverts commit f9f4d01. * WIP * Use an Interval Tree to store the unicode ranges for the Noto Fonts * Update licenses * Remove debug print statements * Respond to comments * Fix analysis error * Add tests * Respond to comments * Fix test * Update goldens lock * Skip screenshot test on Safari * Skip CanvasKit tests on iOS Safari * Move CanvasKit initialization so it doesn't run on iOS Safari
1 parent 5c2003f commit 5b9cd44

File tree

13 files changed

+1243
-112
lines changed

13 files changed

+1243
-112
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,12 @@ FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
434434
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_canvas.dart
435435
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart
436436
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart
437+
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart
437438
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/fonts.dart
438439
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/image.dart
439440
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart
440441
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/initialization.dart
442+
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/interval_tree.dart
441443
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer.dart
442444
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer_scene_builder.dart
443445
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart

lib/web_ui/dev/goldens_lock.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
repository: https://github.com/flutter/goldens.git
2-
revision: 999507db8c924635a605325252702bad661e2ad2
2+
revision: bdb442c42588b25c657779c78523822e349742d5

lib/web_ui/dev/test_runner.dart

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ class TestCommand extends Command<bool> with ArgUtils {
234234
Future<bool> runIntegrationTests() async {
235235
// Parse additional arguments specific for integration testing.
236236
IntegrationTestsArgumentParser.instance.parseOptions(argResults);
237-
if(!_testPreparationReady) {
237+
if (!_testPreparationReady) {
238238
await _prepare();
239239
}
240240
return IntegrationTestsManager(
@@ -522,9 +522,12 @@ class TestCommand extends Command<bool> with ArgUtils {
522522
}
523523

524524
// All files under test/golden_tests are considered golden tests.
525-
final bool isUnderGoldenTestsDirectory = path.split(testFilePath.relativeToWebUi).contains('golden_tests');
525+
final bool isUnderGoldenTestsDirectory =
526+
path.split(testFilePath.relativeToWebUi).contains('golden_tests');
526527
// Any file whose name ends with "_golden_test.dart" is run as a golden test.
527-
final bool isGoldenTestFile = path.basename(testFilePath.relativeToWebUi).endsWith('_golden_test.dart');
528+
final bool isGoldenTestFile = path
529+
.basename(testFilePath.relativeToWebUi)
530+
.endsWith('_golden_test.dart');
528531
if (isUnderGoldenTestsDirectory || isGoldenTestFile) {
529532
screenshotTestFiles.add(testFilePath);
530533
} else {
@@ -767,7 +770,11 @@ class TestCommand extends Command<bool> with ArgUtils {
767770
}
768771
}
769772

770-
const List<String> _kTestFonts = <String>['ahem.ttf', 'Roboto-Regular.ttf'];
773+
const List<String> _kTestFonts = <String>[
774+
'ahem.ttf',
775+
'Roboto-Regular.ttf',
776+
'NotoNaskhArabic-Regular.ttf',
777+
];
771778

772779
void _copyTestFontsIntoWebUi() {
773780
final String fontsPath = path.join(

lib/web_ui/lib/src/engine.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ part 'engine/canvaskit/canvaskit_api.dart';
3232
part 'engine/canvaskit/color_filter.dart';
3333
part 'engine/canvaskit/embedded_views.dart';
3434
part 'engine/canvaskit/fonts.dart';
35+
part 'engine/canvaskit/font_fallbacks.dart';
3536
part 'engine/canvaskit/image.dart';
3637
part 'engine/canvaskit/image_filter.dart';
3738
part 'engine/canvaskit/initialization.dart';
39+
part 'engine/canvaskit/interval_tree.dart';
3840
part 'engine/canvaskit/layer.dart';
3941
part 'engine/canvaskit/layer_scene_builder.dart';
4042
part 'engine/canvaskit/layer_tree.dart';

lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,8 @@ class SkPath {
11771177

11781178
/// Serializes the path into a list of commands.
11791179
///
1180-
/// The list can be used to create a new [SkPath] using [CanvasKit.Path.MakeFromCmds].
1180+
/// The list can be used to create a new [SkPath] using
1181+
/// [CanvasKit.Path.MakeFromCmds].
11811182
external List<dynamic> toCmds();
11821183

11831184
external void delete();

0 commit comments

Comments
 (0)