Evas font: skip over common script items when getting the font, we should get the font of the actual script items.

SVN revision: 56484
This commit is contained in:
Tom Hacohen 2011-01-30 10:39:42 +00:00
parent f7a4cf52a8
commit 58af440aab
2 changed files with 36 additions and 5 deletions

View 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)
{

View File

@ -24,7 +24,18 @@
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; \
@ -47,9 +58,19 @@
{ \
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) \