summaryrefslogtreecommitdiffstats
path: root/libass/ass_shaper.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-25 19:23:52 +0200
committerwm4 <wm4@nowhere>2013-09-26 00:39:13 +0200
commit4f542f2b9d003125c3b04416074078c3d81c0d6c (patch)
tree0cb8817499bd558a08e1d21a514fa9e2c1afa7fb /libass/ass_shaper.c
parent9b48357234806a4fe29ec97eba6c998a26033b5d (diff)
downloadlibass-4f542f2b9d003125c3b04416074078c3d81c0d6c.tar.bz2
libass-4f542f2b9d003125c3b04416074078c3d81c0d6c.tar.xz
Fix Hinting again
Commit 05eb520 missed some duplicated bits in ass_shaper.c. <wm4> oh crap <zgreg> oh crap indeed Instead of duplicating the logic in ass_shaper.c, just change the glyphs before they even get into processing. This way, all code reading the font size etc. is affected. This essentially reverts commit c207000c, because it's not needed anymore.
Diffstat (limited to 'libass/ass_shaper.c')
-rw-r--r--libass/ass_shaper.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/libass/ass_shaper.c b/libass/ass_shaper.c
index 46b11fe..46e6edc 100644
--- a/libass/ass_shaper.c
+++ b/libass/ass_shaper.c
@@ -392,9 +392,7 @@ static hb_font_t *get_hb_font(ASS_Shaper *shaper, GlyphInfo *info)
font->faces[info->face_index], NULL);
}
- // XXX: this is a rather crude hack
- const double ft_size = 256.0;
- ass_face_set_size(font->faces[info->face_index], ft_size);
+ ass_face_set_size(font->faces[info->face_index], info->font_size);
update_hb_size(hb_fonts[info->face_index], font->faces[info->face_index]);
// update hash key for cached metrics
@@ -525,7 +523,6 @@ static void shape_harfbuzz(ASS_Shaper *shaper, GlyphInfo *glyphs, size_t len)
hb_buffer_t *buf;
hb_font_t *font;
} runs[MAX_RUNS];
- const double ft_size = 256.0;
for (i = 0; i < len && run < MAX_RUNS; i++, run++) {
// get length and level of the current run
@@ -581,10 +578,10 @@ static void shape_harfbuzz(ASS_Shaper *shaper, GlyphInfo *glyphs, size_t len)
// set position and advance
info->skip = 0;
info->glyph_index = glyph_info[j].codepoint;
- info->offset.x = pos[j].x_offset * info->scale_x * (info->font_size / ft_size);
- info->offset.y = -pos[j].y_offset * info->scale_y * (info->font_size / ft_size);
- info->advance.x = pos[j].x_advance * info->scale_x * (info->font_size / ft_size);
- info->advance.y = -pos[j].y_advance * info->scale_y * (info->font_size / ft_size);
+ info->offset.x = pos[j].x_offset * info->scale_x;
+ info->offset.y = -pos[j].y_offset * info->scale_y;
+ info->advance.x = pos[j].x_advance * info->scale_x;
+ info->advance.y = -pos[j].y_advance * info->scale_y;
// accumulate advance in the root glyph
root->cluster_advance.x += info->advance.x;