commit b1dfcc18f5bcec6641be07d23b6cddf837916ea3
Author: Rizqi Nur Assyaufi <[email protected]>
Date:   Mon Jul 18 01:25:46 2022 +0800

    [st][patch][font2] Port to 0.8.5

diff --git a/st.suckless.org/patches/font2/index.md 
b/st.suckless.org/patches/font2/index.md
index 95c88dd3..46f63675 100644
--- a/st.suckless.org/patches/font2/index.md
+++ b/st.suckless.org/patches/font2/index.md
@@ -28,6 +28,7 @@ Download
 --------
 * [st-font2-20190326-f64c2f8.diff](st-font2-20190326-f64c2f8.diff)
 * [st-font2-20190416-ba72400.diff](st-font2-20190416-ba72400.diff)
+* [st-font2-0.8.5.diff](st-font2-0.8.5.diff)
 
 Changelog
 ---------
@@ -38,3 +39,4 @@ Changelog
 Author
 -------
 * Kirill Bugaev <[email protected]>
+* Rizqi Nur Assyaufi <[email protected]> (0.8.5 port)
diff --git a/st.suckless.org/patches/font2/st-font2-0.8.5.diff 
b/st.suckless.org/patches/font2/st-font2-0.8.5.diff
new file mode 100644
index 00000000..9b22b8ab
--- /dev/null
+++ b/st.suckless.org/patches/font2/st-font2-0.8.5.diff
@@ -0,0 +1,163 @@
+From 1635e04d3643dd4caa0c7c2043b585c6d7e4705f Mon Sep 17 00:00:00 2001
+From: Rizqi Nur Assyaufi <[email protected]>
+Date: Mon, 18 Jul 2022 01:15:45 +0800
+Subject: [PATCH] [st][patch][font2] Add patch for st-0.8.5
+
+---
+ config.def.h |   6 +++
+ x.c          | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 107 insertions(+)
+
+diff --git a/config.def.h b/config.def.h
+index 91ab8ca..717b2f0 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -6,6 +6,12 @@
+  * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
+  */
+ static char *font = "Liberation 
Mono:pixelsize=12:antialias=true:autohint=true";
++/* Spare fonts */
++static char *font2[] = {
++/*    "Inconsolata for Powerline:pixelsize=12:antialias=true:autohint=true", 
*/
++/*    "Hack Nerd Font Mono:pixelsize=11:antialias=true:autohint=true", */
++};
++
+ static int borderpx = 2;
+
+ /*
+diff --git a/x.c b/x.c
+index 8a16faa..220fc4f 100644
+--- a/x.c
++++ b/x.c
+@@ -157,6 +157,8 @@ static void xhints(void);
+ static int xloadcolor(int, const char *, Color *);
+ static int xloadfont(Font *, FcPattern *);
+ static void xloadfonts(const char *, double);
++static int xloadsparefont(FcPattern *, int);
++static void xloadsparefonts(void);
+ static void xunloadfont(Font *);
+ static void xunloadfonts(void);
+ static void xsetenv(void);
+@@ -306,6 +308,7 @@ zoomabs(const Arg *arg)
+ {
+       xunloadfonts();
+       xloadfonts(usedfont, arg->f);
++      xloadsparefonts();
+       cresize(0, 0);
+       redraw();
+       xhints();
+@@ -1034,6 +1037,101 @@ xloadfonts(const char *fontstr, double fontsize)
+       FcPatternDestroy(pattern);
+ }
+
++int
++xloadsparefont(FcPattern *pattern, int flags)
++{
++      FcPattern *match;
++      FcResult result;
++
++      match = FcFontMatch(NULL, pattern, &result);
++      if (!match) {
++              return 1;
++      }
++
++      if (!(frc[frclen].font = XftFontOpenPattern(xw.dpy, match))) {
++              FcPatternDestroy(match);
++              return 1;
++      }
++
++      frc[frclen].flags = flags;
++      /* Believe U+0000 glyph will present in each default font */
++      frc[frclen].unicodep = 0;
++      frclen++;
++
++      return 0;
++}
++
++void
++xloadsparefonts(void)
++{
++      FcPattern *pattern;
++      double sizeshift, fontval;
++      int fc;
++      char **fp;
++
++      if (frclen != 0)
++              die("can't embed spare fonts. cache isn't empty");
++
++      /* Calculate count of spare fonts */
++      fc = sizeof(font2) / sizeof(*font2);
++      if (fc == 0)
++              return;
++
++      /* Allocate memory for cache entries. */
++      if (frccap < 4 * fc) {
++              frccap += 4 * fc - frccap;
++              frc = xrealloc(frc, frccap * sizeof(Fontcache));
++      }
++
++      for (fp = font2; fp - font2 < fc; ++fp) {
++
++              if (**fp == '-')
++                      pattern = XftXlfdParse(*fp, False, False);
++              else
++                      pattern = FcNameParse((FcChar8 *)*fp);
++
++              if (!pattern)
++                      die("can't open spare font %s
", *fp);
++
++              if (defaultfontsize > 0) {
++                      sizeshift = usedfontsize - defaultfontsize;
++                      if (sizeshift != 0 &&
++                                      FcPatternGetDouble(pattern, 
FC_PIXEL_SIZE, 0, &fontval) ==
++                                      FcResultMatch) {
++                              fontval += sizeshift;
++                              FcPatternDel(pattern, FC_PIXEL_SIZE);
++                              FcPatternDel(pattern, FC_SIZE);
++                              FcPatternAddDouble(pattern, FC_PIXEL_SIZE, 
fontval);
++                      }
++              }
++
++              FcPatternAddBool(pattern, FC_SCALABLE, 1);
++
++              FcConfigSubstitute(NULL, pattern, FcMatchPattern);
++              XftDefaultSubstitute(xw.dpy, xw.scr, pattern);
++
++              if (xloadsparefont(pattern, FRC_NORMAL))
++                      die("can't open spare font %s
", *fp);
++
++              FcPatternDel(pattern, FC_SLANT);
++              FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
++              if (xloadsparefont(pattern, FRC_ITALIC))
++                      die("can't open spare font %s
", *fp);
++
++              FcPatternDel(pattern, FC_WEIGHT);
++              FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
++              if (xloadsparefont(pattern, FRC_ITALICBOLD))
++                      die("can't open spare font %s
", *fp);
++
++              FcPatternDel(pattern, FC_SLANT);
++              FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
++              if (xloadsparefont(pattern, FRC_BOLD))
++                      die("can't open spare font %s
", *fp);
++
++              FcPatternDestroy(pattern);
++      }
++}
++
+ void
+ xunloadfont(Font *f)
+ {
+@@ -1131,6 +1229,9 @@ xinit(int cols, int rows)
+       usedfont = (opt_font == NULL)? font : opt_font;
+       xloadfonts(usedfont, 0);
+
++      /* spare fonts */
++      xloadsparefonts();
++
+       /* colors */
+       xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
+       xloadcols();
+--
+2.37.1
+


Reply via email to