From 20e1bf95cd36dc3530ed326f42aee84b01198780 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Wed, 14 Oct 2026 00:57:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AD=97=E4=BD=93=E8=83=BD=E5=8A=9B):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E4=BD=93=E4=BF=A1=E6=81=AF=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/base/font/file.go | 2 +- internal/base/font/name.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 {