diff options
| author | Joakim Verona | 2015-01-11 18:40:21 +0100 |
|---|---|---|
| committer | Joakim Verona | 2015-01-11 18:40:21 +0100 |
| commit | cc7cb20d6abc0f862e5513b24831bba0eaecaa5f (patch) | |
| tree | afc2fc05401504aa0c28699dc3bc155c5b0d7f58 /src/font.c | |
| parent | d972b504f30ff4300ba368940751e8736dddf0b4 (diff) | |
| parent | 9a57bda31569294ecaf8138a06e5edda9c0d87e3 (diff) | |
| download | emacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.tar.gz emacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.zip | |
merge master, fix conflicts
Diffstat (limited to 'src/font.c')
| -rw-r--r-- | src/font.c | 70 |
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 | ||
| 44 | Lisp_Object Qopentype; | ||
| 45 | |||
| 46 | /* Important character set strings. */ | ||
| 47 | Lisp_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'. */ | ||
| 52 | static 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. */ |
| 55 | static Lisp_Object font_style_table; | 47 | static 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 | ||
| 113 | Lisp_Object QCfoundry; | ||
| 114 | static Lisp_Object QCadstyle, QCregistry; | ||
| 115 | /* Symbols representing keys of font extra info. */ | ||
| 116 | Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript, QCavgwidth; | ||
| 117 | Lisp_Object QCantialias, QCfont_entity; | ||
| 118 | static Lisp_Object QCfc_unknown_spec; | ||
| 119 | /* Symbols representing values of font spacing property. */ | ||
| 120 | static Lisp_Object Qc, Qm, Qd; | ||
| 121 | Lisp_Object Qp; | ||
| 122 | /* Special ADSTYLE properties to avoid fonts used for Latin | ||
| 123 | characters; used in xfont.c and ftfont.c. */ | ||
| 124 | Lisp_Object Qja, Qko; | ||
| 125 | |||
| 126 | static 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. */ |
| 663 | static const struct | 640 | static 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 | ||