#undef xassert
#ifdef FONTSET_DEBUG
#define xassert(X) do {if (!(X)) abort ();} while (0)
-#undef INLINE
-#define INLINE
#else /* not FONTSET_DEBUG */
#define xassert(X) (void) 0
#endif /* not FONTSET_DEBUG */
/* Macros to access special values of (realized) FONTSET. */
#define FONTSET_BASE(fontset) XCHAR_TABLE (fontset)->extras[2]
#define FONTSET_FRAME(fontset) XCHAR_TABLE (fontset)->extras[3]
-#define FONTSET_OBJLIST(fontset) XCHAR_TABLE (fontset)->extras[4]
+/* #define FONTSET_OBJLIST(fontset) XCHAR_TABLE (fontset)->extras[4] */
#define FONTSET_NOFONT_FACE(fontset) XCHAR_TABLE (fontset)->extras[5]
/* #define FONTSET_REPERTORY(fontset) XCHAR_TABLE (fontset)->extras[6] */
#define FONTSET_DEFAULT(fontset) XCHAR_TABLE (fontset)->extras[7]
/* Return a font-group (actually a cons (-1 . FONT-GROUP-VECTOR)) for
character C in FONTSET. If C is -1, return a fallback font-group.
If C is not -1, the value may be Qt (FONTSET doesn't have a font
- for C even in the fallback group, or 0 (a font for C may be found
+ for C even in the fallback group), or 0 (a font for C may be found
only in the fallback group). */
static Lisp_Object
if (! NILP (font_group))
return font_group;
base_fontset = FONTSET_BASE (fontset);
- if (c >= 0)
+ if (NILP (base_fontset))
+ font_group = Qnil;
+ else if (c >= 0)
font_group = char_table_ref_and_range (base_fontset, c, &from, &to);
else
font_group = FONTSET_FALLBACK (base_fontset);
char_table_set_range (fontset, from, to, font_group);
return font_group;
}
+ if (!VECTORP (font_group))
+ return font_group;
font_group = Fcopy_sequence (font_group);
for (i = 0; i < ASIZE (font_group); i++)
if (! NILP (AREF (font_group, i)))
static void
free_realized_fontset (FRAME_PTR f, Lisp_Object fontset)
{
+#if 0
Lisp_Object tail;
if (0)
xassert (FONT_OBJECT_P (XCAR (tail)));
font_close_object (f, XCAR (tail));
}
+#endif
}
/* Free fontset of FACE defined on frame F. Called from
}
+#if 0
/* Return 1 if FACE is suitable for displaying character C.
Otherwise return 0. Called from the macro FACE_SUITABLE_FOR_CHAR_P
when C is not an ASCII character. */
&& INTEGERP (RFONT_DEF_FACE (rfont_def))
&& face->id == XINT (RFONT_DEF_FACE (rfont_def)));
}
+#endif
/* Return ID of face suitable for displaying character C on frame F.
nescs++;
}
- /* If PATTERN is not full XLFD we conert "*" to ".*". Otherwise
+ /* If PATTERN is not full XLFD we convert "*" to ".*". Otherwise
we convert "*" to "[^-]*" which is much faster in regular
expression matching. */
if (ndashes < 14)
In FONTSET, set FONT_DEF in a fashion specified by ADD for
characters in RANGE and ranges in SCRIPT_RANGE_LIST before RANGE.
- The consumed ranges are poped up from SCRIPT_RANGE_LIST, and the
+ The consumed ranges are popped up from SCRIPT_RANGE_LIST, and the
new SCRIPT_RANGE_LIST is stored in ARG.
If ASCII is nil, don't set FONT_DEF for ASCII characters. It is
static Lisp_Object auto_fontset_alist;
/* Number of automatically created fontsets. */
-static int num_auto_fontsets;
+static printmax_t num_auto_fontsets;
-/* Retun a fontset synthesized from FONT-OBJECT. This is called from
+/* Return a fontset synthesized from FONT-OBJECT. This is called from
x_new_font when FONT-OBJECT is used for the default ASCII font of a
frame, and the returned fontset is used for the default fontset of
that frame. The fontset specifies a font of the same registry as
fontset_from_font (Lisp_Object font_object)
{
Lisp_Object font_name = font_get_name (font_object);
- Lisp_Object font_spec = Fcopy_font_spec (font_object);
+ Lisp_Object font_spec = copy_font_spec (font_object);
Lisp_Object registry = AREF (font_spec, FONT_REGISTRY_INDEX);
Lisp_Object fontset_spec, alias, name, fontset;
Lisp_Object val;
alias = intern ("fontset-startup");
else
{
- char temp[32];
+ char temp[sizeof "fontset-auto" + INT_STRLEN_BOUND (printmax_t)];
- sprintf (temp, "fontset-auto%d", num_auto_fontsets - 1);
+ sprintf (temp, "fontset-auto%"pMd, num_auto_fontsets - 1);
alias = intern (temp);
}
- fontset_spec = Fcopy_font_spec (font_spec);
+ fontset_spec = copy_font_spec (font_spec);
ASET (fontset_spec, FONT_REGISTRY_INDEX, alias);
name = Ffont_xlfd_name (fontset_spec, Qnil);
if (NILP (name))
/* Return a cons (FONT-OBJECT . GLYPH-CODE).
FONT-OBJECT is the font for the character at POSITION in the current
buffer. This is computed from all the text properties and overlays
- that apply to POSITION. POSTION may be nil, in which case,
+ that apply to POSITION. POSITION may be nil, in which case,
FONT-SPEC is the font for displaying the character CH with the
default face.
int c;
struct frame *f;
struct face *face;
- int cs_id;
if (NILP (position))
{
f = XFRAME (selected_frame);
face_id = lookup_basic_face (f, DEFAULT_FACE_ID);
pos = -1;
- cs_id = -1;
}
else
{
- Lisp_Object window, charset;
+ Lisp_Object window;
struct window *w;
CHECK_NUMBER_COERCE_MARKER (position);
f = XFRAME (w->frame);
face_id = face_at_buffer_position (w, pos, -1, -1, &dummy,
pos + 100, 0, -1);
- charset = Fget_char_property (position, Qcharset, Qnil);
- if (CHARSETP (charset))
- cs_id = XINT (CHARSET_SYMBOL_ID (charset));
- else
- cs_id = -1;
}
- if (! CHAR_VALID_P (c, 0))
+ if (! CHAR_VALID_P (c))
return Qnil;
face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c, pos, Qnil);
face = FACE_FROM_ID (f, face_id);
{
unsigned code = face->font->driver->encode_char (face->font, c);
Lisp_Object font_object;
- /* Assignment to EMACS_INT stops GCC whining about limited range
- of data type. */
- EMACS_INT cod = code;
if (code == FONT_INVALID_CODE)
return Qnil;
XSETFONT (font_object, face->font);
- if (cod <= MOST_POSITIVE_FIXNUM)
- return Fcons (font_object, make_number (code));
- return Fcons (font_object, Fcons (make_number (code >> 16),
- make_number (code & 0xFFFF)));
+ return Fcons (font_object, INTEGER_TO_CONS (code));
}
return Qnil;
}
format is the same as above. */)
(Lisp_Object fontset, Lisp_Object frame)
{
- FRAME_PTR f;
Lisp_Object *realized[2], fontsets[2], tables[2];
Lisp_Object val, elt;
int c, i, j, k;
(*check_window_system_func) ();
fontset = check_fontset_name (fontset, &frame);
- f = XFRAME (frame);
/* Recode fontsets realized on FRAME from the base fontset FONTSET
in the table `realized'. */
#ifdef FONTSET_DEBUG
+Lisp_Object dump_fontset (Lisp_Object) EXTERNALLY_VISIBLE;
+
Lisp_Object
dump_fontset (Lisp_Object fontset)
{