From 3838491c5db8e59bc6e0efee7809e6ef6a37d01d Mon Sep 17 00:00:00 2001 From: vx-clutch Date: Wed, 11 Feb 2026 07:30:17 -0500 Subject: [PATCH] add workingdir patch --- boxdraw.o | Bin 7488 -> 0 bytes hb.o | Bin 4160 -> 0 bytes patches/st-workingdir-20200317-51e19ea.diff | 97 +++++++ st | Bin 103864 -> 0 bytes st.1 | 8 + st.o | Bin 78888 -> 0 bytes x.c | 13 +- x.c.orig | 271 +++++++++++--------- x.o | Bin 73912 -> 0 bytes 9 files changed, 260 insertions(+), 129 deletions(-) delete mode 100644 boxdraw.o delete mode 100644 hb.o create mode 100644 patches/st-workingdir-20200317-51e19ea.diff delete mode 100755 st delete mode 100644 st.o delete mode 100644 x.o diff --git a/boxdraw.o b/boxdraw.o deleted file mode 100644 index 6375decdd6c77ab4ba5b067b9f2f7e6d542a307c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7488 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 XqoBC+M{jB|eU$%yXQDt$rd$7CPPan* diff --git a/hb.o b/hb.o deleted file mode 100644 index 760ec98ee2a125f54fffc3ca9fc1ec31ccc5a0eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4160 zcmbtWU2qds6y8k&jr?p<{3}rDj#Hg51F@|l6j8gSh1;<>3{b(TC2W&T8%dL}*&sz6 zk+h6Ev53CuBTtS`j87;EDNz~J7hjao5j&1{a8SS(U{brHudR%G_fBj_@}WhI`2jn7zN$9tBud7x`p{4&@-P!VM0r!ZI; zU$ODBwVGyQpJ9`~1(^Rqp59)<>{ns_WtmZqi_B?}m4<_tuAWBP3H;&NE}hV}YcFYi z+BQCeNRRz5v#&FITXRsezw5FqPR;RhXzV7$^w?i_PpoUCMot9)WA<5YpTd1&_7%q& zudsGLiO`|%0q<_V^~S)a`0u^;6q}ra$sTA9GWmvBE&D>RJk1wDzI|E+dZ+o%h!} zk!Wu0wWo>1?260ku}5I41Hm4mpMPGvJu|bF;Y;#7?;;txQV!MoL-p&!{T1w4+MuV>Mnbi+ zYC5YYRHmEB!NUIiYBHO#qLQ?6{ra_PWaEo{%hlFZ(Y9!-+SbzcbW3a7lWJrO#4+6x zj+LvIV?Nv<6&~CQ2$Ou0TtGvJNFw-2?Z zgb({PrJ?BWQdD17X#hY|f)Q|a2_9ebyLlhZBce86V!+D@ZVnsjRKoB2I+cba{!T@m z2y`lucjjnH%i+12vZh$qrR?%AljkXG0Me8QP=E>{ok~!fkG*{^axF#;b&J03N>E_6 z6qXH0|KMKUBmO(9bhpdTSM_deE|@als(`~Tx1X=R3xMGwc#uy#(oNilT{*(n8ip(3 zA&ziyg=a=J{Dm6$X22IgWy;I<2(bPd{CEvKTLXWq20jir)@>70Lm_lu$&}u@LPtINMVp=>Y02pYmQ(Ir*=#bW`Vo`rBkL6w^G@Ri->qUUC3L88A}^` zjkL?BClaxEHeuwlDV#wPY8Fg`PbELB=dd=_8-g@L>CxP9ER{)SIYo3b>&a#FDXfm( zc-qi2g`6t`tqZI-onN>Oet4F`gM!}^3gLK;q42{IG@gZcM%he^lVOX8c;=(4-Xt$GRbS zsO}aQKHr58x$t@y{+bKNvzhXYx$yg4_z{6q|8yPw#DmlSX&n+lh);M(;MhN6RClq! zalZU!2O6c>#eWEF;y>lWA9mrLE*#$-;vW(?D*Rrk{|OIHeZKF?<9<&*sKNi(#b4s8 ztHKxs-GahxybGWZPXAAq1K+{v|D)`|>HL+V`Oy(e9|Ucgjvl6wX{7b2W$d%0XhOGi zDLRfoqY#P-jp10* z)JF`_(En5_#N#W3_X)Rj2;-!C(Ew8gP72RGe3v>15PFTc2z`W`4T9eU)}i|mohy$E zT+qOBv3;9O)hrPkz#y?wOF|p*Z5b41+p&yvwy&#C!Xq^{4nfFuj^0sIU&j6gKHy(3VTdFDXLic$V%wxh`t$KV1 O76f_SQFng5@&5rj`)h3g diff --git a/patches/st-workingdir-20200317-51e19ea.diff b/patches/st-workingdir-20200317-51e19ea.diff new file mode 100644 index 0000000..65de084 --- /dev/null +++ b/patches/st-workingdir-20200317-51e19ea.diff @@ -0,0 +1,97 @@ +From ae14b869d7bc0e0cd8ed16157837ad09aaacacc0 Mon Sep 17 00:00:00 2001 +From: David Gricar +Date: Tue, 17 Mar 2020 13:38:05 +0100 +Subject: [PATCH] Add switch to provide initial working directory + +This patch adds -p switch which takes one argument 'path' and can be +used to set the initial working directory of the new st instance. +It acts the same as running 'cd path' command after starting the st +instance. +--- + st.1 | 8 ++++++++ + x.c | 13 +++++++++---- + 2 files changed, 17 insertions(+), 4 deletions(-) + +diff --git a/st.1 b/st.1 +index e8d6059..a901122 100644 +--- a/st.1 ++++ b/st.1 +@@ -6,6 +6,8 @@ st \- simple terminal + .RB [ \-aiv ] + .RB [ \-c + .IR class ] ++.RB [ \-d ++.IR path ] + .RB [ \-f + .IR font ] + .RB [ \-g +@@ -30,6 +32,8 @@ st \- simple terminal + .RB [ \-aiv ] + .RB [ \-c + .IR class ] ++.RB [ \-d ++.IR path ] + .RB [ \-f + .IR font ] + .RB [ \-g +@@ -58,6 +62,10 @@ disable alternate screens in terminal + .BI \-c " class" + defines the window class (default $TERM). + .TP ++.BI \-d " path" ++changes the working directory to ++.IR path . ++.TP + .BI \-f " font" + defines the + .I font +diff --git a/x.c b/x.c +index 48a6676..fab2ddc 100644 +--- a/x.c ++++ b/x.c +@@ -250,6 +250,7 @@ static char *opt_io = NULL; + static char *opt_line = NULL; + static char *opt_name = NULL; + static char *opt_title = NULL; ++static char *opt_dir = NULL; + + static int oldbutton = 3; /* button event on startup: 3 = release */ + +@@ -1958,12 +1959,12 @@ run(void) + void + usage(void) + { +- die("usage: %s [-aiv] [-c class] [-f font] [-g geometry]" +- " [-n name] [-o file]\n" ++ die("usage: %s [-aiv] [-c class] [-d path] [-f font]" ++ " [-g geometry] [-n name] [-o file]\n" + " [-T title] [-t title] [-w windowid]" + " [[-e] command [args ...]]\n" +- " %s [-aiv] [-c class] [-f font] [-g geometry]" +- " [-n name] [-o file]\n" ++ " %s [-aiv] [-c class] [-d path] [-f font]" ++ " [-g geometry] [-n name] [-o file]\n" + " [-T title] [-t title] [-w windowid] -l line" + " [stty_args ...]\n", argv0, argv0); + } +@@ -2015,6 +2016,9 @@ main(int argc, char *argv[]) + case 'v': + die("%s " VERSION "\n", argv0); + break; ++ case 'd': ++ opt_dir = EARGF(usage()); ++ break; + default: + usage(); + } ARGEND; +@@ -2034,6 +2038,7 @@ run: + xinit(cols, rows); + xsetenv(); + selinit(); ++ chdir(opt_dir); + run(); + + return 0; +-- +2.25.1 + diff --git a/st b/st deleted file mode 100755 index 70d1b98f61c5dae5a3cae8a4bb6f3ab2a3e49724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103864 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 Qf8{2rKg;32;M1& diff --git a/st.1 b/st.1 index 39120b4..b82beb3 100644 --- a/st.1 +++ b/st.1 @@ -6,6 +6,8 @@ st \- simple terminal .RB [ \-aiv ] .RB [ \-c .IR class ] +.RB [ \-d +.IR path ] .RB [ \-f .IR font ] .RB [ \-g @@ -30,6 +32,8 @@ st \- simple terminal .RB [ \-aiv ] .RB [ \-c .IR class ] +.RB [ \-d +.IR path ] .RB [ \-f .IR font ] .RB [ \-g @@ -58,6 +62,10 @@ disable alternate screens in terminal .BI \-c " class" defines the window class (default $TERM). .TP +.BI \-d " path" +changes the working directory to +.IR path . +.TP .BI \-f " font" defines the .I font diff --git a/st.o b/st.o deleted file mode 100644 index ea1bb461a4a649abe7848e0cab7dc9f9a28a18e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78888 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 YHrFBV{nr}He2Kptx&FI|v>yEhKer41PXGV_ diff --git a/x.c b/x.c index ce91654..dc1b11c 100644 --- a/x.c +++ b/x.c @@ -255,6 +255,7 @@ static char *opt_io = NULL; static char *opt_line = NULL; static char *opt_name = NULL; static char *opt_title = NULL; +static char *opt_dir = NULL; static uint buttons; /* bit field of pressed buttons */ @@ -2159,12 +2160,12 @@ run(void) void usage(void) { - die("usage: %s [-aiv] [-c class] [-f font] [-g geometry]" - " [-n name] [-o file]\n" + die("usage: %s [-aiv] [-c class] [-d path] [-f font]" + " [-g geometry] [-n name] [-o file]\n" " [-T title] [-t title] [-w windowid]" " [[-e] command [args ...]]\n" - " %s [-aiv] [-c class] [-f font] [-g geometry]" - " [-n name] [-o file]\n" + " %s [-aiv] [-c class] [-d path] [-f font]" + " [-g geometry] [-n name] [-o file]\n" " [-T title] [-t title] [-w windowid] -l line" " [stty_args ...]\n", argv0, argv0); } @@ -2216,6 +2217,9 @@ main(int argc, char *argv[]) case 'v': die("%s " VERSION "\n", argv0); break; + case 'd': + opt_dir = EARGF(usage()); + break; default: usage(); } ARGEND; @@ -2235,6 +2239,7 @@ run: xinit(cols, rows); xsetenv(); selinit(); + chdir(opt_dir); run(); return 0; diff --git a/x.c.orig b/x.c.orig index 54d40a3..ce91654 100644 --- a/x.c.orig +++ b/x.c.orig @@ -19,6 +19,7 @@ char *argv0; #include "arg.h" #include "st.h" #include "win.h" +#include "hb.h" /* types used in config.h */ typedef struct { @@ -141,8 +142,9 @@ typedef struct { } DC; static inline ushort sixd_to_16bit(int); +static void xresetfontsettings(ushort mode, Font **font, int *frcflags); static int xmakeglyphfontspecs(XftGlyphFontSpec *, const Glyph *, int, int, int); -static void xdrawglyphfontspecs(const XftGlyphFontSpec *, Glyph, int, int, int); +static void xdrawglyphfontspecs(const XftGlyphFontSpec *, Glyph, int, int, int, int); static void xdrawglyph(Glyph, int, int); static void xclear(int, int, int, int); static int xgeommasktogravity(int); @@ -760,7 +762,7 @@ xresize(int col, int row) xclear(0, 0, win.w, win.h); /* resize to new width */ - xw.specbuf = xrealloc(xw.specbuf, col * sizeof(GlyphFontSpec)); + xw.specbuf = xrealloc(xw.specbuf, col * sizeof(GlyphFontSpec) * 4); } ushort @@ -1160,6 +1162,9 @@ xunloadfont(Font *f) void xunloadfonts(void) { + /* Clear Harfbuzz font cache. */ + hbunloadfonts(); + /* Free the loaded fonts in the font cache. */ while (frclen > 0) XftFontClose(xw.dpy, frc[--frclen].font); @@ -1289,7 +1294,7 @@ xinit(int cols, int rows) XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); /* font spec buffer */ - xw.specbuf = xmalloc(cols * sizeof(GlyphFontSpec)); + xw.specbuf = xmalloc(cols * sizeof(GlyphFontSpec) * 4); /* Xft rendering context */ xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); @@ -1345,147 +1350,160 @@ xinit(int cols, int rows) boxdraw_xinit(xw.dpy, xw.cmap, xw.draw, xw.vis); } +void +xresetfontsettings(ushort mode, Font **font, int *frcflags) +{ + *font = &dc.font; + if ((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) { + *font = &dc.ibfont; + *frcflags = FRC_ITALICBOLD; + } else if (mode & ATTR_ITALIC) { + *font = &dc.ifont; + *frcflags = FRC_ITALIC; + } else if (mode & ATTR_BOLD) { + *font = &dc.bfont; + *frcflags = FRC_BOLD; + } +} + int xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y) { float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp; - ushort mode, prevmode = USHRT_MAX; + ushort mode = glyphs[0].mode & ~ATTR_WRAP; Font *font = &dc.font; int frcflags = FRC_NORMAL; - float runewidth = win.cw; + float runewidth = win.cw * ((glyphs[0].mode & ATTR_WIDE) ? 2.0f : 1.0f); Rune rune; FT_UInt glyphidx; FcResult fcres; FcPattern *fcpattern, *fontpattern; FcFontSet *fcsets[] = { NULL }; FcCharSet *fccharset; - int i, f, numspecs = 0; + int f, code_idx, numspecs = 0; + float cluster_xp = xp, cluster_yp = yp; + HbTransformData shaped = { 0 }; - for (i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) { - /* Fetch rune and mode for current glyph. */ - rune = glyphs[i].u; - mode = glyphs[i].mode; + /* Initial values. */ + xresetfontsettings(mode, &font, &frcflags); - /* Skip dummy wide-character spacing. */ - if (mode == ATTR_WDUMMY) + /* Shape the segment. */ + hbtransform(&shaped, font->match, glyphs, 0, len); + xp = winx; yp = winy + font->ascent; + cluster_xp = xp; cluster_yp = yp; + + for (code_idx = 0; code_idx < shaped.count; code_idx++) { + int idx = shaped.glyphs[code_idx].cluster; + + if (glyphs[idx].mode & ATTR_WDUMMY) continue; - /* Determine font for glyph if different from previous glyph. */ - if (prevmode != mode) { - prevmode = mode; - font = &dc.font; - frcflags = FRC_NORMAL; - runewidth = win.cw * ((mode & ATTR_WIDE) ? 2.0f : 1.0f); - if ((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) { - font = &dc.ibfont; - frcflags = FRC_ITALICBOLD; - } else if (mode & ATTR_ITALIC) { - font = &dc.ifont; - frcflags = FRC_ITALIC; - } else if (mode & ATTR_BOLD) { - font = &dc.bfont; - frcflags = FRC_BOLD; - } - yp = winy + font->ascent; + /* Advance the drawing cursor if we've moved to a new cluster */ + if (code_idx > 0 && idx != shaped.glyphs[code_idx - 1].cluster) { + xp += runewidth * (idx - shaped.glyphs[code_idx - 1].cluster); + cluster_xp = xp; + cluster_yp = yp; } - if (mode & ATTR_BOXDRAW) { + if (glyphs[idx].mode & ATTR_BOXDRAW) { /* minor shoehorning: boxdraw uses only this ushort */ - glyphidx = boxdrawindex(&glyphs[i]); - } else { - /* Lookup character index with default font. */ - glyphidx = XftCharIndex(xw.dpy, font->match, rune); - } - if (glyphidx) { specs[numspecs].font = font->match; + specs[numspecs].glyph = boxdrawindex(&glyphs[idx]); + specs[numspecs].x = xp; + specs[numspecs].y = yp; + numspecs++; + } else if (shaped.glyphs[code_idx].codepoint != 0) { + /* If symbol is found, put it into the specs. */ + specs[numspecs].font = font->match; + specs[numspecs].glyph = shaped.glyphs[code_idx].codepoint; + specs[numspecs].x = cluster_xp + (short)(shaped.positions[code_idx].x_offset / 64.); + specs[numspecs].y = cluster_yp - (short)(shaped.positions[code_idx].y_offset / 64.); + cluster_xp += shaped.positions[code_idx].x_advance / 64.; + cluster_yp += shaped.positions[code_idx].y_advance / 64.; + numspecs++; + } else { + /* If it's not found, try to fetch it through the font cache. */ + rune = glyphs[idx].u; + for (f = 0; f < frclen; f++) { + glyphidx = XftCharIndex(xw.dpy, frc[f].font, rune); + /* Everything correct. */ + if (glyphidx && frc[f].flags == frcflags) + break; + /* We got a default font for a not found glyph. */ + if (!glyphidx && frc[f].flags == frcflags + && frc[f].unicodep == rune) { + break; + } + } + + /* Nothing was found. Use fontconfig to find matching font. */ + if (f >= frclen) { + if (!font->set) + font->set = FcFontSort(0, font->pattern, + 1, 0, &fcres); + fcsets[0] = font->set; + + /* + * Nothing was found in the cache. Now use + * some dozen of Fontconfig calls to get the + * font for one single character. + * + * Xft and fontconfig are design failures. + */ + fcpattern = FcPatternDuplicate(font->pattern); + fccharset = FcCharSetCreate(); + + FcCharSetAddChar(fccharset, rune); + FcPatternAddCharSet(fcpattern, FC_CHARSET, + fccharset); + FcPatternAddBool(fcpattern, FC_SCALABLE, 1); + + FcConfigSubstitute(0, fcpattern, + FcMatchPattern); + FcDefaultSubstitute(fcpattern); + + fontpattern = FcFontSetMatch(0, fcsets, 1, + fcpattern, &fcres); + + /* Allocate memory for the new cache entry. */ + if (frclen >= frccap) { + frccap += 16; + frc = xrealloc(frc, frccap * sizeof(Fontcache)); + } + + frc[frclen].font = XftFontOpenPattern(xw.dpy, + fontpattern); + if (!frc[frclen].font) + die("XftFontOpenPattern failed seeking fallback font: %s\n", + strerror(errno)); + frc[frclen].flags = frcflags; + frc[frclen].unicodep = rune; + + glyphidx = XftCharIndex(xw.dpy, frc[frclen].font, rune); + + f = frclen; + frclen++; + + FcPatternDestroy(fcpattern); + FcCharSetDestroy(fccharset); + } + + specs[numspecs].font = frc[f].font; specs[numspecs].glyph = glyphidx; specs[numspecs].x = (short)xp; specs[numspecs].y = (short)yp; - xp += runewidth; numspecs++; - continue; } - - /* Fallback on font cache, search the font cache for match. */ - for (f = 0; f < frclen; f++) { - glyphidx = XftCharIndex(xw.dpy, frc[f].font, rune); - /* Everything correct. */ - if (glyphidx && frc[f].flags == frcflags) - break; - /* We got a default font for a not found glyph. */ - if (!glyphidx && frc[f].flags == frcflags - && frc[f].unicodep == rune) { - break; - } - } - - /* Nothing was found. Use fontconfig to find matching font. */ - if (f >= frclen) { - if (!font->set) - font->set = FcFontSort(0, font->pattern, - 1, 0, &fcres); - fcsets[0] = font->set; - - /* - * Nothing was found in the cache. Now use - * some dozen of Fontconfig calls to get the - * font for one single character. - * - * Xft and fontconfig are design failures. - */ - fcpattern = FcPatternDuplicate(font->pattern); - fccharset = FcCharSetCreate(); - - FcCharSetAddChar(fccharset, rune); - FcPatternAddCharSet(fcpattern, FC_CHARSET, - fccharset); - FcPatternAddBool(fcpattern, FC_SCALABLE, 1); - - FcConfigSubstitute(0, fcpattern, - FcMatchPattern); - FcDefaultSubstitute(fcpattern); - - fontpattern = FcFontSetMatch(0, fcsets, 1, - fcpattern, &fcres); - - /* Allocate memory for the new cache entry. */ - if (frclen >= frccap) { - frccap += 16; - frc = xrealloc(frc, frccap * sizeof(Fontcache)); - } - - frc[frclen].font = XftFontOpenPattern(xw.dpy, - fontpattern); - if (!frc[frclen].font) - die("XftFontOpenPattern failed seeking fallback font: %s\n", - strerror(errno)); - frc[frclen].flags = frcflags; - frc[frclen].unicodep = rune; - - glyphidx = XftCharIndex(xw.dpy, frc[frclen].font, rune); - - f = frclen; - frclen++; - - FcPatternDestroy(fcpattern); - FcCharSetDestroy(fccharset); - } - - specs[numspecs].font = frc[f].font; - specs[numspecs].glyph = glyphidx; - specs[numspecs].x = (short)xp; - specs[numspecs].y = (short)yp; - xp += runewidth; - numspecs++; } + /* Cleanup and get ready for next segment. */ + hbcleanup(&shaped); return numspecs; } void -xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) +xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y, int charlen) { - int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1); int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, width = charlen * win.cw; Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; @@ -1625,21 +1643,24 @@ void xdrawglyph(Glyph g, int x, int y) { int numspecs; - XftGlyphFontSpec spec; + XftGlyphFontSpec *specs = xw.specbuf; - numspecs = xmakeglyphfontspecs(&spec, &g, 1, x, y); - xdrawglyphfontspecs(&spec, g, numspecs, x, y); + numspecs = xmakeglyphfontspecs(specs, &g, 1, x, y); + xdrawglyphfontspecs(specs, g, numspecs, x, y, (g.mode & ATTR_WIDE) ? 2 : 1); } void -xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) +xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og, Line line, int len) { Color drawcol; /* remove the old cursor */ if (selected(ox, oy)) og.mode ^= ATTR_REVERSE; - xdrawglyph(og, ox, oy); + + /* Redraw the line where cursor was previously. + * It will restore the ligatures broken by the cursor. */ + xdrawline(line, 0, oy, len); if (IS_SET(MODE_HIDE)) return; @@ -1773,18 +1794,16 @@ xdrawline(Line line, int x1, int y1, int x2) Glyph base, new; XftGlyphFontSpec *specs = xw.specbuf; - numspecs = xmakeglyphfontspecs(specs, &line[x1], x2 - x1, x1, y1); i = ox = 0; - for (x = x1; x < x2 && i < numspecs; x++) { + for (x = x1; x < x2; x++) { new = line[x]; if (new.mode == ATTR_WDUMMY) continue; if (selected(x, y1)) new.mode ^= ATTR_REVERSE; - if (i > 0 && ATTRCMP(base, new)) { - xdrawglyphfontspecs(specs, base, i, ox, y1); - specs += i; - numspecs -= i; + if ((i > 0) && ATTRCMP(base, new)) { + numspecs = xmakeglyphfontspecs(specs, &line[ox], x - ox, ox, y1); + xdrawglyphfontspecs(specs, base, numspecs, ox, y1, x - ox); i = 0; } if (i == 0) { @@ -1793,8 +1812,10 @@ xdrawline(Line line, int x1, int y1, int x2) } i++; } - if (i > 0) - xdrawglyphfontspecs(specs, base, i, ox, y1); + if (i > 0) { + numspecs = xmakeglyphfontspecs(specs, &line[ox], x2 - ox, ox, y1); + xdrawglyphfontspecs(specs, base, numspecs, ox, y1, x2 - ox); + } } void diff --git a/x.o b/x.o deleted file mode 100644 index e65f60687b55b58ad17c853d78d6019f0f92a4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73912 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 c-onFeDBs$DM