diff --git a/font/sfnt/proprietary_test.go b/font/sfnt/proprietary_test.go
index 8948d5d..e7f8fa4 100644
--- a/font/sfnt/proprietary_test.go
+++ b/font/sfnt/proprietary_test.go
@@ -103,6 +103,14 @@
 	testProprietary(t, "apple", "Apple Symbols.ttf", 4600, -1)
 }
 
+func TestProprietaryAppleGeezaPro0(t *testing.T) {
+	testProprietary(t, "apple", "GeezaPro.ttc?0", 1700, -1)
+}
+
+func TestProprietaryAppleGeezaPro1(t *testing.T) {
+	testProprietary(t, "apple", "GeezaPro.ttc?1", 1700, -1)
+}
+
 func TestProprietaryAppleHiragino0(t *testing.T) {
 	testProprietary(t, "apple", "ヒラギノ角ゴシック W0.ttc?0", 9000, 6)
 }
@@ -320,6 +328,8 @@
 	"adobe/SourceSansPro-Regular.ttf":   "Version 2.020;PS 2.000;hotconv 1.0.86;makeotf.lib2.5.63406",
 
 	"apple/Apple Symbols.ttf":    "12.0d3e10",
+	"apple/GeezaPro.ttc?0":       "12.0d1e3",
+	"apple/GeezaPro.ttc?1":       "12.0d1e3",
 	"apple/ヒラギノ角ゴシック W0.ttc?0": "11.0d7e1",
 	"apple/ヒラギノ角ゴシック W0.ttc?1": "11.0d7e1",
 
@@ -340,6 +350,8 @@
 	"adobe/SourceSansPro-Regular.ttf":   "Source Sans Pro",
 
 	"apple/Apple Symbols.ttf":    "Apple Symbols",
+	"apple/GeezaPro.ttc?0":       "Geeza Pro Regular",
+	"apple/GeezaPro.ttc?1":       "Geeza Pro Bold",
 	"apple/ヒラギノ角ゴシック W0.ttc?0": "Hiragino Sans W0",
 	"apple/ヒラギノ角ゴシック W0.ttc?1": ".Hiragino Kaku Gothic Interface W0",
 
diff --git a/font/sfnt/sfnt.go b/font/sfnt/sfnt.go
index 32122bf..20ade4d 100644
--- a/font/sfnt/sfnt.go
+++ b/font/sfnt/sfnt.go
@@ -693,10 +693,20 @@
 		}
 		return f.parseKernVersion0(buf, offset, length)
 	case 1:
-		// TODO: find such a (proprietary?) font, and support it. Both of
-		// https://www.microsoft.com/typography/otspec/kern.htm
+		if buf[2] != 0 || buf[3] != 0 {
+			return nil, 0, 0, errUnsupportedKernTable
+		}
+		// Microsoft's https://www.microsoft.com/typography/otspec/kern.htm
+		// says that "Apple has extended the definition of the 'kern' table to
+		// provide additional functionality. The Apple extensions are not
+		// supported on Windows."
+		//
+		// The format is relatively complicated, including encoding a state
+		// machine, but rarely seen. We follow Microsoft's and FreeType's
+		// behavior and simply ignore it. Theoretically, we could follow
 		// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kern.html
-		// say that such fonts work on Mac OS but not on Windows.
+		// but it doesn't seem worth the effort.
+		return buf, 0, 0, nil
 	}
 	return nil, 0, 0, errUnsupportedKernTable
 }
@@ -729,7 +739,9 @@
 	case 0:
 		return f.parseKernFormat0(buf, offset, subtableLength)
 	case 2:
-		// TODO: find such a (proprietary?) font, and support it.
+		// If we could find such a font, we could write code to support it, but
+		// a comment in the equivalent FreeType code (sfnt/ttkern.c) says that
+		// they've never seen such a font.
 	}
 	return nil, 0, 0, errUnsupportedKernTable
 }
@@ -982,9 +994,9 @@
 	if n := f.NumGlyphs(); int(x0) >= n || int(x1) >= n {
 		return 0, ErrNotFound
 	}
-	// Not every font has a kern table. If it doesn't, there's no need to
-	// allocate a Buffer.
-	if f.kern.length == 0 {
+	// Not every font has a kern table. If it doesn't, or if that table is
+	// ignored, there's no need to allocate a Buffer.
+	if f.cached.kernNumPairs == 0 {
 		return 0, nil
 	}
 	if b == nil {
