font/sfnt: fix Font.GlyphIndex nil Buffer dereference

Fixes golang/go#46948

Change-Id: Ie3a2e60cf858ebeded73686bbac3e8d8448132a8
Reviewed-on: https://go-review.googlesource.com/c/image/+/398774
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
Auto-Submit: Nigel Tao <nigeltao@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Nigel Tao (INACTIVE; USE @golang.org INSTEAD) <nigeltao@google.com>
diff --git a/font/sfnt/cmap.go b/font/sfnt/cmap.go
index 55b4ead..2035ea9 100644
--- a/font/sfnt/cmap.go
+++ b/font/sfnt/cmap.go
@@ -186,6 +186,9 @@
 				if offset > indexesLength || offset+2 > indexesLength {
 					return 0, errInvalidCmapTable
 				}
+				if b == nil {
+					b = &Buffer{}
+				}
 				x, err := b.view(&f.src, int(indexesBase+offset), 2)
 				if err != nil {
 					return 0, err