From fc2411f5bd667549415f014847682a5eaeeeada0 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 4 Jan 2025 12:07:47 +0800 Subject: [PATCH] :bug: Settings - Editor - Font is garbled on macOS https://github.com/siyuan-note/siyuan/issues/13713 --- kernel/util/font.go | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/kernel/util/font.go b/kernel/util/font.go index b01a7303a..97ad30b7f 100644 --- a/kernel/util/font.go +++ b/kernel/util/font.go @@ -125,17 +125,32 @@ func loadFonts() (ret []*Font) { 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 { - family = val - } - if sfnt.NamePreferredFamily == e.NameID && "" != val { - family = val + 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 { + 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, ".") {