summaryrefslogtreecommitdiffstats
path: root/nixos/modules/config/fonts
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2017-03-04 11:23:34 -0600
committerThomas Tuegel <ttuegel@mailbox.org>2017-03-04 14:59:24 -0600
commit286b007bd327a1e8d6d1fe66702b951f2fd6e29a (patch)
treed9ed3e3cb3f7e0cf04beb89eacf579165a161d71 /nixos/modules/config/fonts
parent164cdd38a62e435bf83943cacc66d4f14d09f77d (diff)
nixos/fontconfig: lift some settings out of fontconfig.ultimate
Diffstat (limited to 'nixos/modules/config/fonts')
-rw-r--r--nixos/modules/config/fonts/fontconfig-ultimate.nix100
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix120
2 files changed, 115 insertions, 105 deletions
diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix
index a3f52fbd9199..ed6429dda085 100644
--- a/nixos/modules/config/fonts/fontconfig-ultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix
@@ -8,61 +8,6 @@ let fcBool = x: if x then "<bool>true</bool>" else "<bool>false</bool>";
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/
confPkg = pkgs.runCommand "font-ultimate-conf" {} ''
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 $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
${optionalString (cfg.substitutions != "none") ''
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 {
type = types.nullOr (types.enum ["free" "combi" "ms"]);
default = "free";
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 52ad1e714fb9..5648b7b1d027 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -41,11 +41,11 @@ let cfg = config.fonts.fontconfig;
# priority 0
cacheConfSupport = makeCacheConf { version = supportVersion; };
cacheConfLatest = makeCacheConf {};
-
+
# generate the font cache setting file for a fontconfig version
# use latest when no version is passed
makeCacheConf = { version ? null }:
- let
+ let
fcPackage = if builtins.isNull version
then "fontconfig"
else "fontconfig_${version}";
@@ -104,6 +104,13 @@ let cfg = config.fonts.fontconfig;
</match>
''}
+ <!-- Force autohint always -->
+ <match target="font">
+ <edit name="force_autohint" mode="assign">
+ ${fcBool cfg.forceAutohint}
+ </edit>
+ </match>
+
</fontconfig>
'';
@@ -113,7 +120,7 @@ let cfg = config.fonts.fontconfig;
# default fonts configuration file
# priority 52
- defaultFontsConf =
+ defaultFontsConf =
let genDefault = fonts: name:
optionalString (fonts != []) ''
<alias>
@@ -142,7 +149,61 @@ let cfg = config.fonts.fontconfig;
</fontconfig>
'';
- # fontconfig configuration package
+ # 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
confPkg = pkgs.runCommand "fontconfig-conf" {} ''
support_folder=$out/etc/fonts
latest_folder=$out/etc/fonts/${latestVersion}
@@ -166,7 +227,7 @@ let cfg = config.fonts.fontconfig;
substitute ${latestPkg.out}/etc/fonts/conf.d/51-local.conf \
$latest_folder/conf.d/51-local.conf \
- --replace local.conf /etc/fonts/${latestVersion}/local.conf
+ --replace local.conf /etc/fonts/${latestVersion}/local.conf
# 00-nixos-cache.conf
ln -s ${cacheConfSupport} \
@@ -192,6 +253,16 @@ let cfg = config.fonts.fontconfig;
# 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
+
+ # 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
@@ -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.'';
+ };
+
};
};