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, ".") {