Fix custom fonts on Windows (#14191)

Fixes https://github.com/flutter/flutter/issues/13870.
diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart
index 7374378..b3dc4f3 100644
--- a/packages/flutter_tools/lib/src/asset.dart
+++ b/packages/flutter_tools/lib/src/asset.dart
@@ -118,7 +118,7 @@
     for (String packageName in packageMap.map.keys) {
       final Uri package = packageMap.map[packageName];
       if (package != null && package.scheme == 'file') {
-        final String packageManifestPath = package.resolve('../pubspec.yaml').path;
+        final String packageManifestPath = fs.path.fromUri(package.resolve('../pubspec.yaml'));
         final FlutterManifest packageFlutterManifest = await FlutterManifest.createFromPath(packageManifestPath);
         if (packageFlutterManifest == null)
           continue;
diff --git a/packages/flutter_tools/test/asset_test.dart b/packages/flutter_tools/test/asset_test.dart
new file mode 100644
index 0000000..b9fb826
--- /dev/null
+++ b/packages/flutter_tools/test/asset_test.dart
@@ -0,0 +1,51 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:async';
+
+import 'package:flutter_tools/src/asset.dart';
+import 'package:flutter_tools/src/base/file_system.dart';
+import 'package:flutter_tools/src/cache.dart';
+import 'package:test/test.dart';
+import 'src/common.dart';
+import 'src/context.dart';
+
+void main()  {
+  group('Assets', () {
+    final String dataPath = fs.path.join(
+      getFlutterRoot(),
+      'packages',
+      'flutter_tools',
+      'test',
+      'data',
+      'asset_test',
+    );
+
+    setUpAll(() {
+      Cache.disableLocking();
+    });
+
+    // This test intentionally does not use a memory file system to ensure
+    // that AssetBundle with fonts also works on Windows.
+    testUsingContext('app font uses local font file', () async {
+      final AssetBundle asset = new AssetBundle();
+      await asset.build(
+        manifestPath : fs.path.join(dataPath, 'main', 'pubspec.yaml'),
+        packagesPath: fs.path.join(dataPath, 'main', '.packages'),
+        includeDefaultFonts: false,
+      );
+
+      expect(asset.entries.containsKey('FontManifest.json'), isTrue);
+      expect(
+        await getValueAsString('FontManifest.json', asset),
+        '[{"family":"packages/font/test_font","fonts":[{"asset":"packages/font/test_font_file"}]}]',
+      );
+    });
+
+  });
+}
+
+Future<String> getValueAsString(String key, AssetBundle asset) async {
+  return new String.fromCharCodes(await asset.entries[key].contentsAsBytes());
+}
diff --git a/packages/flutter_tools/test/data/asset_test/font/pubspec.yaml b/packages/flutter_tools/test/data/asset_test/font/pubspec.yaml
new file mode 100644
index 0000000..12120f9
--- /dev/null
+++ b/packages/flutter_tools/test/data/asset_test/font/pubspec.yaml
@@ -0,0 +1,8 @@
+name: font
+description: A test project that contains a font.
+flutter:
+  uses-material-design: true
+  fonts:
+   - family: test_font
+     fonts:
+       - asset: test_font_file
diff --git a/packages/flutter_tools/test/data/asset_test/font/test_font_file b/packages/flutter_tools/test/data/asset_test/font/test_font_file
new file mode 100644
index 0000000..2933b96
--- /dev/null
+++ b/packages/flutter_tools/test/data/asset_test/font/test_font_file
@@ -0,0 +1 @@
+This is a fake font.
diff --git a/packages/flutter_tools/test/data/asset_test/main/.packages b/packages/flutter_tools/test/data/asset_test/main/.packages
new file mode 100644
index 0000000..bcd4ecc
--- /dev/null
+++ b/packages/flutter_tools/test/data/asset_test/main/.packages
@@ -0,0 +1 @@
+font:../font/lib/
diff --git a/packages/flutter_tools/test/data/asset_test/main/pubspec.yaml b/packages/flutter_tools/test/data/asset_test/main/pubspec.yaml
new file mode 100644
index 0000000..2268b19
--- /dev/null
+++ b/packages/flutter_tools/test/data/asset_test/main/pubspec.yaml
@@ -0,0 +1,6 @@
+name: main
+description: A test project that has a package with a font as a dependency.
+
+dependencies:
+  font:
+    path: ../font