diff --git a/modules/canvaskit/CHANGELOG.md b/modules/canvaskit/CHANGELOG.md
index 3ddc977..7ba10bb 100644
--- a/modules/canvaskit/CHANGELOG.md
+++ b/modules/canvaskit/CHANGELOG.md
@@ -6,10 +6,17 @@
 
 ## [Unreleased]
 
+### Added
+ - `SkFontMgr.countFamilies` and `SkFontMgr.getFamilyName` to expose the parsed font names.
+
 ### Changed
  - SKP serialization/deserialization now available (can be disabled with the 'no_skp').
    `SkPicture.DEBUGONLY_saveAsFile` renamed to `SkPicture.saveAsFile` and
    `CanvasKit.MakeSkPicture` is now exposed. SKP support is not shipped to npm builds.
+   `force_serialize_skp` has been removed since it opt-out, not opt-in.
+
+### Fixed
+ - Bug that sometimes resulted in 'Cannot perform Construct on a neutered ArrayBuffer'
 
 ## [0.11.0] - 2020-01-10
 
diff --git a/modules/canvaskit/canvaskit_bindings.cpp b/modules/canvaskit/canvaskit_bindings.cpp
index 62af7be..4c4964c 100644
--- a/modules/canvaskit/canvaskit_bindings.cpp
+++ b/modules/canvaskit/canvaskit_bindings.cpp
@@ -1126,6 +1126,15 @@
             return SkFontMgr_New_Custom_Data(datas, sizes, numFonts);
         }), allow_raw_pointers())
         .class_function("RefDefault", &SkFontMgr::RefDefault)
+        .function("countFamilies", &SkFontMgr::countFamilies)
+        .function("getFamilyName", optional_override([](SkFontMgr& self, int index)->JSString {
+            if (index < 0 || index >= self.countFamilies()) {
+                return emscripten::val::null();
+            }
+            SkString s;
+            self.getFamilyName(index, &s);
+            return emscripten::val(s.c_str());
+        }))
 #ifdef SK_DEBUG
         .function("dumpFamilies", optional_override([](SkFontMgr& self) {
             int numFam = self.countFamilies();
@@ -1137,7 +1146,6 @@
             }
         }))
 #endif
-        .function("countFamilies", &SkFontMgr::countFamilies)
         .function("_makeTypefaceFromData", optional_override([](SkFontMgr& self,
                                                 uintptr_t /* uint8_t*  */ fPtr,
                                                 int flen)->sk_sp<SkTypeface> {
diff --git a/modules/canvaskit/externs.js b/modules/canvaskit/externs.js
index a824464..9e53f45 100644
--- a/modules/canvaskit/externs.js
+++ b/modules/canvaskit/externs.js
@@ -255,6 +255,7 @@
 		FromData: function() {},
 		RefDefault: function() {},
 		countFamilies: function() {},
+		getFamilyName: function() {},
 
 		// private API
 		_makeTypefaceFromData: function() {},
diff --git a/modules/canvaskit/tests/font.spec.js b/modules/canvaskit/tests/font.spec.js
index 2cf748a..aacff8c 100644
--- a/modules/canvaskit/tests/font.spec.js
+++ b/modules/canvaskit/tests/font.spec.js
@@ -1,4 +1,4 @@
-describe('CanvasKit\'s Path Behavior', function() {
+describe('CanvasKit\'s Font Behavior', function() {
     let container = document.createElement('div');
     document.body.appendChild(container);
     const CANVAS_WIDTH = 600;
diff --git a/modules/canvaskit/tests/paragraph.spec.js b/modules/canvaskit/tests/paragraph.spec.js
index c6b437e..71dfa68 100644
--- a/modules/canvaskit/tests/paragraph.spec.js
+++ b/modules/canvaskit/tests/paragraph.spec.js
@@ -51,6 +51,8 @@
             paint.setStyle(CanvasKit.PaintStyle.Stroke);
 
             const fontMgr = CanvasKit.SkFontMgr.FromData(notoSerifFontBuffer);
+            expect(fontMgr.countFamilies()).toEqual(1);
+            expect(fontMgr.getFamilyName(0)).toEqual('Noto Serif');
 
             const wrapTo = 200;
 
@@ -218,9 +220,9 @@
             const canvas = surface.getCanvas();
 
             const fontMgr = CanvasKit.SkFontMgr.FromData([notoSerifFontBuffer, emojiFontBuffer]);
-            if (fontMgr.dumpFamilies) {
-                fontMgr.dumpFamilies();
-            }
+            expect(fontMgr.countFamilies()).toEqual(2);
+            expect(fontMgr.getFamilyName(0)).toEqual('Noto Serif');
+            expect(fontMgr.getFamilyName(1)).toEqual('Noto Color Emoji');
 
             const wrapTo = 450;
 
