[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/font.c,v
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/font.c,v |
Date: |
Thu, 19 Jun 2008 00:42:58 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 08/06/19 00:42:58
Index: font.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/font.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -b -r1.66 -r1.67
--- font.c 18 Jun 2008 14:45:11 -0000 1.66
+++ font.c 19 Jun 2008 00:42:58 -0000 1.67
@@ -1109,7 +1109,7 @@
if (*p == '~')
p++;
ASET (font, FONT_AVGWIDTH_INDEX,
- font_intern_prop (p, f[XLFD_REGISTRY_INDEX] - 1 - p, 1));
+ font_intern_prop (p, f[XLFD_REGISTRY_INDEX] - 1 - p, 0));
}
else
{
@@ -1403,16 +1403,9 @@
}
if (props_beg)
{
- /* Now parse ":KEY=VAL" patterns. Store known keys and values in
- extra, copy unknown ones to COPY. It is stored in extra slot by
- the key QCfc_unknown_spec. */
- char *copy_start, *copy;
+ /* Now parse ":KEY=VAL" patterns. */
Lisp_Object val;
- copy_start = copy = alloca (name + len - props_beg + 2);
- if (! copy)
- return -1;
-
for (p = props_beg; *p; p = q)
{
for (q = p + 1; *q && *q != '=' && *q != ':'; q++);
@@ -1445,13 +1438,6 @@
else if (PROP_MATCH ("proportional", 12))
ASET (font, FONT_SPACING_INDEX,
make_number (FONT_SPACING_PROPORTIONAL));
- else
- {
- /* Unknown key */
- *copy++ = ':';
- bcopy (p, copy, word_len);
- copy += word_len;
- }
#undef PROP_MATCH
}
else
@@ -1473,25 +1459,14 @@
for (q = p; *q && *q != ':'; q++);
val = font_intern_prop (p, q - p, 0);
- if (! NILP (val))
- {
if (prop >= FONT_FOUNDRY_INDEX
&& prop < FONT_EXTRA_INDEX)
- ASET (font, prop,
- font_prop_validate (prop, Qnil, val));
- else if (prop >= 0)
- Ffont_put (font, key, val);
+ ASET (font, prop, font_prop_validate (prop, Qnil, val));
else
- {
- bcopy (keyhead, copy, q - keyhead);
- copy += q - keyhead;
- }
- }
+ Ffont_put (font, key, val);
}
+ p = q;
}
- if (copy_start != copy)
- font_put_extra (font, QCfc_unknown_spec,
- make_unibyte_string (copy_start, copy -
copy_start));
}
}
else
@@ -2722,7 +2697,7 @@
struct font_driver_list *driver_list;
Lisp_Object objlist, size, val, font_object;
struct font *font;
- int min_width;
+ int min_width, height;
font_assert (FONT_ENTITY_P (entity));
size = AREF (entity, FONT_SIZE_INDEX);
@@ -2756,20 +2731,21 @@
: font->average_width ? font->average_width
: font->space_width ? font->space_width
: 1);
+ height = (font->height ? font->height : 1);
#ifdef HAVE_WINDOW_SYSTEM
FRAME_X_DISPLAY_INFO (f)->n_fonts++;
if (FRAME_X_DISPLAY_INFO (f)->n_fonts == 1)
{
FRAME_SMALLEST_CHAR_WIDTH (f) = min_width;
- FRAME_SMALLEST_FONT_HEIGHT (f) = font->height;
+ FRAME_SMALLEST_FONT_HEIGHT (f) = height;
fonts_changed_p = 1;
}
else
{
if (FRAME_SMALLEST_CHAR_WIDTH (f) > min_width)
FRAME_SMALLEST_CHAR_WIDTH (f) = min_width, fonts_changed_p = 1;
- if (FRAME_SMALLEST_FONT_HEIGHT (f) > font->height)
- FRAME_SMALLEST_FONT_HEIGHT (f) = font->height, fonts_changed_p = 1;
+ if (FRAME_SMALLEST_FONT_HEIGHT (f) > height)
+ FRAME_SMALLEST_FONT_HEIGHT (f) = height, fonts_changed_p = 1;
}
#endif
@@ -3676,18 +3652,23 @@
(font)
Lisp_Object font;
{
- Lisp_Object new_spec, tail, extra;
+ Lisp_Object new_spec, tail, prev, extra;
int i;
CHECK_FONT (font);
new_spec = font_make_spec ();
for (i = 1; i < FONT_EXTRA_INDEX; i++)
ASET (new_spec, i, AREF (font, i));
- extra = Qnil;
- for (tail = AREF (font, FONT_EXTRA_INDEX); CONSP (tail); tail = XCDR (tail))
+ extra = Fcopy_sequence (AREF (font, FONT_EXTRA_INDEX));
+ /* We must remove :font-entity property. */
+ for (prev = Qnil, tail = extra; CONSP (tail); prev = tail, tail = XCDR
(tail))
+ if (EQ (XCAR (XCAR (tail)), QCfont_entity))
{
- if (! EQ (XCAR (XCAR (tail)), QCfont_entity))
- extra = Fcons (Fcons (XCAR (XCAR (tail)), XCDR (XCAR (tail))), extra);
+ if (NILP (prev))
+ extra = XCDR (extra);
+ else
+ XSETCDR (prev, XCDR (tail));
+ break;
}
ASET (new_spec, FONT_EXTRA_INDEX, extra);
return new_spec;
@@ -4759,7 +4740,13 @@
if (FONTP (arg))
arg = Ffont_xlfd_name (arg, Qt);
if (FONTP (result))
- result = Ffont_xlfd_name (result, Qt);
+ {
+ val = Ffont_xlfd_name (result, Qt);
+ if (! FONT_SPEC_P (result))
+ val = concat3 (SYMBOL_NAME (AREF (result, FONT_TYPE_INDEX)),
+ build_string (":"), val);
+ result = val;
+ }
else if (CONSP (result))
{
result = Fcopy_sequence (result);
- [Emacs-diffs] Changes to emacs/src/font.c,v, (continued)
- [Emacs-diffs] Changes to emacs/src/font.c,v, Jason Rumney, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Andreas Schwab, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Juanma Barranquero, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Juanma Barranquero, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Chong Yidong, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/06/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Chong Yidong, 2008/06/17
- [Emacs-diffs] Changes to emacs/src/font.c,v, Chong Yidong, 2008/06/17
- [Emacs-diffs] Changes to emacs/src/font.c,v, Andreas Schwab, 2008/06/18
- [Emacs-diffs] Changes to emacs/src/font.c,v,
Kenichi Handa <=
- [Emacs-diffs] Changes to emacs/src/font.c,v, Chong Yidong, 2008/06/20
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/06/22
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/06/24
- [Emacs-diffs] Changes to emacs/src/font.c,v, Jason Rumney, 2008/06/24
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/06/25