+2008-05-20 Kenichi Handa <handa@m17n.org>
+
+ * Makefile.in (FONTSRC): Delete it. Change all $(FONTSRC) to
+ font.h through out the file.
+ (FONT_DRIVERS): Renamed from FONTOBJ.
+ (obj): Delete $(FONTOBJ). Add font.o.
+ (SOME_MACHINE_OBJECTS): Change $(FONTOBJ) to $(FONT_DRIVERS).
+
+ * emacs.c (main): Call syms_of_font unconditionally.
+
+ * font.h (find_font_encoding): Extern it.
+
+ * font.c (Vfont_encoding_alist, find_font_encoding): Moved from
+ fontset.c.
+ (font_pixel_size)[! HAVE_WINDOW_SYSTEM]: Return 1.
+ (font_open_entity): Update FRAME_X_DISPLAY_INFO (f)->n_fonts,
+ FRAME_SMALLEST_CHAR_WIDTH (f), and FRAME_SMALLEST_FONT_HEIGHT (f)
+ only when HAVE_WINDOW_SYSTEM is defined.
+ (font_close_object): Update FRAME_X_DISPLAY_INFO (f)->n_fonts only
+ when HAVE_WINDOW_SYSTEM is defined.
+
+ * fontset.c (Vfont_encoding_alist, find_font_encoding): Moved to
+ font.c.
+ (syms_of_fontset): Declaration of font-encoding-alist moved to
+ font.c.
+
+ * xfaces.c: Include font.h unconditionally.
+ (merge_face_ref, merge_face_vectors)
+ (Finternal_set_lisp_face_attribute): Cancel the previous change.
+
2008-05-20 Stefan Monnier <monnier@iro.umontreal.ca>
* xdisp.c (select_frame_for_redisplay): Adjust for last change to
#include "intervals.h"
#include "termchar.h"
-#ifdef HAVE_WINDOW_SYSTEM
#include "font.h"
+#ifdef HAVE_WINDOW_SYSTEM
#include "fontset.h"
#endif /* HAVE_WINDOW_SYSTEM */
&& !NILP (from[LFACE_INHERIT_INDEX]))
merge_face_ref (f, from[LFACE_INHERIT_INDEX], to, 0, named_merge_points);
-#ifdef HAVE_WINDOW_SYSTEM
i = LFACE_FONT_INDEX;
if (!UNSPECIFIEDP (from[i]))
{
to[i] = Fcopy_font_spec (from[i]);
ASET (to[i], FONT_SIZE_INDEX, Qnil);
}
-#endif
for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
if (!UNSPECIFIEDP (from[i]))
if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
{
to[i] = merge_face_heights (from[i], to[i], to[i]);
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_SIZE_INDEX);
-#endif
}
-#ifdef HAVE_WINDOW_SYSTEM
else if (i != LFACE_FONT_INDEX)
{
to[i] = from[i];
: i == LFACE_WEIGHT_INDEX ? FONT_WEIGHT_INDEX
: FONT_SLANT_INDEX));
}
-#endif
}
/* If `font' attribute is specified, reflect the font properties in
if (STRINGP (value))
{
to[LFACE_FAMILY_INDEX] = value;
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_FAMILY_INDEX);
-#endif
}
else
err = 1;
if (! NILP (new_height))
{
to[LFACE_HEIGHT_INDEX] = new_height;
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_SIZE_INDEX);
-#endif
}
else
err = 1;
if (SYMBOLP (value) && FONT_WEIGHT_NAME_NUMERIC (value) >= 0)
{
to[LFACE_WEIGHT_INDEX] = value;
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_WEIGHT_INDEX);
-#endif
}
else
err = 1;
if (SYMBOLP (value) && FONT_SLANT_NAME_NUMERIC (value) >= 0)
{
to[LFACE_SLANT_INDEX] = value;
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_SLANT_INDEX);
-#endif
}
else
err = 1;
if (SYMBOLP (value) && FONT_WIDTH_NAME_NUMERIC (value) >= 0)
{
to[LFACE_SWIDTH_INDEX] = value;
-#ifdef HAVE_WINDOW_SYSTEM
font_clear_prop (to, FONT_WIDTH_INDEX);
-#endif
}
else
err = 1;
{
Lisp_Object lface;
Lisp_Object old_value = Qnil;
-#ifdef HAVE_WINDOW_SYSTEM
/* Set one of enum font_property_index (> 0) if ATTR is one of
font-related attributes other than QCfont and QCfontset. */
enum font_property_index prop_index = 0;
-#endif
CHECK_SYMBOL (face);
CHECK_SYMBOL (attr);
}
old_value = LFACE_FAMILY (lface);
LFACE_FAMILY (lface) = value;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_FAMILY_INDEX;
-#endif
}
else if (EQ (attr, QCheight))
{
old_value = LFACE_HEIGHT (lface);
LFACE_HEIGHT (lface) = value;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_SIZE_INDEX;
-#endif
}
else if (EQ (attr, QCweight))
{
}
old_value = LFACE_WEIGHT (lface);
LFACE_WEIGHT (lface) = value;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_WEIGHT_INDEX;
-#endif
}
else if (EQ (attr, QCslant))
{
}
old_value = LFACE_SLANT (lface);
LFACE_SLANT (lface) = value;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_SLANT_INDEX;
-#endif
}
else if (EQ (attr, QCunderline))
{
}
old_value = LFACE_SWIDTH (lface);
LFACE_SWIDTH (lface) = value;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_WIDTH_INDEX;
-#endif
}
else if (EQ (attr, QCfont))
{
{
old_value = LFACE_WEIGHT (lface);
LFACE_WEIGHT (lface) = NILP (value) ? Qnormal : Qbold;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_WEIGHT_INDEX;
-#endif
}
else if (EQ (attr, QCitalic))
{
attr = QCslant;
old_value = LFACE_SLANT (lface);
LFACE_SLANT (lface) = NILP (value) ? Qnormal : Qitalic;
-#ifdef HAVE_WINDOW_SYSTEM
prop_index = FONT_SLANT_INDEX;
-#endif
}
else
signal_error ("Invalid face attribute name", attr);
-#ifdef HAVE_WINDOW_SYSTEM
if (prop_index)
/* If a font-related attribute other than QCfont and QCfontset is
specified, and if the original QCfont attribute has a font
the font to nil so that the font selector doesn't think that
the attribute is mandatory. */
font_clear_prop (XVECTOR (lface)->contents, prop_index);
-#endif
/* Changing a named face means that all realized faces depending on
that face are invalid. Since we cannot tell which realized faces