From dc48962eb30740059a92da080986ec67cbca06ba Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Fri, 16 Oct 2026 00:40:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AD=97=E4=BD=93=E5=A4=84=E7=90=86):=20?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E5=AD=97=E4=BD=93=E5=B0=81=E8=A3=85=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/base/font/util.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/internal/base/font/util.go b/internal/base/font/util.go index dc6efa4..a5bb820 100644 --- a/internal/base/font/util.go +++ b/internal/base/font/util.go @@ -91,19 +91,21 @@ func FileTables(data []byte, index int) (map[string][]byte, error) { // 入参: data 表数据 // 返回: uint32 校验和 func calcTableChecksum(data []byte) uint32 { - var sum uint32 - length := len(data) - for i := 0; i < length; i += 4 { - if i+4 <= length { - sum += binary.BigEndian.Uint32(data[i : i+4]) - } else { - var val uint32 - rem := data[i:] - for j, b := range rem { - val |= uint32(b) << (24 - 8*j) - } - sum += val - } + var a, b, c, d uint32 + for len(data) >= 16 { + a += binary.BigEndian.Uint32(data[:4]) + b += binary.BigEndian.Uint32(data[4:8]) + c += binary.BigEndian.Uint32(data[8:12]) + d += binary.BigEndian.Uint32(data[12:16]) + data = data[16:] + } + sum := a + b + c + d + for len(data) >= 4 { + sum += binary.BigEndian.Uint32(data[:4]) + data = data[4:] + } + for i, value := range data { + sum += uint32(value) << (24 - 8*i) } return sum }