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) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
ret.Data = util.GetSysFonts(model.Conf.Lang)
ret.Data = util.GetSysFonts()
}
func version(c *gin.Context) {

View file

@ -30,8 +30,8 @@ import (
"golang.org/x/text/transform"
)
func GetSysFonts(currentLanguage string) (ret []string) {
fonts := loadFonts(currentLanguage)
func GetSysFonts() (ret []string) {
fonts := loadFonts()
ret = []string{}
for _, font := range fonts {
ret = append(ret, font.Family)
@ -58,7 +58,7 @@ type Font struct {
Family string
}
func loadFonts(currentLanguage string) (ret []*Font) {
func loadFonts() (ret []*Font) {
ret = []*Font{}
for _, fontPath := range findfont.List() {
if strings.HasSuffix(strings.ToLower(fontPath), ".ttc") {
@ -102,51 +102,28 @@ func loadFonts(currentLanguage string) (ret []*Font) {
return
}
fontFile.Close()
var family, familyChinese string
var family string
for _, e := range t.List() {
if sfnt.NameFontFamily != e.NameID && sfnt.NamePreferredFamily != e.NameID {
continue
}
if sfnt.PlatformLanguageID(1033) == e.LanguageID {
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 {
family = val
}
if sfnt.NamePreferredFamily == e.NameID && "" != 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
}
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 {
family = val
}
if sfnt.NamePreferredFamily == e.NameID && "" != val {
family = val
}
}
if "" != family && !strings.HasPrefix(family, ".") {
ret = append(ret, &Font{fontPath, family})
//LogInfof("[%s] [%s]", fontPath, family)
}
if "" != familyChinese && !strings.HasPrefix(familyChinese, ".") {
ret = append(ret, &Font{fontPath, familyChinese})
//LogInfof("[%s] [%s]", fontPath, family)
//logging.LogInfof("[%s] [%s]", fontPath, family)
}
}
}