diff --git a/internal/base/font/file.go b/internal/base/font/file.go index 511cfbd..a142d4d 100644 --- a/internal/base/font/file.go +++ b/internal/base/font/file.go @@ -49,7 +49,7 @@ func FaceInfo(data []byte, index int) Face { } return "" } - return Face{Index: index, FullName: name(4, 6, 16, 1), Family: name(16, 1), Style: name(17, 2), PostScriptName: name(6), Names: NamesFromTable(data)} + return Face{Index: index, FullName: name(4, 6, 16, 1), Family: name(16, 1), Style: name(17, 2), PostScriptName: name(6), Names: fontNamesFromValues(records, values)} } // FileCount 校验字体或集合头并读取字体数量 diff --git a/internal/base/font/name.go b/internal/base/font/name.go index a4ace62..a83332d 100644 --- a/internal/base/font/name.go +++ b/internal/base/font/name.go @@ -96,6 +96,13 @@ func fontFaceNames(file io.ReaderAt, offset int64) []string { // 返回: []string 字体名称列表 func NamesFromTable(data []byte) []string { records, values := fontNameValues(data) + return fontNamesFromValues(records, values) +} + +// fontNamesFromValues 从已解码记录生成去重名称,保留原有顺序及样式匹配 +// 入参: records 名称记录, values 已解码的名称文本 +// 返回: []string 字体名称列表 +func fontNamesFromValues(records []fontNameRecord, values map[[4]uint16]string) []string { var names []string seen := make(map[string]bool) for _, record := range records {