From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Manuel Giraud Newsgroups: gmane.emacs.bugs Subject: bug#58021: 29.0.50; Remove old font.c code Date: Fri, 23 Sep 2022 11:11:22 +0200 Message-ID: <871qs21mmd.fsf@elite.giraud> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36257"; mail-complaints-to="usenet@ciao.gmane.io" To: 58021@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Sep 23 11:23:12 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1obets-0009Fc-0T for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 23 Sep 2022 11:23:12 +0200 Original-Received: from localhost ([::1]:58050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1obetq-00006E-VT for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 23 Sep 2022 05:23:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obej4-0007wc-Qr for bug-gnu-emacs@gnu.org; Fri, 23 Sep 2022 05:12:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40308) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1obej4-0006BS-I9 for bug-gnu-emacs@gnu.org; Fri, 23 Sep 2022 05:12:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1obej4-0005PZ-Ca for bug-gnu-emacs@gnu.org; Fri, 23 Sep 2022 05:12:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 23 Sep 2022 09:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 58021 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.166392429820753 (code B ref -1); Fri, 23 Sep 2022 09:12:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 23 Sep 2022 09:11:38 +0000 Original-Received: from localhost ([127.0.0.1]:39381 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1obeif-0005Oe-5z for submit@debbugs.gnu.org; Fri, 23 Sep 2022 05:11:38 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:54146) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1obeib-0005OV-I0 for submit@debbugs.gnu.org; Fri, 23 Sep 2022 05:11:35 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51356) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obeiZ-00079u-H7 for bug-gnu-emacs@gnu.org; Fri, 23 Sep 2022 05:11:32 -0400 Original-Received: from ledu-giraud.fr ([51.159.28.247]:14538) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obeiW-00068U-3G for bug-gnu-emacs@gnu.org; Fri, 23 Sep 2022 05:11:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=QIz7osFWn03i6+FE GvdWZwVb3SjfBma7gA2hRNf6NKw=; h=date:subject:to:from; d=ledu-giraud.fr; b=QJbJSwRLiacF0MWFIyX9l+3qXsTXZ3b7DG+raAANS9PdKgYJBW IeYshxcPJJfovlSSyks9TdQB1MHPn+YJGeCWSUYQCRWBsdBH5JU3dNLzG6dKutnKKFSLAM Stj6mTVgbO2J4WsZNh9Ghb9PC32EXoft0Bc8ivex3nqcQGEANO4diwXutKdRH3dqIIlXhp Dc8vfs1Ym6lUhjtbQLaFBZnfhLEaLxPreAatMuA/exc09oIbdhsZiT2AqJDJGDOZv+m0pe FrjDFCn2YkiD7HAOg/Q6exuWRsrYjnVEuDON71oncmzBiMvKG2X/gcrM+I4BGWYy4waDUy aoSBPZBBZIzA== Original-Received: from elite.giraud ( [10.1.1.1]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id 682c5bf3 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Fri, 23 Sep 2022 11:11:23 +0200 (CEST) Received-SPF: pass client-ip=51.159.28.247; envelope-from=manuel@ledu-giraud.fr; helo=ledu-giraud.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:243456 Archived-At: --=-=-= Content-Type: text/plain Hi, Here is patch that removes some old "#if 0" code from font.c. Most of this code seems to be "#if 0" since 2006 (when font.c was introduced) and was only "updated" for overall interfaces change. Maybe it was kept as hints for future readers but I found this code to be a bit misleading as it has drifted along from how things are actually done now. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-src-font.c-remove-old-if-0-code.patch >From 15d1e193b666dc9ad708641cdd2e8e6dcaf022c2 Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Fri, 23 Sep 2022 11:02:47 +0200 Subject: [PATCH] ; * src/font.c: remove old "#if 0" code --- src/font.c | 472 ----------------------------------------------------- 1 file changed, 472 deletions(-) diff --git a/src/font.c b/src/font.c index 413cb381ee..8a99f4ffec 100644 --- a/src/font.c +++ b/src/font.c @@ -1835,296 +1835,6 @@ font_parse_family_registry (Lisp_Object family, Lisp_Object registry, Lisp_Objec } } - -/* This part (through the next ^L) is still experimental and not - tested much. We may drastically change codes. */ - -/* OTF handler. */ - -#if 0 - -#define LGSTRING_HEADER_SIZE 6 -#define LGSTRING_GLYPH_SIZE 8 - -static int -check_gstring (Lisp_Object gstring) -{ - Lisp_Object val; - ptrdiff_t i; - int j; - - CHECK_VECTOR (gstring); - val = AREF (gstring, 0); - CHECK_VECTOR (val); - if (ASIZE (val) < LGSTRING_HEADER_SIZE) - goto err; - CHECK_FONT_OBJECT (LGSTRING_FONT (gstring)); - if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING))) - CHECK_FIXNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING)); - if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING))) - CHECK_FIXNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING)); - if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH))) - CHECK_FIXNAT (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH)); - if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT))) - CHECK_FIXNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)); - if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT))) - CHECK_FIXNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)); - - for (i = 0; i < LGSTRING_GLYPH_LEN (gstring); i++) - { - val = LGSTRING_GLYPH (gstring, i); - CHECK_VECTOR (val); - if (ASIZE (val) < LGSTRING_GLYPH_SIZE) - goto err; - if (NILP (AREF (val, LGLYPH_IX_CHAR))) - break; - CHECK_FIXNAT (AREF (val, LGLYPH_IX_FROM)); - CHECK_FIXNAT (AREF (val, LGLYPH_IX_TO)); - CHECK_CHARACTER (AREF (val, LGLYPH_IX_CHAR)); - if (!NILP (AREF (val, LGLYPH_IX_CODE))) - CHECK_FIXNAT (AREF (val, LGLYPH_IX_CODE)); - if (!NILP (AREF (val, LGLYPH_IX_WIDTH))) - CHECK_FIXNAT (AREF (val, LGLYPH_IX_WIDTH)); - if (!NILP (AREF (val, LGLYPH_IX_ADJUSTMENT))) - { - val = AREF (val, LGLYPH_IX_ADJUSTMENT); - CHECK_VECTOR (val); - if (ASIZE (val) < 3) - goto err; - for (j = 0; j < 3; j++) - CHECK_FIXNUM (AREF (val, j)); - } - } - return i; - err: - error ("Invalid glyph-string format"); - return -1; -} - -static void -check_otf_features (Lisp_Object otf_features) -{ - Lisp_Object val; - - CHECK_CONS (otf_features); - CHECK_SYMBOL (XCAR (otf_features)); - otf_features = XCDR (otf_features); - CHECK_CONS (otf_features); - CHECK_SYMBOL (XCAR (otf_features)); - otf_features = XCDR (otf_features); - for (val = Fcar (otf_features); CONSP (val); val = XCDR (val)) - { - CHECK_SYMBOL (XCAR (val)); - if (SBYTES (SYMBOL_NAME (XCAR (val))) > 4) - error ("Invalid OTF GSUB feature: %s", - SDATA (SYMBOL_NAME (XCAR (val)))); - } - otf_features = XCDR (otf_features); - for (val = Fcar (otf_features); CONSP (val); val = XCDR (val)) - { - CHECK_SYMBOL (XCAR (val)); - if (SBYTES (SYMBOL_NAME (XCAR (val))) > 4) - error ("Invalid OTF GPOS feature: %s", - SDATA (SYMBOL_NAME (XCAR (val)))); - } -} - -#ifdef HAVE_LIBOTF -#include - -Lisp_Object otf_list; - -static Lisp_Object -otf_tag_symbol (OTF_Tag tag) -{ - char name[5]; - - OTF_tag_name (tag, name); - return Fintern (make_unibyte_string (name, 4), Qnil); -} - -static OTF * -otf_open (Lisp_Object file) -{ - Lisp_Object val = Fassoc (file, otf_list, Qnil); - OTF *otf; - - if (! NILP (val)) - otf = xmint_pointer (XCDR (val)); - else - { - otf = STRINGP (file) ? OTF_open (SSDATA (file)) : NULL; - val = make_mint_ptr (otf); - otf_list = Fcons (Fcons (file, val), otf_list); - } - return otf; -} - - -/* Return a list describing which scripts/languages FONT supports by - which GSUB/GPOS features of OpenType tables. See the comment of - (struct font_driver).otf_capability. */ - -Lisp_Object -font_otf_capability (struct font *font) -{ - OTF *otf; - Lisp_Object capability = Fcons (Qnil, Qnil); - int i; - - otf = otf_open (font->props[FONT_FILE_INDEX]); - if (! otf) - return Qnil; - for (i = 0; i < 2; i++) - { - OTF_GSUB_GPOS *gsub_gpos; - Lisp_Object script_list = Qnil; - int j; - - if (OTF_get_features (otf, i == 0) < 0) - continue; - gsub_gpos = i == 0 ? otf->gsub : otf->gpos; - for (j = gsub_gpos->ScriptList.ScriptCount - 1; j >= 0; j--) - { - OTF_Script *script = gsub_gpos->ScriptList.Script + j; - Lisp_Object langsys_list = Qnil; - Lisp_Object script_tag = otf_tag_symbol (script->ScriptTag); - int k; - - for (k = script->LangSysCount; k >= 0; k--) - { - OTF_LangSys *langsys; - Lisp_Object feature_list = Qnil; - Lisp_Object langsys_tag; - int l; - - if (k == script->LangSysCount) - { - langsys = &script->DefaultLangSys; - langsys_tag = Qnil; - } - else - { - langsys = script->LangSys + k; - langsys_tag - = otf_tag_symbol (script->LangSysRecord[k].LangSysTag); - } - for (l = langsys->FeatureCount - 1; l >= 0; l--) - { - OTF_Feature *feature - = gsub_gpos->FeatureList.Feature + langsys->FeatureIndex[l]; - Lisp_Object feature_tag - = otf_tag_symbol (feature->FeatureTag); - - feature_list = Fcons (feature_tag, feature_list); - } - langsys_list = Fcons (Fcons (langsys_tag, feature_list), - langsys_list); - } - script_list = Fcons (Fcons (script_tag, langsys_list), - script_list); - } - - if (i == 0) - XSETCAR (capability, script_list); - else - XSETCDR (capability, script_list); - } - - return capability; -} - -/* Parse OTF features in SPEC and write a proper features spec string - in FEATURES for the call of OTF_drive_gsub/gpos (of libotf). It is - assured that the sufficient memory has already allocated for - FEATURES. */ - -static void -generate_otf_features (Lisp_Object spec, char *features) -{ - Lisp_Object val; - char *p; - bool asterisk; - - p = features; - *p = '\0'; - for (asterisk = 0; CONSP (spec); spec = XCDR (spec)) - { - val = XCAR (spec); - CHECK_SYMBOL (val); - if (p > features) - *p++ = ','; - if (SREF (SYMBOL_NAME (val), 0) == '*') - { - asterisk = 1; - *p++ = '*'; - } - else if (! asterisk) - { - val = SYMBOL_NAME (val); - p += esprintf (p, "%s", SDATA (val)); - } - else - { - val = SYMBOL_NAME (val); - p += esprintf (p, "~%s", SDATA (val)); - } - } - if (CONSP (spec)) - error ("OTF spec too long"); -} - -Lisp_Object -font_otf_DeviceTable (OTF_DeviceTable *device_table) -{ - int len = device_table->StartSize - device_table->EndSize + 1; - - return Fcons (make_fixnum (len), - make_unibyte_string (device_table->DeltaValue, len)); -} - -Lisp_Object -font_otf_ValueRecord (int value_format, OTF_ValueRecord *value_record) -{ - Lisp_Object val = make_nil_vector (8); - - if (value_format & OTF_XPlacement) - ASET (val, 0, make_fixnum (value_record->XPlacement)); - if (value_format & OTF_YPlacement) - ASET (val, 1, make_fixnum (value_record->YPlacement)); - if (value_format & OTF_XAdvance) - ASET (val, 2, make_fixnum (value_record->XAdvance)); - if (value_format & OTF_YAdvance) - ASET (val, 3, make_fixnum (value_record->YAdvance)); - if (value_format & OTF_XPlaDevice) - ASET (val, 4, font_otf_DeviceTable (&value_record->XPlaDevice)); - if (value_format & OTF_YPlaDevice) - ASET (val, 4, font_otf_DeviceTable (&value_record->YPlaDevice)); - if (value_format & OTF_XAdvDevice) - ASET (val, 4, font_otf_DeviceTable (&value_record->XAdvDevice)); - if (value_format & OTF_YAdvDevice) - ASET (val, 4, font_otf_DeviceTable (&value_record->YAdvDevice)); - return val; -} - -Lisp_Object -font_otf_Anchor (OTF_Anchor *anchor) -{ - Lisp_Object val = make_nil_vector (anchor->AnchorFormat + 1); - ASET (val, 0, make_fixnum (anchor->XCoordinate)); - ASET (val, 1, make_fixnum (anchor->YCoordinate)); - if (anchor->AnchorFormat == 2) - ASET (val, 2, make_fixnum (anchor->f.f1.AnchorPoint)); - else - { - ASET (val, 3, font_otf_DeviceTable (&anchor->f.f2.XDeviceTable)); - ASET (val, 4, font_otf_DeviceTable (&anchor->f.f2.YDeviceTable)); - } - return val; -} -#endif /* HAVE_LIBOTF */ -#endif /* 0 */ - /* Font sorting. */ @@ -4818,126 +4528,6 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0, return Fcons (font_object, INT_TO_INTEGER (code)); } -#if 0 - -DEFUN ("font-drive-otf", Ffont_drive_otf, Sfont_drive_otf, 6, 6, 0, - doc: /* Apply OpenType features on glyph-string GSTRING-IN. -OTF-FEATURES specifies which features to apply in this format: - (SCRIPT LANGSYS GSUB GPOS) -where - SCRIPT is a symbol specifying a script tag of OpenType, - LANGSYS is a symbol specifying a langsys tag of OpenType, - GSUB and GPOS, if non-nil, are lists of symbols specifying feature tags. - -If LANGSYS is nil, the default langsys is selected. - -The features are applied in the order they appear in the list. The -symbol `*' means to apply all available features not present in this -list, and the remaining features are ignored. For instance, (vatu -pstf * haln) is to apply vatu and pstf in this order, then to apply -all available features other than vatu, pstf, and haln. - -The features are applied to the glyphs in the range FROM and TO of -the glyph-string GSTRING-IN. - -If some feature is actually applicable, the resulting glyphs are -produced in the glyph-string GSTRING-OUT from the index INDEX. In -this case, the value is the number of produced glyphs. - -If no feature is applicable, no glyph is produced in GSTRING-OUT, and -the value is 0. - -If GSTRING-OUT is too short to hold produced glyphs, no glyphs are -produced in GSTRING-OUT, and the value is nil. - -See the documentation of `composition-get-gstring' for the format of -glyph-string. */) - (Lisp_Object otf_features, Lisp_Object gstring_in, Lisp_Object from, Lisp_Object to, Lisp_Object gstring_out, Lisp_Object index) -{ - Lisp_Object font_object = LGSTRING_FONT (gstring_in); - Lisp_Object val; - struct font *font; - int len, num; - - check_otf_features (otf_features); - CHECK_FONT_OBJECT (font_object); - font = XFONT_OBJECT (font_object); - if (! font->driver->otf_drive) - error ("Font backend %s can't drive OpenType GSUB table", - SDATA (SYMBOL_NAME (font->driver->type))); - CHECK_CONS (otf_features); - CHECK_SYMBOL (XCAR (otf_features)); - val = XCDR (otf_features); - CHECK_SYMBOL (XCAR (val)); - val = XCDR (otf_features); - if (! NILP (val)) - CHECK_CONS (val); - len = check_gstring (gstring_in); - CHECK_VECTOR (gstring_out); - CHECK_FIXNAT (from); - CHECK_FIXNAT (to); - CHECK_FIXNAT (index); - - if (XFIXNUM (from) >= XFIXNUM (to) || XFIXNUM (to) > len) - args_out_of_range_3 (from, to, make_fixnum (len)); - if (XFIXNUM (index) >= ASIZE (gstring_out)) - args_out_of_range (index, make_fixnum (ASIZE (gstring_out))); - num = font->driver->otf_drive (font, otf_features, - gstring_in, XFIXNUM (from), XFIXNUM (to), - gstring_out, XFIXNUM (index), 0); - if (num < 0) - return Qnil; - return make_fixnum (num); -} - -DEFUN ("font-otf-alternates", Ffont_otf_alternates, Sfont_otf_alternates, - 3, 3, 0, - doc: /* Return a list of alternate glyphs of CHARACTER in FONT-OBJECT. -OTF-FEATURES specifies which features of the font FONT-OBJECT to apply -in this format: - (SCRIPT LANGSYS FEATURE ...) -See the documentation of `font-drive-otf' for more detail. - -The value is a list of cons cells of the format (GLYPH-ID . CHARACTER), -where GLYPH-ID is a glyph index of the font, and CHARACTER is a -character code corresponding to the glyph or nil if there's no -corresponding character. */) - (Lisp_Object font_object, Lisp_Object character, Lisp_Object otf_features) -{ - struct font *font = CHECK_FONT_GET_OBJECT (font_object); - Lisp_Object gstring_in, gstring_out, g; - Lisp_Object alternates; - int i, num; - - if (! font->driver->otf_drive) - error ("Font backend %s can't drive OpenType GSUB table", - SDATA (SYMBOL_NAME (font->driver->type))); - CHECK_CHARACTER (character); - CHECK_CONS (otf_features); - - gstring_in = Ffont_make_gstring (font_object, make_fixnum (1)); - g = LGSTRING_GLYPH (gstring_in, 0); - LGLYPH_SET_CHAR (g, XFIXNUM (character)); - gstring_out = Ffont_make_gstring (font_object, make_fixnum (10)); - while ((num = font->driver->otf_drive (font, otf_features, gstring_in, 0, 1, - gstring_out, 0, 1)) < 0) - gstring_out = Ffont_make_gstring (font_object, - make_fixnum (ASIZE (gstring_out) * 2)); - alternates = Qnil; - for (i = 0; i < num; i++) - { - Lisp_Object g = LGSTRING_GLYPH (gstring_out, i); - int c = LGLYPH_CHAR (g); - unsigned code = LGLYPH_CODE (g); - - alternates = Fcons (Fcons (make_fixnum (code), - c > 0 ? make_fixnum (c) : Qnil), - alternates); - } - return Fnreverse (alternates); -} -#endif /* 0 */ - #ifdef FONT_DEBUG DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0, @@ -5232,47 +4822,6 @@ DEFUN ("font-at", Ffont_at, Sfont_at, 1, 3, 0, return font_at (-1, pos, NULL, w, string); } -#if 0 -DEFUN ("draw-string", Fdraw_string, Sdraw_string, 2, 2, 0, - doc: /* Draw STRING by FONT-OBJECT on the top left corner of the current frame. -The value is a number of glyphs drawn. -Type C-l to recover what previously shown. */) - (Lisp_Object font_object, Lisp_Object string) -{ - Lisp_Object frame = selected_frame; - struct frame *f = XFRAME (frame); - struct font *font; - struct face *face; - int i, len, width; - unsigned *code; - - CHECK_FONT_GET_OBJECT (font_object, font); - CHECK_STRING (string); - len = SCHARS (string); - code = alloca (sizeof (unsigned) * len); - for (i = 0; i < len; i++) - { - Lisp_Object ch = Faref (string, make_fixnum (i)); - Lisp_Object val; - int c = XFIXNUM (ch); - - code[i] = font->driver->encode_char (font, c); - if (code[i] == FONT_INVALID_CODE) - break; - } - face = FACE_FROM_ID (f, DEFAULT_FACE_ID); - face->fontp = font; - if (font->driver->prepare_face) - font->driver->prepare_face (f, face); - width = font->driver->text_extents (font, code, i, NULL); - len = font->driver->draw_text (f, face, 0, font->ascent, code, i, width); - if (font->driver->done_face) - font->driver->done_face (f, face); - face->fontp = NULL; - return make_fixnum (len); -} -#endif - DEFUN ("frame-font-cache", Fframe_font_cache, Sframe_font_cache, 0, 1, 0, doc: /* Return FRAME's font cache. Mainly used for debugging. If FRAME is omitted or nil, use the selected frame. */) @@ -5390,12 +4939,6 @@ DEFUN ("font-info", Ffont_info, Sfont_info, 1, 2, 0, ? Fcons (Qopentype, font->driver->otf_capability (font)) : Qnil)); -#if 0 - /* As font_object is still in FONT_OBJLIST of the entity, we can't - close it now. Perhaps, we should manage font-objects - by `reference-count'. */ - font_close_object (f, font_object); -#endif return info; } #endif @@ -5609,13 +5152,6 @@ syms_of_font (void) Vfont_log_deferred = make_nil_vector (3); staticpro (&Vfont_log_deferred); -#if 0 -#ifdef HAVE_LIBOTF - staticpro (&otf_list); - otf_list = Qnil; -#endif /* HAVE_LIBOTF */ -#endif /* 0 */ - defsubr (&Sfontp); defsubr (&Sfont_spec); defsubr (&Sfont_get); @@ -5631,11 +5167,6 @@ syms_of_font (void) defsubr (&Sfont_shape_gstring); defsubr (&Sfont_variation_glyphs); defsubr (&Sinternal_char_font); -#if 0 - defsubr (&Sfont_drive_otf); - defsubr (&Sfont_otf_alternates); -#endif /* 0 */ - #ifdef FONT_DEBUG defsubr (&Sopen_font); defsubr (&Sclose_font); @@ -5644,9 +5175,6 @@ syms_of_font (void) defsubr (&Sfont_has_char_p); defsubr (&Sfont_match_p); defsubr (&Sfont_at); -#if 0 - defsubr (&Sdraw_string); -#endif defsubr (&Sframe_font_cache); #endif /* FONT_DEBUG */ #ifdef HAVE_WINDOW_SYSTEM -- 2.37.3 --=-=-= Content-Type: text/plain Best regards, In GNU Emacs 29.0.50 (build 2, x86_64-unknown-openbsd7.2, cairo version 1.17.6) of 2022-09-23 built on elite.giraud Repository revision: 94380420e2cba7e2821b22fd8a46cd5b04c985ef Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 System Description: OpenBSD elite.giraud 7.2 GENERIC.MP#739 amd64 Configured using: 'configure --prefix=/home/manuel/emacs --bindir=/home/manuel/bin --with-x-toolkit=no --without-sound --without-compress-install CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF WEBP X11 XDBE XIM XINPUT2 XPM ZLIB Important settings: value of $LC_ALL: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Change Log Minor modes in effect: global-git-commit-mode: t magit-auto-revert-mode: t icomplete-mode: t display-time-mode: t display-battery-mode: t shell-dirtrack-mode: t global-so-long-mode: t repeat-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t line-number-mode: t auto-fill-function: do-auto-fill indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/manuel/.emacs.d/elpa/transient-20220806.2224/transient hides /home/manuel/emacs/share/emacs/29.0.50/lisp/transient Features: (shadow sort mail-extr emacsbug whitespace gnus-dired magit-patch sh-script smie magit-extras log-view executable vc-annotate vc misearch multi-isearch vc-git vc-dispatcher vc-svn bug-reference pulse face-remap magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff diff-mode git-commit log-edit pcvs-util add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor magit-mode transient magit-git magit-base magit-section dash compat-27 compat-26 compat compat-macs paredit edmacro icomplete time battery exwm-randr xcb-randr exwm-config exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug kmacro server stimmung-themes modus-operandi-theme modus-themes ytdious osm mingus libmpdee reporter edebug debug backtrace transmission diary-lib diary-loaddefs color calc-bin calc-ext calc calc-loaddefs rect calc-macs w3m-load mu4e mu4e-org mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mule-util hl-line mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context mu4e-vars mu4e-helpers mu4e-config bookmark ido supercite regi ebdb-message ebdb-gnus gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums gmm-utils mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util mail-prsvr ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar ezimage dframe eieio-base pcase timezone org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs find-func cal-menu calendar cal-loaddefs visual-basic-mode cl web-mode disp-table erlang-start smart-tabs-mode skeleton cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs slime-asdf grep slime-tramp tramp tramp-loaddefs trampver tramp-integration cus-edit cus-load wid-edit files-x tramp-compat rx shell pcomplete parse-time iso8601 time-date ls-lisp format-spec slime-fancy slime-indentation slime-cl-indent cl-indent slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references slime-compiler-notes-tree slime-scratch slime-presentations advice bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc slime-repl elp slime-parse slime derived cl-extra help-mode lisp-mnt gud apropos compile text-property-search etags fileloop generator xref project arc-mode archive-mode noutline outline icons pp comint osc ansi-color ring hyperspec thingatpt slime-autoloads dired-aux dired-x dired dired-loaddefs so-long notifications dbus xml repeat easy-mmode auctex-autoloads tex-site debbugs-autoloads hyperbole-autoloads magit-autoloads git-commit-autoloads magit-section-autoloads dash-autoloads paredit-autoloads rust-mode-autoloads stimmung-themes-autoloads transient-autoloads with-editor-autoloads info compat-autoloads ytdious-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile cconv url-vars cl-loaddefs cl-lib rmc iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind kqueue lcms2 dynamic-setting system-font-setting font-render-setting cairo xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 825266 63855) (symbols 48 57333 3) (strings 32 172702 10415) (string-bytes 1 5701254) (vectors 16 97903) (vector-slots 8 1330069 88622) (floats 8 541 702) (intervals 56 39795 1082) (buffers 1000 26)) -- Manuel Giraud --=-=-=--