summaryrefslogtreecommitdiff
path: root/hb.c
diff options
context:
space:
mode:
authorLuke Smith <luke@lukesmith.xyz>2022-01-21 23:00:57 -0500
committerLuke Smith <luke@lukesmith.xyz>2022-01-21 23:00:57 -0500
commit9cabe89a111c1d2e6f25aa6793ca6f955d6e4fef (patch)
tree6de841d84ec944afc444e4e75161298c347e2dc3 /hb.c
parente053bd6036331cc7d14f155614aebc20f5371d3a (diff)
parentfc6581c1b06a5d041d83e1fc227564002903e8a2 (diff)
Merge branch 'fakhriaunur-master'
Diffstat (limited to 'hb.c')
-rw-r--r--hb.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/hb.c b/hb.c
index 467bcac..8000afa 100644
--- a/hb.c
+++ b/hb.c
@@ -2,11 +2,25 @@
#include <stdio.h>
#include <math.h>
#include <X11/Xft/Xft.h>
+#include <X11/cursorfont.h>
#include <hb.h>
#include <hb-ft.h>
#include "st.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 }
+
+/*
+ * Replace 0 with a list of font features, wrapped in FEATURE macro, e.g.
+ * FEATURE('c', 'a', 'l', 't'), FEATURE('d', 'l', 'i', 'g')
+ *
+ * Uncomment either one of the 2 lines below. Uncomment the prior to disable (any) font features. Uncomment the
+ * latter to enable the (selected) font features.
+ */
+
+hb_feature_t features[] = { 0 };
+//hb_feature_t features[] = { FEATURE('s','s','0','1'), FEATURE('s','s','0','2'), FEATURE('s','s','0','3'), FEATURE('s','s','0','5'), FEATURE('s','s','0','6'), FEATURE('s','s','0','7'), FEATURE('s','s','0','8'), FEATURE('z','e','r','o') };
+
void hbtransformsegment(XftFont *xfont, const Glyph *string, hb_codepoint_t *codepoints, int start, int length);
hb_font_t *hbfindfont(XftFont *match);
@@ -59,7 +73,7 @@ void
hbtransform(XftGlyphFontSpec *specs, const Glyph *glyphs, size_t len, int x, int y)
{
int start = 0, length = 1, gstart = 0;
- hb_codepoint_t *codepoints = calloc(len, sizeof(hb_codepoint_t));
+ hb_codepoint_t *codepoints = calloc((unsigned int)len, sizeof(hb_codepoint_t));
for (int idx = 1, specidx = 1; idx < len; idx++) {
if (glyphs[idx].mode & ATTR_WDUMMY) {
@@ -124,7 +138,7 @@ hbtransformsegment(XftFont *xfont, const Glyph *string, hb_codepoint_t *codepoin
}
/* Shape the segment. */
- hb_shape(font, buffer, NULL, 0);
+ hb_shape(font, buffer, features, sizeof(features));
/* Get new glyph info. */
hb_glyph_info_t *info = hb_buffer_get_glyph_infos(buffer, NULL);