diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-05-14 20:24:53 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-05-14 20:24:53 +0000 |
commit | 33b678a028186c0269f04a5fd63e7fbd7a8b0e93 (patch) | |
tree | f0a1581409d5f09a914af7fa5a657b821fdc96af /libass/ass_font.c | |
parent | d5ede6cbe1f2ac9fa569fa19228bc35ab02f5d58 (diff) | |
download | libass-33b678a028186c0269f04a5fd63e7fbd7a8b0e93.tar.bz2 libass-33b678a028186c0269f04a5fd63e7fbd7a8b0e93.tar.xz |
Limit ass_font_set_transform to nonrotating transformations.
Rotations are not needed here (they are performed in transform3d) and they
disable autohinter.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23317 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_font.c')
-rw-r--r-- | libass/ass_font.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c index 7217f40..34a15ed 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -32,6 +32,7 @@ #include "ass_bitmap.h" #include "ass_cache.h" #include "ass_fontconfig.h" +#include "ass_utils.h" #include "mputils.h" /** @@ -62,6 +63,17 @@ static void charmap_magic(FT_Face face) } } +static void update_transform(ass_font_t* font) +{ + int i; + FT_Matrix m; + m.xx = double_to_d16(font->scale_x); + m.yy = double_to_d16(font->scale_y); + m.xy = m.yx = 0; + for (i = 0; i < font->n_faces; ++i) + FT_Set_Transform(font->faces[i], &m, &font->v); +} + /** * \brief find a memory font by name */ @@ -118,8 +130,7 @@ ass_font_t* ass_font_new(ass_library_t* library, FT_Library ftlibrary, void* fc_ font.desc.bold = desc->bold; font.desc.italic = desc->italic; - font.m.xx = font.m.yy = (FT_Fixed)0x10000L; - font.m.xy = font.m.yy = 0; + font.scale_x = font.scale_y = 1.; font.v.x = font.v.y = 0; font.size = 0; @@ -133,17 +144,13 @@ ass_font_t* ass_font_new(ass_library_t* library, FT_Library ftlibrary, void* fc_ /** * \brief Set font transformation matrix and shift vector **/ -void ass_font_set_transform(ass_font_t* font, FT_Matrix* m, FT_Vector* v) +void ass_font_set_transform(ass_font_t* font, double scale_x, double scale_y, FT_Vector* v) { - int i; - font->m.xx = m->xx; - font->m.xy = m->xy; - font->m.yx = m->yx; - font->m.yy = m->yy; + font->scale_x = scale_x; + font->scale_y = scale_y; font->v.x = v->x; font->v.y = v->y; - for (i = 0; i < font->n_faces; ++i) - FT_Set_Transform(font->faces[i], &font->m, &font->v); + update_transform(font); } /** @@ -191,8 +198,7 @@ static void ass_font_reselect(void* fontconfig_priv, ass_font_t* font, uint32_t } font->faces[font->n_faces++] = face; - - FT_Set_Transform(face, &font->m, &font->v); + update_transform(font); FT_Set_Pixel_Sizes(face, 0, font->size); } #endif |