/* Font backend for the Microsoft W32 Uniscribe API.
- Copyright (C) 2008-2014 Free Software Foundation, Inc.
+ Copyright (C) 2008-2015 Free Software Foundation, Inc.
This file is part of GNU Emacs.
int uniscribe_available = 0;
-/* Defined in w32font.c, since it is required there as well. */
-extern Lisp_Object Quniscribe;
-extern Lisp_Object Qopentype;
-
/* EnumFontFamiliesEx callback. */
-static int CALLBACK add_opentype_font_name_to_list (ENUMLOGFONTEX *,
- NEWTEXTMETRICEX *,
- DWORD, LPARAM);
+static int CALLBACK ALIGN_STACK add_opentype_font_name_to_list (ENUMLOGFONTEX *,
+ NEWTEXTMETRICEX *,
+ DWORD, LPARAM);
/* Used by uniscribe_otf_capability. */
static Lisp_Object otf_features (HDC context, char *table);
static Lisp_Object
uniscribe_list (struct frame *f, Lisp_Object font_spec)
{
- Lisp_Object fonts = w32font_list_internal (f, font_spec, 1);
+ Lisp_Object fonts = w32font_list_internal (f, font_spec, true);
FONT_ADD_LOG ("uniscribe-list", font_spec, fonts);
return fonts;
}
static Lisp_Object
uniscribe_match (struct frame *f, Lisp_Object font_spec)
{
- Lisp_Object entity = w32font_match_internal (f, font_spec, 1);
+ Lisp_Object entity = w32font_match_internal (f, font_spec, true);
FONT_ADD_LOG ("uniscribe-match", font_spec, entity);
return entity;
}
static Lisp_Object
uniscribe_shape (Lisp_Object lgstring)
{
- struct font * font;
- struct uniscribe_font_info * uniscribe_font;
+ struct font *font = CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring));
+ struct uniscribe_font_info *uniscribe_font
+ = (struct uniscribe_font_info *) font;
EMACS_UINT nchars;
int nitems, max_items, i, max_glyphs, done_glyphs;
wchar_t *chars;
HDC context = NULL;
HFONT old_font = NULL;
- CHECK_FONT_GET_OBJECT (LGSTRING_FONT (lgstring), font);
- uniscribe_font = (struct uniscribe_font_info *) font;
-
/* Get the chars from lgstring in a form we can use with uniscribe. */
max_glyphs = nchars = LGSTRING_GLYPH_LEN (lgstring);
done_glyphs = 0;
Lisp_Object uniscribe_get_cache (Lisp_Object frame);
void uniscribe_free_entity (Lisp_Object font_entity);
int uniscribe_has_char (Lisp_Object entity, int c);
- int uniscribe_text_extents (struct font *font, unsigned *code,
- int nglyphs, struct font_metrics *metrics);
+ void uniscribe_text_extents (struct font *font, unsigned *code,
+ int nglyphs, struct font_metrics *metrics);
int uniscribe_draw (struct glyph_string *s, int from, int to,
int x, int y, int with_background);
/* Callback function for EnumFontFamiliesEx.
Adds the name of opentype fonts to a Lisp list (passed in as the
lParam arg). */
-static int CALLBACK
+static int CALLBACK ALIGN_STACK
add_opentype_font_name_to_list (ENUMLOGFONTEX *logical_font,
NEWTEXTMETRICEX *physical_font,
DWORD font_type, LPARAM list_object)