mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Merge pull request #10699 from guoyunhe/ar-cjk-fonts
Fix Arabic, Chinese and Korean font rendering
This commit is contained in:
commit
8ce192de82
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user