Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/interface/interface_style.c')
-rw-r--r--source/blender/editors/interface/interface_style.c36
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?