Evas font: skip over common script items when getting the font, we should get the...
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 30 Jan 2011 10:39:42 +0000 (10:39 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 30 Jan 2011 10:39:42 +0000 (10:39 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@56484 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/engines/common/evas_font_ot.c
src/lib/engines/common/evas_font_ot_walk.x

index 3a77afe..e5306b6 100644 (file)
@@ -162,7 +162,17 @@ evas_common_font_ot_populate_text_props(void *_fn, const Eina_Unicode *text,
         fi->src->current_size = fi->size;
      }
    /* Load the font needed for this script */
-   evas_common_font_glyph_search(fn, &fi, *text);
+     {
+        /* Skip common chars */
+        const Eina_Unicode *tmp;
+        for (tmp = text ;
+              *tmp &&
+              evas_common_language_char_script_get(*tmp) == EVAS_SCRIPT_COMMON ;
+              tmp++)
+          ;
+        if (!*tmp && (tmp > text)) tmp--;
+        evas_common_font_glyph_search(fn, &fi, *tmp);
+     }
 
    if (len < 0)
      {
index 496f830..5daec80 100644 (file)
         prev_index = 0; \
         /* Load the glyph according to the first letter of the script, preety
          * bad, but will have to do */ \
-        evas_common_font_glyph_search(fn, &fi, *text); \
+          { \
+             /* Skip common chars */ \
+             const Eina_Unicode *tmp; \
+             for (tmp = text ; \
+                   *tmp && \
+                   evas_common_language_char_script_get(*tmp) == \
+                   EVAS_SCRIPT_COMMON ; \
+                   tmp++) \
+               ; \
+             if (!*tmp && (tmp > text)) tmp--; \
+             evas_common_font_glyph_search(fn, &fi, *tmp); \
+          } \
         for (char_index = 0 ; char_index < intl_props->ot_data->len ; char_index++) \
           { \
              FT_UInt index; \
      { \
         int _char_index_d, _i; \
         int visible; \
-        /* Load the glyph according to the first letter of the script, preety
-         * bad, but will have to do */ \
-        evas_common_font_glyph_search(fn, &fi, *text); \
+        /* Load the font needed for this script */ \
+          { \
+             /* Skip common chars */ \
+             const Eina_Unicode *tmp; \
+             for (tmp = text ; \
+                   *tmp && \
+                   evas_common_language_char_script_get(*tmp) == \
+                   EVAS_SCRIPT_COMMON ; \
+                   tmp++) \
+               ; \
+             if (!*tmp && (tmp > text)) tmp--; \
+             evas_common_font_glyph_search(fn, &fi, *tmp); \
+          } \
         prev_index = 0; \
         _i = intl_props->ot_data->len; \
         if (intl_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL) \