From f3e76c661d8a1dc0e531f4c82b03c73db83bf676 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Mon, 1 Aug 2011 08:21:12 +0000 Subject: [PATCH] Evas font: added support for ':lang=' and fixed a possibly mem leak. SVN revision: 61941 --- legacy/evas/src/lib/canvas/evas_font_dir.c | 11 ++++++++--- legacy/evas/src/lib/include/evas_private.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_font_dir.c b/legacy/evas/src/lib/canvas/evas_font_dir.c index fa8e122565..b9259eac36 100644 --- a/legacy/evas/src/lib/canvas/evas_font_dir.c +++ b/legacy/evas/src/lib/canvas/evas_font_dir.c @@ -406,6 +406,7 @@ evas_font_desc_unref(Evas_Font_Description *fdesc) { eina_stringshare_del(fdesc->name); eina_stringshare_del(fdesc->fallbacks); + eina_stringshare_del(fdesc->lang); free(fdesc); } } @@ -458,9 +459,9 @@ evas_font_name_parse(Evas_Font_Description *fdesc, const char *name) end = strchr(name, ':'); if (!end) - fdesc->name = eina_stringshare_add(name); + eina_stringshare_replace(&(fdesc->name), name); else - fdesc->name = eina_stringshare_add_length(name, end - name); + eina_stringshare_replace_length(&(fdesc->name), name, end - name); while (end) { @@ -484,7 +485,8 @@ evas_font_name_parse(Evas_Font_Description *fdesc, const char *name) } else if (!strncmp(name, ":lang=", 6)) { - /* FIXME: handle lang. */ + const char *tmp = name + 6; + eina_stringshare_replace_length(&(fdesc->lang), tmp, tend - tmp); } } } @@ -733,6 +735,9 @@ evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Eva } } + if (fdesc->lang) + FcPatternAddString (p_nm, FC_LANG, (FcChar8 *) fdesc->lang); + FcConfigSubstitute(NULL, p_nm, FcMatchPattern); FcDefaultSubstitute(p_nm); diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 507f4ed9b0..2db318d331 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -638,6 +638,7 @@ struct _Evas_Font_Description /* We assume everywhere this is stringshared */ const char *name; const char *fallbacks; + const char *lang; Evas_Font_Slant slant; Evas_Font_Weight weight;