st-vertcenter-20231003-eb3b894.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
st-vertcenter-20231003-eb3b894.diff (2209B)
---
1 From c85891b21261b68b09ed9ae6a1ca18655ef19e69 Mon Sep 17 00:00:00 2001
2 From: roket1428 <meorhan@protonmail.com>
3 Date: Tue, 3 Oct 2023 11:10:39 +0300
4 Subject: [PATCH] vertcenter patch
5
6 ---
7 x.c | 10 ++++++----
8 1 file changed, 6 insertions(+), 4 deletions(-)
9
10 diff --git a/x.c b/x.c
11 index aa09997..9ecb46e 100644
12 --- a/x.c
13 +++ b/x.c
14 @@ -83,6 +83,7 @@ typedef struct {
15 int w, h; /* window width and height */
16 int ch; /* char height */
17 int cw; /* char width */
18 + int cyo; /* char y offset */
19 int mode; /* window state/mode flags */
20 int cursor; /* cursor style */
21 } TermWindow;
22 @@ -1031,6 +1032,7 @@ xloadfonts(const char *fontstr, double fontsize)
23 /* Setting character width and height. */
24 win.cw = ceilf(dc.font.width * cwscale);
25 win.ch = ceilf(dc.font.height * chscale);
26 + win.cyo = ceilf(dc.font.height * (chscale - 1) / 2);
27
28 FcPatternDel(pattern, FC_SLANT);
29 FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
30 @@ -1255,7 +1257,7 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
31 FcCharSet *fccharset;
32 int i, f, numspecs = 0;
33
34 - for (i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) {
35 + for (i = 0, xp = winx, yp = winy + font->ascent + win.cyo; i < len; ++i) {
36 /* Fetch rune and mode for current glyph. */
37 rune = glyphs[i].u;
38 mode = glyphs[i].mode;
39 @@ -1280,7 +1282,7 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
40 font = &dc.bfont;
41 frcflags = FRC_BOLD;
42 }
43 - yp = winy + font->ascent;
44 + yp = winy + font->ascent + win.cyo;
45 }
46
47 /* Lookup character index with default font. */
48 @@ -1493,12 +1495,12 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
49
50 /* Render underline and strikethrough. */
51 if (base.mode & ATTR_UNDERLINE) {
52 - XftDrawRect(xw.draw, fg, winx, winy + dc.font.ascent * chscale + 1,
53 + XftDrawRect(xw.draw, fg, winx, winy + win.cyo + dc.font.ascent * chscale + 1,
54 width, 1);
55 }
56
57 if (base.mode & ATTR_STRUCK) {
58 - XftDrawRect(xw.draw, fg, winx, winy + 2 * dc.font.ascent * chscale / 3,
59 + XftDrawRect(xw.draw, fg, winx, winy + win.cyo + 2 * dc.font.ascent * chscale / 3,
60 width, 1);
61 }
62
63 --
64 2.42.0
65