volume: add perentages above 100%
icons: add earpiece_volume_0-100%
battery: Update icon to newer version of ionicons
This is an icon font designed specifically for plain text statusbars.
Usually, icon fonts only have an icon for a specific thing, like a battery. Users then see a featureless battery icon next to a textual representation of the battery's state.
otf-statusbar
features different variants of icons, e.g. for good and bad wifi signals, or for empty and charged batteries.
otf-statusbar
utilises ligatures to get the desired rendering.
All icon variants have their own glyph in a Unicode Private Use Area.
To make them easy to use and not require input of 'weird' unicode symbols ligatures are utilised.
Select the font to render the whole ligature phrase. See Glyph overview
Because of using ligatures, the base font file includes many empty characters. To replace the empty characters with those from another font, the script patchicons.pe
can be used.
./patchicons.pe statusbar.sfd DonorFont.ttf
cp DonorFont-statusbar.otf ~/.local/share/fonts/
use DonorFont-statusbar, DonorFont
to refer to the combined font.
For convenience of reference, and for distribution maintainers packaging multiple combined fonts, the script genFontconfig.sh
can make a fontconfig file to standardize the naming and set a preferred font.
./genFontconfig.sh 'Cousine' 'DonorFont' > 41-statusbar.conf
cp 41-statusbar.conf ~/.config/fontconfig/conf.d/
Then you can refer to the combined font in a more generic way, and it will behave as expected (provided the source font had correct metadata).
statusbar
DonorFont-statusbar
Cousine-statusbar Italic
icon | ligature | alternative ligatures (range_start..range_end) | unicode |
---|---|---|---|
battery_0 | battery_1..battery_9 | 0xF00B0 | |
battery_10 | battery_11..battery_19 | 0xF00B1 | |
battery_20 | battery_21..battery_29 | 0xF00B2 | |
battery_30 | battery_31..battery_39 | 0xF00B3 | |
battery_40 | battery_41..battery_49 | 0xF00B4 | |
battery_50 | battery_51..battery_59 | 0xF00B5 | |
battery_60 | battery_61..battery_69 | 0xF00B6 | |
battery_70 | battery_71..battery_79 | 0xF00B7 | |
battery_80 | battery_81..battery_89 | 0xF00B8 | |
battery_90 | battery_91..battery_99 | 0xF00B9 | |
battery_100 | 0xF00BA | ||
battery_0_charging | battery_1_charging..battery_9_charging | 0xF00C0 | |
battery_10_charging | battery_11_charging..battery_19_charging | 0xF00C1 | |
battery_20_charging | battery_22_charging..battery_29_charging | 0xF00C2 | |
battery_30_charging | battery_33_charging..battery_39_charging | 0xF00C3 | |
battery_40_charging | battery_44_charging..battery_49_charging | 0xF00C4 | |
battery_50_charging | battery_55_charging..battery_59_charging | 0xF00C5 | |
battery_60_charging | battery_66_charging..battery_69_charging | 0xF00C6 | |
battery_70_charging | battery_77_charging..battery_79_charging | 0xF00C7 | |
battery_80_charging | battery_88_charging..battery_89_charging | 0xF00C8 | |
battery_90_charging | battery_99_charging..battery_99_charging | 0xF00C9 | |
battery_100_charging | battery_100_full | 0xF00CA |
icon | ligature | alternative ligatures (range_start..range_end) | unicode |
---|---|---|---|
wifi_off | airplane_mode | 0xF00A0 | |
wifi_bar_1 | wifi_signal_0..wifi_signal_33 | 0xF00A1 | |
wifi_bar_2 | wifi_signal_34..wifi_signal_66 | 0xF00A2 | |
wifi_bar_3 | wifi_signal_67..wifi_signal_100 | 0xF00A3 | |
bluetooth | 0xF00AB | ||
cellular | 0xF00AC | ||
cellular_bar_1 | cellular_signal_1..cellular_signal_25 | 0xF0101 | |
cellular_bar_2 | cellular_signal_26..cellular_signal_50 | 0xF0102 | |
cellular_bar_3 | cellular_signal_51..cellular_signal_75 | 0xF0103 | |
cellular_bar_4 | cellular_signal_76..cellular_signal_100 | 0xF0104 |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
phone_failed | 0xF010F | ||
phone_unknown | 0xF0110 | ||
phone_initializing | 0xF0111 | ||
phone_locked | 0xF0112 | ||
phone_disabled | 0xF0113 | ||
phone_disabling | 0xF0114 | ||
phone_enabling | 0xF0115 | ||
phone_enabled | 0xF0116 | ||
phone_searching | 0xF0117 | ||
phone_registered | 0xF0118 | ||
phone_disconnecting | 0xF0119 | ||
phone_connecting | 0xF011A | ||
phone_connected | 0xF011B | ||
Reserved for future MMModemStates | 0xF011C-0xF011F | ||
Reserved for other MMModemStateFailedReasons | 0xF0120-0xF0121 | ||
sim_missing | 0xF0122 | ||
sim_error | 0xF0123 | ||
Reserved for future MMModemStateFailedReasons | 0xF0124-0xF012F |
icon | ligature | alternative ligatures (range_start..range_end) | unicode |
---|---|---|---|
volume_bar_0 | volume_off, volume_mute, volume_0(%)? | 0xF00D0 | |
volume_bar_1 | volume_1..volume_33(%)? | 0xF00D1 | |
volume_bar_2 | volume_34..volume_66(%)? | 0xF00D2 | |
volume_bar_3 | volume_67..volume_100(%)? | 0xF00D3 | |
volume_bar_4 | volume_101..volume_153(%)? | 0xF00DD | |
earpiece_volume_bar_0 | earpiece_volume_mute, earpiece_volume_0(%)? | 0xF0130 | |
earpiece_volume_bar_1 | earpiece_volume_1..earpiece_volume_33(%)? | 0xF0131 | |
earpiece_volume_bar_2 | earpiece_volume_34..earpiece_volume_66(%)? | 0xF0132 | |
earpiece_volume_bar_3 | earpiece_volume_67..earpiece_volume_100(%)? | 0xF0133 | |
earpiece_volume_bar_4 | earpiece_volume_101..earpiece_volume_153(%)? | 0xF0134 |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
skip_backward | 0xF00D4 | ||
skip_forward | 0xF00D5 | ||
rewind | 0xF00D6 | ||
fastforward | 0xF00D7 | ||
pause | 0xF00D8 | ||
play | 0xF00D9 | ||
stop | 0xF00DA | ||
shuffle | 0xF00DB | ||
repeat | 0xF00DC |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
mic_off | mic_mute | 0xF00E0 | |
mic | 0xF00E1 |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
notifications | 0xF00F0 | ||
notifications_off | notifications_mute | 0xF00F1 | |
notifications_none | 0xF00F2 |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
0xF00F3 | |||
mail_unread | 0xF00F4 | ||
mail_open | 0xF00F5 |
icon | ligature | alternative ligatures | unicode |
---|---|---|---|
moon | 0xFF000 | ||
infinity | 0xF0001 | ||
eye | 0xF0002 | ||
eye_off | 0xF0003 | ||
crop | 0xF0004 | ||
radio_button_on | 0xF0005 | ||
radio_button_off | 0xF0006 |
The icons are based on Ionicons 4.x, iOS-Style.
The font is built with FontForge. For a quick info on how ligatures work, this tutorial was helpful.
This font is licensed under the SIL OFL (see LICENSE). Read more about the license in the official FAQ.