X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ac5475dacb20d240db27d56199910d8a6fcc90e8..b3154551bc501ba46983ce2cc943100cfb803f8c:/src/composite.c diff --git a/src/composite.c b/src/composite.c index 8ac5ef712c..88cef222d3 100644 --- a/src/composite.c +++ b/src/composite.c @@ -732,9 +732,11 @@ composition_gstring_width (Lisp_Object gstring, ptrdiff_t from, ptrdiff_t to, if (FONT_OBJECT_P (font_object)) { struct font *font = XFONT_OBJECT (font_object); + int font_ascent, font_descent; - metrics->ascent = font->ascent; - metrics->descent = font->descent; + get_font_ascent_descent (font, &font_ascent, &font_descent); + metrics->ascent = font_ascent; + metrics->descent = font_descent; } else { @@ -925,7 +927,7 @@ char_composable_p (int c) { Lisp_Object val; return (c > ' ' - && (c == 0x200C || c == 0x200D + && (c == ZERO_WIDTH_NON_JOINER || c == ZERO_WIDTH_JOINER || (val = CHAR_TABLE_REF (Vunicode_category_table, c), (INTEGERP (val) && (XINT (val) <= UNICODE_CATEGORY_So))))); } @@ -1891,36 +1893,18 @@ syms_of_composite (void) DEFSYM (Qcomposition, "composition"); /* Make a hash table for static composition. */ - { - Lisp_Object args[6]; - - args[0] = QCtest; - args[1] = Qequal; - args[2] = QCweakness; - /* We used to make the hash table weak so that unreferenced - compositions can be garbage-collected. But, usually once - created compositions are repeatedly used in an Emacs session, - and thus it's not worth to save memory in such a way. So, we - make the table not weak. */ - args[3] = Qnil; - args[4] = QCsize; - args[5] = make_number (311); - composition_hash_table = Fmake_hash_table (6, args); - staticpro (&composition_hash_table); - } + /* We used to make the hash table weak so that unreferenced + compositions can be garbage-collected. But, usually once + created compositions are repeatedly used in an Emacs session, + and thus it's not worth to save memory in such a way. So, we + make the table not weak. */ + Lisp_Object args[] = {QCtest, Qequal, QCsize, make_number (311)}; + composition_hash_table = CALLMANY (Fmake_hash_table, args); + staticpro (&composition_hash_table); /* Make a hash table for glyph-string. */ - { - Lisp_Object args[6]; - args[0] = QCtest; - args[1] = Qequal; - args[2] = QCweakness; - args[3] = Qnil; - args[4] = QCsize; - args[5] = make_number (311); - gstring_hash_table = Fmake_hash_table (6, args); - staticpro (&gstring_hash_table); - } + gstring_hash_table = CALLMANY (Fmake_hash_table, args); + staticpro (&gstring_hash_table); staticpro (&gstring_work_headers); gstring_work_headers = make_uninit_vector (8); @@ -1948,7 +1932,6 @@ The default value is the function `compose-chars-after'. */); Vcompose_chars_after_function = intern_c_string ("compose-chars-after"); DEFSYM (Qauto_composed, "auto-composed"); - DEFSYM (Qauto_composition_function, "auto-composition-function"); DEFVAR_LISP ("auto-composition-mode", Vauto_composition_mode, doc: /* Non-nil if Auto-Composition mode is enabled.