+/* The four HFONTS are for the 4 (underlined, strikethrough)
+ combinations. Only the one at index 0, neither underlined nor
+ struk through is created with the font instance. Other fonts are
+ created as necessary during redisplay, using the one at index 0
+ as prototype */
+#define MSWINDOWS_NUM_FONT_VARIANTS 4
+struct mswindows_font_instance_data
+{
+ HFONT hfont [MSWINDOWS_NUM_FONT_VARIANTS];
+};
+
+#define MSWINDOWS_FONT_INSTANCE_DATA(c) \
+ ((struct mswindows_font_instance_data *) (c)->data)
+
+#define FONT_INSTANCE_MSWINDOWS_HFONT_I(c,i) \
+ (MSWINDOWS_FONT_INSTANCE_DATA(c)->hfont[(i)])
+
+#define FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT(c,under,strike) \
+ FONT_INSTANCE_MSWINDOWS_HFONT_I (c, (!!(strike)<<1)|!!(under))
+
+/* If font creation during redisplay fails, then the following
+ value is used to prevent future attempts to create this font.
+ Redisplay uses the "main" font when encounters this value */
+#define MSWINDOWS_BAD_HFONT ((HFONT)INVALID_HANDLE_VALUE)
+
+HFONT mswindows_get_hfont (Lisp_Font_Instance* f, int under, int strike);
+
+Lisp_Object mswindows_color_to_string (COLORREF color);