Subject: Re: bug#34663: remove ftx font backend

From: Stefan Kangas <[email-masked]>
Date: Thu, 02 Jan 2020 21:44:41 +0100

Eli Zaretskii <[email-masked]> writes:

>> From: Stefan Kangas <[email-masked]>
>> Date: Sun, 6 Oct 2019 14:58:39 +0200
>> Cc: [email-masked]
>> 
>> > Ref: http://lists.gnu.org/r/emacs-devel/2019-02/msg00340.html
>> 
>> How about the attached patch?
>
> Thanks, but I'd like to wait with this until Emacs 28.  So let's
> revisit the issue once the emacs-27 branch is cut (which should happen
> in a few weeks, hopefully).

Now that the emacs-27 branch is cut, perhaps it is time to consider
applying this to master?  I have attached a rebased patch.

Best regards,
Stefan Kangas

>From 447a50f8953b703d254c8fc3abcaa8b9770b038b Mon Sep 17 00:00:00 2001
From: Stefan Kangas <[email-masked]>
Date: Thu, 2 Jan 2020 08:35:19 +0100
Subject: [PATCH] Remove unused ftx font backend driver

* src/ftxfont.c: Remove file.
* admin/notes/font-backend:
* configure.ac:
* src/Makefile.in:
* src/deps.mk (ftxfont.o):
* src/font.c (syms_of_font):
* src/font.h (top-level, font_property_index):
* src/xfns.c (Fx_create_frame, x_create_tip_frame): Remove unused ftx
font backend driver.  Thanks to Glenn Morris for pointing out that it
can be removed.  (Bug#34663)
---
 admin/notes/font-backend | 2 --
 configure.ac             | 6 ++----
 src/Makefile.in          | 6 +++---
 src/deps.mk              | 3 ---
 src/font.c               | 1 -
 src/font.h               | 6 ++----
 src/xfns.c               | 4 ----
 7 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/admin/notes/font-backend b/admin/notes/font-backend
index 7572182a84..644bacfbef 100644
--- a/admin/notes/font-backend
+++ b/admin/notes/font-backend
@@ -15,8 +15,6 @@ The new files are:
 		device-independent methods of struct font_driver.
 	xftfont.c -- font-driver on X using Xft for FreeType fonts
 		utilizing methods provided by ftfont.c.
-	ftxfont.c -- font-driver on X directly using FreeType fonts
-		utilizing methods provided by ftfont.c.
 	w32font.c -- font driver on w32 using Windows native fonts,
 		corresponding to xfont.c
 	w32uniscribe.c -- font driver on w32, using the uniscribe API
diff --git a/configure.ac b/configure.ac
index 24d21c7afd..2f737b5d8d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3382,8 +3382,6 @@ AC_DEFUN
       fi                          # "$HAVE_XFT" != no
     fi                            # "x${with_xft}" != "xno"
 
-    ## We used to allow building with FreeType and without Xft.
-    ## However, the ftx font backend driver is not in good shape.
     if test "$HAVE_XFT" != "yes"; then
        dnl For the "Does Emacs use" message at the end.
        HAVE_XFT=no
@@ -5267,9 +5265,9 @@ AC_DEFUN
   if test "$HAVE_CAIRO" = "yes"; then
     FONT_OBJ="$FONT_OBJ ftfont.o ftcrfont.o"
   elif test "$HAVE_XFT" = "yes"; then
-    FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
+    FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o"
   elif test "$HAVE_FREETYPE" = "yes"; then
-    FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
+    FONT_OBJ="$FONT_OBJ ftfont.o"
   fi
 fi
 if test "${HAVE_HARFBUZZ}" = "yes" ; then
diff --git a/src/Makefile.in b/src/Makefile.in
index ab63b92627..552dd2e50a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -295,8 +295,8 @@ EMACSRES =
 W32_RES_LINK=@W32_RES_LINK@
 
 ## Empty if !HAVE_X_WINDOWS
-## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT
-## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE
+## xfont.o ftfont.o xftfont.o if HAVE_XFT
+## xfont.o ftfont.o if HAVE_FREETYPE
 ## xfont.o ftfont.o ftcrfont.o if USE_CAIRO
 ## else xfont.o
 ## if HAVE_HARFBUZZ, hbfont.o is added regardless of the rest
@@ -436,7 +436,7 @@ SOME_MACHINE_OBJECTS =
   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o \
   w32.o w32console.o w32cygwinx.o w32fns.o w32heap.o w32inevt.o w32notify.o \
   w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \
-  w16select.o widget.o xfont.o ftfont.o xftfont.o ftxfont.o gtkutil.o \
+  w16select.o widget.o xfont.o ftfont.o xftfont.o gtkutil.o \
   xsettings.o xgselect.o termcap.o hbfont.o
 
 ## gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty.
diff --git a/src/deps.mk b/src/deps.mk
index a7e1b55917..4d162eeb0f 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -239,9 +239,6 @@ xfont.o:
 xftfont.o: xftfont.c dispextern.h xterm.h frame.h blockinput.h character.h \
    charset.h font.h lisp.h globals.h $(config_h) atimer.h systime.h \
    fontset.h ccl.h ftfont.h composite.h
-ftxfont.o: ftxfont.c dispextern.h xterm.h frame.h blockinput.h character.h \
-   charset.h font.h lisp.h globals.h $(config_h) atimer.h systime.h \
-   fontset.h ccl.h
 menu.o: menu.c lisp.h keyboard.h keymap.h frame.h termhooks.h blockinput.h \
    dispextern.h $(srcdir)/../lwlib/lwlib.h xterm.h gtkutil.h menu.h \
    lisp.h globals.h $(config_h) systime.h coding.h composite.h window.h \
diff --git a/src/font.c b/src/font.c
index 2b90903c90..bb39aef92d 100644
--- a/src/font.c
+++ b/src/font.c
@@ -5545,7 +5545,6 @@ syms_of_font (void)
 #ifdef USE_CAIRO
   syms_of_ftcrfont ();
 #else
-  syms_of_ftxfont ();
 #ifdef HAVE_XFT
   syms_of_xftfont ();
 #endif  /* HAVE_XFT */
diff --git a/src/font.h b/src/font.h
index 633d92709c..0561e3c83f 100644
--- a/src/font.h
+++ b/src/font.h
@@ -69,8 +69,8 @@ #define EMACS_FONT_H
 
 enum font_property_index
   {
-    /* FONT-TYPE is a symbol indicating a font backend; currently `x',
-       `xft', and `ftx' are available on X, `uniscribe' and `gdi' on
+    /* FONT-TYPE is a symbol indicating a font backend; currently `x'
+       and `xft' are available on X, `uniscribe' and `gdi' on
        Windows, and `ns' under Cocoa / GNUstep.  */
     FONT_TYPE_INDEX,
 
@@ -938,7 +938,6 @@ valid_font_driver (struct font_driver const *d)
 extern struct font_driver const xfont_driver;
 extern Lisp_Object xfont_get_cache (struct frame *);
 extern void syms_of_xfont (void);
-extern void syms_of_ftxfont (void);
 #ifdef HAVE_XFT
 extern struct font_driver const xftfont_driver;
 #ifdef HAVE_HARFBUZZ
@@ -946,7 +945,6 @@ valid_font_driver (struct font_driver const *d)
 #endif	/* HAVE_HARFBUZZ */
 #endif
 #if defined HAVE_FREETYPE || defined HAVE_XFT
-extern struct font_driver const ftxfont_driver;
 extern void syms_of_xftfont (void);
 #endif
 #ifdef HAVE_BDFFONT
diff --git a/src/xfns.c b/src/xfns.c
index d0d5d399dc..1699d9930c 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3878,8 +3878,6 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 #ifdef HAVE_HARFBUZZ
   register_font_driver (&xfthbfont_driver, f);
 #endif
-#else	/* not HAVE_XFT */
-  register_font_driver (&ftxfont_driver, f);
 #endif	/* not HAVE_XFT */
 #endif	/* HAVE_FREETYPE */
 #endif	/* not USE_CAIRO */
@@ -6362,8 +6360,6 @@ x_create_tip_frame (struct x_display_info *dpyinfo, Lisp_Object parms)
 #ifdef HAVE_HARFBUZZ
   register_font_driver (&xfthbfont_driver, f);
 #endif
-#else	/* not HAVE_XFT */
-  register_font_driver (&ftxfont_driver, f);
 #endif	/* not HAVE_XFT */
 #endif	/* HAVE_FREETYPE */
 #endif	/* not USE_CAIRO */
-- 
2.20.1