Merge pull request #23819 from ttuegel/freetype
FreeType 2.7.1 and Fontconfig defaults
This commit is contained in:
commit
1b0d9e9ae6
@ -49,6 +49,18 @@ following incompatible changes:</para>
|
|||||||
rest of the system on a stable release.
|
rest of the system on a stable release.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Updated to FreeType 2.7.1, including a new TrueType engine.
|
||||||
|
The new engine replaces the Infinality engine which was the default in
|
||||||
|
NixOS. The default font rendering settings are now provided by
|
||||||
|
fontconfig-penultimate, replacing fontconfig-ultimate; the new defaults
|
||||||
|
are less invasive and provide rendering that is more consistent with
|
||||||
|
other systems and hopefully with each font designer's intent. Some
|
||||||
|
system-wide configuration has been removed from the Fontconfig NixOS
|
||||||
|
module where user Fontconfig settings are available.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
|
57
nixos/modules/config/fonts/fontconfig-penultimate.nix
Normal file
57
nixos/modules/config/fonts/fontconfig-penultimate.nix
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.fonts.fontconfig.penultimate;
|
||||||
|
|
||||||
|
latestVersion = pkgs.fontconfig.configVersion;
|
||||||
|
|
||||||
|
# The configuration to be included in /etc/font/
|
||||||
|
confPkg = pkgs.runCommand "font-penultimate-conf" {} ''
|
||||||
|
support_folder=$out/etc/fonts/conf.d
|
||||||
|
latest_folder=$out/etc/fonts/${latestVersion}/conf.d
|
||||||
|
|
||||||
|
mkdir -p $support_folder
|
||||||
|
mkdir -p $latest_folder
|
||||||
|
|
||||||
|
# fontconfig ultimate various configuration files
|
||||||
|
ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
|
||||||
|
$support_folder
|
||||||
|
ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
|
||||||
|
$latest_folder
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
|
||||||
|
penultimate = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable fontconfig-penultimate settings to supplement the
|
||||||
|
NixOS defaults by providing per-font rendering defaults and
|
||||||
|
metric aliases.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
|
||||||
|
|
||||||
|
fonts.fontconfig.confPackages = [ confPkg ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -43,7 +43,7 @@ in
|
|||||||
ultimate = {
|
ultimate = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
Enable fontconfig-ultimate settings (formerly known as
|
Enable fontconfig-ultimate settings (formerly known as
|
||||||
Infinality). Besides the customizable settings in this NixOS
|
Infinality). Besides the customizable settings in this NixOS
|
||||||
@ -63,15 +63,6 @@ in
|
|||||||
<literal>none</literal> disables the substitutions.
|
<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.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -81,7 +72,6 @@ in
|
|||||||
config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
|
config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
|
||||||
|
|
||||||
fonts.fontconfig.confPackages = [ confPkg ];
|
fonts.fontconfig.confPackages = [ confPkg ];
|
||||||
environment.variables."INFINALITY_FT" = cfg.preset;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,23 +75,23 @@ let cfg = config.fonts.fontconfig;
|
|||||||
<fontconfig>
|
<fontconfig>
|
||||||
|
|
||||||
<!-- Default rendering settings -->
|
<!-- Default rendering settings -->
|
||||||
<match target="font">
|
<match target="pattern">
|
||||||
<edit mode="assign" name="hinting">
|
<edit mode="append" name="hinting">
|
||||||
${fcBool cfg.hinting.enable}
|
${fcBool cfg.hinting.enable}
|
||||||
</edit>
|
</edit>
|
||||||
<edit mode="assign" name="autohint">
|
<edit mode="append" name="autohint">
|
||||||
${fcBool cfg.hinting.autohint}
|
${fcBool cfg.hinting.autohint}
|
||||||
</edit>
|
</edit>
|
||||||
<edit mode="assign" name="hintstyle">
|
<edit mode="append" name="hintstyle">
|
||||||
<const>hint${cfg.hinting.style}</const>
|
<const>hintslight</const>
|
||||||
</edit>
|
</edit>
|
||||||
<edit mode="assign" name="antialias">
|
<edit mode="append" name="antialias">
|
||||||
${fcBool cfg.antialias}
|
${fcBool cfg.antialias}
|
||||||
</edit>
|
</edit>
|
||||||
<edit mode="assign" name="rgba">
|
<edit mode="append" name="rgba">
|
||||||
<const>${cfg.subpixel.rgba}</const>
|
<const>${cfg.subpixel.rgba}</const>
|
||||||
</edit>
|
</edit>
|
||||||
<edit mode="assign" name="lcdfilter">
|
<edit mode="append" name="lcdfilter">
|
||||||
<const>lcd${cfg.subpixel.lcdfilter}</const>
|
<const>lcd${cfg.subpixel.lcdfilter}</const>
|
||||||
</edit>
|
</edit>
|
||||||
</match>
|
</match>
|
||||||
@ -304,7 +304,11 @@ in
|
|||||||
antialias = mkOption {
|
antialias = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
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 {
|
dpi = mkOption {
|
||||||
@ -358,7 +362,12 @@ in
|
|||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
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 {
|
autohint = mkOption {
|
||||||
@ -370,16 +379,6 @@ in
|
|||||||
correctly-hinted fonts.
|
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 {
|
includeUserConf = mkOption {
|
||||||
@ -398,7 +397,15 @@ in
|
|||||||
default = "rgb";
|
default = "rgb";
|
||||||
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
|
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
|
||||||
description = ''
|
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>.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -406,7 +413,9 @@ in
|
|||||||
default = "default";
|
default = "default";
|
||||||
type = types.enum ["none" "default" "light" "legacy"];
|
type = types.enum ["none" "default" "light" "legacy"];
|
||||||
description = ''
|
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>.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
[
|
[
|
||||||
./config/debug-info.nix
|
./config/debug-info.nix
|
||||||
./config/fonts/corefonts.nix
|
./config/fonts/corefonts.nix
|
||||||
./config/fonts/fontconfig-ultimate.nix
|
|
||||||
./config/fonts/fontconfig.nix
|
./config/fonts/fontconfig.nix
|
||||||
|
./config/fonts/fontconfig-penultimate.nix
|
||||||
|
./config/fonts/fontconfig-ultimate.nix
|
||||||
./config/fonts/fontdir.nix
|
./config/fonts/fontdir.nix
|
||||||
./config/fonts/fonts.nix
|
./config/fonts/fonts.nix
|
||||||
./config/fonts/ghostscript.nix
|
./config/fonts/ghostscript.nix
|
||||||
|
@ -138,9 +138,6 @@ with lib;
|
|||||||
# Unity3D
|
# Unity3D
|
||||||
(mkRenamedOptionModule [ "programs" "unity3d" "enable" ] [ "security" "chromiumSuidSandbox" "enable" ])
|
(mkRenamedOptionModule [ "programs" "unity3d" "enable" ] [ "security" "chromiumSuidSandbox" "enable" ])
|
||||||
|
|
||||||
# fontconfig-ultimate
|
|
||||||
(mkRenamedOptionModule [ "fonts" "fontconfig" "ultimate" "rendering" ] [ "fonts" "fontconfig" "ultimate" "preset" ])
|
|
||||||
|
|
||||||
# murmur
|
# murmur
|
||||||
(mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ])
|
(mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ])
|
||||||
|
|
||||||
@ -199,5 +196,6 @@ with lib;
|
|||||||
"See the 16.09 release notes for more information.")
|
"See the 16.09 release notes for more information.")
|
||||||
(mkRemovedOptionModule [ "services" "phpfpm" "phpIni" ] "")
|
(mkRemovedOptionModule [ "services" "phpfpm" "phpIni" ] "")
|
||||||
(mkRemovedOptionModule [ "services" "dovecot2" "package" ] "")
|
(mkRemovedOptionModule [ "services" "dovecot2" "package" ] "")
|
||||||
|
(mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ let
|
|||||||
Xft.lcdfilter: lcd${fontconfig.subpixel.lcdfilter}
|
Xft.lcdfilter: lcd${fontconfig.subpixel.lcdfilter}
|
||||||
Xft.hinting: ${if fontconfig.hinting.enable then "1" else "0"}
|
Xft.hinting: ${if fontconfig.hinting.enable then "1" else "0"}
|
||||||
Xft.autohint: ${if fontconfig.hinting.autohint 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
|
# file provided by services.xserver.displayManager.session.script
|
||||||
|
18
pkgs/data/fonts/fontconfig-penultimate/default.nix
Normal file
18
pkgs/data/fonts/fontconfig-penultimate/default.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ stdenv, fetchFromGitHub }:
|
||||||
|
|
||||||
|
let version = "0.2"; in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "fontconfig-penultimate-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ttuegel";
|
||||||
|
repo = "fontconfig-penultimate";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "106sjfmxdn2cachgsg0ky3wi676x6nd14y5fcl16n82kghi3d9yf";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/etc/fonts/conf.d
|
||||||
|
cp *.conf $out/etc/fonts/conf.d
|
||||||
|
'';
|
||||||
|
}
|
@ -19,13 +19,6 @@ stdenv.mkDerivation rec {
|
|||||||
sha1 = "c6f7b99986f93c9df78653c3e6a3b5043f65145e";
|
sha1 = "c6f7b99986f93c9df78653c3e6a3b5043f65145e";
|
||||||
};
|
};
|
||||||
|
|
||||||
infinality = fetchFromGitHub {
|
|
||||||
owner = "bohoomil";
|
|
||||||
repo = "fontconfig-ultimate";
|
|
||||||
rev = "730f5e77580677e86522c1f2119aa78803741759";
|
|
||||||
sha256 = "1hbrdpm6xcczs2c2iid7by8h7dsd0jcf7an88s150njyqnjzxjg7";
|
|
||||||
};
|
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
# from https://bugs.freedesktop.org/show_bug.cgi?id=98165
|
# from https://bugs.freedesktop.org/show_bug.cgi?id=98165
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
@ -35,10 +28,6 @@ stdenv.mkDerivation rec {
|
|||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
prePatch = ''
|
|
||||||
patches="$patches $(echo $infinality/*_cairo-iu/*.patch)"
|
|
||||||
'';
|
|
||||||
|
|
||||||
outputs = [ "out" "dev" "devdoc" ];
|
outputs = [ "out" "dev" "devdoc" ];
|
||||||
outputBin = "dev"; # very small
|
outputBin = "dev"; # very small
|
||||||
|
|
||||||
|
@ -8,13 +8,11 @@ stdenv.mkDerivation rec {
|
|||||||
sha256 = "0llraqw86jmw4vzv7inskp3xxm2gc64my08iwq5mzncgfdbfza4f";
|
sha256 = "0llraqw86jmw4vzv7inskp3xxm2gc64my08iwq5mzncgfdbfza4f";
|
||||||
};
|
};
|
||||||
|
|
||||||
infinality_patch =
|
patches = [
|
||||||
let subvers = "1";
|
# FreeType 2.7 prefixes PCF font family names with the foundry name.
|
||||||
in fetchurl {
|
# The output of fc-list and fc-query change which breaks the tests.
|
||||||
url = http://www.infinality.net/fedora/linux/zips/fontconfig-infinality-1-20130104_1.tar.bz2;
|
./test-pcf-family-names-freetype-2.7.patch
|
||||||
sha256 = "1fm5xx0mx2243jrq5rxk4v0ajw2nawpj23399h710bx6hd1rviq7";
|
];
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
outputs = [ "bin" "dev" "lib" "out" ]; # $out contains all the config
|
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.
|
# 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";
|
installFlags = "sysconfdir=$(out)/etc fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false";
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
cd "$out/etc/fonts" && tar xvf ${infinality_patch}
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
# Empty for backward compatibility, there was no versioning before 2.11
|
# Empty for backward compatibility, there was no versioning before 2.11
|
||||||
configVersion = "";
|
configVersion = "";
|
||||||
|
@ -33,6 +33,10 @@ stdenv.mkDerivation rec {
|
|||||||
url = "https://cgit.freedesktop.org/fontconfig/patch/?id=1ab5258f7c";
|
url = "https://cgit.freedesktop.org/fontconfig/patch/?id=1ab5258f7c";
|
||||||
sha256 = "0x2a4qx51j3gqcp1kp4lisdzmhrkw1zw0r851d82ksgjlc0vkbaz";
|
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
|
# additionally required for the glibc-2.25 patch; avoid requiring gperf
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -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
|
@ -1,64 +1,53 @@
|
|||||||
{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, which, zlib, bzip2, libpng, gnumake
|
{
|
||||||
, glib /* passthru only */
|
stdenv, lib, fetchurl, copyPathsToStore,
|
||||||
|
pkgconfig, which,
|
||||||
|
zlib, bzip2, libpng, gnumake, glib,
|
||||||
|
|
||||||
# FreeType supports sub-pixel rendering. This is patented by
|
# FreeType supports LCD filtering (colloquially referred to as sub-pixel rendering).
|
||||||
# Microsoft, so it is disabled by default. This option allows it to
|
# LCD filtering is also known as ClearType and covered by several Microsoft patents.
|
||||||
# be enabled. See http://www.freetype.org/patents.html.
|
# This option allows it to be disabled. See http://www.freetype.org/patents.html.
|
||||||
, useEncumberedCode ? true
|
useEncumberedCode ? true,
|
||||||
, useInfinality ? true
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert useInfinality -> useEncumberedCode;
|
|
||||||
|
|
||||||
let
|
|
||||||
version = "2.6.5";
|
|
||||||
|
|
||||||
infinality = fetchFromGitHub {
|
|
||||||
owner = "archfan";
|
|
||||||
repo = "infinality_bundle";
|
|
||||||
rev = "5c0949a477bf43d2ac4e57b4fc39bcc3331002ee";
|
|
||||||
sha256 = "17389aqm6rlxl4b5mv1fx4b22x2v2n60hfhixfxqxpd8ialsdi6l";
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
with { inherit (stdenv.lib) optional optionals optionalString; };
|
with { inherit (stdenv.lib) optional optionals optionalString; };
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "freetype-${version}";
|
let version = "2.7.1"; name = "freetype-" + version; in
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
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 {
|
src = fetchurl {
|
||||||
url = "mirror://savannah/freetype/${name}.tar.bz2";
|
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
|
propagatedBuildInputs = [ zlib bzip2 libpng ]; # needed when linking against freetype
|
||||||
# dependence on harfbuzz is looser than the reverse dependence
|
# dependence on harfbuzz is looser than the reverse dependence
|
||||||
nativeBuildInputs = [ pkgconfig which ]
|
nativeBuildInputs = [ pkgconfig which ]
|
||||||
# FreeType requires GNU Make, which is not part of stdenv on FreeBSD.
|
# FreeType requires GNU Make, which is not part of stdenv on FreeBSD.
|
||||||
++ optional (!stdenv.isLinux) gnumake;
|
++ optional (!stdenv.isLinux) gnumake;
|
||||||
|
|
||||||
|
patches =
|
||||||
|
[ ./enable-table-validation.patch ]
|
||||||
|
++ optional useEncumberedCode ./enable-subpixel-rendering.patch;
|
||||||
|
|
||||||
|
outputs = [ "out" "dev" ];
|
||||||
|
|
||||||
configureFlags = [ "--disable-static" "--bindir=$(dev)/bin" ];
|
configureFlags = [ "--disable-static" "--bindir=$(dev)/bin" ];
|
||||||
|
|
||||||
# The asm for armel is written with the 'asm' keyword.
|
# The asm for armel is written with the 'asm' keyword.
|
||||||
@ -76,19 +65,4 @@ stdenv.mkDerivation rec {
|
|||||||
# know why it's on the PATH.
|
# know why it's on the PATH.
|
||||||
configureFlags = "--disable-static CC_BUILD=gcc";
|
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;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
@ -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.
|
||||||
|
#
|
@ -7408,6 +7408,8 @@ with pkgs;
|
|||||||
|
|
||||||
fontconfig = callPackage ../development/libraries/fontconfig { };
|
fontconfig = callPackage ../development/libraries/fontconfig { };
|
||||||
|
|
||||||
|
fontconfig-penultimate = callPackage ../data/fonts/fontconfig-penultimate {};
|
||||||
|
|
||||||
fontconfig-ultimate = callPackage ../development/libraries/fontconfig-ultimate {};
|
fontconfig-ultimate = callPackage ../development/libraries/fontconfig-ultimate {};
|
||||||
|
|
||||||
folly = callPackage ../development/libraries/folly { };
|
folly = callPackage ../development/libraries/folly { };
|
||||||
|
Loading…
Reference in New Issue
Block a user