π§ ΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠΈΡ ΡΠΎΠ½ΡΠΎΠ²Π°
[Π²Π΅ΡΠ·ΠΈΡΠ° 0.2, 3. ΠΌΠ°Ρ 2021.]
Π‘ΡΡΠ°Ρ ΠΈΡΠ° Π Π°Π΄ΠΈΡπ Π£Π²ΠΎΠ΄
ΠΠΎΠ΄Π΅ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ suckless terminal
ΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΈΠ·Π²Π΅ΡΠ½Π΅ ΡΡΠ»ΠΎΠ²Π΅ Ρ ΠΏΠΎΠ³Π»Π΅Π΄Ρ ΡΠΎΠ½ΡΠ° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅. ΠΡΠΈΠΌ ΠΏΠΎΠ΄ΡΡΠΊΠ΅ Π·Π° ΡΠ΅ΡΡΠ΅
ΠΊΠΎΡΠΈΡΡΠ΅Π½Π΅ Π΄Π΅Π»ΠΎΠ²Π΅ Π£Π½ΠΈΠΊΠΎΠ΄Π°, ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠΈ ΡΠΎΠ½Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΠ΄ΡΠΆΠΈ ΠΈ ΠΏΡΠΈΠΊΠ°Π· ΡΠ»ΠΈΡΠ°Π½
ΠΎΠ²ΠΎΠΌΠ΅:

ΠΠ° ΠΎΠ²ΠΎΡ ΡΠ»ΠΈΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π½ΠΈΠ· Π·Π½Π°ΠΊΠΎΠ²Π° ΠΊΠΎΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ΅ Ρ Π£Π½ΠΈΠΊΠΎΠ΄Ρ. Π Π΅ΡΠΈΠΌΠΎ,
ΡΠΈΠΌΠ±ΠΎΠ» ΠΊΠΎΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΡΠ° ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Ρ ΡΠ΅Π·ΠΈΠΊΡ C, ΠΈΠ»ΠΈ
ΡΠΈΠΌΠ±ΠΎΠ» Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ ΡΠ΅Π·ΠΈΠΊΡ Vimscript.

ΠΠ° ΠΎΠ²ΠΎΡ ΡΠ»ΠΈΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π΅ΠΌΠΎΡΠΈΡΠ΅ Ρ Π±ΠΎΡΠΈ, ΠΊΠ°ΠΎ Π΄Π΅ΠΎ ΡΠ΅ΠΊΡΡΠ° Ρ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ.
π¨ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ½ΡΠ° ΡΠ° Π΅ΠΌΠΎΡΠΈΡΠΈΠΌΠ° Ρ Π±ΠΎΡΠΈ
ΠΡΠΎΡΠ΅Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΡΠΊΠ΅ Π·Π° ΠΎΠ²Π°ΠΊΠ°Π² ΠΏΡΠΈΠΊΠ°Π· ΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΈΠ· Π΄Π²Π° Π³Π»Π°Π²Π½Π° Π΄Π΅Π»Π°. ΠΡΠ²ΠΈ
Π΄Π΅ΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ½ΡΠ° ΡΠ° Π΅ΠΌΠΎΡΠΈΡΠΈΠΌΠ° Ρ Π±ΠΎΡΠΈ, ΡΠ΅ΡΠΈΠΌΠΎ Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΠΌΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈΠΌ
Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠΈ Arch Linux ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° noto-fonts-emoji:
# pacman -S noto-fonts-emoji
ΠΠΎΡΡΠ° ΡΠΎΠ³Π° Π·Π°Π²ΠΈΡΠΈ ΠΈ ΠΎΠ΄ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠΎΠ³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅. ΠΠ΅Π΄Π°Π½ ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²Π° Π·Π° ΠΏΡΠΈΠΊΠ°Π· Π΅ΠΌΠΎΡΠΈΡΠ° Ρ Π±ΠΎΡΠΈ ΡΠ΅ Π·Π°ΠΊΡΠΏΠ° Π·Π°
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Xft, libxft-bgra. Π£ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΠΌΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈΠΌ Π½Π°
Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠΈ Arch Linux, ΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° libxft-bgra (ΠΎΠ²Π°Ρ
ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ Ρ Arch User Repository-ΡΡ β AUR, ΠΏΠ° ΡΠ΅ Π·Π° ΡΠ΅Π³Π° ΠΏΠΎΡΡΠ΅Π±Π°Π½ AUR
helper, ΡΠ΅ΡΠΈΠΌΠΎ pikaur):
$ pikaur -S libxft-bgra
ΠΡΠΈΠΌ ΠΎΠ²ΠΎΠ³Π°, Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ suckless ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ dwm, dmenu, st,
tabbed, ΠΈΡΠ΄., ΠΌΠΎΡΠ° ΡΠ΅, Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π΄ΠΎΠ΄Π°ΡΠΈ ΠΎΠ²Π°Ρ ΡΠΎΠ½Ρ Ρ
ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ Π΄Π΅ΠΎ config.h, Π° Ρ ΡΠ»ΡΡΠ°ΡΡ st-Π° ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Π·Π°ΠΊΡΠΏΠ°
font2, Ρ ΡΠ»ΡΡΠ°ΡΡ Π΄Π° Π²Π΅Ρ Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½Π°. ΠΡΠΎΠ³ΡΠ°ΠΌ dwm ΠΈΠΌΠ° ΡΠ³ΡΠ°ΡΠ΅Π½ΠΎ
ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π΅ ΡΠΎΠ½ΡΠΎΠ²Π° Ρ Π±ΠΎΡΠΈ (ΡΠ΅Ρ ΠΎΠ½ΠΈ Π±Π΅Π· ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ Π·Π°ΠΊΡΠΏΠ΅ libxft-bgra
ΡΠΈΠ½Π΅ Π΄Π° dwm ΠΊΡΠ°Ρ
ΠΈΡΠ°), ΠΏΠ° ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅ Π·Π°ΠΊΡΠΏΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΠΈ ΡΡΠ°Π²ΠΈΡΠΈ ΠΏΠΎΠ΄
ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ Π»ΠΈΠ½ΠΈΡΠ΅:
/*FcBool iscol;
if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) {
XftFontClose(drw->dpy, xfont);
return NULL;
}*/
π¨ ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Nerd Font ΡΠΈΠΌΠ±ΠΎΠ»Π°
ΠΡΡΠ³ΠΈ Π΄Π΅ΠΎ ΠΏΠΎΠ΄ΡΡΠΊΠ΅ Π·Π° ΠΏΠΎΠΌΠ΅Π½ΡΡΠΈ ΠΏΡΠΈΠΊΠ°Π· ΡΠ΅ ΠΊΡΠΏΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠΌ font-patcher ΠΈΠ·
Π³Π»Π°Π²Π½ΠΎΠ³ Nerd Fonts ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌΠ°. Π£ΠΊΠΎΠ»ΠΈΠΊΠΎ Π²Π°ΠΌ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅
Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π³ΠΈΠ³Π°Π±Π°ΡΡΠ° ΡΠ°Π·Π½ΠΈΡ
ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΠ²Π°Π½ΠΈΡ
ΡΠΎΠ½ΡΠΎΠ²Π° Π½Π΅ Π΄Π΅Π»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ°ΠΌΡΠΈΠ²ΠΎ (ΠΊΠ°ΠΎ ΡΡΠΎ Π½Π΅
Π΄Π΅Π»ΡΡΠ΅ Π½ΠΈ ΠΌΠ΅Π½ΠΈ), ΠΏΠΎΡΡΠΎΡΠΈ fork Π³Π»Π°Π²Π½ΠΎΠ³ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌΠ° ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ
ΡΠ°ΠΌΠΎ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½Π΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ΅ Π·Π° ΠΊΡΠΏΡΠ΅ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈΡ
ΡΠΎΠ½ΡΠΎΠ²Π°.
Π Π΅ΡΠΈΠΌΠΎ, ΡΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ ΡΠΈΠΌΠ±ΠΎΠ»Π΅ ΡΠΎΠ½ΡΡ MxPlus_IBM_VGA_8x16.ttf ΡΠ°
ΡΠ°ΡΡΠ° int10h.org, ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅ΠΌΠΎ Π½Π°ΡΠ΅Π΄Π±Ρ:
$ ./font-patcher -l -c --careful MxPlus_IBM_VGA_8x16.ttf
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π° ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°ΡΠ» ΡΠ° ΡΠΈΠΌ ΡΠΎΠ½ΡΠΎΠΌ Π½Π°Π»Π°Π·ΠΈ Ρ Π³Π»Π°Π²Π½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Nerd Fonts ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌΠ°.
ΠΠΏΡΠΈΡΠ° -l ΠΎΠ²Π΄Π΅ ΡΠ»ΡΠΆΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΡΠ° Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ΅Π½ΡΡΠΈΡΠ°ΡΠ΅ Powerline ΡΠΈΠΌΠ±ΠΎΠ»Π°,
ΠΎΠΏΡΠΈΡΠ° -c Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈ, Π° ΠΎΠΏΡΠΈΡΠ° --careful Π΄Π° ΡΠ΅ Π½Π΅
ΠΏΡΠ΅ΠΏΠΈΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈ.
πΎ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΎΠ³ ΡΠΎΠ½ΡΠ°
ΠΠ²ΠΈΠΌ ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ° ΡΠ°ΡΠ» MxPlus IBM VGA 8x16 Nerd Font Complete.ttf, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅
Π΄ΠΎΠ΄Π°ΡΠΈ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Ρ fontpath-Ρ Xorg ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ΅ΡΠΈΠΌΠΎ
/usr/local/share/fonts/mxplus. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π° ΡΠ΅ Ρ ΡΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ
ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ:
# mkfontdir && mkfontscale
ΡΠΈΠΌΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΡ (Π°ΠΆΡΡΠΈΡΠ°ΡΡ) Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ fonts.dir ΠΈ fonts.scale. Π£ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°Ρ
Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π½ΠΈΡΠ΅ Ρ fontpath-Ρ, ΡΡΠ΅Π±Π° Π³Π° Π΄ΠΎΠ΄Π°ΡΠΈ, ΡΠ΅ΡΠΈΠΌΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ ΡΠ΅Π΄Π°:
xset fp+ /usr/local/share/fonts/mxplus
Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ~/.xinitrc.
Π£ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ΅ ΡΠ²Π΅ ΠΏΡΠΎΡΠ»ΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠ΅Π±Π°, Π½Π°ΡΠ΅Π΄Π±Π° fc-match Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²ΡΠ°ΡΠΈ:
$ fc-match "MxPlus_IBM_VGA_8x16 Nerd Font" MxPlus IBM VGA 8x16 Nerd Font Complete.ttf: "MxPlus_IBM_VGA_8x16 Nerd Font" "Book"
Π‘Π°Π΄Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅, ΡΠ΅ΡΠΈΠΌΠΎ, Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ config.h ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° st Π΄ΠΎΠ΄Π°ΡΠΈ:
static char *font = "MxPlus_IBM_VGA_8x16 Nerd Font:size=12";
ΠΈ Π½Π°ΠΊΠΎΠ½ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ΅ ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ Π΅ΠΌΠΎΡΠΈΡΠ΅ Ρ Π±ΠΎΡΠΈ ΠΈ Nerd Font ΡΠΈΠΌΠ±ΠΎΠ»Π΅ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ. Π£ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΌΠΎΡ fork dwm-Π°, ΠΏΡΠΈΡΠΈΡΠΊΠΎΠΌ Π½Π° Win+E ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΌΠ΅Π½ΠΈ Π·Π° ΡΠ½ΠΎΡ Π΅ΠΌΠΎΡΠΈΡΠ°. ΠΠ° Π±ΠΈ ΡΠ΅ Π΅ΠΌΠΎΡΠΈΡΠΈ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΈ Ρ ΡΠΎΠΌ ΠΌΠ΅Π½ΠΈΡΡ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ dmenu ΠΏΠΎΡΡΠ°Π²ΠΈ ΡΠΎΠ½Ρ Π·Π° Π΅ΠΌΠΎΡΠΈΡΠ΅:
static const char *fonts[] = {
"MxPlus_IBM_VGA_8x16 Nerd Font:size=12:style=Book:antialias=false:autohint=false",
"Noto Color Emoji:style=Regular:size=10"
};
π§Ή ΠΠΎΠ½ΡΡ: ΠΈΡΠΊΡΡΡΠΈΠ²Π°ΡΠ΅ Π°Π½ΡΠΈΠ°Π»ΠΈΡΠ°ΡΠΈΠ½Π³Π°
Π’Π΅ΡΠΌΠΈΠ½Π°Π»ΡΠΊΠΈ ΡΠΎΠ½ΡΠΎΠ²ΠΈ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ MxPlus IBM VGA Π±ΠΎΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΡ ΡΠΊΠΎΠ»ΠΈΠΊΠΎ
ΡΠ΅ ΠΈΡΠΊΡΡΡΠΈ Π°Π½ΡΠΈΠ°Π»ΠΈΡΠ°ΡΠΈΠ½Π³. ΠΠ²ΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ
/etc/fonts/conf.d, ΡΠ΅ΡΠΈΠΌΠΎ /etc/fonts/conf.d/25-noaa-vga.conf:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<test qual="any" name="family">
<string>MxPlus_IBM_VGA_8x16 Nerd Font</string>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
https://gitlab.freedesktop.org/xorg/lib/libxft