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 表数据
|
// 入参: data 表数据
|
||||||
// 返回: uint32 校验和
|
// 返回: uint32 校验和
|
||||||
func calcTableChecksum(data []byte) uint32 {
|
func calcTableChecksum(data []byte) uint32 {
|
||||||
var sum uint32
|
var a, b, c, d uint32
|
||||||
length := len(data)
|
for len(data) >= 16 {
|
||||||
for i := 0; i < length; i += 4 {
|
a += binary.BigEndian.Uint32(data[:4])
|
||||||
if i+4 <= length {
|
b += binary.BigEndian.Uint32(data[4:8])
|
||||||
sum += binary.BigEndian.Uint32(data[i : i+4])
|
c += binary.BigEndian.Uint32(data[8:12])
|
||||||
} else {
|
d += binary.BigEndian.Uint32(data[12:16])
|
||||||
var val uint32
|
data = data[16:]
|
||||||
rem := data[i:]
|
}
|
||||||
for j, b := range rem {
|
sum := a + b + c + d
|
||||||
val |= uint32(b) << (24 - 8*j)
|
for len(data) >= 4 {
|
||||||
}
|
sum += binary.BigEndian.Uint32(data[:4])
|
||||||
sum += val
|
data = data[4:]
|
||||||
}
|
}
|
||||||
|
for i, value := range data {
|
||||||
|
sum += uint32(value) << (24 - 8*i)
|
||||||
}
|
}
|
||||||
return sum
|
return sum
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user