[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