[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/fontset.c,v
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/fontset.c,v |
Date: |
Mon, 04 Feb 2008 12:15:16 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 08/02/04 12:15:15
Index: fontset.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/fontset.c,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -b -r1.110 -r1.111
--- fontset.c 1 Feb 2008 16:00:54 -0000 1.110
+++ fontset.c 4 Feb 2008 12:15:14 -0000 1.111
@@ -2188,7 +2188,12 @@
/* At first, set ALIST to ((FONT-SPEC) ...). */
for (alist = Qnil, i = 0; i < ASIZE (val); i++)
+ {
+ if (NILP (AREF (val, i)))
+ alist = Fcons (Qnil, alist);
+ else
alist = Fcons (Fcons (AREF (AREF (val, i), 0), Qnil), alist);
+ }
alist = Fnreverse (alist);
/* Then store opend font names to cdr of each elements. */
@@ -2200,6 +2205,37 @@
val = FONTSET_FALLBACK (realized[k][i]);
if (! VECTORP (val))
continue;
+#ifdef USE_FONT_BACKEND
+ /* VAL: [int int ?
+ [FACE-ID FONT-INDEX FONT-DEF FONT-ENTITY/OBJECT]
+ ...] */
+ if (enable_font_backend)
+ for (j = 3; j < ASIZE (val); j++)
+ {
+ elt = AREF (val, j);
+ if (INTEGERP (AREF (elt, 1))
+ && XINT (AREF (elt, 1)) >= 0)
+ {
+ Lisp_Object font_object = AREF (elt, 3);
+
+ if (FONT_OBJECT_P (font_object))
+ {
+ struct font *font
+ = XSAVE_VALUE (font_object)->pointer;
+ char *name = font->font.full_name;;
+ int len = strlen (name);
+ Lisp_Object slot;
+
+ slot = Fassq (AREF (AREF (elt, 2), 0), alist);
+ nconc2 (slot,
+ Fcons (make_unibyte_string (name, len),
+ Qnil));
+ }
+ }
+ }
+ else
+#endif /* not USE_FONT_BACKEND */
+ {
/* VAL is [int int ?
[FACE-ID FONT-INDEX FONT-DEF FONT-NAME] ...].
If a font of an element is already opened,
@@ -2210,19 +2246,22 @@
Lisp_Object font_idx;
font_idx = AREF (AREF (val, j), 1);
- elt = Fassq (AREF (AREF (AREF (val, j), 2), 0), alist);
+ elt = Fassq (AREF (AREF (AREF (val, j), 2), 0),
+ alist);
if (CONSP (elt)
&& NILP (Fmemq (font_idx, XCDR(elt))))
nconc2 (elt, Fcons (font_idx, Qnil));
}
- }
for (val = alist; CONSP (val); val = XCDR (val))
- for (elt = XCDR (XCAR (val)); CONSP (elt); elt = XCDR (elt))
+ for (elt = XCDR (XCAR (val)); CONSP (elt);
+ elt = XCDR (elt))
{
struct font_info *font_info
= (*get_font_info_func) (f, XINT (XCAR (elt)));
XSETCAR (elt, build_string (font_info->full_name));
}
+ }
+ }
/* Store ALIST in TBL for characters C..TO. */
if (c <= MAX_5_BYTE_CHAR)
- [Emacs-diffs] Changes to emacs/src/fontset.c,v, Miles Bader, 2008/02/01
- [Emacs-diffs] Changes to emacs/src/fontset.c,v,
Kenichi Handa <=
- [Emacs-diffs] Changes to emacs/src/fontset.c,v, Stefan Monnier, 2008/02/08
- [Emacs-diffs] Changes to emacs/src/fontset.c,v, Glenn Morris, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/fontset.c,v, Kenichi Handa, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/fontset.c,v, Stefan Monnier, 2008/02/26