Repository: go
Issue: x/image/font/opentype: `Face.Kern` always returns the same value
Labels: NeedsInvestigation

<!--
Please answer these questions before submitting your issue. Thanks!
For questions please use one of our forums: https://github.com/golang/go/wiki/Questions
-->

### What version of Go are you using (`go version`)?

<pre>
$ go version
go version go1.16.4 windows/amd64
</pre>

### Does this issue reproduce with the latest release?

Yes

### What operating system and processor architecture are you using (`go env`)?

<details><summary><code>go env</code> Output</summary><br><pre>
$ go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=D:\projects\go\bin
set GOCACHE=D:\devenv\go\1.16.4\..\cache
set GOENV=C:\Users\Polyscone\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\projects\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\projects\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=D:\devenv\go\1.16.4
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\devenv\go\1.16.4\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16.4
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\POLYSC~1\AppData\Local\Temp\go-build1223181173=/tmp/go-build -gno-record-gcc-switches
</pre></details>

### What did you do?

<!--
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.
-->

I parsed the `arial.ttf` font on my Windows 10 machine and attempted to use the `Face.Kern` method to adjust the horizontal position of some glyphs as I rendered them.

(`Face.Kern`: https://pkg.go.dev/golang.org/x/image@v0.0.0-20210607152325-775e3b0c77b9/font/opentype#Face.Kern)

### What did you expect to see?

I expected to see `Face.Kern` return a different value based on the size of the font face being used.

### What did you see instead?

I always see the same number for a given pair of characters being returned regardless of the size of the font face being used.

I'm not sure if this is intended or not, but given that other methods on `Face`, for example, `GlyphBounds`, return different values based on the size of the face being used, I assumed that `Face.Kern` should do the same.

I brought this up as an issue here: https://github.com/hajimehoshi/ebiten/issues/1671, where @hajimehoshi pointed out that it's being used without any additional scaling here: https://cs.opensource.google/go/x/image/+/775e3b0c:font/font.go;l=228;drc=3f4726a040e860b3702c9dab9e3b94cad413328f, which also leads me to believe that `Face.Kern` always returning the same number for a given pair of glyphs isn't the expected behaviour.

As can be seen in my linked issue in the Ebiten repo, my current workaround is to scale it myself:
```go
kernScale := fixed.Int26_6(facePtSize * (faceDPI / fontUnitsPerEm) * 64.0)
fx += face.Kern(prevR, r).Mul(kernScale)
```
I'm not sure if this is actually an accurate way to do it since I don't know much about fonts myself, but it seems to work for me for now.

If this is actually the intended behaviour then a bit more documentation explaining that it needs to be scaled by the user would be helpful, but based on what I've seen so far I'm guessing this is actually a bug.