Skip to content

Commit

Permalink
Automatically download Noto fonts as backup fonts in CanvasKit mode (#…
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
Harry Terkelsen committed Jan 21, 2021
1 parent 5c2003f commit 5b9cd44
Show file tree
Hide file tree
Showing 13 changed files with 1,243 additions and 112 deletions.
2 changes: 2 additions & 0 deletions ci/licenses_golden/licenses_flutter
Expand Up @@ -434,10 +434,12 @@ FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/canvaskit_canvas.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/color_filter.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/font_fallbacks.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/fonts.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/image.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/image_filter.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/initialization.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/interval_tree.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer_scene_builder.dart
FILE: ../../../flutter/lib/web_ui/lib/src/engine/canvaskit/layer_tree.dart
Expand Down
2 changes: 1 addition & 1 deletion lib/web_ui/dev/goldens_lock.yaml
@@ -1,2 +1,2 @@
repository: https://github.com/flutter/goldens.git
revision: 999507db8c924635a605325252702bad661e2ad2
revision: bdb442c42588b25c657779c78523822e349742d5
15 changes: 11 additions & 4 deletions lib/web_ui/dev/test_runner.dart
Expand Up @@ -234,7 +234,7 @@ class TestCommand extends Command<bool> with ArgUtils {
Future<bool> runIntegrationTests() async {
// Parse additional arguments specific for integration testing.
IntegrationTestsArgumentParser.instance.parseOptions(argResults);
if(!_testPreparationReady) {
if (!_testPreparationReady) {
await _prepare();
}
return IntegrationTestsManager(
Expand Down Expand Up @@ -522,9 +522,12 @@ class TestCommand extends Command<bool> with ArgUtils {
}

// All files under test/golden_tests are considered golden tests.
final bool isUnderGoldenTestsDirectory = path.split(testFilePath.relativeToWebUi).contains('golden_tests');
final bool isUnderGoldenTestsDirectory =
path.split(testFilePath.relativeToWebUi).contains('golden_tests');
// Any file whose name ends with "_golden_test.dart" is run as a golden test.
final bool isGoldenTestFile = path.basename(testFilePath.relativeToWebUi).endsWith('_golden_test.dart');
final bool isGoldenTestFile = path
.basename(testFilePath.relativeToWebUi)
.endsWith('_golden_test.dart');
if (isUnderGoldenTestsDirectory || isGoldenTestFile) {
screenshotTestFiles.add(testFilePath);
} else {
Expand Down Expand Up @@ -767,7 +770,11 @@ class TestCommand extends Command<bool> with ArgUtils {
}
}

const List<String> _kTestFonts = <String>['ahem.ttf', 'Roboto-Regular.ttf'];
const List<String> _kTestFonts = <String>[
'ahem.ttf',
'Roboto-Regular.ttf',
'NotoNaskhArabic-Regular.ttf',
];

void _copyTestFontsIntoWebUi() {
final String fontsPath = path.join(
Expand Down
2 changes: 2 additions & 0 deletions lib/web_ui/lib/src/engine.dart
Expand Up @@ -32,9 +32,11 @@ part 'engine/canvaskit/canvaskit_api.dart';
part 'engine/canvaskit/color_filter.dart';
part 'engine/canvaskit/embedded_views.dart';
part 'engine/canvaskit/fonts.dart';
part 'engine/canvaskit/font_fallbacks.dart';
part 'engine/canvaskit/image.dart';
part 'engine/canvaskit/image_filter.dart';
part 'engine/canvaskit/initialization.dart';
part 'engine/canvaskit/interval_tree.dart';
part 'engine/canvaskit/layer.dart';
part 'engine/canvaskit/layer_scene_builder.dart';
part 'engine/canvaskit/layer_tree.dart';
Expand Down
3 changes: 2 additions & 1 deletion lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart
Expand Up @@ -1177,7 +1177,8 @@ class SkPath {

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

external void delete();
Expand Down

0 comments on commit 5b9cd44

Please sign in to comment.