aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/font.c b/src/font.c
index e01f67a95f6..7fe0815d80e 100644
--- a/src/font.c
+++ b/src/font.c
@@ -125,14 +125,16 @@ Lisp_Object QCfoundry;
125static Lisp_Object QCadstyle, QCregistry; 125static Lisp_Object QCadstyle, QCregistry;
126/* Symbols representing keys of font extra info. */ 126/* Symbols representing keys of font extra info. */
127Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript, QCavgwidth; 127Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript, QCavgwidth;
128Lisp_Object QCantialias, QCfont_entity, QCfc_unknown_spec; 128Lisp_Object QCantialias, QCfont_entity;
129static Lisp_Object QCfc_unknown_spec;
129/* Symbols representing values of font spacing property. */ 130/* Symbols representing values of font spacing property. */
130Lisp_Object Qc, Qm, Qp, Qd; 131static Lisp_Object Qc, Qm, Qd;
132Lisp_Object Qp;
131/* Special ADSTYLE properties to avoid fonts used for Latin 133/* Special ADSTYLE properties to avoid fonts used for Latin
132 characters; used in xfont.c and ftfont.c. */ 134 characters; used in xfont.c and ftfont.c. */
133Lisp_Object Qja, Qko; 135Lisp_Object Qja, Qko;
134 136
135Lisp_Object QCuser_spec; 137static Lisp_Object QCuser_spec;
136 138
137/* Alist of font registry symbol and the corresponding charsets 139/* Alist of font registry symbol and the corresponding charsets
138 information. The information is retrieved from 140 information. The information is retrieved from
@@ -2725,7 +2727,7 @@ font_list_entities (Lisp_Object frame, Lisp_Object spec)
2725 val = null_vector; 2727 val = null_vector;
2726 else 2728 else
2727 val = Fvconcat (1, &val); 2729 val = Fvconcat (1, &val);
2728 copy = Fcopy_font_spec (scratch_font_spec); 2730 copy = copy_font_spec (scratch_font_spec);
2729 ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type); 2731 ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
2730 XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache))); 2732 XSETCDR (cache, Fcons (Fcons (copy, val), XCDR (cache)));
2731 } 2733 }
@@ -2753,7 +2755,7 @@ font_matching_entity (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec)
2753 struct font_driver_list *driver_list = f->font_driver_list; 2755 struct font_driver_list *driver_list = f->font_driver_list;
2754 Lisp_Object ftype, size, entity; 2756 Lisp_Object ftype, size, entity;
2755 Lisp_Object frame; 2757 Lisp_Object frame;
2756 Lisp_Object work = Fcopy_font_spec (spec); 2758 Lisp_Object work = copy_font_spec (spec);
2757 2759
2758 XSETFRAME (frame, f); 2760 XSETFRAME (frame, f);
2759 ftype = AREF (spec, FONT_TYPE_INDEX); 2761 ftype = AREF (spec, FONT_TYPE_INDEX);
@@ -2780,7 +2782,7 @@ font_matching_entity (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec)
2780 else 2782 else
2781 { 2783 {
2782 entity = driver_list->driver->match (frame, work); 2784 entity = driver_list->driver->match (frame, work);
2783 copy = Fcopy_font_spec (work); 2785 copy = copy_font_spec (work);
2784 ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type); 2786 ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type);
2785 XSETCDR (cache, Fcons (Fcons (copy, entity), XCDR (cache))); 2787 XSETCDR (cache, Fcons (Fcons (copy, entity), XCDR (cache)));
2786 } 2788 }
@@ -2870,7 +2872,7 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size)
2870 2872
2871/* Close FONT_OBJECT that is opened on frame F. */ 2873/* Close FONT_OBJECT that is opened on frame F. */
2872 2874
2873void 2875static void
2874font_close_object (FRAME_PTR f, Lisp_Object font_object) 2876font_close_object (FRAME_PTR f, Lisp_Object font_object)
2875{ 2877{
2876 struct font *font = XFONT_OBJECT (font_object); 2878 struct font *font = XFONT_OBJECT (font_object);
@@ -2974,7 +2976,7 @@ font_clear_prop (Lisp_Object *attrs, enum font_property_index prop)
2974 2976
2975 if (! NILP (Ffont_get (font, QCname))) 2977 if (! NILP (Ffont_get (font, QCname)))
2976 { 2978 {
2977 font = Fcopy_font_spec (font); 2979 font = copy_font_spec (font);
2978 font_put_extra (font, QCname, Qnil); 2980 font_put_extra (font, QCname, Qnil);
2979 } 2981 }
2980 2982
@@ -2985,7 +2987,7 @@ font_clear_prop (Lisp_Object *attrs, enum font_property_index prop)
2985 && prop != FONT_SIZE_INDEX) 2987 && prop != FONT_SIZE_INDEX)
2986 return; 2988 return;
2987 if (EQ (font, attrs[LFACE_FONT_INDEX])) 2989 if (EQ (font, attrs[LFACE_FONT_INDEX]))
2988 font = Fcopy_font_spec (font); 2990 font = copy_font_spec (font);
2989 ASET (font, prop, Qnil); 2991 ASET (font, prop, Qnil);
2990 if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) 2992 if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX)
2991 { 2993 {
@@ -3096,7 +3098,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c)
3096 return Qnil; 3098 return Qnil;
3097 } 3099 }
3098 3100
3099 work = Fcopy_font_spec (spec); 3101 work = copy_font_spec (spec);
3100 ASET (work, FONT_TYPE_INDEX, AREF (spec, FONT_TYPE_INDEX)); 3102 ASET (work, FONT_TYPE_INDEX, AREF (spec, FONT_TYPE_INDEX));
3101 XSETFRAME (frame, f); 3103 XSETFRAME (frame, f);
3102 pixel_size = font_pixel_size (f, spec); 3104 pixel_size = font_pixel_size (f, spec);
@@ -3866,9 +3868,9 @@ usage: (font-spec ARGS...) */)
3866 return spec; 3868 return spec;
3867} 3869}
3868 3870
3869DEFUN ("copy-font-spec", Fcopy_font_spec, Scopy_font_spec, 1, 1, 0, 3871/* Return a copy of FONT as a font-spec. */
3870 doc: /* Return a copy of FONT as a font-spec. */) 3872Lisp_Object
3871 (Lisp_Object font) 3873copy_font_spec (Lisp_Object font)
3872{ 3874{
3873 Lisp_Object new_spec, tail, prev, extra; 3875 Lisp_Object new_spec, tail, prev, extra;
3874 int i; 3876 int i;
@@ -3892,18 +3894,18 @@ DEFUN ("copy-font-spec", Fcopy_font_spec, Scopy_font_spec, 1, 1, 0,
3892 return new_spec; 3894 return new_spec;
3893} 3895}
3894 3896
3895DEFUN ("merge-font-spec", Fmerge_font_spec, Smerge_font_spec, 2, 2, 0, 3897/* Merge font-specs FROM and TO, and return a new font-spec.
3896 doc: /* Merge font-specs FROM and TO, and return a new font-spec. 3898 Every specified property in FROM overrides the corresponding
3897Every specified properties in FROM override the corresponding 3899 property in TO. */
3898properties in TO. */) 3900Lisp_Object
3899 (Lisp_Object from, Lisp_Object to) 3901merge_font_spec (Lisp_Object from, Lisp_Object to)
3900{ 3902{
3901 Lisp_Object extra, tail; 3903 Lisp_Object extra, tail;
3902 int i; 3904 int i;
3903 3905
3904 CHECK_FONT (from); 3906 CHECK_FONT (from);
3905 CHECK_FONT (to); 3907 CHECK_FONT (to);
3906 to = Fcopy_font_spec (to); 3908 to = copy_font_spec (to);
3907 for (i = 0; i < FONT_EXTRA_INDEX; i++) 3909 for (i = 0; i < FONT_EXTRA_INDEX; i++)
3908 ASET (to, i, AREF (from, i)); 3910 ASET (to, i, AREF (from, i));
3909 extra = AREF (to, FONT_EXTRA_INDEX); 3911 extra = AREF (to, FONT_EXTRA_INDEX);