mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
gnu: Add ttfautohint.
* gnu/packages/fontutils.scm (ttfautohint): New variable. * gnu/packages/patches/ttfautohint-source-date-epoch.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it.
This commit is contained in:
parent
08fbfa8d21
commit
1e69db8f14
3 changed files with 105 additions and 1 deletions
|
@ -727,6 +727,7 @@ dist_patch_DATA = \
|
|||
gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \
|
||||
gnu/packages/patches/tinyxml-use-stl.patch \
|
||||
gnu/packages/patches/tk-find-library.patch \
|
||||
gnu/packages/patches/ttfautohint-source-date-epoch.patch \
|
||||
gnu/packages/patches/tophat-build-with-later-seqan.patch \
|
||||
gnu/packages/patches/torsocks-dns-test.patch \
|
||||
gnu/packages/patches/tvtime-gcc41.patch \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
|
@ -29,6 +29,8 @@ (define-module (gnu packages fontutils)
|
|||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages gtk)
|
||||
|
@ -70,6 +72,37 @@ (define-public freetype
|
|||
(license license:freetype) ; some files have other licenses
|
||||
(home-page "http://www.freetype.org/")))
|
||||
|
||||
(define-public ttfautohint
|
||||
(package
|
||||
(name "ttfautohint")
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/freetype/ttfautohint-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lgghck46p33z3hg8dnl76jryig4fh6d8rhzms837zp7x4hyfkv4"))
|
||||
(patches (list (search-patch "ttfautohint-source-date-epoch.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("flex" ,flex)
|
||||
("bison" ,bison)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("freetype" ,freetype)
|
||||
("harfbuzz" ,harfbuzz)))
|
||||
(arguments
|
||||
`(#:configure-flags '("--with-qt=no"))) ;no gui
|
||||
(synopsis "Automated font hinting")
|
||||
(description
|
||||
"ttfautohint provides a 99% automated hinting process and a platform for
|
||||
finely hand-hinting the last 1%. It is ideal for web fonts and supports many
|
||||
scripts.")
|
||||
(license (list license:gpl2+ license:freetype)) ;choose one or the other
|
||||
(home-page "http://www.freetype.org/ttfautohint/")))
|
||||
|
||||
(define-public fontconfig
|
||||
(package
|
||||
(name "fontconfig")
|
||||
|
|
70
gnu/packages/patches/ttfautohint-source-date-epoch.patch
Normal file
70
gnu/packages/patches/ttfautohint-source-date-epoch.patch
Normal file
|
@ -0,0 +1,70 @@
|
|||
Honour an external definition of SOURCE_DATE_EPOCH when updating the embedded
|
||||
modification date in TTF/TTC files.
|
||||
|
||||
--- a/lib/tatime.c
|
||||
+++ b/lib/tatime.c
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
#include <time.h>
|
||||
#include <stdint.h>
|
||||
+#include <errno.h>
|
||||
+#include <limits.h>
|
||||
|
||||
#include "ta.h"
|
||||
|
||||
@@ -27,12 +29,51 @@ TA_get_current_time(FT_ULong* high,
|
||||
{
|
||||
/* there have been 24107 days between January 1st, 1904 (the epoch of */
|
||||
/* OpenType), and January 1st, 1970 (the epoch of the `time' function) */
|
||||
- TA_ULongLong seconds_to_1970 = 24107 * 24 * 60 * 60;
|
||||
- TA_ULongLong seconds_to_today = seconds_to_1970 + (TA_ULongLong)time(NULL);
|
||||
+ const TA_ULongLong seconds_to_1970 = 24107 * 24 * 60 * 60;
|
||||
+ TA_ULongLong seconds_to_build;
|
||||
|
||||
+ time_t now;
|
||||
+ char *source_date_epoch, *endptr;
|
||||
+ TA_ULongLong epoch;
|
||||
+ source_date_epoch = getenv("SOURCE_DATE_EPOCH");
|
||||
+ if (source_date_epoch) {
|
||||
+ errno = 0;
|
||||
+ epoch = strtoull(source_date_epoch, &endptr, 10);
|
||||
+ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
|
||||
+ || (errno != 0 && epoch == 0)) {
|
||||
+ fprintf(stderr,
|
||||
+ "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n",
|
||||
+ strerror(errno));
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ if (endptr == source_date_epoch) {
|
||||
+ fprintf(stderr,
|
||||
+ "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n",
|
||||
+ endptr);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ if (*endptr != '\0') {
|
||||
+ fprintf(stderr,
|
||||
+ "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n",
|
||||
+ endptr);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ if (epoch > ULONG_MAX) {
|
||||
+ fprintf(stderr,
|
||||
+ "Environment variable $SOURCE_DATE_EPOCH: value must be smaller "
|
||||
+ "than or equal to: %lu but was found to be: %llu \n",
|
||||
+ ULONG_MAX, epoch);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
+ now = epoch;
|
||||
+ } else {
|
||||
+ now = time(NULL);
|
||||
+ }
|
||||
|
||||
- *high = (FT_ULong)(seconds_to_today >> 32);
|
||||
- *low = (FT_ULong)seconds_to_today;
|
||||
+ seconds_to_build = seconds_to_1970 + (TA_ULongLong)now;
|
||||
+
|
||||
+ *high = (FT_ULong)(seconds_to_build >> 32);
|
||||
+ *low = (FT_ULong)seconds_to_build;
|
||||
}
|
||||
|
||||
/* end of tatime.c */
|
Loading…
Reference in a new issue