FT_Matrix matrix;
};
+size_t ftfont_info_size = sizeof (struct ftfont_info);
+
enum ftfont_cache_for
{
FTFONT_CACHE_FOR_FACE,
}
-static Lisp_Object
-ftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
+Lisp_Object
+ftfont_open2 (struct frame *f,
+ Lisp_Object entity,
+ int pixel_size,
+ Lisp_Object font_object)
{
struct ftfont_info *ftfont_info;
struct font *font;
FT_Face ft_face;
FT_Size ft_size;
FT_UInt size;
- Lisp_Object val, filename, idx, cache, font_object;
+ Lisp_Object val, filename, idx, cache;
bool scalable;
int spacing;
int i;
return Qnil;
}
- font_object = font_build_object (VECSIZE (struct ftfont_info),
- Qfreetype, entity, size);
ASET (font_object, FONT_FILE_INDEX, filename);
font = XFONT_OBJECT (font_object);
ftfont_info = (struct ftfont_info *) font;
return font_object;
}
+static Lisp_Object
+ftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
+{
+ Lisp_Object font_object;
+ FT_UInt size;
+ size = XINT (AREF (entity, FONT_SIZE_INDEX));
+ if (size == 0)
+ size = pixel_size;
+ font_object = font_build_object (VECSIZE (struct ftfont_info),
+ Qfreetype, entity, size);
+ return ftfont_open2 (f, entity, pixel_size, font_object);
+}
+
static void
ftfont_close (struct font *font)
{