Add font2-patch
This commit is contained in:
		
							parent
							
								
									9989a027c5
								
							
						
					
					
						commit
						9ecfe99b69
					
				@ -6,6 +6,12 @@
 | 
				
			|||||||
 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
 | 
					 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
 | 
					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;
 | 
					static int borderpx = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										161
									
								
								patches/st-font2-0.8.5.diff
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								patches/st-font2-0.8.5.diff
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,161 @@
 | 
				
			|||||||
 | 
					From 1635e04d3643dd4caa0c7c2043b585c6d7e4705f Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Rizqi Nur Assyaufi <bandithijo@gmail.com>
 | 
				
			||||||
 | 
					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\n", *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\n", *fp);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+		FcPatternDel(pattern, FC_SLANT);
 | 
				
			||||||
 | 
					+		FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
 | 
				
			||||||
 | 
					+		if (xloadsparefont(pattern, FRC_ITALIC))
 | 
				
			||||||
 | 
					+			die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+		FcPatternDel(pattern, FC_WEIGHT);
 | 
				
			||||||
 | 
					+		FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
 | 
				
			||||||
 | 
					+		if (xloadsparefont(pattern, FRC_ITALICBOLD))
 | 
				
			||||||
 | 
					+			die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+		FcPatternDel(pattern, FC_SLANT);
 | 
				
			||||||
 | 
					+		FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
 | 
				
			||||||
 | 
					+		if (xloadsparefont(pattern, FRC_BOLD))
 | 
				
			||||||
 | 
					+			die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+		FcPatternDestroy(pattern);
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					 xunloadfont(Font *f)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					@@ -1174,6 +1174,9 @@ xinit(int cols, int rows)
 | 
				
			||||||
 | 
					 	usedfont = (opt_font == NULL)? font : opt_font;
 | 
				
			||||||
 | 
					 	xloadfonts(usedfont, 0);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	/* spare fonts */
 | 
				
			||||||
 | 
					+	xloadsparefonts();
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	/* colors */
 | 
				
			||||||
 | 
					 	xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
 | 
				
			||||||
 | 
					 	xloadcols();
 | 
				
			||||||
 | 
					2.37.1
 | 
				
			||||||
							
								
								
									
										101
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								x.c
									
									
									
									
									
								
							@ -160,6 +160,8 @@ static void xhints(void);
 | 
				
			|||||||
static int xloadcolor(int, const char *, Color *);
 | 
					static int xloadcolor(int, const char *, Color *);
 | 
				
			||||||
static int xloadfont(Font *, FcPattern *);
 | 
					static int xloadfont(Font *, FcPattern *);
 | 
				
			||||||
static void xloadfonts(const char *, double);
 | 
					static void xloadfonts(const char *, double);
 | 
				
			||||||
 | 
					static int xloadsparefont(FcPattern *, int);
 | 
				
			||||||
 | 
					static void xloadsparefonts(void);
 | 
				
			||||||
static void xunloadfont(Font *);
 | 
					static void xunloadfont(Font *);
 | 
				
			||||||
static void xunloadfonts(void);
 | 
					static void xunloadfonts(void);
 | 
				
			||||||
static void xsetenv(void);
 | 
					static void xsetenv(void);
 | 
				
			||||||
@ -310,6 +312,7 @@ zoomabs(const Arg *arg)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	xunloadfonts();
 | 
						xunloadfonts();
 | 
				
			||||||
	xloadfonts(usedfont, arg->f);
 | 
						xloadfonts(usedfont, arg->f);
 | 
				
			||||||
 | 
						xloadsparefonts();
 | 
				
			||||||
	cresize(0, 0);
 | 
						cresize(0, 0);
 | 
				
			||||||
	redraw();
 | 
						redraw();
 | 
				
			||||||
	xhints();
 | 
						xhints();
 | 
				
			||||||
@ -1062,6 +1065,101 @@ xloadfonts(const char *fontstr, double fontsize)
 | 
				
			|||||||
	FcPatternDestroy(pattern);
 | 
						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\n", *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\n", *fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FcPatternDel(pattern, FC_SLANT);
 | 
				
			||||||
 | 
							FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC);
 | 
				
			||||||
 | 
							if (xloadsparefont(pattern, FRC_ITALIC))
 | 
				
			||||||
 | 
								die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FcPatternDel(pattern, FC_WEIGHT);
 | 
				
			||||||
 | 
							FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
 | 
				
			||||||
 | 
							if (xloadsparefont(pattern, FRC_ITALICBOLD))
 | 
				
			||||||
 | 
								die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FcPatternDel(pattern, FC_SLANT);
 | 
				
			||||||
 | 
							FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN);
 | 
				
			||||||
 | 
							if (xloadsparefont(pattern, FRC_BOLD))
 | 
				
			||||||
 | 
								die("can't open spare font %s\n", *fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FcPatternDestroy(pattern);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
xunloadfont(Font *f)
 | 
					xunloadfont(Font *f)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -1174,6 +1272,9 @@ xinit(int cols, int rows)
 | 
				
			|||||||
	usedfont = (opt_font == NULL)? font : opt_font;
 | 
						usedfont = (opt_font == NULL)? font : opt_font;
 | 
				
			||||||
	xloadfonts(usedfont, 0);
 | 
						xloadfonts(usedfont, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* spare fonts */
 | 
				
			||||||
 | 
						xloadsparefonts();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* colors */
 | 
						/* colors */
 | 
				
			||||||
	xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
 | 
						xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None);
 | 
				
			||||||
	xloadcols();
 | 
						xloadcols();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user