forked from enlightenment/efl
BAD TASN!
ROLL BACK TODAYS CHANGES TO EVAS.... SEGV SEGV EVERYWHERE! *SPANK* SVN revision: 58933
This commit is contained in:
parent
a96bb7a222
commit
2d2b2d686e
|
@ -420,12 +420,6 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
|
|||
in_text;
|
||||
#else
|
||||
const Eina_Unicode *text = in_text;
|
||||
/* Not relevant in the Harfbuzz case, and will soon will not be relevant
|
||||
* at all */
|
||||
(void) text;
|
||||
/* Should be marked as unused? or should I do something fancy about it to
|
||||
* make sure the given fi is relevant? */
|
||||
(void) fn;
|
||||
#endif
|
||||
DATA32 *im;
|
||||
FT_Face pface = NULL;
|
||||
|
@ -521,8 +515,21 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font
|
|||
#endif
|
||||
|
||||
im = dst->image.data;
|
||||
fi = text_props->font_instance;
|
||||
evas_common_font_int_reload(fi);
|
||||
/* Load the glyph according to the first letter of the script, preety
|
||||
* bad, but will have to do */
|
||||
{
|
||||
/* Skip common chars */
|
||||
const Eina_Unicode *tmp;
|
||||
for (tmp = text ;
|
||||
((size_t) (tmp - text) < text_props->text_len) &&
|
||||
evas_common_language_char_script_get(*tmp) ==
|
||||
EVAS_SCRIPT_COMMON ;
|
||||
tmp++)
|
||||
;
|
||||
if (((size_t) (tmp - text) == text_props->text_len) && (tmp > text))
|
||||
tmp--;
|
||||
evas_common_font_glyph_search(fn, &fi, *tmp);
|
||||
}
|
||||
|
||||
if (fi->src->current_size != fi->size)
|
||||
{
|
||||
|
@ -836,8 +843,20 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Eina_Unicode *in_text, con
|
|||
gl = dc->font_ext.func.gl_new ? 1: 0;
|
||||
|
||||
above = 0; below = 0; baseline = 0; height = 0; descent = 0;
|
||||
fi = text_props->font_instance;
|
||||
evas_common_font_int_reload(fi);
|
||||
/* Load the glyph according to the first letter of the script, preety
|
||||
* bad, but will have to do */
|
||||
{
|
||||
/* Skip common chars */
|
||||
const Eina_Unicode *tmp;
|
||||
for (tmp = text ;
|
||||
((tmp - text) < len) &&
|
||||
evas_common_language_char_script_get(*tmp) ==
|
||||
EVAS_SCRIPT_COMMON ;
|
||||
tmp++)
|
||||
;
|
||||
if (((tmp - text) == len) && (tmp > text)) tmp--;
|
||||
evas_common_font_glyph_search(fn, &fi, *tmp);
|
||||
}
|
||||
|
||||
if (fi->src->current_size != fi->size)
|
||||
{
|
||||
|
|
|
@ -201,12 +201,18 @@ evas_common_text_props_content_create(void *_fn, const Eina_Unicode *text,
|
|||
}
|
||||
|
||||
#ifdef OT_SUPPORT
|
||||
/* FIXME: as soon as we start caching fi for non-harfbuzz as well, move
|
||||
* this (until text_props->fi = fi outside the ifdef */
|
||||
size_t char_index;
|
||||
Evas_Font_Glyph_Info *gl_itr;
|
||||
const Eina_Unicode *base_char;
|
||||
Evas_Coord pen_x = 0, adjust_x = 0;
|
||||
(void) par_props;
|
||||
(void) par_pos;
|
||||
|
||||
evas_common_font_ot_populate_text_props(fn, text, text_props, len);
|
||||
|
||||
/* Load the glyph according to the first letter of the script, preety
|
||||
* bad, but will have to do */
|
||||
{
|
||||
const Eina_Unicode *base_char;
|
||||
/* Skip common chars */
|
||||
for (base_char = text ;
|
||||
*base_char &&
|
||||
|
@ -218,17 +224,6 @@ evas_common_text_props_content_create(void *_fn, const Eina_Unicode *text,
|
|||
evas_common_font_glyph_search(fn, &fi, *base_char);
|
||||
}
|
||||
|
||||
text_props->font_instance = fi;
|
||||
|
||||
|
||||
size_t char_index;
|
||||
Evas_Font_Glyph_Info *gl_itr;
|
||||
Evas_Coord pen_x = 0, adjust_x = 0;
|
||||
(void) par_props;
|
||||
(void) par_pos;
|
||||
|
||||
evas_common_font_ot_populate_text_props(fn, text, text_props, len);
|
||||
|
||||
gl_itr = text_props->info->glyph;
|
||||
for (char_index = 0 ; char_index < text_props->len ; char_index++)
|
||||
{
|
||||
|
@ -238,7 +233,6 @@ evas_common_text_props_content_create(void *_fn, const Eina_Unicode *text,
|
|||
/* If we got a malformed index, show the replacement char instead */
|
||||
if (gl_itr->index == 0)
|
||||
{
|
||||
/* FIXME: search inside the same fi. */
|
||||
gl_itr->index =
|
||||
evas_common_font_glyph_search(fn, &fi, REPLACEMENT_CHAR);
|
||||
is_replacement = EINA_TRUE;
|
||||
|
@ -279,12 +273,14 @@ evas_common_text_props_content_create(void *_fn, const Eina_Unicode *text,
|
|||
/* Update the advance accordingly */
|
||||
adjust_x += (pen_x + (fg->glyph->advance.x >> 16)) -
|
||||
gl_itr->pen_after;
|
||||
|
||||
/* FIXME: reload fi, a bit slow, but I have no choice. */
|
||||
evas_common_font_glyph_search(fn, &fi, *base_char);
|
||||
}
|
||||
pen_x = gl_itr->pen_after;
|
||||
}
|
||||
gl_itr->pen_after += adjust_x;
|
||||
|
||||
fi = text_props->font_instance;
|
||||
gl_itr++;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -23,7 +23,6 @@ struct _Evas_Text_Props
|
|||
Evas_BiDi_Props bidi;
|
||||
Evas_Script_Type script;
|
||||
Evas_Text_Props_Info *info;
|
||||
void *font_instance;
|
||||
|
||||
/* FIXME: just a hack in the meanwhile, remove when I can finally cache
|
||||
* fi and split to scripts without harfbuzz */
|
||||
|
|
Loading…
Reference in New Issue