forked from mirrors/nixpkgs
Merge pull request #23503 from ttuegel/fontconfig
Generalize Fontconfig options
This commit is contained in:
commit
e3cb24d1e0
|
@ -8,61 +8,6 @@ let fcBool = x: if x then "<bool>true</bool>" else "<bool>false</bool>";
|
||||||
|
|
||||||
latestVersion = pkgs.fontconfig.configVersion;
|
latestVersion = pkgs.fontconfig.configVersion;
|
||||||
|
|
||||||
# fontconfig ultimate main configuration file
|
|
||||||
# priority 52
|
|
||||||
fontconfigUltimateConf = pkgs.writeText "fc-52-fontconfig-ultimate.conf" ''
|
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
||||||
<fontconfig>
|
|
||||||
|
|
||||||
${optionalString (!cfg.allowBitmaps) ''
|
|
||||||
<!-- Reject bitmap fonts -->
|
|
||||||
<selectfont>
|
|
||||||
<rejectfont>
|
|
||||||
<pattern>
|
|
||||||
<patelt name="scalable"><bool>false</bool></patelt>
|
|
||||||
</pattern>
|
|
||||||
</rejectfont>
|
|
||||||
</selectfont>
|
|
||||||
''}
|
|
||||||
|
|
||||||
${optionalString cfg.allowType1 ''
|
|
||||||
<!-- Reject Type 1 fonts -->
|
|
||||||
<selectfont>
|
|
||||||
<rejectfont>
|
|
||||||
<pattern>
|
|
||||||
<patelt name="fontformat">
|
|
||||||
<string>Type 1</string>
|
|
||||||
</patelt>
|
|
||||||
</pattern>
|
|
||||||
</rejectfont>
|
|
||||||
</selectfont>
|
|
||||||
''}
|
|
||||||
|
|
||||||
<!-- Use embedded bitmaps in fonts like Calibri? -->
|
|
||||||
<match target="font">
|
|
||||||
<edit name="embeddedbitmap" mode="assign">
|
|
||||||
${fcBool cfg.useEmbeddedBitmaps}
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
<!-- Force autohint always -->
|
|
||||||
<match target="font">
|
|
||||||
<edit name="force_autohint" mode="assign">
|
|
||||||
${fcBool cfg.forceAutohint}
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
<!-- Render some monospace TTF fonts as bitmaps -->
|
|
||||||
<match target="pattern">
|
|
||||||
<edit name="bitmap_monospace" mode="assign">
|
|
||||||
${fcBool cfg.renderMonoTTFAsBitmap}
|
|
||||||
</edit>
|
|
||||||
</match>
|
|
||||||
|
|
||||||
</fontconfig>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# The configuration to be included in /etc/font/
|
# The configuration to be included in /etc/font/
|
||||||
confPkg = pkgs.runCommand "font-ultimate-conf" {} ''
|
confPkg = pkgs.runCommand "font-ultimate-conf" {} ''
|
||||||
support_folder=$out/etc/fonts/conf.d
|
support_folder=$out/etc/fonts/conf.d
|
||||||
|
@ -71,12 +16,6 @@ let fcBool = x: if x then "<bool>true</bool>" else "<bool>false</bool>";
|
||||||
mkdir -p $support_folder
|
mkdir -p $support_folder
|
||||||
mkdir -p $latest_folder
|
mkdir -p $latest_folder
|
||||||
|
|
||||||
# 52-fontconfig-ultimate.conf
|
|
||||||
ln -s ${fontconfigUltimateConf} \
|
|
||||||
$support_folder/52-fontconfig-ultimate.conf
|
|
||||||
ln -s ${fontconfigUltimateConf} \
|
|
||||||
$latest_folder/52-fontconfig-ultimate.conf
|
|
||||||
|
|
||||||
# fontconfig ultimate substitutions
|
# fontconfig ultimate substitutions
|
||||||
${optionalString (cfg.substitutions != "none") ''
|
${optionalString (cfg.substitutions != "none") ''
|
||||||
ln -s ${pkgs.fontconfig-ultimate}/etc/fonts/presets/${cfg.substitutions}/*.conf \
|
ln -s ${pkgs.fontconfig-ultimate}/etc/fonts/presets/${cfg.substitutions}/*.conf \
|
||||||
|
@ -113,45 +52,6 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
allowBitmaps = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
Allow bitmap fonts. Set to <literal>false</literal> to ban all
|
|
||||||
bitmap fonts.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
allowType1 = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Allow Type-1 fonts. Default is <literal>false</literal> because of
|
|
||||||
poor rendering.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
useEmbeddedBitmaps = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''Use embedded bitmaps in fonts like Calibri.'';
|
|
||||||
};
|
|
||||||
|
|
||||||
forceAutohint = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Force use of the TrueType Autohinter. Useful for debugging or
|
|
||||||
free-software purists.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
renderMonoTTFAsBitmap = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''Render some monospace TTF fonts as bitmaps.'';
|
|
||||||
};
|
|
||||||
|
|
||||||
substitutions = mkOption {
|
substitutions = mkOption {
|
||||||
type = types.nullOr (types.enum ["free" "combi" "ms"]);
|
type = types.nullOr (types.enum ["free" "combi" "ms"]);
|
||||||
default = "free";
|
default = "free";
|
||||||
|
|
|
@ -104,6 +104,13 @@ let cfg = config.fonts.fontconfig;
|
||||||
</match>
|
</match>
|
||||||
''}
|
''}
|
||||||
|
|
||||||
|
<!-- Force autohint always -->
|
||||||
|
<match target="font">
|
||||||
|
<edit name="force_autohint" mode="assign">
|
||||||
|
${fcBool cfg.forceAutohint}
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
</fontconfig>
|
</fontconfig>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -142,6 +149,60 @@ let cfg = config.fonts.fontconfig;
|
||||||
</fontconfig>
|
</fontconfig>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# bitmap font options
|
||||||
|
# priority 53
|
||||||
|
rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<fontconfig>
|
||||||
|
|
||||||
|
${optionalString (!cfg.allowBitmaps) ''
|
||||||
|
<!-- Reject bitmap fonts -->
|
||||||
|
<selectfont>
|
||||||
|
<rejectfont>
|
||||||
|
<pattern>
|
||||||
|
<patelt name="scalable"><bool>false</bool></patelt>
|
||||||
|
</pattern>
|
||||||
|
</rejectfont>
|
||||||
|
</selectfont>
|
||||||
|
''}
|
||||||
|
|
||||||
|
<!-- Use embedded bitmaps in fonts like Calibri? -->
|
||||||
|
<match target="font">
|
||||||
|
<edit name="embeddedbitmap" mode="assign">
|
||||||
|
${fcBool cfg.useEmbeddedBitmaps}
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!-- Render some monospace TTF fonts as bitmaps -->
|
||||||
|
<match target="pattern">
|
||||||
|
<edit name="bitmap_monospace" mode="assign">
|
||||||
|
${fcBool cfg.renderMonoTTFAsBitmap}
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
</fontconfig>
|
||||||
|
'';
|
||||||
|
|
||||||
|
# reject Type 1 fonts
|
||||||
|
# priority 53
|
||||||
|
rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<fontconfig>
|
||||||
|
|
||||||
|
<!-- Reject Type 1 fonts -->
|
||||||
|
<selectfont>
|
||||||
|
<rejectfont>
|
||||||
|
<pattern>
|
||||||
|
<patelt name="fontformat"><string>Type 1</string></patelt>
|
||||||
|
</pattern>
|
||||||
|
</rejectfont>
|
||||||
|
</selectfont>
|
||||||
|
|
||||||
|
</fontconfig>
|
||||||
|
'';
|
||||||
|
|
||||||
# fontconfig configuration package
|
# fontconfig configuration package
|
||||||
confPkg = pkgs.runCommand "fontconfig-conf" {} ''
|
confPkg = pkgs.runCommand "fontconfig-conf" {} ''
|
||||||
support_folder=$out/etc/fonts
|
support_folder=$out/etc/fonts
|
||||||
|
@ -192,6 +253,16 @@ let cfg = config.fonts.fontconfig;
|
||||||
# 52-nixos-default-fonts.conf
|
# 52-nixos-default-fonts.conf
|
||||||
ln -s ${defaultFontsConf} $support_folder/conf.d/52-nixos-default-fonts.conf
|
ln -s ${defaultFontsConf} $support_folder/conf.d/52-nixos-default-fonts.conf
|
||||||
ln -s ${defaultFontsConf} $latest_folder/conf.d/52-nixos-default-fonts.conf
|
ln -s ${defaultFontsConf} $latest_folder/conf.d/52-nixos-default-fonts.conf
|
||||||
|
|
||||||
|
# 53-nixos-bitmaps.conf
|
||||||
|
ln -s ${rejectBitmaps} $support_folder/conf.d/53-nixos-bitmaps.conf
|
||||||
|
ln -s ${rejectBitmaps} $latest_folder/conf.d/53-nixos-bitmaps.conf
|
||||||
|
|
||||||
|
${optionalString (! cfg.allowType1) ''
|
||||||
|
# 53-nixos-reject-type1.conf
|
||||||
|
ln -s ${rejectType1} $support_folder/conf.d/53-nixos-reject-type1.conf
|
||||||
|
ln -s ${rejectType1} $latest_folder/conf.d/53-nixos-reject-type1.conf
|
||||||
|
''}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Package with configuration files
|
# Package with configuration files
|
||||||
|
@ -349,6 +420,45 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
allowBitmaps = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Allow bitmap fonts. Set to <literal>false</literal> to ban all
|
||||||
|
bitmap fonts.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
allowType1 = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Allow Type-1 fonts. Default is <literal>false</literal> because of
|
||||||
|
poor rendering.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
useEmbeddedBitmaps = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''Use embedded bitmaps in fonts like Calibri.'';
|
||||||
|
};
|
||||||
|
|
||||||
|
forceAutohint = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Force use of the TrueType Autohinter. Useful for debugging or
|
||||||
|
free-software purists.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
renderMonoTTFAsBitmap = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''Render some monospace TTF fonts as bitmaps.'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -181,6 +181,13 @@ with lib;
|
||||||
# KDE Plasma 5
|
# KDE Plasma 5
|
||||||
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
|
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
|
||||||
|
|
||||||
|
# Fontconfig
|
||||||
|
(mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowBitmaps" ] [ "config" "fonts" "fontconfig" "allowBitmaps" ])
|
||||||
|
(mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowType1" ] [ "config" "fonts" "fontconfig" "allowType1" ])
|
||||||
|
(mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "useEmbeddedBitmaps" ] [ "config" "fonts" "fontconfig" "useEmbeddedBitmaps" ])
|
||||||
|
(mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "forceAutohint" ] [ "config" "fonts" "fontconfig" "forceAutohint" ])
|
||||||
|
(mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "renderMonoTTFAsBitmap" ] [ "config" "fonts" "fontconfig" "renderMonoTTFAsBitmap" ])
|
||||||
|
|
||||||
# Options that are obsolete and have no replacement.
|
# Options that are obsolete and have no replacement.
|
||||||
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
||||||
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
||||||
|
|
|
@ -196,6 +196,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
|
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
|
||||||
|
fonts.fontconfig.defaultFonts = {
|
||||||
|
monospace = [ "Hack" "Noto Mono" ];
|
||||||
|
sansSerif = [ "Noto Sans" ];
|
||||||
|
serif = [ "Noto Serif" ];
|
||||||
|
};
|
||||||
|
|
||||||
programs.ssh.askPassword = "${plasma5.ksshaskpass.out}/bin/ksshaskpass";
|
programs.ssh.askPassword = "${plasma5.ksshaskpass.out}/bin/ksshaskpass";
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,12 @@ if ! [ -e $HOME/.gtkrc-2.0 ] \
|
||||||
cat >$HOME/.gtkrc-2.0 <<EOF
|
cat >$HOME/.gtkrc-2.0 <<EOF
|
||||||
# Default GTK+ 2 config for NixOS KDE 5
|
# Default GTK+ 2 config for NixOS KDE 5
|
||||||
include "/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc"
|
include "/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc"
|
||||||
|
style "user-font"
|
||||||
|
{
|
||||||
|
font_name="Sans Serif Regular"
|
||||||
|
}
|
||||||
|
widget_class "*" style "user-font"
|
||||||
|
gtk-font-name="Sans Serif Regular 10"
|
||||||
gtk-theme-name="Breeze"
|
gtk-theme-name="Breeze"
|
||||||
gtk-icon-theme-name="breeze"
|
gtk-icon-theme-name="breeze"
|
||||||
gtk-fallback-icon-theme="hicolor"
|
gtk-fallback-icon-theme="hicolor"
|
||||||
|
@ -28,6 +34,7 @@ if ! [ -e $HOME/.config/gtk-3.0/settings.ini ] \
|
||||||
&& [ -e /run/current-system/sw/share/themes/Breeze/gtk-3.0 ]; then
|
&& [ -e /run/current-system/sw/share/themes/Breeze/gtk-3.0 ]; then
|
||||||
cat >$HOME/.config/gtk-3.0/settings.ini <<EOF
|
cat >$HOME/.config/gtk-3.0/settings.ini <<EOF
|
||||||
[Settings]
|
[Settings]
|
||||||
|
gtk-font-name=Sans Serif Regular 10
|
||||||
gtk-theme-name=Breeze
|
gtk-theme-name=Breeze
|
||||||
gtk-icon-theme-name=breeze
|
gtk-icon-theme-name=breeze
|
||||||
gtk-fallback-icon-theme=hicolor
|
gtk-fallback-icon-theme=hicolor
|
||||||
|
@ -122,6 +129,7 @@ ksplashrc KSplash Theme ${THEME}.desktop
|
||||||
ksplashrc KSplash Engine KSplashQML
|
ksplashrc KSplash Engine KSplashQML
|
||||||
kdeglobals KScreen ScreenScaleFactors ''
|
kdeglobals KScreen ScreenScaleFactors ''
|
||||||
kcmfonts General forceFontDPI 0
|
kcmfonts General forceFontDPI 0
|
||||||
|
kcmfonts General dontChangeAASettings true
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# preload the user's locale on first start
|
# preload the user's locale on first start
|
||||||
|
@ -145,9 +153,14 @@ kdeglobalsfile=$configDir/kdeglobals
|
||||||
test -f $kdeglobalsfile || {
|
test -f $kdeglobalsfile || {
|
||||||
cat >$kdeglobalsfile <<EOF
|
cat >$kdeglobalsfile <<EOF
|
||||||
[General]
|
[General]
|
||||||
XftAntialias=true
|
fixed=Monospace,10,-1,5,50,0,0,0,0,0,Regular
|
||||||
XftHintStyle=hintmedium
|
font=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular
|
||||||
XftSubPixel=none
|
menuFont=Sans Serif,10,-1,5,50,0,0,0,0,0,Regular
|
||||||
|
smallestReadableFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular
|
||||||
|
toolBarFont=Sans Serif,8,-1,5,50,0,0,0,0,0,Regular
|
||||||
|
|
||||||
|
[WM]
|
||||||
|
activeFont=Noto Sans,12,-1,5,50,0,0,0,0,0,Bold
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue