@@ -903,21 +903,21 @@ static void LCUIFont_FreeEngine(void)
903903#ifdef LCUI_BUILD_IN_WIN32
904904static 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
928928static 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
955951static 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