X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/61655fd96ce959e47ad8d047387e5585843fc789..5fbd17e369ca30a47ab8a2eda0b2f2ea9b690bb4:/src/w32uniscribe.c diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c index c153c8f356..2a7fe2e6f9 100644 --- a/src/w32uniscribe.c +++ b/src/w32uniscribe.c @@ -1,5 +1,5 @@ /* Font backend for the Microsoft W32 Uniscribe API. - Copyright (C) 2008-2013 Free Software Foundation, Inc. + Copyright (C) 2008-2015 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -47,14 +47,10 @@ struct uniscribe_font_info 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); @@ -69,28 +65,27 @@ memq_no_quit (Lisp_Object elt, Lisp_Object list) /* Font backend interface implementation. */ static Lisp_Object -uniscribe_list (Lisp_Object frame, Lisp_Object font_spec) +uniscribe_list (struct frame *f, Lisp_Object font_spec) { - Lisp_Object fonts = w32font_list_internal (frame, font_spec, 1); + Lisp_Object fonts = w32font_list_internal (f, font_spec, 1); FONT_ADD_LOG ("uniscribe-list", font_spec, fonts); return fonts; } static Lisp_Object -uniscribe_match (Lisp_Object frame, Lisp_Object font_spec) +uniscribe_match (struct frame *f, Lisp_Object font_spec) { - Lisp_Object entity = w32font_match_internal (frame, font_spec, 1); + Lisp_Object entity = w32font_match_internal (f, font_spec, 1); FONT_ADD_LOG ("uniscribe-match", font_spec, entity); return entity; } static Lisp_Object -uniscribe_list_family (Lisp_Object frame) +uniscribe_list_family (struct frame *f) { Lisp_Object list = Qnil; LOGFONT font_match_pattern; HDC dc; - FRAME_PTR f = XFRAME (frame); memset (&font_match_pattern, 0, sizeof (font_match_pattern)); /* Limit enumerated fonts to outline fonts to save time. */ @@ -107,7 +102,7 @@ uniscribe_list_family (Lisp_Object frame) } static Lisp_Object -uniscribe_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) +uniscribe_open (struct frame *f, Lisp_Object font_entity, int pixel_size) { Lisp_Object font_object = font_make_object (VECSIZE (struct uniscribe_font_info), @@ -128,15 +123,13 @@ uniscribe_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) /* Uniscribe backend uses glyph indices. */ uniscribe_font->w32_font.glyph_idx = ETO_GLYPH_INDEX; - /* Mark the format as opentype */ - uniscribe_font->w32_font.font.props[FONT_FORMAT_INDEX] = Qopentype; uniscribe_font->w32_font.font.driver = &uniscribe_font_driver; return font_object; } static void -uniscribe_close (FRAME_PTR f, struct font *font) +uniscribe_close (struct font *font) { struct uniscribe_font_info *uniscribe_font = (struct uniscribe_font_info *) font; @@ -144,7 +137,7 @@ uniscribe_close (FRAME_PTR f, struct font *font) if (uniscribe_font->cache) ScriptFreeCache (&(uniscribe_font->cache)); - w32font_close (f, font); + w32font_close (font); } /* Return a list describing which scripts/languages FONT supports by @@ -594,23 +587,21 @@ uniscribe_encode_char (struct font *font, int c) 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); Unused: - int uniscribe_prepare_face (FRAME_PTR f, struct face *face); - void uniscribe_done_face (FRAME_PTR f, struct face *face); + int uniscribe_prepare_face (struct frame *f, struct face *face); + void uniscribe_done_face (struct frame *f, struct face *face); int uniscribe_get_bitmap (struct font *font, unsigned code, struct font_bitmap *bitmap, int bits_per_pixel); void uniscribe_free_bitmap (struct font *font, struct font_bitmap *bitmap); - void * uniscribe_get_outline (struct font *font, unsigned code); - void uniscribe_free_outline (struct font *font, void *outline); int uniscribe_anchor_point (struct font *font, unsigned code, int index, int *x, int *y); - int uniscribe_start_for_frame (FRAME_PTR f); - int uniscribe_end_for_frame (FRAME_PTR f); + int uniscribe_start_for_frame (struct frame *f); + int uniscribe_end_for_frame (struct frame *f); */ @@ -618,7 +609,7 @@ uniscribe_encode_char (struct font *font, int c) /* 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) @@ -965,7 +956,7 @@ font_table_error: struct font_driver uniscribe_font_driver = { - 0, /* Quniscribe */ + LISP_INITIALLY_ZERO, /* Quniscribe */ 0, /* case insensitive */ w32font_get_cache, uniscribe_list, @@ -982,8 +973,6 @@ struct font_driver uniscribe_font_driver = w32font_draw, NULL, /* get_bitmap */ NULL, /* free_bitmap */ - NULL, /* get_outline */ - NULL, /* free_outline */ NULL, /* anchor_point */ uniscribe_otf_capability, /* Defined so (font-get FONTOBJ :otf) works. */ NULL, /* otf_drive - use shape instead. */