diff options
Diffstat (limited to 'source/blender/editors/interface/interface_style.c')
-rw-r--r-- | source/blender/editors/interface/interface_style.c | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c index 5ea20b33b3a..92d02ff3dc2 100644 --- a/source/blender/editors/interface/interface_style.c +++ b/source/blender/editors/interface/interface_style.c @@ -42,6 +42,7 @@ #include "BLI_listbase.h" #include "BLI_rect.h" #include "BLI_string.h" +#include "BLI_utildefines.h" #include "BKE_global.h" @@ -315,21 +316,36 @@ void uiStyleInit(void) font= MEM_callocN(sizeof(uiFont), "ui font"); BLI_addtail(&U.uifonts, font); - strcpy(font->filename, "default"); + BLI_strncpy(font->filename, "default", sizeof(font->filename)); font->uifont_id= UIFONT_DEFAULT; } for(font= U.uifonts.first; font; font= font->next) { if(font->uifont_id==UIFONT_DEFAULT) { -#ifdef INTERNATIONAL - int unifont_size; - unsigned char *unifont_ttf= BLF_get_unifont(&unifont_size); - - if(unifont_ttf) - font->blf_id= BLF_load_mem_unique("default", unifont_ttf, unifont_size); - else - font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size); +#ifdef WITH_INTERNATIONAL + int font_size= datatoc_bfont_ttf_size; + unsigned char *font_ttf= (unsigned char*)datatoc_bfont_ttf; + static int last_font_size = 0; + + /* use unicode font for translation */ + if(U.transopts & USER_DOTRANSLATE) { + font_ttf= BLF_get_unifont(&font_size); + + if(!font_ttf) { + /* fall back if not found */ + font_size= datatoc_bfont_ttf_size; + font_ttf= (unsigned char*)datatoc_bfont_ttf; + } + } + + /* relload only if needed */ + if(last_font_size != font_size) { + BLF_unload("default"); + last_font_size = font_size; + } + + font->blf_id= BLF_load_mem("default", font_ttf, font_size); #else font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size); #endif @@ -342,7 +358,7 @@ void uiStyleInit(void) if (font->blf_id == -1) { if (G.f & G_DEBUG) - printf("uiStyleInit error, no fonts available\n"); + printf("%s: error, no fonts available\n", __func__); } else { /* ? just for speed to initialize? |