summaryrefslogtreecommitdiffstats
path: root/libass/ass_font.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-05-14 20:24:53 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-05-14 20:24:53 +0000
commit33b678a028186c0269f04a5fd63e7fbd7a8b0e93 (patch)
treef0a1581409d5f09a914af7fa5a657b821fdc96af /libass/ass_font.c
parentd5ede6cbe1f2ac9fa569fa19228bc35ab02f5d58 (diff)
downloadlibass-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.c30
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