summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/config/fonts/fontconfig-ultimate.nix12
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix41
-rw-r--r--nixos/modules/rename.nix4
-rw-r--r--nixos/modules/services/x11/display-managers/default.nix2
-rw-r--r--pkgs/development/libraries/cairo/default.nix11
-rw-r--r--pkgs/development/libraries/fontconfig/2.10.nix16
-rw-r--r--pkgs/development/libraries/fontconfig/default.nix4
-rw-r--r--pkgs/development/libraries/fontconfig/test-pcf-family-names-freetype-2.7.patch18
-rw-r--r--pkgs/development/libraries/freetype/default.nix94
-rw-r--r--pkgs/development/libraries/freetype/enable-subpixel-rendering.patch13
-rw-r--r--pkgs/development/libraries/freetype/enable-table-validation.patch22
11 files changed, 124 insertions, 113 deletions
diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix
index a3f52fbd9199..acfdcbd26574 100644
--- a/nixos/modules/config/fonts/fontconfig-ultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix
@@ -104,7 +104,7 @@ in
ultimate = {
enable = mkOption {
type = types.bool;
- default = true;
+ default = false;
description = ''
Enable fontconfig-ultimate settings (formerly known as
Infinality). Besides the customizable settings in this NixOS
@@ -163,15 +163,6 @@ in
<literal>none</literal> disables the substitutions.
'';
};
-
- preset = mkOption {
- type = types.enum ["ultimate1" "ultimate2" "ultimate3" "ultimate4" "ultimate5" "osx" "windowsxp"];
- default = "ultimate3";
- description = ''
- FreeType rendering settings preset. Any of the presets may be
- customized by setting environment variables.
- '';
- };
};
};
};
@@ -181,7 +172,6 @@ in
config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
fonts.fontconfig.confPackages = [ confPkg ];
- environment.variables."INFINALITY_FT" = cfg.preset;
};
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 52ad1e714fb9..aa9c59ec551b 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -83,7 +83,7 @@ let cfg = config.fonts.fontconfig;
${fcBool cfg.hinting.autohint}
</edit>
<edit mode="assign" name="hintstyle">
- <const>hint${cfg.hinting.style}</const>
+ <const>hintslight</const>
</edit>
<edit mode="assign" name="antialias">
${fcBool cfg.antialias}
@@ -233,7 +233,11 @@ in
antialias = mkOption {
type = types.bool;
default = true;
- description = "Enable font antialiasing.";
+ description = ''
+ Enable font antialiasing. At high resolution (> 200 DPI),
+ antialiasing has no visible effect; users of such displays may want
+ to disable this option.
+ '';
};
dpi = mkOption {
@@ -249,7 +253,7 @@ in
type = types.lines;
default = "";
description = ''
- System-wide customization file contents, has higher priority than
+ System-wide customization file contents, has higher priority than
<literal>defaultFonts</literal> settings.
'';
};
@@ -287,7 +291,12 @@ in
enable = mkOption {
type = types.bool;
default = true;
- description = "Enable TrueType hinting.";
+ description = ''
+ Enable font hinting. Hinting aligns glyphs to pixel boundaries to
+ improve rendering sharpness at low resolution. At high resolution
+ (> 200 dpi) hinting will do nothing (at best); users of such
+ displays may want to disable this option.
+ '';
};
autohint = mkOption {
@@ -299,16 +308,6 @@ in
correctly-hinted fonts.
'';
};
-
- style = mkOption {
- type = types.enum ["none" "slight" "medium" "full"];
- default = "full";
- description = ''
- TrueType hinting style, one of <literal>none</literal>,
- <literal>slight</literal>, <literal>medium</literal>, or
- <literal>full</literal>.
- '';
- };
};
includeUserConf = mkOption {
@@ -327,7 +326,15 @@ in
default = "rgb";
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
description = ''
- Subpixel order.
+ Subpixel order. The overwhelming majority of displays are
+ <literal>rgb</literal> in their normal orientation. Select
+ <literal>vrgb</literal> for mounting such a display 90 degrees
+ clockwise from its normal orientation or <literal>vbgr</literal>
+ for mounting 90 degrees counter-clockwise. Select
+ <literal>bgr</literal> in the unlikely event of mounting 180
+ degrees from the normal orientation. Reverse these directions in
+ the improbable event that the display's native subpixel order is
+ <literal>bgr</literal>.
'';
};
@@ -335,7 +342,9 @@ in
default = "default";
type = types.enum ["none" "default" "light" "legacy"];
description = ''
- FreeType LCD filter.
+ FreeType LCD filter. At high resolution (> 200 DPI), LCD filtering
+ has no visible effect; users of such displays may want to select
+ <literal>none</literal>.
'';
};
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index ff3654737afd..02d875b26748 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -141,9 +141,6 @@ with lib;
# Unity3D
(mkRenamedOptionModule [ "programs" "unity3d" "enable" ] [ "security" "chromiumSuidSandbox" "enable" ])
- # fontconfig-ultimate
- (mkRenamedOptionModule [ "fonts" "fontconfig" "ultimate" "rendering" ] [ "fonts" "fontconfig" "ultimate" "preset" ])
-
# murmur
(mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ])
@@ -195,5 +192,6 @@ with lib;
"See the 16.09 release notes for more information.")
(mkRemovedOptionModule [ "services" "phpfpm" "phpIni" ] "")
(mkRemovedOptionModule [ "services" "dovecot2" "package" ] "")
+ (mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
];
}
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix
index e8b897fb6050..4e2c0e01ca03 100644
--- a/nixos/modules/services/x11/display-managers/default.nix
+++ b/nixos/modules/services/x11/display-managers/default.nix
@@ -24,7 +24,7 @@ let
Xft.lcdfilter: lcd${fontconfig.subpixel.lcdfilter}
Xft.hinting: ${if fontconfig.hinting.enable then "1" else "0"}
Xft.autohint: ${if fontconfig.hinting.autohint then "1" else "0"}
- Xft.hintstyle: hint${fontconfig.hinting.style}
+ Xft.hintstyle: hintslight
'';
# file provided by services.xserver.displayManager.session.script
diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix
index 7df72bc05605..e1b87fafd8e8 100644
--- a/pkgs/development/libraries/cairo/default.nix
+++ b/pkgs/development/libraries/cairo/default.nix
@@ -19,13 +19,6 @@ stdenv.mkDerivation rec {
sha1 = "c6f7b99986f93c9df78653c3e6a3b5043f65145e";
};
- infinality = fetchFromGitHub {
- owner = "bohoomil";
- repo = "fontconfig-ultimate";
- rev = "730f5e77580677e86522c1f2119aa78803741759";
- sha256 = "1hbrdpm6xcczs2c2iid7by8h7dsd0jcf7an88s150njyqnjzxjg7";
- };
-
patches = [
# from https://bugs.freedesktop.org/show_bug.cgi?id=98165
(fetchpatch {
@@ -35,10 +28,6 @@ stdenv.mkDerivation rec {
})
];
- prePatch = ''
- patches="$patches $(echo $infinality/*_cairo-iu/*.patch)"
- '';
-
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev"; # very small
diff --git a/pkgs/development/libraries/fontconfig/2.10.nix b/pkgs/development/libraries/fontconfig/2.10.nix
index 2705339adbfb..222dfc27256c 100644
--- a/pkgs/development/libraries/fontconfig/2.10.nix
+++ b/pkgs/development/libraries/fontconfig/2.10.nix
@@ -8,13 +8,11 @@ stdenv.mkDerivation rec {
sha256 = "0llraqw86jmw4vzv7inskp3xxm2gc64my08iwq5mzncgfdbfza4f";
};
- infinality_patch =
- let subvers = "1";
- in fetchurl {
- url = http://www.infinality.net/fedora/linux/zips/fontconfig-infinality-1-20130104_1.tar.bz2;
- sha256 = "1fm5xx0mx2243jrq5rxk4v0ajw2nawpj23399h710bx6hd1rviq7";
- }
- ;
+ patches = [
+ # FreeType 2.7 prefixes PCF font family names with the foundry name.
+ # The output of fc-list and fc-query change which breaks the tests.
+ ./test-pcf-family-names-freetype-2.7.patch
+ ];
outputs = [ "bin" "dev" "lib" "out" ]; # $out contains all the config
@@ -44,10 +42,6 @@ stdenv.mkDerivation rec {
# Don't try to write to /var/cache/fontconfig at install time.
installFlags = "sysconfdir=$(out)/etc fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false";
- postInstall = ''
- cd "$out/etc/fonts" && tar xvf ${infinality_patch}
- '';
-
passthru = {
# Empty for backward compatibility, there was no versioning before 2.11
configVersion = "";
diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix
index 14983b744df9..c44373625e0f 100644
--- a/pkgs/development/libraries/fontconfig/default.nix
+++ b/pkgs/development/libraries/fontconfig/default.nix
@@ -33,6 +33,10 @@ stdenv.mkDerivation rec {
url = "https://cgit.freedesktop.org/fontconfig/patch/?id=1ab5258f7c";
sha256 = "0x2a4qx51j3gqcp1kp4lisdzmhrkw1zw0r851d82ksgjlc0vkbaz";
})
+
+ # FreeType 2.7 prefixes PCF font family names with the foundry name.
+ # The output of fc-list and fc-query change which breaks the tests.
+ ./test-pcf-family-names-freetype-2.7.patch
];
# additionally required for the glibc-2.25 patch; avoid requiring gperf
postPatch = ''
diff --git a/pkgs/development/libraries/fontconfig/test-pcf-family-names-freetype-2.7.patch b/pkgs/development/libraries/fontconfig/test-pcf-family-names-freetype-2.7.patch
new file mode 100644
index 000000000000..24aa6e5aaa1e
--- /dev/null
+++ b/pkgs/development/libraries/fontconfig/test-pcf-family-names-freetype-2.7.patch
@@ -0,0 +1,18 @@
+diff -Nuar fontconfig-2.10.2-orig/test/out.expected fontconfig-2.10.2/test/out.expected
+--- fontconfig-2.10.2-orig/test/out.expected 2017-03-06 06:45:50.876053093 -0600
++++ fontconfig-2.10.2/test/out.expected 2017-03-06 06:48:18.012514337 -0600
+@@ -1,8 +1,8 @@
+-Fixed:pixelsize=16
+-Fixed:pixelsize=6
++Misc Fixed:pixelsize=6
++Sony Fixed:pixelsize=16
+ =
+-Fixed:pixelsize=16
+-Fixed:pixelsize=6
++Misc Fixed:pixelsize=6
++Sony Fixed:pixelsize=16
+ =
+-Fixed:pixelsize=16
+-Fixed:pixelsize=6
++Misc Fixed:pixelsize=6
++Sony Fixed:pixelsize=16
diff --git a/pkgs/development/libraries/freetype/default.nix b/pkgs/development/libraries/freetype/default.nix
index adf48df2494e..f966965fa5fa 100644
--- a/pkgs/development/libraries/freetype/default.nix
+++ b/pkgs/development/libraries/freetype/default.nix
@@ -1,64 +1,53 @@
-{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, which, zlib, bzip2, libpng, gnumake
-, glib /* passthru only */
-
- # FreeType supports sub-pixel rendering. This is patented by
- # Microsoft, so it is disabled by default. This option allows it to
- # be enabled. See http://www.freetype.org/patents.html.
-, useEncumberedCode ? true
-, useInfinality ? true
+{
+ stdenv, lib, fetchurl, copyPathsToStore,
+ pkgconfig, which,
+ zlib, bzip2, libpng, gnumake, glib,
+
+ # FreeType supports LCD filtering (colloquially referred to as sub-pixel rendering).
+ # LCD filtering is also known as ClearType and covered by several Microsoft patents.
+ # This option allows it to be disabled. See http://www.freetype.org/patents.html.
+ useEncumberedCode ? true,
}:
-assert useInfinality -> useEncumberedCode;
+with { inherit (stdenv.lib) optional optionals optionalString; };
-let
- version = "2.6.5";
+let version = "2.7.1"; name = "freetype-" + version; in
- infinality = fetchFromGitHub {
- owner = "archfan";
- repo = "infinality_bundle";
- rev = "5c0949a477bf43d2ac4e57b4fc39bcc3331002ee";
- sha256 = "17389aqm6rlxl4b5mv1fx4b22x2v2n60hfhixfxqxpd8ialsdi6l";
- };
+stdenv.mkDerivation {
+ inherit name;
-in
-with { inherit (stdenv.lib) optional optionals optionalString; };
-stdenv.mkDerivation rec {
- name = "freetype-${version}";
+ meta = with stdenv.lib; {
+ description = "A font rendering engine";
+ longDescription = ''
+ FreeType is a portable and efficient library for rendering fonts. It
+ supports TrueType, Type 1, CFF fonts, and WOFF, PCF, FNT, BDF and PFR
+ fonts. It has a bytecode interpreter and has an automatic hinter called
+ autofit which can be used instead of hinting instructions included in
+ fonts.
+ '';
+ homepage = https://www.freetype.org/;
+ license = licenses.gpl2Plus; # or the FreeType License (BSD + advertising clause)
+ platforms = platforms.all;
+ maintainers = with maintainers; [ ttuegel ];
+ };
src = fetchurl {
url = "mirror://savannah/freetype/${name}.tar.bz2";
- sha256 = "1w5c87s4rpx9af5b3mk5cjd1yny3c4dq5p9iv3ixb3vr00a6w2p2";
+ sha256 = "121gm15ayfg3rglby8ifh8384mcjb9dhmx9j40zl7yszw72b4frs";
};
- patches = [
- # Patch for validation of OpenType and GX/AAT tables.
- (fetchurl {
- name = "freetype-2.2.1-enable-valid.patch";
- url = "http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/plain/freetype-2.2.1-enable-valid.patch?id=9a81147af83b1166a5f301e379f85927cc610990";
- sha256 = "0zkgqhws2s0j8ywksclf391iijhidb1a406zszd7xbdjn28kmj2l";
- })
- ] ++ optionals (!useInfinality && useEncumberedCode) [
- # Patch to enable subpixel rendering.
- # See https://www.freetype.org/freetype2/docs/reference/ft2-lcd_filtering.html.
- (fetchurl {
- name = "freetype-2.3.0-enable-spr.patch";
- url = http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/plain/freetype-2.3.0-enable-spr.patch?id=9a81147af83b1166a5f301e379f85927cc610990;
- sha256 = "13ni9n5q3nla38wjmxd4f8cy29gp62kjx2l6y6nqhdyiqp8fz8nd";
- })
- ];
-
- prePatch = optionalString useInfinality ''
- patches="$patches $(ls ${infinality}/*_freetype2-iu/*-infinality-*.patch)"
- '';
-
- outputs = [ "out" "dev" ];
-
propagatedBuildInputs = [ zlib bzip2 libpng ]; # needed when linking against freetype
# dependence on harfbuzz is looser than the reverse dependence
nativeBuildInputs = [ pkgconfig which ]
# FreeType requires GNU Make, which is not part of stdenv on FreeBSD.
++ optional (!stdenv.isLinux) gnumake;
+ patches =
+ [ ./enable-table-validation.patch ]
+ ++ optional useEncumberedCode ./enable-subpixel-rendering.patch;
+
+ outputs = [ "out" "dev" ];
+
configureFlags = [ "--disable-static" "--bindir=$(dev)/bin" ];
# The asm for armel is written with the 'asm' keyword.
@@ -76,19 +65,4 @@ stdenv.mkDerivation rec {
# know why it's on the PATH.
configureFlags = "--disable-static CC_BUILD=gcc";
};
-
- meta = with stdenv.lib; {
- description = "A font rendering engine";
- longDescription = ''
- FreeType is a portable and efficient library for rendering fonts. It
- supports TrueType, Type 1, CFF fonts, and WOFF, PCF, FNT, BDF and PFR
- fonts. It has a bytecode interpreter and has an automatic hinter called
- autofit which can be used instead of hinting instructions included in
- fonts.
- '';
- homepage = https://www.freetype.org/;
- license = licenses.gpl2Plus; # or the FreeType License (BSD + advertising clause)
- #ToDo: encumbered = useEncumberedCode;
- platforms = platforms.all;
- };
}
diff --git a/pkgs/development/libraries/freetype/enable-subpixel-rendering.patch b/pkgs/development/libraries/freetype/enable-subpixel-rendering.patch
new file mode 100644
index 000000000000..4f908343e8c1
--- /dev/null
+++ b/pkgs/development/libraries/freetype/enable-subpixel-rendering.patch
@@ -0,0 +1,13 @@
+Index: freetype-2.7.1/include/freetype/config/ftoption.h
+===================================================================
+--- freetype-2.7.1.orig/include/freetype/config/ftoption.h
++++ freetype-2.7.1/include/freetype/config/ftoption.h
+@@ -122,7 +122,7 @@ FT_BEGIN_HEADER
+ /* This is done to allow FreeType clients to run unmodified, forcing */
+ /* them to display normal gray-level anti-aliased glyphs. */
+ /* */
+-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+
+ /*************************************************************************/
diff --git a/pkgs/development/libraries/freetype/enable-table-validation.patch b/pkgs/development/libraries/freetype/enable-table-validation.patch
new file mode 100644
index 000000000000..37419f14f40f
--- /dev/null
+++ b/pkgs/development/libraries/freetype/enable-table-validation.patch
@@ -0,0 +1,22 @@
+Index: freetype-2.7.1/modules.cfg
+===================================================================
+--- freetype-2.7.1.orig/modules.cfg
++++ freetype-2.7.1/modules.cfg
+@@ -120,7 +120,7 @@ AUX_MODULES += cache
+ # TrueType GX/AAT table validation. Needs ftgxval.c below.
+ #
+ # No FT_CONFIG_OPTION_PIC support.
+-# AUX_MODULES += gxvalid
++AUX_MODULES += gxvalid
+
+ # Support for streams compressed with gzip (files with suffix .gz).
+ #
+@@ -143,7 +143,7 @@ AUX_MODULES += bzip2
+ # OpenType table validation. Needs ftotval.c below.
+ #
+ # No FT_CONFIG_OPTION_PIC support.
+-# AUX_MODULES += otvalid
++AUX_MODULES += otvalid
+
+ # Auxiliary PostScript driver component to share common code.
+ #