Subject: bug#59947: 30.0.50; Underline of tab-bar face does not respect x-underline-at-descent-line

From: Gabriel <[email-masked]>
Date: Sat, 10 Dec 2022 15:22:20 -0300

Description:

Apparently, the underline property of tab-bar (and tab-bar-*) face does
not respect the option x-underline-at-descent-line.  When
x-underline-at-descent-line is set to t, the underline is displayed at
descent level (below of bottom box), but in tab-bar face it's displayed
at the baseline (above of bottom box).  See steps below and attached
images for more information.

Steps:

1) emacs -q (master "fbbf3610fd5b27873e13cfd7702d5b0bbb15c2f8")

2) Enable tab-bar and tab-line:

(progn
  (tab-bar-mode 1)
  (global-tab-line-mode 1))

3) Set box, overline and underline of tab-tab face:

(set-face-attribute 'tab-bar
                    nil
                    :box '(:style flat-button
                           :line-width 12
                           :color "green")
                    :overline "red"
                    :underline "red")

Result: a green box is displayed in tab-bar, a red overline is displayed
above of top box and a red underline is displayed above of bottom box.

4) Set box, overline and underline of tab-line face:

(set-face-attribute 'tab-line
                    nil
                    :box '(:style flat-button
                           :line-width 12
                           :color "yellow")
                    :overline "blue"
                    :underline "blue")

Result: a yellow box is displayed in tab-line, a blue overline is
displayed above of top box and a blue underline is displayed above of
bottom box.

See image step-4.png

Note: I am not sure why the underline and overline of tab-bar face are
not extended as in tab-line.  I tried many approaches (e.g. using
:extend t, using other tab-bar-* faces, tweaking tab-line-format etc)
but nothing worked for me.  Perhaps it's something related to the bug
reported here.

5) Set x-underline-at-descent-line:

(setopt x-underline-at-descent-line t)

Result: The tab-line underline is now displayed below the bottom box,
but the tab-bar underline is not affected.  I tried many approaches
(e.g.: tweaking the variables x-underline-at-descent-line,
x-use-underline-position-properties and underline-minimum-offset, using
other tab-bar-* faces etc) to make it work, but nothing worked for me.

See image step5.png

---
Gabriel