aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.c
diff options
context:
space:
mode:
authorJoakim Verona2015-01-11 18:40:21 +0100
committerJoakim Verona2015-01-11 18:40:21 +0100
commitcc7cb20d6abc0f862e5513b24831bba0eaecaa5f (patch)
treeafc2fc05401504aa0c28699dc3bc155c5b0d7f58 /src/font.c
parentd972b504f30ff4300ba368940751e8736dddf0b4 (diff)
parent9a57bda31569294ecaf8138a06e5edda9c0d87e3 (diff)
downloademacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.tar.gz
emacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.zip
merge master, fix conflicts
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c70
1 files changed, 26 insertions, 44 deletions
diff --git a/src/font.c b/src/font.c
index dea18a1e939..a68c3c707c8 100644
--- a/src/font.c
+++ b/src/font.c
@@ -41,16 +41,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
41#include TERM_HEADER 41#include TERM_HEADER
42#endif /* HAVE_WINDOW_SYSTEM */ 42#endif /* HAVE_WINDOW_SYSTEM */
43 43
44Lisp_Object Qopentype;
45
46/* Important character set strings. */
47Lisp_Object Qascii_0, Qiso8859_1, Qiso10646_1, Qunicode_bmp, Qunicode_sip;
48
49#define DEFAULT_ENCODING Qiso8859_1 44#define DEFAULT_ENCODING Qiso8859_1
50 45
51/* Unicode category `Cf'. */
52static Lisp_Object QCf;
53
54/* Vector of Vfont_weight_table, Vfont_slant_table, and Vfont_width_table. */ 46/* Vector of Vfont_weight_table, Vfont_slant_table, and Vfont_width_table. */
55static Lisp_Object font_style_table; 47static Lisp_Object font_style_table;
56 48
@@ -110,21 +102,6 @@ static const struct table_entry width_table[] =
110 { 200, { "ultra-expanded", "ultraexpanded", "wide" }} 102 { 200, { "ultra-expanded", "ultraexpanded", "wide" }}
111}; 103};
112 104
113Lisp_Object QCfoundry;
114static Lisp_Object QCadstyle, QCregistry;
115/* Symbols representing keys of font extra info. */
116Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript, QCavgwidth;
117Lisp_Object QCantialias, QCfont_entity;
118static Lisp_Object QCfc_unknown_spec;
119/* Symbols representing values of font spacing property. */
120static Lisp_Object Qc, Qm, Qd;
121Lisp_Object Qp;
122/* Special ADSTYLE properties to avoid fonts used for Latin
123 characters; used in xfont.c and ftfont.c. */
124Lisp_Object Qja, Qko;
125
126static Lisp_Object QCuser_spec;
127
128/* Alist of font registry symbols and the corresponding charset 105/* Alist of font registry symbols and the corresponding charset
129 information. The information is retrieved from 106 information. The information is retrieved from
130 Vfont_encoding_alist on demand. 107 Vfont_encoding_alist on demand.
@@ -309,7 +286,7 @@ font_intern_prop (const char *str, ptrdiff_t len, bool force_symbol)
309 return tem; 286 return tem;
310 name = make_specified_string (str, nchars, len, 287 name = make_specified_string (str, nchars, len,
311 len != nchars && len == nbytes); 288 len != nchars && len == nbytes);
312 return intern_driver (name, obarray, XINT (tem)); 289 return intern_driver (name, obarray, tem);
313} 290}
314 291
315/* Return a pixel size of font-spec SPEC on frame F. */ 292/* Return a pixel size of font-spec SPEC on frame F. */
@@ -662,30 +639,30 @@ font_prop_validate_otf (Lisp_Object prop, Lisp_Object val)
662 values. */ 639 values. */
663static const struct 640static const struct
664{ 641{
665 /* Pointer to the key symbol. */ 642 /* Index of the key symbol. */
666 Lisp_Object *key; 643 int key;
667 /* Function to validate PROP's value VAL, or NULL if any value is 644 /* Function to validate PROP's value VAL, or NULL if any value is
668 ok. The value is VAL or its regularized value if VAL is valid, 645 ok. The value is VAL or its regularized value if VAL is valid,
669 and Qerror if not. */ 646 and Qerror if not. */
670 Lisp_Object (*validator) (Lisp_Object prop, Lisp_Object val); 647 Lisp_Object (*validator) (Lisp_Object prop, Lisp_Object val);
671} font_property_table[] = 648} font_property_table[] =
672 { { &QCtype, font_prop_validate_symbol }, 649 { { SYMBOL_INDEX (QCtype), font_prop_validate_symbol },
673 { &QCfoundry, font_prop_validate_symbol }, 650 { SYMBOL_INDEX (QCfoundry), font_prop_validate_symbol },
674 { &QCfamily, font_prop_validate_symbol }, 651 { SYMBOL_INDEX (QCfamily), font_prop_validate_symbol },
675 { &QCadstyle, font_prop_validate_symbol }, 652 { SYMBOL_INDEX (QCadstyle), font_prop_validate_symbol },
676 { &QCregistry, font_prop_validate_symbol }, 653 { SYMBOL_INDEX (QCregistry), font_prop_validate_symbol },
677 { &QCweight, font_prop_validate_style }, 654 { SYMBOL_INDEX (QCweight), font_prop_validate_style },
678 { &QCslant, font_prop_validate_style }, 655 { SYMBOL_INDEX (QCslant), font_prop_validate_style },
679 { &QCwidth, font_prop_validate_style }, 656 { SYMBOL_INDEX (QCwidth), font_prop_validate_style },
680 { &QCsize, font_prop_validate_non_neg }, 657 { SYMBOL_INDEX (QCsize), font_prop_validate_non_neg },
681 { &QCdpi, font_prop_validate_non_neg }, 658 { SYMBOL_INDEX (QCdpi), font_prop_validate_non_neg },
682 { &QCspacing, font_prop_validate_spacing }, 659 { SYMBOL_INDEX (QCspacing), font_prop_validate_spacing },
683 { &QCavgwidth, font_prop_validate_non_neg }, 660 { SYMBOL_INDEX (QCavgwidth), font_prop_validate_non_neg },
684 /* The order of the above entries must match with enum 661 /* The order of the above entries must match with enum
685 font_property_index. */ 662 font_property_index. */
686 { &QClang, font_prop_validate_symbol }, 663 { SYMBOL_INDEX (QClang), font_prop_validate_symbol },
687 { &QCscript, font_prop_validate_symbol }, 664 { SYMBOL_INDEX (QCscript), font_prop_validate_symbol },
688 { &QCotf, font_prop_validate_otf } 665 { SYMBOL_INDEX (QCotf), font_prop_validate_otf }
689 }; 666 };
690 667
691/* Return an index number of font property KEY or -1 if KEY is not an 668/* Return an index number of font property KEY or -1 if KEY is not an
@@ -697,7 +674,7 @@ get_font_prop_index (Lisp_Object key)
697 int i; 674 int i;
698 675
699 for (i = 0; i < ARRAYELTS (font_property_table); i++) 676 for (i = 0; i < ARRAYELTS (font_property_table); i++)
700 if (EQ (key, *font_property_table[i].key)) 677 if (EQ (key, builtin_lisp_symbol (font_property_table[i].key)))
701 return i; 678 return i;
702 return -1; 679 return -1;
703} 680}
@@ -714,7 +691,7 @@ font_prop_validate (int idx, Lisp_Object prop, Lisp_Object val)
714 if (NILP (val)) 691 if (NILP (val))
715 return val; 692 return val;
716 if (NILP (prop)) 693 if (NILP (prop))
717 prop = *font_property_table[idx].key; 694 prop = builtin_lisp_symbol (font_property_table[idx].key);
718 else 695 else
719 { 696 {
720 idx = get_font_prop_index (prop); 697 idx = get_font_prop_index (prop);
@@ -5169,19 +5146,21 @@ syms_of_font (void)
5169 5146
5170 DEFSYM (Qopentype, "opentype"); 5147 DEFSYM (Qopentype, "opentype");
5171 5148
5149 /* Important character set symbols. */
5172 DEFSYM (Qascii_0, "ascii-0"); 5150 DEFSYM (Qascii_0, "ascii-0");
5173 DEFSYM (Qiso8859_1, "iso8859-1"); 5151 DEFSYM (Qiso8859_1, "iso8859-1");
5174 DEFSYM (Qiso10646_1, "iso10646-1"); 5152 DEFSYM (Qiso10646_1, "iso10646-1");
5175 DEFSYM (Qunicode_bmp, "unicode-bmp"); 5153 DEFSYM (Qunicode_bmp, "unicode-bmp");
5176 DEFSYM (Qunicode_sip, "unicode-sip"); 5154 DEFSYM (Qunicode_sip, "unicode-sip");
5177 5155
5156 /* Unicode category `Cf'. */
5178 DEFSYM (QCf, "Cf"); 5157 DEFSYM (QCf, "Cf");
5179 5158
5159 /* Symbols representing keys of font extra info. */
5180 DEFSYM (QCotf, ":otf"); 5160 DEFSYM (QCotf, ":otf");
5181 DEFSYM (QClang, ":lang"); 5161 DEFSYM (QClang, ":lang");
5182 DEFSYM (QCscript, ":script"); 5162 DEFSYM (QCscript, ":script");
5183 DEFSYM (QCantialias, ":antialias"); 5163 DEFSYM (QCantialias, ":antialias");
5184
5185 DEFSYM (QCfoundry, ":foundry"); 5164 DEFSYM (QCfoundry, ":foundry");
5186 DEFSYM (QCadstyle, ":adstyle"); 5165 DEFSYM (QCadstyle, ":adstyle");
5187 DEFSYM (QCregistry, ":registry"); 5166 DEFSYM (QCregistry, ":registry");
@@ -5192,11 +5171,14 @@ syms_of_font (void)
5192 DEFSYM (QCfont_entity, ":font-entity"); 5171 DEFSYM (QCfont_entity, ":font-entity");
5193 DEFSYM (QCfc_unknown_spec, ":fc-unknown-spec"); 5172 DEFSYM (QCfc_unknown_spec, ":fc-unknown-spec");
5194 5173
5174 /* Symbols representing values of font spacing property. */
5195 DEFSYM (Qc, "c"); 5175 DEFSYM (Qc, "c");
5196 DEFSYM (Qm, "m"); 5176 DEFSYM (Qm, "m");
5197 DEFSYM (Qp, "p"); 5177 DEFSYM (Qp, "p");
5198 DEFSYM (Qd, "d"); 5178 DEFSYM (Qd, "d");
5199 5179
5180 /* Special ADSTYLE properties to avoid fonts used for Latin
5181 characters; used in xfont.c and ftfont.c. */
5200 DEFSYM (Qja, "ja"); 5182 DEFSYM (Qja, "ja");
5201 DEFSYM (Qko, "ko"); 5183 DEFSYM (Qko, "ko");
5202 5184