font->desc.vertical = desc->vertical;
font->scale_x = font->scale_y = 1.;
- font->v.x = font->v.y = 0;
font->size = 0.;
int error = add_face(fontsel, font, 0);
}
/**
- * \brief Set font transformation matrix and shift vector
+ * \brief Set font transformation matrix
**/
-void ass_font_set_transform(ASS_Font *font, double scale_x,
- double scale_y, FT_Vector *v)
+void ass_font_set_transform(ASS_Font *font, double scale_x, double scale_y)
{
font->scale_x = scale_x;
font->scale_y = scale_y;
- if (v) {
- font->v.x = v->x;
- font->v.y = v->y;
- }
}
void ass_face_set_size(FT_Face face, double size)
ass_strike_outline_glyph(face, font, glyph, deco & DECO_UNDERLINE,
deco & DECO_STRIKETHROUGH);
- // Apply scaling and shift
+ // Apply scaling
FT_Matrix scale = { double_to_d16(font->scale_x), 0, 0,
double_to_d16(font->scale_y) };
FT_Outline *outl = &((FT_OutlineGlyph) glyph)->outline;
FT_Outline_Transform(outl, &scale);
- FT_Outline_Translate(outl, font->v.x, font->v.y);
glyph->advance.x *= font->scale_x;
return glyph;
ASS_ShaperFontData *shaper_priv;
int n_faces;
double scale_x, scale_y; // current transform
- FT_Vector v; // current shift
double size;
};
ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library,
FT_Library ftlibrary, ASS_FontSelector *fontsel,
ASS_FontDesc *desc);
-void ass_font_set_transform(ASS_Font *font, double scale_x,
- double scale_y, FT_Vector *v);
+void ass_font_set_transform(ASS_Font *font, double scale_x, double scale_y);
void ass_face_set_size(FT_Face face, double size);
void ass_font_set_size(ASS_Font *font, double size);
void ass_font_get_asc_desc(ASS_Font *font, uint32_t ch, int *asc,
} else {
ass_face_set_size(info->font->faces[info->face_index],
info->font_size);
- ass_font_set_transform(info->font, info->scale_x,
- info->scale_y, NULL);
+ ass_font_set_transform(info->font, info->scale_x, info->scale_y);
FT_Glyph glyph =
ass_font_get_glyph(info->font,
info->symbol, info->face_index, info->glyph_index,