[canvaskit] Allow users to load their own fonts

Instead of using the test font(s), now ship with a small
(100k) Monospace font. This can be disabled by:
    compile.sh no_font ...

This saves about 350k (164k gzipped) in binary size.

Bug: skia:
Change-Id: I195e3b35bea86d0f096066c1c6a44a4b602571f3
Reviewed-on: https://skia-review.googlesource.com/c/176580
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/experimental/canvaskit/htmlcanvas/font.js b/experimental/canvaskit/htmlcanvas/font.js
index 04edbda..549208d 100644
--- a/experimental/canvaskit/htmlcanvas/font.js
+++ b/experimental/canvaskit/htmlcanvas/font.js
@@ -2,9 +2,9 @@
 
 var units = 'px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q';
 var fontSizeRegex = new RegExp('([\\d\\.]+)(' + units + ')');
-var defaultHeight = 12;
+var defaultHeight = 16;
 // Based off of node-canvas's parseFont
-// returns font size in *points* (original impl was in px);
+// returns font size in px, which represents the em width.
 function parseFontSize(fontStr) {
   // This is naive and doesn't account for line-height yet
   // (but neither does node-canvas's?)
@@ -17,23 +17,22 @@
   var unit = fontSize[2];
   switch (unit) {
     case 'pt':
-      return size;
-    case 'px':
-      return size * 3/4;
-    case 'pc':
-      return size * 12;
-    case 'in':
-      return size * 72;
-    case 'cm':
-      return size * 72.0 / 2.54;
-    case 'mm':
-      return size * (72.0 / 25.4);
-    case '%':
-      return size * (defaultHeight / 100);
     case 'em':
     case 'rem':
-      return size * defaultHeight;
-    case 'q':
-      return size * (96 / 25.4 / 3);
+      return size * 4/3;
+    case 'px':
+      return size;
+    case 'pc':
+      return size * 16;
+    case 'in':
+      return size * 96;
+    case 'cm':
+      return size * 96.0 / 2.54;
+    case 'mm':
+      return size * (96.0 / 25.4);
+    case 'q': // quarter millimeters
+      return size * (96.0 / 25.4 / 4);
+    case '%':
+      return size * (defaultHeight / 75);
   }
 }
\ No newline at end of file