New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(font): More robust font size calculation #1646
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Originally the size function returned the scaled `size` property for scalable fonts and the non-scaled `pixelsize` property for non-scalable fonts. This caused lots of issues when that property was 0 (empty bars, characters not drawn without warning, see references at the bottom). This behavior was mostly observed on debian where `size` is set to 0 if `pixelsize` is set. We now try to use both properties for both types, but prefering `size` for scalable fonts and `pixelsize` for non-scalable ones. This behavior doesn't break existing correct behavior but now never returns 0. It will always try to fall back to the other property or to some fallback value if both properties are 0. I originally thought this could also make font patterns more expressive by being able to specify the size of scalable fonts directly in pixels like so: Unifont:size=0:pixelsize=20 or to scale non-scalable fonts by forcing polybar to fall back to the `size` property (which is always scaled): Wuncon Siji:pixelsize=0:size=20 But how these two patterns are matched by `fc-match` depends both on the font and on the distro/fontconfig setup. Ref polybar#706 Ref polybar#1450 Ref polybar#1257
Lomadriel
approved these changes
Jun 2, 2019
patrick96
added a commit
to patrick96/polybar
that referenced
this pull request
Jun 28, 2019
* In the `internal/memory` module all of the megabyte values no longer have decimal places (polybar#1606). **New Config Options** The following config options were added: In the `[bar/*]` section: * `monitor-exact`, use exact name matching for monitors otherwise ignore dashes. In formats: * `format-NAME-font` to set the font for that format (same as `label-NAME-font`) In `internal/bspwm`: * `label-marked` for the new `marked` node flag introduced in baskerville/bspwm@d0138af In `internal/xkeyboard`: * `label-indicator-(on|off)` is uses once for every indicator (caps lock, etc.), supports `%name%` and `%icon%` * `label-indicator-(on|off)-(capslock|numlock|scrolllock)` overwrites `label-indicator-(on|off)` for the given indicator * `layout-icon-*` is a list that maps layout names to icons to be used with the `%icon%` token in `label-layout` * `indicator-icon-*` is a list that maps indicator names to icons to be used with the `%icon%` token in `label-indicator-*` In `internal/temperature`: * `base-temperature` is the counterpart to `warn-temperature` and controls the lower bound for the ramp. **Deprecations** * xkeyboard: `label-indicator` is deprecated in favor of the new `label-indicator-on` **Features** * bar: * make exact monitor matching configurable (polybar#1533), see polybar#1532 * `border-size` now supports the same mixed percentage/pixel sizes as `width` and `height` (polybar#1592), see polybar#1567 * Use primary monitor if no monitor is specified (polybar#1426), polybar#1412 * bspwm: Support for the new `marked` node flag. (polybar#1557), see polybar#1552 * format: Formats now support the `-font` property just as labels (polybar#1602), see polybar#19 * network: Support for all tokens in all labels (polybar#1597) * xkeyboard: Indicator names can be customized. Also adds icon mappings for layouts and indicators (polybar#1559, polybar#1048), see polybar#1558 * temperature: The ramp now starts at `base-temperature` instead of 0°C (polybar#1706), see polybar#1703 * battery: `%percentage_raw%` token that displays the real percentage regardless of `full-at` (polybar#1756), see polybar#1753 **Fixes** * network: Display `N/A` when no IPv4 address can be found (polybar#1597) * xworkspaces: Properly handle when desktops are removed from `_NET_DESKTOP_NAMES` (polybar#1713), see polybar#1710 * backlight: Read the right brightness value (polybar#1689), see polybar#1180 * pulseaudio: Allow volume increase when it is close to the maximum. Before it did not allow that when adding `interval` would go over the max. (polybar#1765) * i3: fix workspace change for workspaces with special characters in the name (polybar#1798), see polybar#1797 * font: Characters no longer vanish when the `size` or `pixelsize` property is 0 (polybar#1646) * build: * Compilation error under gcc9 (polybar#1729), see polybar#1728 * Compilation no longer fails when new flags are introduced that produce new warnings (polybar#1735)
patrick96
added a commit
to patrick96/polybar
that referenced
this pull request
Jun 28, 2019
* In the `internal/memory` module all of the megabyte values no longer have decimal places (polybar#1606). **New Config Options** The following config options were added: In the `[bar/*]` section: * `monitor-exact`, use exact name matching for monitors otherwise ignore dashes. In formats: * `format-NAME-font` to set the font for that format (same as `label-NAME-font`) In `internal/bspwm`: * `label-marked` for the new `marked` node flag introduced in baskerville/bspwm@d0138af In `internal/xkeyboard`: * `label-indicator-(on|off)` is uses once for every indicator (caps lock, etc.), supports `%name%` and `%icon%` * `label-indicator-(on|off)-(capslock|numlock|scrolllock)` overwrites `label-indicator-(on|off)` for the given indicator * `layout-icon-*` is a list that maps layout names to icons to be used with the `%icon%` token in `label-layout` * `indicator-icon-*` is a list that maps indicator names to icons to be used with the `%icon%` token in `label-indicator-*` In `internal/temperature`: * `base-temperature` is the counterpart to `warn-temperature` and controls the lower bound for the ramp. **Deprecations** * xkeyboard: `label-indicator` is deprecated in favor of the new `label-indicator-on` **Features** * bar: * make exact monitor matching configurable (polybar#1533), see polybar#1532 * `border-size` now supports the same mixed percentage/pixel sizes as `width` and `height` (polybar#1592), see polybar#1567 * Use primary monitor if no monitor is specified (polybar#1426), polybar#1412 * bspwm: Support for the new `marked` node flag. (polybar#1557), see polybar#1552 * format: Formats now support the `-font` property just as labels (polybar#1602), see polybar#19 * network: Support for all tokens in all labels (polybar#1597) * xkeyboard: Indicator names can be customized. Also adds icon mappings for layouts and indicators (polybar#1559, polybar#1048), see polybar#1558 * temperature: The ramp now starts at `base-temperature` instead of 0°C (polybar#1706), see polybar#1703 * battery: `%percentage_raw%` token that displays the real percentage regardless of `full-at` (polybar#1756), see polybar#1753 **Fixes** * network: Display `N/A` when no IPv4 address can be found (polybar#1597) * xworkspaces: Properly handle when desktops are removed from `_NET_DESKTOP_NAMES` (polybar#1713), see polybar#1710 * backlight: Read the right brightness value (polybar#1689), see polybar#1180 * pulseaudio: Allow volume increase when it is close to the maximum. Before it did not allow that when adding `interval` would go over the max. (polybar#1765) * i3: fix workspace change for workspaces with special characters in the name (polybar#1798), see polybar#1797 * font: Characters no longer vanish when the `size` or `pixelsize` property is 0 (polybar#1646) * build: * Compilation error under gcc9 (polybar#1729), see polybar#1728 * Compilation no longer fails when new flags are introduced that produce new warnings (polybar#1735)
patrick96
added a commit
to patrick96/polybar
that referenced
this pull request
Jun 29, 2019
Breaking Changes: * In the `internal/memory` module all of the megabyte values no longer have decimal places (polybar#1606). Changelog **New Config Options** The following config options were added: In the `[bar/*]` section: * `monitor-exact`, use exact name matching for monitors otherwise ignore dashes. In formats: * `format-NAME-font` to set the font for that format (same as `label-NAME-font`) In `internal/bspwm`: * `label-marked` for the new `marked` node flag introduced in baskerville/bspwm@d0138af In `internal/xkeyboard`: * `label-indicator-(on|off)` is used once for every indicator (caps lock, etc.), supports `%name%` and `%icon%` * `label-indicator-(on|off)-(capslock|numlock|scrolllock)` overwrites `label-indicator-(on|off)` for the given indicator * `layout-icon-*` is a list that maps layout names to icons to be used with the `%icon%` token in `label-layout` * `indicator-icon-*` is a list that maps indicator names to icons to be used with the `%icon%` token in `label-indicator-*` In `internal/temperature`: * `base-temperature` is the counterpart to `warn-temperature` and controls the lower bound for the ramp. **Deprecations** * xkeyboard: `label-indicator` is deprecated in favor of the new `label-indicator-on` **Features** * bar: * make exact monitor matching configurable (polybar#1533), see polybar#1532 * `border-size` now supports the same mixed percentage/pixel sizes as `width` and `height` (polybar#1592), see polybar#1567 * Use primary monitor if no monitor is specified (polybar#1426), polybar#1412 * bspwm: Support for the new `marked` node flag. (polybar#1557), see polybar#1552 * format: Formats now support the `-font` property just as labels (polybar#1602), see polybar#19 * network: Support for all tokens in all labels (polybar#1597) * xkeyboard: Indicator names can be customized. Also adds icon mappings for layouts and indicators (polybar#1559, polybar#1048), see polybar#1558 * temperature: The ramp now starts at `base-temperature` instead of 0°C (polybar#1706), see polybar#1703 * battery: `%percentage_raw%` token that displays the real percentage regardless of `full-at` (polybar#1756), see polybar#1753 **Fixes** * network: Display `N/A` when no IPv4 address can be found (polybar#1597) * xworkspaces: Properly handle when desktops are removed from `_NET_DESKTOP_NAMES` (polybar#1713), see polybar#1710 * backlight: Read the right brightness value (polybar#1689), see polybar#1180 * pulseaudio: Allow volume increase when it is close to the maximum. Before it did not allow that when adding `interval` would go over the max. (polybar#1765) * i3: fix workspace change for workspaces with special characters in the name (polybar#1798), see polybar#1797 * font: Characters no longer vanish when the `size` or `pixelsize` property is 0 (polybar#1646) * build: * Compilation error under gcc9 (polybar#1729), see polybar#1728 * Compilation no longer fails when new flags are introduced that produce new warnings (polybar#1735)
patrick96
added a commit
that referenced
this pull request
Jul 24, 2019
Breaking Changes: * In the `internal/memory` module all of the megabyte values no longer have decimal places (#1606). Changelog **New Config Options** The following config options were added: In the `[bar/*]` section: * `monitor-exact`, use exact name matching for monitors otherwise ignore dashes. In formats: * `format-NAME-font` to set the font for that format (same as `label-NAME-font`) In `internal/bspwm`: * `label-marked` for the new `marked` node flag introduced in baskerville/bspwm@d0138af In `internal/xkeyboard`: * `label-indicator-(on|off)` is used once for every indicator (caps lock, etc.), supports `%name%` and `%icon%` * `label-indicator-(on|off)-(capslock|numlock|scrolllock)` overwrites `label-indicator-(on|off)` for the given indicator * `layout-icon-*` is a list that maps layout names to icons to be used with the `%icon%` token in `label-layout` * `indicator-icon-*` is a list that maps indicator names to icons to be used with the `%icon%` token in `label-indicator-*` In `internal/temperature`: * `base-temperature` is the counterpart to `warn-temperature` and controls the lower bound for the ramp. **Deprecations** * xkeyboard: `label-indicator` is deprecated in favor of the new `label-indicator-on` **Features** * bar: * make exact monitor matching configurable (#1533), see #1532 * `border-size` now supports the same mixed percentage/pixel sizes as `width` and `height` (#1592), see #1567 * Use primary monitor if no monitor is specified (#1426), #1412 * bspwm: Support for the new `marked` node flag. (#1557), see #1552 * format: Formats now support the `-font` property just as labels (#1602), see #19 * network: Support for all tokens in all labels (#1597) * xkeyboard: Indicator names can be customized. Also adds icon mappings for layouts and indicators (#1559, #1048), see #1558 * temperature: The ramp now starts at `base-temperature` instead of 0°C (#1706), see #1703 * battery: `%percentage_raw%` token that displays the real percentage regardless of `full-at` (#1756), see #1753 **Fixes** * network: Display `N/A` when no IPv4 address can be found (#1597) * xworkspaces: Properly handle when desktops are removed from `_NET_DESKTOP_NAMES` (#1713), see #1710 * backlight: Read the right brightness value (#1689), see #1180 * pulseaudio: Allow volume increase when it is close to the maximum. Before it did not allow that when adding `interval` would go over the max. (#1765) * i3: fix workspace change for workspaces with special characters in the name (#1798), see #1797 * font: Characters no longer vanish when the `size` or `pixelsize` property is 0 (#1646) * build: * Compilation error under gcc9 (#1729), see #1728 * Compilation no longer fails when new flags are introduced that produce new warnings (#1735)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Originally the size function returned the scaled
size
property forscalable fonts and the non-scaled
pixelsize
property for non-scalablefonts. This caused lots of issues when that property was 0 (empty bars,
characters not drawn without warning, see references at the bottom).
This behavior was mostly observed on debian where
size
is set to 0 ifpixelsize
is set.We now try to use both properties for both types, but prefering
size
for scalable fonts and
pixelsize
for non-scalable ones.This behavior doesn't break existing correct behavior but now never
returns 0. It will always try to fall back to the other property or to
some fallback value if both properties are 0.
I originally thought this could also make font patterns more expressive
by being able to specify the size of scalable fonts directly in pixels
like so:
Unifont:size=0:pixelsize=20
or to scale non-scalable fonts by forcing polybar to fall back to the
size
property (which is always scaled):Wuncon Siji:pixelsize=0:size=20
But how these two patterns are matched by
fc-match
depends both on thefont and on the distro/fontconfig setup.
Ref #706
Ref #1450
Ref #1257