From 62b0042a8c5bc99100ca53571607e87e2a2b727b Mon Sep 17 00:00:00 2001 From: vx-clutch Date: Mon, 9 Feb 2026 19:46:15 -0500 Subject: [PATCH] ligatures --- Makefile | 5 +- config.mk | 9 +- hb.c | 125 ++++ hb.h | 14 + hb.o | Bin 0 -> 4160 bytes .../st-ligatures-boxdraw-20251007-0.9.3.diff | 662 ++++++++++++++++++ st | Bin 103000 -> 103864 bytes st.c | 3 +- st.c.orig | 3 + st.h | 3 +- st.o | Bin 78856 -> 78888 bytes win.h | 2 +- x.c | 271 +++---- x.c.orig | 21 +- x.o | Bin 73560 -> 73912 bytes 15 files changed, 980 insertions(+), 138 deletions(-) create mode 100644 hb.c create mode 100644 hb.h create mode 100644 hb.o create mode 100644 patches/st-ligatures-boxdraw-20251007-0.9.3.diff diff --git a/Makefile b/Makefile index a64b4c2..05124bf 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ include config.mk -SRC = st.c x.c boxdraw.c +SRC = st.c x.c boxdraw.c hb.c OBJ = $(SRC:.c=.o) all: st @@ -16,8 +16,9 @@ config.h: $(CC) $(STCFLAGS) -c $< st.o: config.h st.h win.h -x.o: arg.h config.h st.h win.h +x.o: arg.h config.h st.h win.h hb.h boxdraw.o: config.h st.h boxdraw_data.h +hb.o: st.h $(OBJ): config.h config.mk diff --git a/config.mk b/config.mk index 2fc854e..ec69d1a 100644 --- a/config.mk +++ b/config.mk @@ -15,10 +15,12 @@ PKG_CONFIG = pkg-config # includes and libs INCS = -I$(X11INC) \ `$(PKG_CONFIG) --cflags fontconfig` \ - `$(PKG_CONFIG) --cflags freetype2` + `$(PKG_CONFIG) --cflags freetype2` \ + `$(PKG_CONFIG) --cflags harfbuzz` LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ `$(PKG_CONFIG) --libs fontconfig` \ - `$(PKG_CONFIG) --libs freetype2` + `$(PKG_CONFIG) --libs freetype2` \ + `$(PKG_CONFIG) --libs harfbuzz` # flags STCPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 @@ -29,7 +31,8 @@ STLDFLAGS = $(LIBS) $(LDFLAGS) #CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 -D_BSD_SOURCE #LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \ # `$(PKG_CONFIG) --libs fontconfig` \ -# `$(PKG_CONFIG) --libs freetype2` +# `$(PKG_CONFIG) --libs freetype2` \ +# `$(PKG_CONFIG) --libs harfbuzz` #MANPREFIX = ${PREFIX}/man # compiler and linker diff --git a/hb.c b/hb.c new file mode 100644 index 0000000..99412c8 --- /dev/null +++ b/hb.c @@ -0,0 +1,125 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "st.h" +#include "hb.h" + +#define FEATURE(c1,c2,c3,c4) { .tag = HB_TAG(c1,c2,c3,c4), .value = 1, .start = HB_FEATURE_GLOBAL_START, .end = HB_FEATURE_GLOBAL_END } +#define BUFFER_STEP 256 + +hb_font_t *hbfindfont(XftFont *match); + +typedef struct { + XftFont *match; + hb_font_t *font; +} HbFontMatch; + +typedef struct { + size_t capacity; + HbFontMatch *fonts; +} HbFontCache; + +static HbFontCache hbfontcache = { 0, NULL }; + +typedef struct { + size_t capacity; + Rune *runes; +} RuneBuffer; + +static RuneBuffer hbrunebuffer = { 0, NULL }; + +/* + * Poplulate the array with a list of font features, wrapped in FEATURE macro, + * e. g. + * FEATURE('c', 'a', 'l', 't'), FEATURE('d', 'l', 'i', 'g') + */ +hb_feature_t features[] = { }; + +void +hbunloadfonts() +{ + for (int i = 0; i < hbfontcache.capacity; i++) { + hb_font_destroy(hbfontcache.fonts[i].font); + XftUnlockFace(hbfontcache.fonts[i].match); + } + + if (hbfontcache.fonts != NULL) { + free(hbfontcache.fonts); + hbfontcache.fonts = NULL; + } + hbfontcache.capacity = 0; +} + +hb_font_t * +hbfindfont(XftFont *match) +{ + for (int i = 0; i < hbfontcache.capacity; i++) { + if (hbfontcache.fonts[i].match == match) + return hbfontcache.fonts[i].font; + } + + /* Font not found in cache, caching it now. */ + hbfontcache.fonts = realloc(hbfontcache.fonts, sizeof(HbFontMatch) * (hbfontcache.capacity + 1)); + FT_Face face = XftLockFace(match); + hb_font_t *font = hb_ft_font_create(face, NULL); + if (font == NULL) + die("Failed to load Harfbuzz font."); + + hbfontcache.fonts[hbfontcache.capacity].match = match; + hbfontcache.fonts[hbfontcache.capacity].font = font; + hbfontcache.capacity += 1; + + return font; +} + +void hbtransform(HbTransformData *data, XftFont *xfont, const Glyph *glyphs, int start, int length) { + ushort mode = USHRT_MAX; + unsigned int glyph_count; + int rune_idx, glyph_idx, end = start + length; + + hb_font_t *font = hbfindfont(xfont); + if (font == NULL) + return; + + hb_buffer_t *buffer = hb_buffer_create(); + hb_buffer_set_direction(buffer, HB_DIRECTION_LTR); + hb_buffer_set_cluster_level(buffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS); + + /* Resize the buffer if required length is larger. */ + if (hbrunebuffer.capacity < length) { + hbrunebuffer.capacity = (length / BUFFER_STEP + 1) * BUFFER_STEP; + hbrunebuffer.runes = realloc(hbrunebuffer.runes, hbrunebuffer.capacity * sizeof(Rune)); + } + + /* Fill buffer with codepoints. */ + for (rune_idx = 0, glyph_idx = start; glyph_idx < end; glyph_idx++, rune_idx++) { + hbrunebuffer.runes[rune_idx] = glyphs[glyph_idx].u; + mode = glyphs[glyph_idx].mode; + if (mode & ATTR_WDUMMY) + hbrunebuffer.runes[rune_idx] = 0x0020; + } + hb_buffer_add_codepoints(buffer, hbrunebuffer.runes, length, 0, length); + + /* Shape the segment. */ + hb_shape(font, buffer, features, sizeof(features)/sizeof(hb_feature_t)); + + /* Get new glyph info. */ + hb_glyph_info_t *info = hb_buffer_get_glyph_infos(buffer, &glyph_count); + hb_glyph_position_t *pos = hb_buffer_get_glyph_positions(buffer, &glyph_count); + + /* Fill the output. */ + data->buffer = buffer; + data->glyphs = info; + data->positions = pos; + data->count = glyph_count; +} + +void hbcleanup(HbTransformData *data) { + hb_buffer_destroy(data->buffer); + memset(data, 0, sizeof(HbTransformData)); +} diff --git a/hb.h b/hb.h new file mode 100644 index 0000000..3b0ef44 --- /dev/null +++ b/hb.h @@ -0,0 +1,14 @@ +#include +#include +#include + +typedef struct { + hb_buffer_t *buffer; + hb_glyph_info_t *glyphs; + hb_glyph_position_t *positions; + unsigned int count; +} HbTransformData; + +void hbunloadfonts(); +void hbtransform(HbTransformData *, XftFont *, const Glyph *, int, int); +void hbcleanup(HbTransformData *); diff --git a/hb.o b/hb.o new file mode 100644 index 0000000000000000000000000000000000000000..760ec98ee2a125f54fffc3ca9fc1ec31ccc5a0eb GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/patches/st-ligatures-boxdraw-20251007-0.9.3.diff b/patches/st-ligatures-boxdraw-20251007-0.9.3.diff new file mode 100644 index 0000000..a82cee1 --- /dev/null +++ b/patches/st-ligatures-boxdraw-20251007-0.9.3.diff @@ -0,0 +1,662 @@ +diff --git a/Makefile b/Makefile +index a64b4c2..05124bf 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,9 +3,9 @@ + .POSIX: + + include config.mk + +-SRC = st.c x.c boxdraw.c ++SRC = st.c x.c boxdraw.c hb.c + OBJ = $(SRC:.c=.o) + + all: st + +@@ -15,10 +15,11 @@ config.h: + .c.o: + $(CC) $(STCFLAGS) -c $< + + st.o: config.h st.h win.h +-x.o: arg.h config.h st.h win.h ++x.o: arg.h config.h st.h win.h hb.h + boxdraw.o: config.h st.h boxdraw_data.h ++hb.o: st.h + + $(OBJ): config.h config.mk + + st: $(OBJ) +diff --git a/config.mk b/config.mk +index 2fc854e..ec69d1a 100644 +--- a/config.mk ++++ b/config.mk +@@ -14,12 +14,14 @@ PKG_CONFIG = pkg-config + + # includes and libs + INCS = -I$(X11INC) \ + `$(PKG_CONFIG) --cflags fontconfig` \ +- `$(PKG_CONFIG) --cflags freetype2` ++ `$(PKG_CONFIG) --cflags freetype2` \ ++ `$(PKG_CONFIG) --cflags harfbuzz` + LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ + `$(PKG_CONFIG) --libs fontconfig` \ +- `$(PKG_CONFIG) --libs freetype2` ++ `$(PKG_CONFIG) --libs freetype2` \ ++ `$(PKG_CONFIG) --libs harfbuzz` + + # flags + STCPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 + STCFLAGS = $(INCS) $(STCPPFLAGS) $(CPPFLAGS) $(CFLAGS) +@@ -28,9 +30,10 @@ STLDFLAGS = $(LIBS) $(LDFLAGS) + # OpenBSD: + #CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 -D_BSD_SOURCE + #LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \ + # `$(PKG_CONFIG) --libs fontconfig` \ +-# `$(PKG_CONFIG) --libs freetype2` ++# `$(PKG_CONFIG) --libs freetype2` \ ++# `$(PKG_CONFIG) --libs harfbuzz` + #MANPREFIX = ${PREFIX}/man + + # compiler and linker + # CC = c99 +diff --git a/hb.c b/hb.c +new file mode 100644 +index 0000000..99412c8 +--- /dev/null ++++ b/hb.c +@@ -0,0 +1,125 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "st.h" ++#include "hb.h" ++ ++#define FEATURE(c1,c2,c3,c4) { .tag = HB_TAG(c1,c2,c3,c4), .value = 1, .start = HB_FEATURE_GLOBAL_START, .end = HB_FEATURE_GLOBAL_END } ++#define BUFFER_STEP 256 ++ ++hb_font_t *hbfindfont(XftFont *match); ++ ++typedef struct { ++ XftFont *match; ++ hb_font_t *font; ++} HbFontMatch; ++ ++typedef struct { ++ size_t capacity; ++ HbFontMatch *fonts; ++} HbFontCache; ++ ++static HbFontCache hbfontcache = { 0, NULL }; ++ ++typedef struct { ++ size_t capacity; ++ Rune *runes; ++} RuneBuffer; ++ ++static RuneBuffer hbrunebuffer = { 0, NULL }; ++ ++/* ++ * Poplulate the array with a list of font features, wrapped in FEATURE macro, ++ * e. g. ++ * FEATURE('c', 'a', 'l', 't'), FEATURE('d', 'l', 'i', 'g') ++ */ ++hb_feature_t features[] = { }; ++ ++void ++hbunloadfonts() ++{ ++ for (int i = 0; i < hbfontcache.capacity; i++) { ++ hb_font_destroy(hbfontcache.fonts[i].font); ++ XftUnlockFace(hbfontcache.fonts[i].match); ++ } ++ ++ if (hbfontcache.fonts != NULL) { ++ free(hbfontcache.fonts); ++ hbfontcache.fonts = NULL; ++ } ++ hbfontcache.capacity = 0; ++} ++ ++hb_font_t * ++hbfindfont(XftFont *match) ++{ ++ for (int i = 0; i < hbfontcache.capacity; i++) { ++ if (hbfontcache.fonts[i].match == match) ++ return hbfontcache.fonts[i].font; ++ } ++ ++ /* Font not found in cache, caching it now. */ ++ hbfontcache.fonts = realloc(hbfontcache.fonts, sizeof(HbFontMatch) * (hbfontcache.capacity + 1)); ++ FT_Face face = XftLockFace(match); ++ hb_font_t *font = hb_ft_font_create(face, NULL); ++ if (font == NULL) ++ die("Failed to load Harfbuzz font."); ++ ++ hbfontcache.fonts[hbfontcache.capacity].match = match; ++ hbfontcache.fonts[hbfontcache.capacity].font = font; ++ hbfontcache.capacity += 1; ++ ++ return font; ++} ++ ++void hbtransform(HbTransformData *data, XftFont *xfont, const Glyph *glyphs, int start, int length) { ++ ushort mode = USHRT_MAX; ++ unsigned int glyph_count; ++ int rune_idx, glyph_idx, end = start + length; ++ ++ hb_font_t *font = hbfindfont(xfont); ++ if (font == NULL) ++ return; ++ ++ hb_buffer_t *buffer = hb_buffer_create(); ++ hb_buffer_set_direction(buffer, HB_DIRECTION_LTR); ++ hb_buffer_set_cluster_level(buffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS); ++ ++ /* Resize the buffer if required length is larger. */ ++ if (hbrunebuffer.capacity < length) { ++ hbrunebuffer.capacity = (length / BUFFER_STEP + 1) * BUFFER_STEP; ++ hbrunebuffer.runes = realloc(hbrunebuffer.runes, hbrunebuffer.capacity * sizeof(Rune)); ++ } ++ ++ /* Fill buffer with codepoints. */ ++ for (rune_idx = 0, glyph_idx = start; glyph_idx < end; glyph_idx++, rune_idx++) { ++ hbrunebuffer.runes[rune_idx] = glyphs[glyph_idx].u; ++ mode = glyphs[glyph_idx].mode; ++ if (mode & ATTR_WDUMMY) ++ hbrunebuffer.runes[rune_idx] = 0x0020; ++ } ++ hb_buffer_add_codepoints(buffer, hbrunebuffer.runes, length, 0, length); ++ ++ /* Shape the segment. */ ++ hb_shape(font, buffer, features, sizeof(features)/sizeof(hb_feature_t)); ++ ++ /* Get new glyph info. */ ++ hb_glyph_info_t *info = hb_buffer_get_glyph_infos(buffer, &glyph_count); ++ hb_glyph_position_t *pos = hb_buffer_get_glyph_positions(buffer, &glyph_count); ++ ++ /* Fill the output. */ ++ data->buffer = buffer; ++ data->glyphs = info; ++ data->positions = pos; ++ data->count = glyph_count; ++} ++ ++void hbcleanup(HbTransformData *data) { ++ hb_buffer_destroy(data->buffer); ++ memset(data, 0, sizeof(HbTransformData)); ++} +diff --git a/hb.h b/hb.h +new file mode 100644 +index 0000000..3b0ef44 +--- /dev/null ++++ b/hb.h +@@ -0,0 +1,14 @@ ++#include ++#include ++#include ++ ++typedef struct { ++ hb_buffer_t *buffer; ++ hb_glyph_info_t *glyphs; ++ hb_glyph_position_t *positions; ++ unsigned int count; ++} HbTransformData; ++ ++void hbunloadfonts(); ++void hbtransform(HbTransformData *, XftFont *, const Glyph *, int, int); ++void hbcleanup(HbTransformData *); +diff --git a/st.c b/st.c +index bdd3cd1..5c2801a 100644 +--- a/st.c ++++ b/st.c +@@ -2687,9 +2687,10 @@ draw(void) + cx--; + + drawregion(0, 0, term.col, term.row); + xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], +- term.ocx, term.ocy, term.line[term.ocy][term.ocx]); ++ term.ocx, term.ocy, term.line[term.ocy][term.ocx], ++ term.line[term.ocy], term.col); + term.ocx = cx; + term.ocy = term.c.y; + xfinishdraw(); + if (ocx != term.ocx || ocy != term.ocy) +diff --git a/st.h b/st.h +index 808f5f7..ae41368 100644 +--- a/st.h ++++ b/st.h +@@ -10,9 +10,10 @@ + #define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) + #define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d)) + #define DEFAULT(a, b) (a) = (a) ? (a) : (b) + #define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) +-#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \ ++#define ATTRCMP(a, b) (((a).mode & (~ATTR_WRAP)) != ((b).mode & (~ATTR_WRAP)) || \ ++ (a).fg != (b).fg || \ + (a).bg != (b).bg) + #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \ + (t1.tv_nsec-t2.tv_nsec)/1E6) + #define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit))) +diff --git a/win.h b/win.h +index 6de960d..94679e4 100644 +--- a/win.h ++++ b/win.h +@@ -24,9 +24,9 @@ enum win_mode { + }; + + void xbell(void); + void xclipcopy(void); +-void xdrawcursor(int, int, Glyph, int, int, Glyph); ++void xdrawcursor(int, int, Glyph, int, int, Glyph, Line, int); + void xdrawline(Line, int, int, int); + void xfinishdraw(void); + void xloadcols(void); + int xsetcolorname(int, const char *); +diff --git a/x.c b/x.c +index 7157e56..1ea6d2e 100644 +--- a/x.c ++++ b/x.c +@@ -18,8 +18,9 @@ + char *argv0; + #include "arg.h" + #include "st.h" + #include "win.h" ++#include "hb.h" + + /* types used in config.h */ + typedef struct { + uint mod; +@@ -140,10 +141,11 @@ typedef struct { + GC gc; + } 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); + static int ximopen(Display *); +@@ -756,9 +758,9 @@ xresize(int col, int row) + XftDrawChange(xw.draw, xw.buf); + 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 + sixd_to_16bit(int x) +@@ -1061,8 +1063,11 @@ 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); + +@@ -1187,9 +1192,9 @@ xinit(int cols, int rows) + XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); + 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); + +@@ -1243,149 +1248,162 @@ 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 = glyphidx; +- specs[numspecs].x = (short)xp; +- specs[numspecs].y = (short)yp; +- xp += runewidth; ++ specs[numspecs].glyph = boxdrawindex(&glyphs[idx]); ++ specs[numspecs].x = xp; ++ specs[numspecs].y = yp; + 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; ++ } 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)); ++ /* 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); + } + +- 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; ++ numspecs++; + } +- +- 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; + XRenderColor colfg, colbg; +@@ -1523,23 +1541,26 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i + 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; + +@@ -1671,30 +1692,30 @@ xdrawline(Line line, int x1, int y1, int x2) + int i, x, ox, numspecs; + 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) { + ox = x; + base = new; + } + 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 + xfinishdraw(void) diff --git a/st b/st index b6b886373032c38178fc3059f91825f19a18ec9a..171857dd3225262ac0552cf261a4a2178f224cd7 100755 GIT binary patch literal 103864 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 z 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 Q|H@5Lf0o04$D#HA05Rvsp#T5? literal 103000 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 DY>K-Y diff --git a/st.c b/st.c index fb7327b..a3db07d 100644 --- a/st.c +++ b/st.c @@ -2692,7 +2692,8 @@ draw(void) drawregion(0, 0, term.col, term.row); xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], - term.ocx, term.ocy, term.line[term.ocy][term.ocx]); + term.ocx, term.ocy, term.line[term.ocy][term.ocx], + term.line[term.ocy], term.col); term.ocx = cx; term.ocy = term.c.y; xfinishdraw(); diff --git a/st.c.orig b/st.c.orig index 6f40e35..fb7327b 100644 --- a/st.c.orig +++ b/st.c.orig @@ -1221,6 +1221,9 @@ tsetchar(Rune u, const Glyph *attr, int x, int y) term.dirty[y] = 1; term.line[y][x] = *attr; term.line[y][x].u = u; + + if (isboxdraw(u)) + term.line[y][x].mode |= ATTR_BOXDRAW; } void diff --git a/st.h b/st.h index 808f5f7..ae41368 100644 --- a/st.h +++ b/st.h @@ -11,7 +11,8 @@ #define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d)) #define DEFAULT(a, b) (a) = (a) ? (a) : (b) #define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) -#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \ +#define ATTRCMP(a, b) (((a).mode & (~ATTR_WRAP)) != ((b).mode & (~ATTR_WRAP)) || \ + (a).fg != (b).fg || \ (a).bg != (b).bg) #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \ (t1.tv_nsec-t2.tv_nsec)/1E6) diff --git a/st.o b/st.o index be5de31f6fe466b8d70b125a1f30969987caf3dd..ea1bb461a4a649abe7848e0cab7dc9f9a28a18e2 100644 GIT binary patch delta 496 zcmeBp!Ls57%LEO^7aKJvxHI-`-sR5B=q<_s1TNjYAj&iOphvgOA(w7e5U<-5M0zBj z^GrVCaqt0)2Q$klk8S~vZVwKKf`D+($%@B*ye7DP_g z@YEH1yZ!%vuozI1<1kRvz=?r@adWPxvl?#*kek8@Qp&(^cJjwe6&(lWI7U7XN4@}W zz6fW&gm^xO3_c4-J_AQS4JSSYCq4-$J^?2_4iTV+J(D>Lv^QH6oZw?TJDIV*ol$CY zXMK7$$KL?HXjWJMtRGFbd3Sp5FvjX;qXlN*8LJFxgKkcc6Z zC)h0vOhAeSi2o=<`0P+|kl137_lqdgOo&-5fiMmr#PA&|>xF#REj t`ZitB2uP_;PXtjK(-(rMi0KbORK|2gW3XT%h*~gxA&3f?{?M3F9RRp$kud-O delta 546 zcmZ{fzb^z)5XX1iO7DMdgBsjtE)rz15mz<})+z`)1xdD9W2fIoA%ChaI^I$k-oAx(1KZEXUyK#K#WaI`1x!} z%G259=0L7bwzh5;`lEGzk%!nH6A qLlT`ZjDU*J&G3d%jyg 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.c.orig b/x.c.orig index 2f2180c..54d40a3 100644 --- a/x.c.orig +++ b/x.c.orig @@ -1341,6 +1341,8 @@ xinit(int cols, int rows) xsel.xtarget = XInternAtom(xw.dpy, "UTF8_STRING", 0); if (xsel.xtarget == None) xsel.xtarget = XA_STRING; + + boxdraw_xinit(xw.dpy, xw.cmap, xw.draw, xw.vis); } int @@ -1387,8 +1389,13 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x yp = winy + font->ascent; } - /* Lookup character index with default font. */ - glyphidx = XftCharIndex(xw.dpy, font->match, rune); + if (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 = glyphidx; @@ -1592,8 +1599,12 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i r.width = width; XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1); - /* Render the glyphs. */ - XftDrawGlyphFontSpec(xw.draw, fg, specs, len); + if (base.mode & ATTR_BOXDRAW) { + drawboxes(winx, winy, width / len, win.ch, fg, bg, specs, len); + } else { + /* Render the glyphs. */ + XftDrawGlyphFontSpec(xw.draw, fg, specs, len); + } /* Render underline and strikethrough. */ if (base.mode & ATTR_UNDERLINE) { @@ -1636,7 +1647,7 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) /* * Select the right color for the right mode. */ - g.mode &= ATTR_BOLD|ATTR_ITALIC|ATTR_UNDERLINE|ATTR_STRUCK|ATTR_WIDE; + g.mode &= ATTR_BOLD|ATTR_ITALIC|ATTR_UNDERLINE|ATTR_STRUCK|ATTR_WIDE|ATTR_BOXDRAW; if (IS_SET(MODE_REVERSE)) { g.mode |= ATTR_REVERSE; diff --git a/x.o b/x.o index 17bf96a1b7ec4e2a4566ce351a8ca9501a8678a3..68a2e168c4cb4c12d9bdbc40c30f1fd42d9b0a17 100644 GIT binary patch literal 73912 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 cyoHC`P`cE8&)Cp@%JWcM(Vreh0byFIohGclUh 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

ZNimuRaaJ7JTZzto9<0C zm!-wgVsGN|`g*>vtFgp}q+rs-Nr*Gp-sZTs*%Pz-ZcFN;18yK#Qd3ohKNapxtgeZc zO`J1t;RO7>^^#S5zoNQfVr^YbZCPFPa?ZbO<lJciKbpF(AiRt`{c%n{M5kbhh$8_9~{nYNP>j{Yq$_0n? z_%xXP%XkBrj1y!()seP;78vC}8K-+3Dz|qtRK=1k9TJ|)*E)Spl@arHse(!VlD^m{ zz4;@-h!c6M&6bs}smyfHx`%X8`P?Ig7eqs)zY2*4OP|K+7rRPvE&3$D1}>aQZuW{1bVd z{$4~3*8bLh*;?Ac^Dos;8cszpJQ!EpKD5R>hxru>S89rUUDps c(_}$yZ~NLU-