Introduction
Introduction Statistics Contact Development Disclaimer Help
st-font2-20190326-f64c2f8.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-font2-20190326-f64c2f8.diff (3760B)
---
1 From f64c2f83a2e3ee349fe11100526110dfdf47067a Mon Sep 17 00:00:00 2001
2 From: Kirill Bugaev <[email protected]>
3 Date: Wed, 27 Mar 2019 01:28:56 +0800
4 Subject: [PATCH] Some glyphs can be not present in font defined by defau…
5 For this glyphs st uses font-config and try to find them in font cache …
6 This patch append font defined in `font2` variable to the beginning of …
7 cache. So it will be used as spare font.
8
9 ---
10 config.def.h | 1 +
11 x.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++
12 2 files changed, 67 insertions(+)
13
14 diff --git a/config.def.h b/config.def.h
15 index 482901e..88eee0f 100644
16 --- a/config.def.h
17 +++ b/config.def.h
18 @@ -6,6 +6,7 @@
19 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user…
20 */
21 static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohi…
22 +static char *font2 = "Roboto Mono for Powerline:pixelsize=12:antialias=…
23 static int borderpx = 2;
24
25 /*
26 diff --git a/x.c b/x.c
27 index 5828a3b..052b10b 100644
28 --- a/x.c
29 +++ b/x.c
30 @@ -149,6 +149,7 @@ static void xhints(void);
31 static int xloadcolor(int, const char *, Color *);
32 static int xloadfont(Font *, FcPattern *);
33 static void xloadfonts(char *, double);
34 +static void xloadsparefont();
35 static void xunloadfont(Font *);
36 static void xunloadfonts(void);
37 static void xsetenv(void);
38 @@ -296,6 +297,7 @@ zoomabs(const Arg *arg)
39 {
40 xunloadfonts();
41 xloadfonts(usedfont, arg->f);
42 + xloadsparefont();
43 cresize(0, 0);
44 redraw();
45 xhints();
46 @@ -977,6 +979,67 @@ xloadfonts(char *fontstr, double fontsize)
47 FcPatternDestroy(pattern);
48 }
49
50 +void
51 +xloadsparefont()
52 +{
53 + FcPattern *fontpattern, *match;
54 + FcResult result;
55 +
56 + /* add font2 to font cache as first 4 entries */
57 + if ( font2[0] == '-' )
58 + fontpattern = XftXlfdParse(font2, False, False);
59 + else
60 + fontpattern = FcNameParse((FcChar8 *)font2);
61 + if ( fontpattern ) {
62 + /* Allocate memory for the new cache entries. */
63 + frccap += 4;
64 + frc = xrealloc(frc, frccap * sizeof(Fontcache));
65 + /* add Normal */
66 + match = FcFontMatch(NULL, fontpattern, &result);
67 + if ( match )
68 + frc[frclen].font = XftFontOpenPattern(xw.dpy, m…
69 + if ( frc[frclen].font ) {
70 + frc[frclen].flags = FRC_NORMAL;
71 + frclen++;
72 + } else
73 + FcPatternDestroy(match);
74 + /* add Italic */
75 + FcPatternDel(fontpattern, FC_SLANT);
76 + FcPatternAddInteger(fontpattern, FC_SLANT, FC_SLANT_ITA…
77 + match = FcFontMatch(NULL, fontpattern, &result);
78 + if ( match )
79 + frc[frclen].font = XftFontOpenPattern(xw.dpy, m…
80 + if ( frc[frclen].font ) {
81 + frc[frclen].flags = FRC_ITALIC;
82 + frclen++;
83 + } else
84 + FcPatternDestroy(match);
85 + /* add Italic Bold */
86 + FcPatternDel(fontpattern, FC_WEIGHT);
87 + FcPatternAddInteger(fontpattern, FC_WEIGHT, FC_WEIGHT_B…
88 + match = FcFontMatch(NULL, fontpattern, &result);
89 + if ( match )
90 + frc[frclen].font = XftFontOpenPattern(xw.dpy, m…
91 + if ( frc[frclen].font ) {
92 + frc[frclen].flags = FRC_ITALICBOLD;
93 + frclen++;
94 + } else
95 + FcPatternDestroy(match);
96 + /* add Bold */
97 + FcPatternDel(fontpattern, FC_SLANT);
98 + FcPatternAddInteger(fontpattern, FC_SLANT, FC_SLANT_ROM…
99 + match = FcFontMatch(NULL, fontpattern, &result);
100 + if ( match )
101 + frc[frclen].font = XftFontOpenPattern(xw.dpy, m…
102 + if ( frc[frclen].font ) {
103 + frc[frclen].flags = FRC_BOLD;
104 + frclen++;
105 + } else
106 + FcPatternDestroy(match);
107 + FcPatternDestroy(fontpattern);
108 + }
109 +}
110 +
111 void
112 xunloadfont(Font *f)
113 {
114 @@ -1057,6 +1120,9 @@ xinit(int cols, int rows)
115 usedfont = (opt_font == NULL)? font : opt_font;
116 xloadfonts(usedfont, 0);
117
118 + /* spare font (font2) */
119 + xloadsparefont();
120 +
121 /* colors */
122 xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
123 xloadcols();
124 --
125 2.21.0
126
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.