Skip to content

Commit 9b4c005

Browse files
committed
fix(font): failed to set default font after loading font file
1 parent 367febe commit 9b4c005

1 file changed

Lines changed: 34 additions & 31 deletions

File tree

src/font/fontlibrary.c

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -903,21 +903,21 @@ static void LCUIFont_FreeEngine(void)
903903
#ifdef LCUI_BUILD_IN_WIN32
904904
static void LCUIFont_LoadFontsForWindows(void)
905905
{
906-
int i;
907-
int ids[4];
906+
size_t i;
907+
int *ids = NULL;
908+
const char *names = "Consola, Simsun, Microsoft YaHei";
908909
const char *fonts[] = { "C:/Windows/Fonts/consola.ttf",
909910
"C:/Windows/Fonts/simsun.ttc",
910911
"C:/Windows/Fonts/msyh.ttf",
911912
"C:/Windows/Fonts/msyh.ttc" };
912913

913-
for (i = 0; i < 4; ++i) {
914-
ids[i] = LCUIFont_LoadFile(fonts[i]);
914+
for (i = 0; i < sizeof(fonts) / sizeof(char *); ++i) {
915+
LCUIFont_LoadFile(fonts[i]);
915916
}
916-
for (i = 3; i >= 0; --i) {
917-
if (ids[i] > 0) {
918-
LCUIFont_SetDefault(ids[i]);
919-
break;
920-
}
917+
i = LCUIFont_GetIdByNames(&ids, FONT_STYLE_NORMAL, FONT_WEIGHT_NORMAL,
918+
names);
919+
if (i > 0) {
920+
LCUIFont_SetDefault(ids[i - 1]);
921921
}
922922
}
923923

@@ -927,50 +927,53 @@ static void LCUIFont_LoadFontsForWindows(void)
927927

928928
static void LCUIFont_LoadFontsByFontConfig(void)
929929
{
930-
int i;
931-
int ids[3];
930+
size_t i;
932931
char *path;
932+
int *ids = NULL;
933+
const char *names = "Noto Sans CJK, Ubuntu, WenQuanYi Micro Hei";
933934
const char *fonts[] = { "Ubuntu", "Noto Sans CJK SC",
934935
"WenQuanYi Micro Hei" };
935936

936-
for (i = 0; i < 3; ++i) {
937+
for (i = 0; i < sizeof(fonts) / sizeof(char *); ++i) {
937938
path = Fontconfig_GetPath(fonts[i]);
938-
if (path) {
939-
ids[i] = LCUIFont_LoadFile(path);
940-
} else {
941-
ids[i] = -1;
942-
}
939+
LCUIFont_LoadFile(path);
943940
free(path);
944941
}
945-
for (i = 2; i >= 0; --i) {
946-
if (ids[i] > 0) {
947-
LCUIFont_SetDefault(ids[i]);
948-
break;
949-
}
942+
i = LCUIFont_GetIdByNames(&ids, FONT_STYLE_NORMAL, FONT_WEIGHT_NORMAL,
943+
names);
944+
if (i > 0) {
945+
LCUIFont_SetDefault(ids[i - 1]);
950946
}
951947
}
952948

953949
#else
954950

955951
static void LCUIFont_LoadFontsForLinux(void)
956952
{
957-
int i;
958-
int ids[4];
953+
size_t i;
954+
int *ids = NULL;
955+
const char *names = "Noto Sans CJK SC, Ubuntu, WenQuanYi Micro Hei";
959956
const char *fonts[] = {
960957
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-R.ttf",
958+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-RI.ttf",
959+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf",
960+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-BI.ttf",
961+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-M.ttf",
962+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-MI.ttf",
963+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf",
964+
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-LI.ttf",
961965
"/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",
962966
"/usr/share/fonts/opentype/noto/NotoSansCJK.ttc",
963967
"/usr/share/fonts/truetype/wqy/wqy-microhei.ttc"
964968
};
965969

966-
for (i = 0; i < 4; ++i) {
967-
ids[i] = LCUIFont_LoadFile(fonts[i]);
970+
for (i = 0; i < sizeof(fonts) / sizeof(char *); ++i) {
971+
LCUIFont_LoadFile(fonts[i]);
968972
}
969-
for (i = 3; i >= 0; --i) {
970-
if (ids[i] > 0) {
971-
LCUIFont_SetDefault(ids[i]);
972-
break;
973-
}
973+
i = LCUIFont_GetIdByNames(&ids, FONT_STYLE_NORMAL, FONT_WEIGHT_NORMAL,
974+
names);
975+
if (i > 0) {
976+
LCUIFont_SetDefault(ids[i - 1]);
974977
}
975978
}
976979
#endif

0 commit comments

Comments
 (0)