}
else if ((fg->ext_dat) && FT_HAS_COLOR(fg->fi->src->ft.face))
{
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ /*
if (dc->font_ext.func.gl_image_draw)
- {
- dc->font_ext.func.gl_image_draw(dc->font_ext.data,
- fg->ext_dat,
- 0, 0, w, h,
- chr_x, y - (chr_y - y), w, h,
- EINA_TRUE);
- }
+ dc->font_ext.func.gl_image_draw
+ (dc->font_ext.data, fg->ext_dat, 0, 0, w, h,
+ chr_x, y - (chr_y - y), draw_w, draw_h, EINA_TRUE);
else
- {
- _evas_font_image_draw(dc, dst,
- fg->ext_dat,
- 0, 0, w, h,
- chr_x, y - (chr_y - y), w, h,
- EINA_TRUE);
- }
+ _evas_font_image_draw
+ (dc, dst, fg->ext_dat, 0, 0, w, h,
+ chr_x, y - (chr_y - y), draw_w, draw_h, EINA_TRUE);
+ */
+ int draw_w = w * fg->fi->scale_factor;
+ int draw_h = h * fg->fi->scale_factor;
+
+ if (dc->font_ext.func.gl_image_draw)
+ dc->font_ext.func.gl_image_draw
+ (dc->font_ext.data, fg->ext_dat, 0, 0, w, h,
+ chr_x, y - (chr_y - y), draw_w, draw_h, EINA_TRUE);
+ else
+ _evas_font_image_draw
+ (dc, dst, fg->ext_dat, 0, 0, w, h,
+ chr_x, y - (chr_y - y), draw_w, draw_h, EINA_TRUE);
+ //
}
}
}
FT_Activate_Size(fi->ft.size);
}
fi->real_size = fi->size * 64;
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ fi->scale_factor = 1.0;
+ //
error = FT_Set_Char_Size(fi->src->ft.face, 0, fi->real_size, font_dpi, font_dpi);
if (error)
error = FT_Set_Pixel_Sizes(fi->src->ft.face, 0, fi->real_size);
FTLOCK();
if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
- error = FT_Select_Size(fi->src->ft.face, strike_index);
+ {
+ error = FT_Select_Size(fi->src->ft.face, strike_index);
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (!error)
+ fi->scale_factor = (float)fi->size * 64.0 / (float)fi->real_size;
+ //
+ }
else
- error = FT_Set_Pixel_Sizes(fi->src->ft.face, 0, fi->real_size);
+ {
+ error = FT_Set_Pixel_Sizes(fi->src->ft.face, 0, fi->real_size);
+ }
FTUNLOCK();
if (error)
WRN("NOT SCALABLE!");
}
val = (int)fi->src->ft.face->size->metrics.ascender;
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ val *= fi->scale_factor;
+ //
+
return FONT_METRIC_ROUNDUP(val);
// printf("%i | %i\n", val, val >> 6);
// if (fi->src->ft.face->units_per_EM == 0)
fi->src->current_size = fi->size;
}
val = -(int)fi->src->ft.face->size->metrics.descender;
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ val *= fi->scale_factor;
+ //
+
return FONT_METRIC_ROUNDUP(val);
// if (fi->src->ft.face->units_per_EM == 0)
// return val;
val = FONT_METRIC_ROUNDUP((int)fi->src->ft.face->size->metrics.ascender);
else
val = (int)fi->src->ft.face->bbox.yMax;
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ val *= fi->scale_factor;
+ //
+
if (fi->src->ft.face->units_per_EM == 0)
return val;
dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
val = FONT_METRIC_ROUNDUP(-(int)fi->src->ft.face->size->metrics.descender);
else
val = -(int)fi->src->ft.face->bbox.yMin;
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ val *= fi->scale_factor;
+ //
+
if (fi->src->ft.face->units_per_EM == 0)
return val;
dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
fi->src->current_size = fi->size;
}
val = (int)fi->src->ft.face->size->metrics.height;
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ val *= fi->scale_factor;
+ //
+
if ((fi->src->ft.face->bbox.yMax == 0) &&
(fi->src->ft.face->bbox.yMin == 0) &&
(fi->src->ft.face->units_per_EM == 0))
fg->width = EVAS_FONT_ROUND_26_6_TO_INT(outbox.xMax - outbox.xMin);
fg->x_bear = EVAS_FONT_ROUND_26_6_TO_INT(outbox.xMin);
fg->y_bear = EVAS_FONT_ROUND_26_6_TO_INT(outbox.yMax);
+
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ if (FT_HAS_FIXED_SIZES(fi->src->ft.face))
+ {
+ fg->glyph->advance.x *= fi->scale_factor;
+ fg->glyph->advance.y *= fi->scale_factor;
+ fg->width *= fi->scale_factor;
+ fg->x_bear *= fi->scale_factor;
+ fg->y_bear *= fi->scale_factor;
+ }
+ //
}
fg->index = idx;
Eina_Hash *kerning;
Fash_Glyph *fash;
unsigned int size;
+ // TIZEN_ONLY(20150622): Add scale feature for embedded bitmap fonts.
+ float scale_factor;
+ //
int real_size;
int max_h;
int references;