mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-22 17:40:13 +01:00
🎨 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) {
|
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) {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue