nixos/fontconfig: Allow setting default emoji font
In fontconfig’s 60-generic.conf, order of preference is estabilished for emoji font family. Because fontconfig parses the config files in lexicographic order, appending each <prefer> from <alias> element to the family’s prefer list (to be prepended before the family) [1], our font family defaults stored in 52-nixos-default-fonts.conf will take precedence. That is, of course, unless the default „weak“ binding [2] is used. Emoji family binds strongly [3], so we need to set binding to “same” for our <alias>es to be considered before the ones from 60-generic.conf. By default, we will set the option to all emoji fonts supported by fontconfig, so that emoji works for user if they have at least one emoji font installed. If they have multiple emoji fonts installed, we will use the fontconfig’s order of preference [4]. [1]: https://github.com/bohoomil/fontconfig-ultimate/issues/51#issuecomment-64678322 [2]: https://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN25 [3]:cc8442dec8
[4]:c41c922018
This commit is contained in:
parent
6bf3d68b8d
commit
b31c7e527e
@ -116,7 +116,7 @@ let
|
|||||||
defaultFontsConf =
|
defaultFontsConf =
|
||||||
let genDefault = fonts: name:
|
let genDefault = fonts: name:
|
||||||
optionalString (fonts != []) ''
|
optionalString (fonts != []) ''
|
||||||
<alias>
|
<alias binding="same">
|
||||||
<family>${name}</family>
|
<family>${name}</family>
|
||||||
<prefer>
|
<prefer>
|
||||||
${concatStringsSep ""
|
${concatStringsSep ""
|
||||||
@ -139,6 +139,8 @@ let
|
|||||||
|
|
||||||
${genDefault cfg.defaultFonts.monospace "monospace"}
|
${genDefault cfg.defaultFonts.monospace "monospace"}
|
||||||
|
|
||||||
|
${genDefault cfg.defaultFonts.emoji "emoji"}
|
||||||
|
|
||||||
</fontconfig>
|
</fontconfig>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@ -344,6 +346,21 @@ in
|
|||||||
in case multiple languages must be supported.
|
in case multiple languages must be supported.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
emoji = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = ["Noto Color Emoji"];
|
||||||
|
description = ''
|
||||||
|
System-wide default emoji font(s). Multiple fonts may be listed
|
||||||
|
in case a font does not support all emoji.
|
||||||
|
|
||||||
|
Note that fontconfig matches color emoji fonts preferentially,
|
||||||
|
so if you want to use a black and white font while having
|
||||||
|
a color font installed (eg. Noto Color Emoji installed alongside
|
||||||
|
Noto Emoji), fontconfig will still choose the color font even
|
||||||
|
when it is later in the list.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hinting = {
|
hinting = {
|
||||||
|
Loading…
Reference in New Issue
Block a user