🎨 Improve system font loading https://github.com/siyuan-note/siyuan/issues/13356
This commit is contained in:
parent
23a3452a5e
commit
0b5a83d55f
2 changed files with 17 additions and 40 deletions
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue