aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2008-01-14 01:31:25 +0000
committerKenichi Handa2008-01-14 01:31:25 +0000
commit432cfa542ebdc072be3fe798631bba3ab9647e27 (patch)
tree68d6c876a2f7789feb8981ae403dff547f944f0f /src
parenta6bbf9f489e6704a9c082eaa702479e86c8827ef (diff)
downloademacs-432cfa542ebdc072be3fe798631bba3ab9647e27.tar.gz
emacs-432cfa542ebdc072be3fe798631bba3ab9647e27.zip
(FONTSET_REF_AND_RANGE): Delete it.
(fontset_ref_and_range): Delete it. (fontset_find_font): Call char_table_ref_and_range instead of FONTSET_REF_AND_RANGE. (make_fontset): Don't setup font groups of Latin here. (Fset_fontset_font): Don't overwrite the setting of FONTSET_ASCII. (new_fontset_from_font): Make the specified font the default for all Latin characters.
Diffstat (limited to 'src')
-rw-r--r--src/fontset.c79
1 files changed, 5 insertions, 74 deletions
diff --git a/src/fontset.c b/src/fontset.c
index dac169971d1..dd49af5177e 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -338,43 +338,6 @@ fontset_ref (fontset, c)
338 return elt; 338 return elt;
339} 339}
340 340
341
342/* Return the element of FONTSET for the character C, set FROM and TO
343 to the range of characters around C that have the same value as C.
344 If FONTSET is a base fontset other then the default fontset and
345 FONTSET doesn't contain information for C, return the information
346 in the default fontset. */
347
348#define FONTSET_REF_AND_RANGE(fontset, c, form, to) \
349 (EQ (fontset, Vdefault_fontset) \
350 ? char_table_ref_and_range (fontset, c, &from, &to) \
351 : fontset_ref_and_range (fontset, c, &from, &to))
352
353static Lisp_Object
354fontset_ref_and_range (fontset, c, from, to)
355 Lisp_Object fontset;
356 int c;
357 int *from, *to;
358{
359 Lisp_Object elt;
360
361 elt = char_table_ref_and_range (fontset, c, from, to);
362 if (NILP (elt) && ! EQ (fontset, Vdefault_fontset)
363 /* Don't check Vdefault_fontset for a realized fontset. */
364 && NILP (FONTSET_BASE (fontset)))
365 {
366 int from1, to1;
367
368 elt = char_table_ref_and_range (Vdefault_fontset, c, &from1, &to1);
369 if (*from < from1)
370 *from = from1;
371 if (*to > to1)
372 *to = to1;
373 }
374 return elt;
375}
376
377
378/* Set elements of FONTSET for characters in RANGE to the value ELT. 341/* Set elements of FONTSET for characters in RANGE to the value ELT.
379 RANGE is a cons (FROM . TO), where FROM and TO are character codes 342 RANGE is a cons (FROM . TO), where FROM and TO are character codes
380 specifying a range. */ 343 specifying a range. */
@@ -609,7 +572,7 @@ fontset_find_font (fontset, c, face, id, fallback)
609 return Qnil; 572 return Qnil;
610 if (! fallback) 573 if (! fallback)
611 { 574 {
612 elt = FONTSET_REF_AND_RANGE (base_fontset, c, from, to); 575 elt = char_table_ref_and_range (base_fontset, c, &from, &to);
613 range = Fcons (make_number (from), make_number (to)); 576 range = Fcons (make_number (from), make_number (to));
614 if (EQ (base_fontset, Vdefault_fontset)) 577 if (EQ (base_fontset, Vdefault_fontset))
615 { 578 {
@@ -1098,7 +1061,6 @@ make_fontset_for_ascii_face (f, base_fontset_id, face)
1098 base_fontset = FONTSET_FROM_ID (base_fontset_id); 1061 base_fontset = FONTSET_FROM_ID (base_fontset_id);
1099 if (!BASE_FONTSET_P (base_fontset)) 1062 if (!BASE_FONTSET_P (base_fontset))
1100 base_fontset = FONTSET_BASE (base_fontset); 1063 base_fontset = FONTSET_BASE (base_fontset);
1101 xassert (BASE_FONTSET_P (base_fontset));
1102 if (! BASE_FONTSET_P (base_fontset)) 1064 if (! BASE_FONTSET_P (base_fontset))
1103 abort (); 1065 abort ();
1104 } 1066 }
@@ -1106,39 +1068,6 @@ make_fontset_for_ascii_face (f, base_fontset_id, face)
1106 base_fontset = Vdefault_fontset; 1068 base_fontset = Vdefault_fontset;
1107 1069
1108 fontset = make_fontset (frame, Qnil, base_fontset); 1070 fontset = make_fontset (frame, Qnil, base_fontset);
1109 {
1110 Lisp_Object elt, rfont_def, val;
1111
1112 elt = FONTSET_REF (base_fontset, 0);
1113 xassert (VECTORP (elt) && ASIZE (elt) > 0);
1114 rfont_def = Fmake_vector (make_number (4), Qnil);
1115#ifdef USE_FONT_BACKEND
1116 if (enable_font_backend && face->font_info)
1117 {
1118 struct font *font = (struct font *) face->font_info;
1119
1120 ASET (rfont_def, 3, Fcons (font->entity, Qnil));
1121 }
1122 else
1123#endif /* USE_FONT_BACKEND */
1124 {
1125 ASET (rfont_def, 3, build_string (face->font_name));
1126 }
1127 ASET (rfont_def, 1, make_number (face->font_info_id));
1128 ASET (rfont_def, 2, AREF (elt, 0));
1129 elt = Fmake_vector (make_number (4), Qnil);
1130 ASET (elt, 0, make_number (charset_ordered_list_tick));
1131 ASET (elt, 1, make_number (charset_ascii));
1132 ASET (elt, 2, rfont_def);
1133 ASET (elt, 3, rfont_def);
1134
1135 val = Fcons (Qlatin, Qnil);
1136 map_char_table (accumulate_script_ranges, Qnil, Vchar_script_table, val);
1137 for (val = XCDR (val); CONSP (val); val = XCDR (val))
1138 char_table_set_range (fontset, XINT (XCAR (XCAR (val))),
1139 XINT (XCDR (XCAR (val))), elt);
1140 FONTSET_FALLBACK (fontset) = elt;
1141 }
1142 return XINT (FONTSET_ID (fontset)); 1071 return XINT (FONTSET_ID (fontset));
1143} 1072}
1144 1073
@@ -1715,7 +1644,7 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
1715 map_char_table (accumulate_script_ranges, Qnil, Vchar_script_table, 1644 map_char_table (accumulate_script_ranges, Qnil, Vchar_script_table,
1716 val); 1645 val);
1717 range_list = XCDR (val); 1646 range_list = XCDR (val);
1718 if (EQ (target, Qlatin)) 1647 if (EQ (target, Qlatin) && NILP (FONTSET_ASCII (fontset)))
1719 { 1648 {
1720 if (VECTORP (font_spec)) 1649 if (VECTORP (font_spec))
1721 val = generate_ascii_font_name (FONTSET_NAME (fontset), 1650 val = generate_ascii_font_name (FONTSET_NAME (fontset),
@@ -1727,7 +1656,7 @@ appended. By default, FONT-SPEC overrides the previous settings. */)
1727 } 1656 }
1728 if (CHARSETP (target)) 1657 if (CHARSETP (target))
1729 { 1658 {
1730 if (EQ (target, Qascii)) 1659 if (EQ (target, Qascii) && NILP (FONTSET_ASCII (fontset)))
1731 { 1660 {
1732 if (VECTORP (font_spec)) 1661 if (VECTORP (font_spec))
1733 font_spec = generate_ascii_font_name (FONTSET_NAME (fontset), 1662 font_spec = generate_ascii_font_name (FONTSET_NAME (fontset),
@@ -1925,6 +1854,8 @@ new_fontset_from_font (font_object)
1925 font_spec = Fcons (SYMBOL_NAME (AREF (font_spec, FONT_FAMILY_INDEX)), 1854 font_spec = Fcons (SYMBOL_NAME (AREF (font_spec, FONT_FAMILY_INDEX)),
1926 SYMBOL_NAME (AREF (font_spec, FONT_REGISTRY_INDEX))); 1855 SYMBOL_NAME (AREF (font_spec, FONT_REGISTRY_INDEX)));
1927 Fset_fontset_font (name, Qlatin, font_spec, Qnil, Qnil); 1856 Fset_fontset_font (name, Qlatin, font_spec, Qnil, Qnil);
1857 XSETCDR (font_spec, build_string ("iso10646-1"));
1858 Fset_fontset_font (name, Qlatin, font_spec, Qnil, Qappend);
1928 Fset_fontset_font (name, Qnil, font_spec, Qnil, Qnil); 1859 Fset_fontset_font (name, Qnil, font_spec, Qnil, Qnil);
1929 return XINT (FONTSET_ID (fontset)); 1860 return XINT (FONTSET_ID (fontset));
1930} 1861}