Subject: 30.0.50; Issue with :box face attribute
From: David Ponce <[email-masked]>
To: [email-masked]
Date: Thu, 23 Nov 2023 16:23:15 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

The below face with specified :box attribute can be defined and further
used without problem:

(defface test-face
   '((t
      (:box (:style released-button :line-width (3 . 0)))
      ))
   "Test face.")

(insert (propertize "XXXXX" 'face 'test-face))

However, it is not possible to apply any change to this face with
`customize-face', for example to change :line-width (3 . 0) to
:line-width (2 . 0), or to add a :foreground color, etc.  This fails
with the message "set-face-attribute: Invalid face box: :line-width,
<value>, :style, <value>", and the :box attribute is discarded.

AFAICS, :box attribute with any zero :line-width value works as
expected: the box line with zero width is not displayed.  But zero is
not considered as a valid value by `set-face-attribute' (in fact, the
internal function `internal-set-lisp-face-attribute').

For consistency, a zero :line-width value either should be accepted by
`internal-set-lisp-face-attribute', or never accepted at all.

Thanks

In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
  3.24.38, cairo version 1.18.0) of 2023-11-21
Repository revision: 3328c327254b5846782990f6171175bea216eba9
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 39 (KDE Plasma)

Configured using:
  'configure --with-x-toolkit=gtk3 --with-cairo-xcb
  --with-native-compilation=no
  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
   value of $LC_TIME: fr_FR.utf8
   value of $LANG: fr_FR.UTF-8
   locale-coding-system: utf-8-unix