diff --git a/file_path_special.c b/file_path_special.c index 29d811ff24..989499e023 100644 --- a/file_path_special.c +++ b/file_path_special.c @@ -63,6 +63,7 @@ #include "configuration.h" #include "file_path_special.h" +#include "msg_hash.h" #include "paths.h" #include "verbosity.h" @@ -165,6 +166,17 @@ void fill_pathname_application_special(char *s, fill_pathname_basedir(s, path_get(RARCH_PATH_CONFIG), len); } break; + case APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG: + { + char *s1 = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + s1[0] = '\0'; + settings_t *settings = config_get_ptr(); + const char *dir_assets = settings->paths.directory_assets; + fill_pathname_join(s1, dir_assets, "pkg", PATH_MAX_LENGTH * sizeof(char)); + strlcpy(s, s1, len); + free(s1); + } + break; case APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB_ICONS: #ifdef HAVE_XMB { @@ -327,10 +339,32 @@ void fill_pathname_application_special(char *s, s1[0] = '\0'; - fill_pathname_application_special(s1, - PATH_MAX_LENGTH * sizeof(char), - APPLICATION_SPECIAL_DIRECTORY_ASSETS_MATERIALUI); - fill_pathname_join(s, s1, "font.ttf", len); + switch (*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE)) { + case RETRO_LANGUAGE_ARABIC: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "fallback-font.ttf", len); + break; + case RETRO_LANGUAGE_CHINESE_SIMPLIFIED: + case RETRO_LANGUAGE_CHINESE_TRADITIONAL: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "chinese-fallback-font.ttf", len); + break; + case RETRO_LANGUAGE_KOREAN: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "korean-fallback-font.ttf", len); + break; + default: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_MATERIALUI); + fill_pathname_join(s, s1, "font.ttf", len); + } free(s1); } @@ -350,10 +384,32 @@ void fill_pathname_application_special(char *s, s1[0] = '\0'; - fill_pathname_application_special(s1, - PATH_MAX_LENGTH * sizeof(char), - APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB); - fill_pathname_join(s, s1, "font.ttf", len); + switch (*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE)) { + case RETRO_LANGUAGE_ARABIC: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "fallback-font.ttf", len); + break; + case RETRO_LANGUAGE_CHINESE_SIMPLIFIED: + case RETRO_LANGUAGE_CHINESE_TRADITIONAL: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "chinese-fallback-font.ttf", len); + break; + case RETRO_LANGUAGE_KOREAN: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(s, s1, "korean-fallback-font.ttf", len); + break; + default: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_XMB); + fill_pathname_join(s, s1, "font.ttf", len); + } free(s1); } } diff --git a/file_path_special.h b/file_path_special.h index 9eb7f39d4b..72bea45e19 100644 --- a/file_path_special.h +++ b/file_path_special.h @@ -104,6 +104,9 @@ enum application_special_type APPLICATION_SPECIAL_NONE = 0, APPLICATION_SPECIAL_DIRECTORY_AUTOCONFIG, APPLICATION_SPECIAL_DIRECTORY_CONFIG, + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG, + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG_AR_FONT, + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG_CJK_FONT, APPLICATION_SPECIAL_DIRECTORY_ASSETS_MATERIALUI, APPLICATION_SPECIAL_DIRECTORY_ASSETS_MATERIALUI_FONT, APPLICATION_SPECIAL_DIRECTORY_ASSETS_MATERIALUI_ICONS, diff --git a/menu/drivers/ozone/ozone.c b/menu/drivers/ozone/ozone.c index e044337fcb..29105c268e 100644 --- a/menu/drivers/ozone/ozone.c +++ b/menu/drivers/ozone/ozone.c @@ -636,13 +636,61 @@ static void ozone_set_layout(ozone_handle_t *ozone, bool is_threaded) ozone->pointer_active_delta = CURSOR_ACTIVE_DELTA * scale_factor; /* Initialise fonts */ - fill_pathname_join(font_path, ozone->assets_path, "bold.ttf", sizeof(font_path)); + char *s1 = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + s1[0] = '\0'; + switch (*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE)) { + case RETRO_LANGUAGE_ARABIC: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "fallback-font.ttf", sizeof(font_path)); + break; + case RETRO_LANGUAGE_CHINESE_SIMPLIFIED: + case RETRO_LANGUAGE_CHINESE_TRADITIONAL: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "chinese-fallback-font.ttf", sizeof(font_path)); + break; + case RETRO_LANGUAGE_KOREAN: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "korean-fallback-font.ttf", sizeof(font_path)); + break; + default: + fill_pathname_join(font_path, ozone->assets_path, "bold.ttf", sizeof(font_path)); + } font_inited = ozone_init_font(&ozone->fonts.title, is_threaded, font_path, FONT_SIZE_TITLE * scale_factor); ozone->has_all_assets = ozone->has_all_assets && font_inited; - fill_pathname_join(font_path, ozone->assets_path, "regular.ttf", sizeof(font_path)); + switch (*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE)) { + case RETRO_LANGUAGE_ARABIC: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "fallback-font.ttf", sizeof(font_path)); + break; + case RETRO_LANGUAGE_CHINESE_SIMPLIFIED: + case RETRO_LANGUAGE_CHINESE_TRADITIONAL: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "chinese-fallback-font.ttf", sizeof(font_path)); + break; + case RETRO_LANGUAGE_KOREAN: + fill_pathname_application_special(s1, + PATH_MAX_LENGTH * sizeof(char), + APPLICATION_SPECIAL_DIRECTORY_ASSETS_PKG); + fill_pathname_join(font_path, s1, "korean-fallback-font.ttf", sizeof(font_path)); + break; + default: + fill_pathname_join(font_path, ozone->assets_path, "regular.ttf", sizeof(font_path)); + } + + free(s1); font_inited = ozone_init_font(&ozone->fonts.footer, is_threaded, font_path, FONT_SIZE_FOOTER * scale_factor); @@ -1542,7 +1590,7 @@ static void ozone_draw_header(ozone_handle_t *ozone, unsigned logo_icon_size = 60 * scale_factor; unsigned status_icon_size = 92 * scale_factor; unsigned seperator_margin = 30 * scale_factor; - enum gfx_animation_ticker_type + enum gfx_animation_ticker_type menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; /* Initial ticker configuration */