From 8dfd610cd5f90d48660ccc620811cb1ff6f5aefb Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Fri, 16 Oct 2026 00:28:03 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E5=AD=97=E4=BD=93=E6=98=A0=E5=B0=84):=20?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E4=B8=AD=E6=96=87=E5=AD=97=E4=BD=93=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/base/font/cff.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/base/font/cff.go b/internal/base/font/cff.go index 97f0e43..2c28aa3 100644 --- a/internal/base/font/cff.go +++ b/internal/base/font/cff.go @@ -1355,16 +1355,17 @@ func adobeGB1CIDToUnicode(cid int) (rune, bool) { if row < 16 || row > 87 || cell < 1 || cell > 94 { return 0, false } - gbk := []byte{byte(row + 0xA0), byte(cell + 0xA0)} - decoded, err := simplifiedchinese.GBK.NewDecoder().Bytes(gbk) - if err != nil || len(decoded) == 0 { + gbk := [2]byte{byte(row + 0xA0), byte(cell + 0xA0)} + var decoded [2 * utf8.UTFMax]byte + nDst, nSrc, err := simplifiedchinese.GBK.NewDecoder().Transform(decoded[:], gbk[:], true) + if err != nil || nDst == 0 || nSrc != len(gbk) { return 0, false } - rs := []rune(string(decoded)) - if len(rs) != 1 { + r, size := utf8.DecodeRune(decoded[:nDst]) + if size != nDst { return 0, false } - return rs[0], true + return r, true } // getUnicodeFromName 根据字形名称获取对应的Unicode字符