This commit is contained in:
Daniel 2024-12-05 08:50:54 +08:00
parent 23a3452a5e
commit 0b5a83d55f
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 17 additions and 40 deletions

View file

@ -548,7 +548,7 @@ func setFollowSystemLockScreen(c *gin.Context) {
func getSysFonts(c *gin.Context) { func getSysFonts(c *gin.Context) {
ret := gulu.Ret.NewResult() ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret) defer c.JSON(http.StatusOK, ret)
ret.Data = util.GetSysFonts(model.Conf.Lang) ret.Data = util.GetSysFonts()
} }
func version(c *gin.Context) { func version(c *gin.Context) {

View file

@ -30,8 +30,8 @@ import (
"golang.org/x/text/transform" "golang.org/x/text/transform"
) )
func GetSysFonts(currentLanguage string) (ret []string) { func GetSysFonts() (ret []string) {
fonts := loadFonts(currentLanguage) fonts := loadFonts()
ret = []string{} ret = []string{}
for _, font := range fonts { for _, font := range fonts {
ret = append(ret, font.Family) ret = append(ret, font.Family)
@ -58,7 +58,7 @@ type Font struct {
Family string Family string
} }
func loadFonts(currentLanguage string) (ret []*Font) { func loadFonts() (ret []*Font) {
ret = []*Font{} ret = []*Font{}
for _, fontPath := range findfont.List() { for _, fontPath := range findfont.List() {
if strings.HasSuffix(strings.ToLower(fontPath), ".ttc") { if strings.HasSuffix(strings.ToLower(fontPath), ".ttc") {
@ -102,13 +102,12 @@ func loadFonts(currentLanguage string) (ret []*Font) {
return return
} }
fontFile.Close() fontFile.Close()
var family, familyChinese string var family string
for _, e := range t.List() { for _, e := range t.List() {
if sfnt.NameFontFamily != e.NameID && sfnt.NamePreferredFamily != e.NameID { if sfnt.NameFontFamily != e.NameID && sfnt.NamePreferredFamily != e.NameID {
continue continue
} }
if sfnt.PlatformLanguageID(1033) == e.LanguageID {
v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value) v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value)
if err != nil { if err != nil {
//LogErrorf("decode font family [%s] failed: %s", fontPath, err) //LogErrorf("decode font family [%s] failed: %s", fontPath, err)
@ -121,32 +120,10 @@ func loadFonts(currentLanguage string) (ret []*Font) {
if sfnt.NamePreferredFamily == e.NameID && "" != val { if sfnt.NamePreferredFamily == e.NameID && "" != val {
family = val family = val
} }
} else if sfnt.PlatformLanguageID(2052) == e.LanguageID {
if "zh_CN" != currentLanguage {
continue
}
v, _, err := transform.Bytes(textUnicode.UTF16(textUnicode.BigEndian, textUnicode.IgnoreBOM).NewDecoder(), e.Value)
if err != nil {
//LogErrorf("decode font family [%s] failed: %s", fontPath, err)
continue
}
val := string(v)
if sfnt.NameFontFamily == e.NameID && "" != val {
familyChinese = val
}
if sfnt.NamePreferredFamily == e.NameID && "" != val {
familyChinese = val
}
}
} }
if "" != family && !strings.HasPrefix(family, ".") { if "" != family && !strings.HasPrefix(family, ".") {
ret = append(ret, &Font{fontPath, family}) ret = append(ret, &Font{fontPath, family})
//LogInfof("[%s] [%s]", fontPath, family) //logging.LogInfof("[%s] [%s]", fontPath, family)
}
if "" != familyChinese && !strings.HasPrefix(familyChinese, ".") {
ret = append(ret, &Font{fontPath, familyChinese})
//LogInfof("[%s] [%s]", fontPath, family)
} }
} }
} }