diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-05-14 20:41:14 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-05-14 20:41:14 +0000 |
commit | 8513877facd5a3084465053c4f05a4d3ffd8825b (patch) | |
tree | f5364588cf497f9017877015ee41894707ad703f /libass/ass_font.c | |
parent | b51b557529e0b83e866bc705b4f4330f013997cb (diff) | |
download | mpv-8513877facd5a3084465053c4f05a4d3ffd8825b.tar.bz2 mpv-8513877facd5a3084465053c4f05a4d3ffd8825b.tar.xz |
Support fractional font sizes.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23318 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_font.c')
-rw-r--r-- | libass/ass_font.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c index 34a15ed4e1..40060876e6 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -67,8 +67,9 @@ 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); + double size_scale = font->size / (int)font->size; + m.xx = double_to_d16(font->scale_x * size_scale); + m.yy = double_to_d16(font->scale_y * size_scale); m.xy = m.yx = 0; for (i = 0; i < font->n_faces; ++i) FT_Set_Transform(font->faces[i], &m, &font->v); @@ -132,7 +133,7 @@ ass_font_t* ass_font_new(ass_library_t* library, FT_Library ftlibrary, void* fc_ font.scale_x = font.scale_y = 1.; font.v.x = font.v.y = 0; - font.size = 0; + font.size = 0.; #ifdef HAVE_FONTCONFIG font.charset = FcCharSetCreate(); @@ -156,13 +157,14 @@ void ass_font_set_transform(ass_font_t* font, double scale_x, double scale_y, FT /** * \brief Set font size **/ -void ass_font_set_size(ass_font_t* font, int size) +void ass_font_set_size(ass_font_t* font, double size) { int i; if (font->size != size) { font->size = size; for (i = 0; i < font->n_faces; ++i) - FT_Set_Pixel_Sizes(font->faces[i], 0, size); + FT_Set_Pixel_Sizes(font->faces[i], 0, (int)size); + update_transform(font); } } @@ -199,7 +201,7 @@ static void ass_font_reselect(void* fontconfig_priv, ass_font_t* font, uint32_t font->faces[font->n_faces++] = face; update_transform(font); - FT_Set_Pixel_Sizes(face, 0, font->size); + FT_Set_Pixel_Sizes(face, 0, (int)font->size); } #endif |