billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=d53c4c5742c3aca1557c877ff7256c110273b626
commit d53c4c5742c3aca1557c877ff7256c110273b626 Author: Boris Faure <[email protected]> Date: Sun Sep 14 17:30:30 2014 +0200 try to guess a scalable default font. Closes T1426 --- src/bin/config.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/bin/config.h | 4 +++ src/bin/main.c | 3 +++ 3 files changed, 81 insertions(+) diff --git a/src/bin/config.c b/src/bin/config.c index 97d9990..df9d19b 100644 --- a/src/bin/config.c +++ b/src/bin/config.c @@ -341,6 +341,76 @@ _add_default_keys(Config *config) #undef ADD_KB } + +void +config_default_font_set(Config *config, Evas *evas) +{ + Eina_List *fontlist, *l; + const char *fname; + Eina_Bool dejavu_found = EINA_FALSE, + bitstream_found = EINA_FALSE, + droid_found = EINA_FALSE, + liberation_found = EINA_FALSE; + + if (config->font_set) return; + +#define FONT_DEJAVU "DejaVu Sans Mono:style=Book" +#define FONT_LIBERATION "Liberation Mono:style=Regular" +#define FONT_DROID "Droid Sans Mono:style=Regular" +#define FONT_BITSTREAM "Bitstream Vera Sans Mono:style=Roman" + + fontlist = evas_font_available_list(evas); + if (!fontlist) return; + + EINA_LIST_FOREACH(fontlist, l, fname) + { + if (strncmp(fname, FONT_DEJAVU, strlen(FONT_DEJAVU)) == 0) + dejavu_found = EINA_TRUE; + else if (strncmp(fname, FONT_LIBERATION, strlen(FONT_LIBERATION)) == 0) + liberation_found = EINA_TRUE; + else if (strncmp(fname, FONT_DROID, strlen(FONT_DROID)) == 0) + droid_found = EINA_TRUE; + else if (strncmp(fname, FONT_BITSTREAM, strlen(FONT_BITSTREAM)) == 0) + bitstream_found = EINA_TRUE; + } + + evas_font_available_list_free(evas, fontlist); + + fname = config->font.name; + config->font_set = EINA_TRUE; + if (dejavu_found) + { + config->font.name = eina_stringshare_add(FONT_DEJAVU); + } + else if (liberation_found) + { + config->font.name = eina_stringshare_add(FONT_LIBERATION); + } + else if (droid_found) + { + config->font.name = eina_stringshare_add(FONT_DROID); + } + else if (bitstream_found) + { + config->font.name = eina_stringshare_add(FONT_BITSTREAM); + } + else + { + config->font_set = EINA_FALSE; + } + + if (config->font_set) + { + config->font.bitmap = EINA_FALSE; + config->font.size = 12; + eina_stringshare_del(fname); + } +#undef FONT_DEJAVU +#undef FONT_LIBERATION +#undef FONT_DROID +#undef FONT_BITSTREAM +} + Config * config_load(const char *key) { @@ -461,6 +531,10 @@ config_load(const char *key) _add_default_keys(config); } } + else + { + config->font_set = 1; + } if (config) config->config_key = eina_stringshare_add(key); /* not in eet */ diff --git a/src/bin/config.h b/src/bin/config.h index 75ea1e5..f11e8f0 100644 --- a/src/bin/config.h +++ b/src/bin/config.h @@ -1,6 +1,8 @@ #ifndef _CONFIG_H__ #define _CONFIG_H__ 1 +#include <Evas.h> + typedef struct _Config Config; typedef struct _Config_Color Config_Color; typedef struct _Config_Keys Config_Keys; @@ -74,6 +76,7 @@ struct _Config Eina_List *keys; Eina_Bool temporary; /* not in EET */ + Eina_Bool font_set; /* not in EET */ const char *config_key; /* not in EET, the key that config was loaded */ }; @@ -84,6 +87,7 @@ void config_save(Config *config, const char *key); Config *config_load(const char *key); Config *config_fork(Config *config); void config_del(Config *config); +void config_default_font_set(Config *config, Evas *evas); const char *config_theme_path_get(const Config *config); const char *config_theme_path_default_get(const Config *config); diff --git a/src/bin/main.c b/src/bin/main.c index e39acbc..ecbd1db 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -2094,6 +2094,8 @@ main_win_new(const char *name, const char *role, const char *title, return NULL; } + config_default_font_set(config, evas_object_evas_get(wn->win)); + wn->config = config_fork(config); evas_object_event_callback_add(wn->win, EVAS_CALLBACK_DEL, _cb_del, wn); @@ -2702,6 +2704,7 @@ main_ipc_new(Ipc_Instance *inst) free(file); } } + wn->config->font_set = EINA_TRUE; wn->config->temporary = EINA_TRUE; } --
