[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xfaces.c
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/xfaces.c |
Date: |
Thu, 26 Sep 2002 04:03:52 -0400 |
Index: emacs/src/xfaces.c
diff -c emacs/src/xfaces.c:1.262 emacs/src/xfaces.c:1.263
*** emacs/src/xfaces.c:1.262 Fri Sep 13 15:35:08 2002
--- emacs/src/xfaces.c Thu Sep 26 04:03:52 2002
***************
*** 510,516 ****
static int font_list P_ ((struct frame *, Lisp_Object, Lisp_Object,
Lisp_Object, struct font_name **));
static int try_font_list P_ ((struct frame *, Lisp_Object *,
! Lisp_Object, Lisp_Object, struct font_name **));
static int try_alternative_families P_ ((struct frame *f, Lisp_Object,
Lisp_Object, struct font_name **));
static int cmp_font_names P_ ((const void *, const void *));
--- 510,517 ----
static int font_list P_ ((struct frame *, Lisp_Object, Lisp_Object,
Lisp_Object, struct font_name **));
static int try_font_list P_ ((struct frame *, Lisp_Object *,
! Lisp_Object, Lisp_Object, struct font_name **,
! int));
static int try_alternative_families P_ ((struct frame *f, Lisp_Object,
Lisp_Object, struct font_name **));
static int cmp_font_names P_ ((const void *, const void *));
***************
*** 6324,6344 ****
match. A value of nil means include fonts of any registry and
encoding.
Return in *FONTS a pointer to a vector of font_name structures for
the fonts matched. Value is the number of fonts found. */
static int
! try_font_list (f, attrs, family, registry, fonts)
struct frame *f;
Lisp_Object *attrs;
Lisp_Object family, registry;
struct font_name **fonts;
{
int nfonts = 0;
Lisp_Object face_family = attrs[LFACE_FAMILY_INDEX];
! if (STRINGP (face_family))
! nfonts = try_alternative_families (f, face_family, registry, fonts);
#ifdef MAC_OS
/* When realizing the default face and a font spec does not matched
--- 6325,6352 ----
match. A value of nil means include fonts of any registry and
encoding.
+ If PREFER_FACE_FAMILY is nonzero, perfer face's family to FAMILY.
+ Otherwise, prefer FAMILY.
+
Return in *FONTS a pointer to a vector of font_name structures for
the fonts matched. Value is the number of fonts found. */
static int
! try_font_list (f, attrs, family, registry, fonts, prefer_face_family)
struct frame *f;
Lisp_Object *attrs;
Lisp_Object family, registry;
struct font_name **fonts;
+ int prefer_face_family;
{
int nfonts = 0;
Lisp_Object face_family = attrs[LFACE_FAMILY_INDEX];
+ Lisp_Object try_family;
+
+ try_family = prefer_face_family ? face_family : family;
! if (STRINGP (try_family))
! nfonts = try_alternative_families (f, try_family, registry, fonts);
#ifdef MAC_OS
/* When realizing the default face and a font spec does not matched
***************
*** 6346,6357 ****
default font. On the Mac, this is mac-roman, which does not work
if the family is -etl-fixed, e.g. The following widens the
choices and fixes that problem. */
! if (nfonts == 0 && STRINGP (face_family) && STRINGP (registry)
&& xstricmp (SDATA (registry), "mac-roman") == 0)
! nfonts = try_alternative_families (f, face_family, Qnil, fonts);
#endif
! if (nfonts == 0 && !NILP (family))
nfonts = try_alternative_families (f, family, registry, fonts);
/* Try font family of the default face or "fixed". */
--- 6354,6368 ----
default font. On the Mac, this is mac-roman, which does not work
if the family is -etl-fixed, e.g. The following widens the
choices and fixes that problem. */
! if (nfonts == 0 && STRINGP (try_family) && STRINGP (registry)
&& xstricmp (SDATA (registry), "mac-roman") == 0)
! nfonts = try_alternative_families (f, try_family, Qnil, fonts);
#endif
! if (! prefer_face_family)
! family = face_family;
!
! if (nfonts == 0 && STRINGP (family))
nfonts = try_alternative_families (f, family, registry, fonts);
/* Try font family of the default face or "fixed". */
***************
*** 6425,6431 ****
/* Get a list of fonts matching that pattern and choose the
best match for the specified face attributes from it. */
! nfonts = try_font_list (f, attrs, XCAR (pattern), XCDR (pattern), &fonts);
width_ratio = (SINGLE_BYTE_CHAR_P (c)
? 1
: CHARSET_WIDTH (CHAR_CHARSET (c)));
--- 6436,6444 ----
/* Get a list of fonts matching that pattern and choose the
best match for the specified face attributes from it. */
! nfonts = try_font_list (f, attrs, XCAR (pattern), XCDR (pattern), &fonts,
! (SINGLE_BYTE_CHAR_P (c)
! || CHAR_CHARSET (c) == charset_latin_iso8859_1));
width_ratio = (SINGLE_BYTE_CHAR_P (c)
? 1
: CHARSET_WIDTH (CHAR_CHARSET (c)));