mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 17:27:08 +08:00
feat(字体处理): 提升字体封装校验性能
This commit is contained in:
1 parent
239baf9ce8
commit
dc48962eb3
1 file changed
+15
-13
+15
-13
@@ -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
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user