diff options
| author | Kenichi Handa | 2003-11-08 00:54:53 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2003-11-08 00:54:53 +0000 |
| commit | 2449d4d0a96fa4d9d399417f3f7b7328f6041107 (patch) | |
| tree | 1e07d1e4c06b97ae1af543b7356d53ff0e314dd0 /src | |
| parent | d26a46894458708354bf948b0ff25b351e401e52 (diff) | |
| download | emacs-2449d4d0a96fa4d9d399417f3f7b7328f6041107.tar.gz emacs-2449d4d0a96fa4d9d399417f3f7b7328f6041107.zip | |
(set_fontset_font): New function.
(Fset_fontset_font): If a font is specified for a charset, use
map_charset_chars to store the font spec in a fontset.
Diffstat (limited to 'src')
| -rw-r--r-- | src/fontset.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/fontset.c b/src/fontset.c index 55a07303bbb..777e0aaca9b 100644 --- a/src/fontset.c +++ b/src/fontset.c | |||
| @@ -244,6 +244,8 @@ static void accumulate_script_ranges P_ ((Lisp_Object, Lisp_Object, | |||
| 244 | Lisp_Object)); | 244 | Lisp_Object)); |
| 245 | static Lisp_Object find_font_encoding P_ ((char *)); | 245 | static Lisp_Object find_font_encoding P_ ((char *)); |
| 246 | 246 | ||
| 247 | static void set_fontset_font P_ ((Lisp_Object, Lisp_Object)); | ||
| 248 | |||
| 247 | #ifdef FONTSET_DEBUG | 249 | #ifdef FONTSET_DEBUG |
| 248 | 250 | ||
| 249 | /* Return 1 if ID is a valid fontset id, else return 0. */ | 251 | /* Return 1 if ID is a valid fontset id, else return 0. */ |
| @@ -1191,6 +1193,19 @@ generate_ascii_font_name (name, ascii_spec) | |||
| 1191 | return build_font_name_from_vector (vec); | 1193 | return build_font_name_from_vector (vec); |
| 1192 | } | 1194 | } |
| 1193 | 1195 | ||
| 1196 | static void | ||
| 1197 | set_fontset_font (range, arg) | ||
| 1198 | Lisp_Object range, arg; | ||
| 1199 | { | ||
| 1200 | Lisp_Object fontset, font_def, add; | ||
| 1201 | |||
| 1202 | fontset = XCAR (arg); | ||
| 1203 | font_def = XCAR (XCDR (arg)); | ||
| 1204 | add = XCAR (XCDR (XCDR (arg))); | ||
| 1205 | FONTSET_ADD (fontset, range, font_def, add); | ||
| 1206 | free_realized_fontsets (fontset); | ||
| 1207 | } | ||
| 1208 | |||
| 1194 | 1209 | ||
| 1195 | DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 5, 0, | 1210 | DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 5, 0, |
| 1196 | doc: /* | 1211 | doc: /* |
| @@ -1338,17 +1353,22 @@ appended. By default, FONT-SPEC overrides the previous settings. */) | |||
| 1338 | struct charset *charset; | 1353 | struct charset *charset; |
| 1339 | 1354 | ||
| 1340 | CHECK_CHARSET_GET_CHARSET (character, charset); | 1355 | CHECK_CHARSET_GET_CHARSET (character, charset); |
| 1341 | if (CHARSET_METHOD (charset) == CHARSET_METHOD_OFFSET) | ||
| 1342 | range_list | ||
| 1343 | = Fcons (Fcons (make_number (CHARSET_MIN_CHAR (charset)), | ||
| 1344 | make_number (CHARSET_MAX_CHAR (charset))), | ||
| 1345 | range_list); | ||
| 1346 | if (EQ (character, Qascii)) | 1356 | if (EQ (character, Qascii)) |
| 1347 | { | 1357 | { |
| 1348 | if (VECTORP (font_spec)) | 1358 | if (VECTORP (font_spec)) |
| 1349 | font_spec = generate_ascii_font_name (FONTSET_NAME (fontset), | 1359 | font_spec = generate_ascii_font_name (FONTSET_NAME (fontset), |
| 1350 | font_spec); | 1360 | font_spec); |
| 1351 | FONTSET_ASCII (fontset) = font_spec; | 1361 | FONTSET_ASCII (fontset) = font_spec; |
| 1362 | range_list = Fcons (Fcons (make_number (0), make_number (127)), | ||
| 1363 | Qnil); | ||
| 1364 | } | ||
| 1365 | else | ||
| 1366 | { | ||
| 1367 | map_charset_chars (set_fontset_font, Qnil, | ||
| 1368 | list3 (fontset, font_def, add), charset, | ||
| 1369 | CHARSET_MIN_CODE (charset), | ||
| 1370 | CHARSET_MAX_CODE (charset)); | ||
| 1371 | return Qnil; | ||
| 1352 | } | 1372 | } |
| 1353 | } | 1373 | } |
| 1354 | 1374 | ||