go x/image/font/opentype:泰语字体无法正确渲染

pftdvrlh  于 4个月前  发布在  Go
关注(0)|答案(1)|浏览(56)

你使用的Go版本是什么( go version )?

$ go version go1.15.6 darwin/amd64

这个问题在最新版本中是否重现?

是的,

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/rungsikorn.r/Library/Caches/go-build"
GOENV="/Users/rungsikorn.r/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/rungsikorn.r/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/rungsikorn.r/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/rungsikorn.r/go/src/***********/sliputil/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/78/kqk2z8953g9gy7z_lg29zqkr0000gq/T/go-build201421536=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

我使用 opentype 将泰语字符渲染成图像,但渲染结果不正确。

你期望看到什么?

"tone mark" 和 "vowel" 应该在正确的位置上渲染。与渲染结果进行比较。上面和下面的字形没有正确选择字形(图片来自 http://aodr.org/_common/do.php?a=full&b=12&bidx=717&aidx=9769 )

你看到了什么?

opentype 必须从字符索引表中选择正确的字形,该表需要根据泰语的语言组合规则进行计算。

kcwpcxri

kcwpcxri1#

我已经尝试实现需要的支持 post 脚本信息表解析(已经在 opentype 包中支持)和计算泰语字形规则组合的功能。

在这里还有一些工作正在进行 golang/freetype#81 ,但我发现这个包可能会被弃用,所以我会专注于在 x/image/font/opentype 中应用泰语字形组合规则的更改。

连字示例

B = 基础字符
U = 上元音
L = 下元音
T = 声调标记

B + U + T
ม + ั + ้ = มั้ย

相关问题