Mercurial > emacs
changeset 17112:5c48ff325655
(syms_of_fontset): Intern Qfontset. Declare new lisp
variable use-default-ascent.
(Vuse_default_ascent): New variable.
(Ffont_info): Return also the value of default-ascent of a font.
(fs_load_font): Disable updating fontsetp->height by
non-ASCII character sets. This should be enabled when Emacs
supports variable height lines.
(fs_load_font, Fset_fontset_font): Bug fix to cope
with the change of charsets to symbols.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 27 Feb 1997 07:52:23 +0000 |
parents | 60ad27660a65 |
children | 5579b391ebbc |
files | src/fontset.c |
diffstat | 1 files changed, 25 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fontset.c Thu Feb 27 07:49:24 1997 +0000 +++ b/src/fontset.c Thu Feb 27 07:52:23 1997 +0000 @@ -33,6 +33,7 @@ Lisp_Object Vglobal_fontset_alist; Lisp_Object Vfont_encoding_alist; +Lisp_Object Vuse_default_ascent; /* We had better have our own strcasecmp function because some system doesn't have it. */ @@ -196,7 +197,6 @@ for (tmp = XCONS (elt)->cdr; CONSP (tmp); tmp = XCONS (tmp)->cdr) if (CONSP (XCONS (tmp)->car) - && INTEGERP (XCONS (XCONS (tmp)->car)->car) && ((i = get_charset_id (XCONS (XCONS (tmp)->car)->car)) >= 0) && INTEGERP (XCONS (XCONS (tmp)->car)->cdr) @@ -251,8 +251,12 @@ if (fontp2->size != fontp->size * CHARSET_WIDTH (i)) fontsetp->font_indexes[i] = FONT_NOT_OPENED; + /* The following code should be disabled until Emacs + supports variable height lines. */ +#if 0 else if (fontsetp->height < fontp->height) fontsetp->height = fontp->height; +#endif } } } @@ -613,11 +617,12 @@ if (NILP (frame)) { Lisp_Object fontset_info = Fassoc (fullname, Vglobal_fontset_alist); - Lisp_Object tem = Fassq (charset, XCONS (fontset_info)->cdr); + Lisp_Object tem = Fassq (charset_symbol, XCONS (fontset_info)->cdr); if (NILP (tem)) XCONS (fontset_info)->cdr - = Fcons (Fcons (charset, fontname), XCONS (fontset_info)->cdr); + = Fcons (Fcons (charset_symbol, fontname), + XCONS (fontset_info)->cdr); else XCONS (tem)->cdr = fontname; } @@ -636,13 +641,13 @@ struct fontset_info *fontsetp = FRAME_FONTSET_DATA (f)->fontset_table[fontset]; - if (fontsetp->fontname[XINT (charset)]) - xfree (fontsetp->fontname[XINT (charset)]); - fontsetp->fontname[XINT (charset)] + if (fontsetp->fontname[charset]) + xfree (fontsetp->fontname[charset]); + fontsetp->fontname[charset] = (char *) xmalloc (XSTRING (fontname)->size + 1); - bcopy (XSTRING (fontname)->data, fontsetp->fontname[XINT (charset)], + bcopy (XSTRING (fontname)->data, fontsetp->fontname[charset], XSTRING (fontname)->size + 1); - fontsetp->font_indexes[XINT (charset)] = FONT_NOT_OPENED; + fontsetp->font_indexes[charset] = FONT_NOT_OPENED; if (charset == CHARSET_ASCII) { @@ -667,7 +672,7 @@ "Return information about a font named NAME on frame FRAME.\n\ If FRAME is omitted or nil, use the selected frame.\n\ The returned value is a vector of OPENED-NAME, FULL-NAME, CHARSET, SIZE,\n\ - HEIGHT, BASELINE-OFFSET, and RELATIVE-COMPOSE,\n\ + HEIGHT, BASELINE-OFFSET, RELATIVE-COMPOSE, and DEFAULT-ASCENT,\n\ where\n\ OPENED-NAME is the name used for opening the font,\n\ FULL-NAME is the full name of the font,\n\ @@ -675,7 +680,8 @@ SIZE is the minimum bound width of the font,\n\ HEIGHT is the height of the font,\n\ BASELINE-OFFSET is the upward offset pixels from ASCII baseline,\n\ - RELATIVE-COMPOSE is the number controlling how to compose characters.\n\ + RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling\n\ + how to compose characters.\n\ If the named font is not yet loaded, return nil.") (name, frame) Lisp_Object name, frame; @@ -702,7 +708,7 @@ if (!fontp) return Qnil; - info = Fmake_vector (make_number (6), Qnil); + info = Fmake_vector (make_number (7), Qnil); XVECTOR (info)->contents[0] = build_string (fontp->name); XVECTOR (info)->contents[1] = build_string (fontp->full_name); @@ -711,6 +717,7 @@ XVECTOR (info)->contents[4] = make_number (fontp->height); XVECTOR (info)->contents[5] = make_number (fontp->baseline_offset); XVECTOR (info)->contents[6] = make_number (fontp->relative_compose); + XVECTOR (info)->contents[7] = make_number (fontp->default_ascent); return info; } @@ -790,6 +797,7 @@ /* Window system initializer should have set proper functions. */ abort (); + Qfontset = intern ("fontset"); staticpro (&Qfontset); Vcached_fontset_data = Qnil; @@ -813,6 +821,12 @@ 3: code points 0xA020..0xFF7F are used."); Vfont_encoding_alist = Qnil; + DEFVAR_LISP ("use-default-ascent", &Vuse_default_ascent, + "Char table of characters of which ascent values should be ignored.\n\ +If an entry for a character is non-nil, the ascent value of the glyph\n\ +is assumed to be what specified by _MULE_DEFAULT_ASCENT property of a font."); + Vuse_default_ascent = Qnil; + defsubr (&Squery_fontset); defsubr (&Snew_fontset); defsubr (&Sset_fontset_font);