Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-09-29 20:50:47 +08:00
parent eaae164e18
commit f42301a204
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -172,20 +172,35 @@ func parseTTFFontFamily(fontPath string) (ret string) {
family = strings.TrimSpace(string(v))
}
}
if sfnt.NamePreferredFamily == e.NameID && (sfnt.PlatformLanguageID(1033) == e.LanguageID || sfnt.PlatformLanguageID(2052) == e.LanguageID) {
v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value)
if err == nil {
family = strings.TrimSpace(string(v))
}
}
if sfnt.NameFontSubfamily == e.NameID && (sfnt.PlatformLanguageID(1033) == e.LanguageID || sfnt.PlatformLanguageID(2052) == e.LanguageID) {
v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value)
if err == nil {
subfamily = strings.TrimSpace(string(v))
}
}
if sfnt.NamePreferredSubfamily == e.NameID && (sfnt.PlatformLanguageID(1033) == e.LanguageID || sfnt.PlatformLanguageID(2052) == e.LanguageID) {
v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value)
if err == nil {
subfamily = strings.TrimSpace(string(v))
}
}
}
if family != "" && !strings.HasPrefix(family, ".") {
if subfamily != "" && !strings.Contains(subfamily, "<") && !strings.EqualFold(subfamily, "Regular") {
ret = family + " " + subfamily // 例如 "PingFang SC Bold"
} else {
//if family != "" && !strings.HasPrefix(family, ".") {
// if subfamily != "" && !strings.Contains(subfamily, "<") && !strings.EqualFold(subfamily, "Regular") {
// ret = family + "(" + subfamily + ")"
// } else {
// ret = family
// }
//}
// TODO: 字重加载方案
_ = subfamily
ret = family
}
}
return
}