* gnu/packages/patches/freetype-CVE-2017-8105.patch, gnu/packages/patches/freetype-CVE-2017-8287.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/fontutils.scm (freetype)[replacement]: New field. (freetype/fixed): New variable.
		
			
				
	
	
		
			618 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			618 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
| ;;; GNU Guix --- Functional package management for GNU
 | |
| ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 | |
| ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
 | |
| ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 | |
| ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 | |
| ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 | |
| ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 | |
| ;;;
 | |
| ;;; This file is part of GNU Guix.
 | |
| ;;;
 | |
| ;;; GNU Guix is free software; you can redistribute it and/or modify it
 | |
| ;;; under the terms of the GNU General Public License as published by
 | |
| ;;; the Free Software Foundation; either version 3 of the License, or (at
 | |
| ;;; your option) any later version.
 | |
| ;;;
 | |
| ;;; GNU Guix is distributed in the hope that it will be useful, but
 | |
| ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| ;;; GNU General Public License for more details.
 | |
| ;;;
 | |
| ;;; You should have received a copy of the GNU General Public License
 | |
| ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| (define-module (gnu packages fontutils)
 | |
|   #:use-module (gnu packages)
 | |
|   #:use-module (gnu packages compression)
 | |
|   #:use-module (gnu packages ghostscript)
 | |
|   #:use-module (gnu packages perl)
 | |
|   #:use-module (gnu packages pkg-config)
 | |
|   #:use-module (gnu packages autotools)
 | |
|   #: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)
 | |
|   #:use-module (gnu packages xml)
 | |
|   #:use-module ((guix licenses) #:prefix license:)
 | |
|   #:use-module (guix packages)
 | |
|   #:use-module (guix download)
 | |
|   #:use-module (guix svn-download)
 | |
|   #:use-module (guix git-download)
 | |
|   #:use-module (guix build-system cmake)
 | |
|   #:use-module (guix build-system gnu))
 | |
| 
 | |
| (define-public freetype
 | |
|   (package
 | |
|    (name "freetype")
 | |
|    (replacement freetype/fixed)
 | |
|    (version "2.7.1")
 | |
|    (source (origin
 | |
|             (method url-fetch)
 | |
|             (uri (string-append "mirror://savannah/freetype/freetype-"
 | |
|                                 version ".tar.bz2"))
 | |
|             (sha256 (base32
 | |
|                      "121gm15ayfg3rglby8ifh8384mcjb9dhmx9j40zl7yszw72b4frs"))))
 | |
|    (build-system gnu-build-system)
 | |
|    (native-inputs
 | |
|     `(("pkg-config" ,pkg-config)))
 | |
|    (propagated-inputs
 | |
|     ;; These are all in the Requires.private field of freetype2.pc.
 | |
|     ;; XXX: add harfbuzz.
 | |
|     `(("libpng" ,libpng)
 | |
|       ("zlib" ,zlib)))
 | |
|    (synopsis "Font rendering library")
 | |
|    (description
 | |
|     "Freetype is a library that can be used by applications to access the
 | |
| contents of font files.  It provides a uniform interface to access font files.
 | |
| It supports both bitmap and scalable formats, including TrueType, OpenType,
 | |
| Type1, CID, CFF, Windows FON/FNT, X11 PCF, and others.  It supports high-speed
 | |
| anti-aliased glyph bitmap generation with 256 gray levels.")
 | |
|    (license license:freetype)           ; some files have other licenses
 | |
|    (home-page "https://www.freetype.org/")))
 | |
| 
 | |
| (define freetype/fixed
 | |
|   (package
 | |
|     (inherit freetype)
 | |
|     (source
 | |
|       (origin
 | |
|         (inherit (package-source freetype))
 | |
|         (patches (search-patches "freetype-CVE-2017-8105.patch"
 | |
|                                  "freetype-CVE-2017-8287.patch"))))))
 | |
| 
 | |
| (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 woff-tools
 | |
|   (package
 | |
|     (name "woff-tools")
 | |
|     (version "2009.10.04")
 | |
|     (source
 | |
|      (origin
 | |
|        (method url-fetch)
 | |
|        ;; Upstream source is unversioned, so use Debian's versioned tarball
 | |
|        (uri (string-append "mirror://debian/pool/main/w/woff-tools/"
 | |
|                            "woff-tools_" version ".orig.tar.gz"))
 | |
|        (file-name (string-append name "-" version ".tar.gz"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "1i97gkqa6jfzlslsngqf556kx60knlgf7yc9pzsq2pizc6f0d4zl"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (inputs
 | |
|      `(("zlib" ,zlib)))
 | |
|     (arguments
 | |
|      `(#:make-flags '("CC=gcc")
 | |
|        #:tests? #f                      ;no tests
 | |
|        #:phases
 | |
|        (modify-phases %standard-phases
 | |
|          (delete 'configure)            ;no configuration
 | |
|          (replace 'install
 | |
|            (lambda* (#:key outputs #:allow-other-keys)
 | |
|              (let* ((out (assoc-ref outputs "out"))
 | |
|                     (bin (string-append out "/bin")))
 | |
|                (install-file "sfnt2woff" bin)
 | |
|                (install-file "woff2sfnt" bin)))))))
 | |
|     (synopsis "Convert between OpenType and WOFF fonts")
 | |
|     (description
 | |
|      "This package provides two tools:
 | |
| @table @code
 | |
| @item sfnt2woff
 | |
| Converts OpenType fonts to WOFF fonts
 | |
| @item woff2sfnt
 | |
| Converts WOFF fonts to OpenType fonts
 | |
| @end table")
 | |
|     (license (list license:mpl1.1 license:gpl2+ license:lgpl2.1+))
 | |
|     (home-page "https://people.mozilla.com/~jkew/woff/")))
 | |
| 
 | |
| (define-public ttf2eot
 | |
|   (package
 | |
|     (name "ttf2eot")
 | |
|     (version "0.0.2-2")
 | |
|     (source
 | |
|      (origin
 | |
|        (method url-fetch)
 | |
|        (uri (string-append "https://storage.googleapis.com/"
 | |
|                            "google-code-archive-downloads/v2/"
 | |
|                            "code.google.com/ttf2eot/"
 | |
|                            "ttf2eot-" version ".tar.gz"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "1f4dzzmhn0208dvbm3ia5ar6ls9apwc6ampy5blmfxkigi6z0g02"))
 | |
|        (patches (list (search-patch "ttf2eot-cstddef.patch")))))
 | |
|     (build-system gnu-build-system)
 | |
|     (arguments
 | |
|      `(#:tests? #f                      ;no tests
 | |
|        #:phases
 | |
|        (modify-phases %standard-phases
 | |
|          (delete 'configure)            ;no configuration
 | |
|          (replace 'install
 | |
|            (lambda* (#:key outputs #:allow-other-keys)
 | |
|              (let* ((out (assoc-ref outputs "out"))
 | |
|                     (bin (string-append out "/bin")))
 | |
|                (install-file "ttf2eot" bin)))))))
 | |
|     (synopsis "Convert from TrueType to Embeddable Open Type")
 | |
|     (description
 | |
|      "This package contains a commandline wrapper around OpenTypeUtilities.cpp
 | |
| from Chromium, used to make EOT (Embeddable Open Type) files from
 | |
| TTF (TrueType/OpenType Font) files.")
 | |
|     ;; While the README states "License: Derived from WebKit, so BSD/LGPL
 | |
|     ;; 2/LGPL 2.1", the single derived source file includes only BSD in its
 | |
|     ;; license header, and the wrapper source contains no license header.
 | |
|     (license license:bsd-2)
 | |
|     (home-page "https://code.google.com/archive/p/ttf2eot/")))
 | |
| 
 | |
| (define-public woff2
 | |
|   (let ((commit "4e698b8c6c5e070d53c340db9ddf160e21070ede")
 | |
|         (revision "1"))
 | |
|     (package
 | |
|       (name "woff2")
 | |
|       (version (string-append "20160306-" revision "."
 | |
|                               (string-take commit 7)))
 | |
|       (source (origin
 | |
|                 (method git-fetch)
 | |
|                 (uri (git-reference
 | |
|                       (url "https://github.com/google/woff2.git")
 | |
|                       (commit commit)))
 | |
|                 (file-name (string-append name "-" version ".tar.xz"))
 | |
|                 (sha256
 | |
|                  (base32
 | |
|                   "0wka0yhf0cjmd4rv2jckxpyv6lb5ckj4nj0k1ajq5hrjy7f30lcp"))
 | |
|                 (patches (list (search-patch "woff2-libbrotli.patch")))))
 | |
|       (build-system gnu-build-system)
 | |
|       (native-inputs
 | |
|        `(("pkg-config" ,pkg-config)))
 | |
|       (inputs
 | |
|        `(("brotli" ,brotli)))
 | |
|       (arguments
 | |
|        `(#:tests? #f                    ;no tests
 | |
|          #:phases (modify-phases %standard-phases
 | |
|                     (delete 'configure)
 | |
|                     (replace 'install
 | |
|                       (lambda* (#:key outputs #:allow-other-keys)
 | |
|                         (let* ((out (assoc-ref outputs "out"))
 | |
|                                (bin (string-append out "/bin")))
 | |
|                           (install-file "woff2_compress" bin)
 | |
|                           (install-file "woff2_decompress" bin)
 | |
|                           #t))))))
 | |
|       (synopsis "Compress TrueType fonts to WOFF2")
 | |
|       (description
 | |
|        "This package provides utilities for compressing/decompressing TrueType
 | |
| fonts to/from the WOFF2 format.")
 | |
|       (license license:asl2.0)
 | |
|       (home-page "https://github.com/google/woff2"))))
 | |
| 
 | |
| (define-public fontconfig
 | |
|   (package
 | |
|    (name "fontconfig")
 | |
|    (version "2.12.1")
 | |
|    (source (origin
 | |
|             (method url-fetch)
 | |
|             (uri (string-append
 | |
|                    "https://www.freedesktop.org/software/fontconfig/release/fontconfig-"
 | |
|                    version ".tar.bz2"))
 | |
|             (patches (search-patches "fontconfig-charwidth-symbol-conflict.patch"
 | |
|                                      "fontconfig-path-max.patch"))
 | |
|             (sha256 (base32
 | |
|                      "1wy7svvp7df6bjpg1m5vizb3ngd7rhb20vpclv3x3qa71khs6jdl"))))
 | |
|    (build-system gnu-build-system)
 | |
|    (propagated-inputs `(("expat" ,expat)
 | |
|                         ("freetype" ,freetype)))
 | |
|    (inputs `(("gs-fonts" ,gs-fonts)))
 | |
|    (native-inputs
 | |
|       `(("pkg-config" ,pkg-config)))
 | |
|    (arguments
 | |
|     `(#:configure-flags
 | |
|       (list "--with-cache-dir=/var/cache/fontconfig"
 | |
|             ;; register gs-fonts as default fonts
 | |
|             (string-append "--with-default-fonts="
 | |
|                            (assoc-ref %build-inputs "gs-fonts")
 | |
|                            "/share/fonts")
 | |
| 
 | |
|             ;; Register fonts from user and system profiles.
 | |
|             (string-append "--with-add-fonts="
 | |
|                            "~/.guix-profile/share/fonts,"
 | |
|                            "/run/current-system/profile/share/fonts")
 | |
| 
 | |
|             ;; python is not actually needed
 | |
|             "PYTHON=false")
 | |
|       #:phases
 | |
|       (modify-phases %standard-phases
 | |
|         (add-after 'unpack 'fix-tests-for-freetype-2.7.1
 | |
|           (lambda _
 | |
|             (substitute* "test/run-test.sh"
 | |
|               (("\\\| sort") "| cut -d' ' -f2 | sort"))
 | |
|             #t))
 | |
|         (replace 'install
 | |
|                  (lambda _
 | |
|                    ;; Don't try to create /var/cache/fontconfig.
 | |
|                    (zero? (system* "make" "install"
 | |
|                                    "fc_cachedir=$(TMPDIR)"
 | |
|                                    "RUN_FC_CACHE_TEST=false")))))))
 | |
|    (synopsis "Library for configuring and customizing font access")
 | |
|    (description
 | |
|     "Fontconfig can discover new fonts when installed automatically;
 | |
| perform font name substitution, so that appropriate alternative fonts can
 | |
| be selected if fonts are missing;
 | |
| identify the set of fonts required to completely cover a set of languages;
 | |
| have GUI configuration tools built as it uses an XML-based configuration file;
 | |
| efficiently and quickly find needed fonts among the set of installed fonts;
 | |
| be used in concert with the X Render Extension and FreeType to implement
 | |
| high quality, anti-aliased and subpixel rendered text on a display.")
 | |
|    ; The exact license is more X11-style than BSD-style.
 | |
|    (license (license:non-copyleft "file://COPYING"
 | |
|                        "See COPYING in the distribution."))
 | |
|    (home-page "http://www.freedesktop.org/wiki/Software/fontconfig")))
 | |
| 
 | |
| (define-public t1lib
 | |
|   (package
 | |
|    (name "t1lib")
 | |
|    (version "5.1.2")
 | |
|    (source (origin
 | |
|             (method url-fetch)
 | |
|             (uri (list (string-append "ftp://sunsite.unc.edu/pub/Linux/libs/"
 | |
|                                       "graphics/" name "-" version ".tar.gz")
 | |
|                        (string-append "https://fossies.org/linux/misc/old/"
 | |
|                                       name "-" version ".tar.gz")))
 | |
|             (sha256 (base32
 | |
|                      "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2"))
 | |
|             (patches (search-patches
 | |
|                        "t1lib-CVE-2010-2642.patch"
 | |
|                        "t1lib-CVE-2011-0764.patch"
 | |
|                        "t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch"))))
 | |
|    (build-system gnu-build-system)
 | |
|    (arguments
 | |
|     ;; Making the documentation requires latex, but t1lib is also an input
 | |
|     ;; for building texlive.
 | |
|     `(#:tests? #f ; no test target
 | |
|       #:make-flags
 | |
|       '("without_doc")))
 | |
|    (synopsis "Library for generating bitmaps from Type 1 fonts")
 | |
|    (description
 | |
|     "T1lib is a library for generating/rasterising bitmaps from Type 1 fonts.
 | |
| It is based on the code of the X11 rasteriser of the X11 project.
 | |
| 
 | |
| The bitmaps created by t1lib are returned in a data structure with type
 | |
| GLYPH.  This special GLYPH-type is also used in the X11 window system to
 | |
| describe character bitmaps.  It contains the bitmap data as well as some
 | |
| metric information.  But t1lib is in itself entirely independent of the
 | |
| X11-system or any other graphical user interface.")
 | |
|    (license license:gpl2)
 | |
|    (home-page "http://www.t1lib.org/")))
 | |
| 
 | |
| (define-public teckit
 | |
|   (package
 | |
|    (name "teckit")
 | |
|    (version "2.5.4")
 | |
|    (source (origin
 | |
|             ;; Downloaded tarballs vary with each download, so we use an
 | |
|             ;; svn snapshot. The 2.5.4 release seems to be made in r128,
 | |
|             ;; but r132 updates additional files to contain the correct
 | |
|             ;; version number (r129 to r131 do not concern TRUNK).
 | |
|             (method svn-fetch)
 | |
|             (uri (svn-reference
 | |
|                    (url "https://scripts.sil.org/svn-public/teckit/TRUNK")
 | |
|                    (revision 132)))
 | |
|             (file-name (string-append name "-" version))
 | |
|             (sha256
 | |
|               (base32
 | |
|                 "1xqkqgw30pb24snh46srmjs2j4zhz2dfi5pf7znia0k34mrpwivz"))))
 | |
|    (build-system gnu-build-system)
 | |
|    (inputs `(("zlib" ,zlib)))
 | |
|    (native-inputs
 | |
|     `(("autoconf" ,autoconf)
 | |
|       ("automake" ,automake)
 | |
|       ("libtool" ,libtool)
 | |
|       ("perl" ,perl))) ; for the tests
 | |
|    (arguments
 | |
|     `(#:phases
 | |
|       (modify-phases %standard-phases
 | |
|         (add-after 'unpack 'autogen
 | |
|           (lambda _
 | |
|             (zero? (system* "sh" "autogen.sh")))))))
 | |
|    (synopsis "Toolkit for encoding conversions")
 | |
|    (description
 | |
|     "TECkit is a low-level toolkit intended to be used by other applications
 | |
| that need to perform encoding conversions (e.g., when importing legacy data
 | |
| into a Unicode-based application).  The primary component of the TECkit
 | |
| package is therefore a library that performs conversions; this is the
 | |
| \"TECkit engine\".  The engine relies on mapping tables in a specific binary
 | |
| format (for which documentation is available); there is a compiler that
 | |
| creates such tables from a human-readable mapping description (a simple
 | |
| text file).
 | |
| 
 | |
| To facilitate the development and testing of mapping tables for TECkit,
 | |
| several applications are also included in the current package; these
 | |
| include simple tools for applying conversions to plain-text and Standard
 | |
| Format files, as well as both command-line and simple GUI versions of the
 | |
| TECkit compiler.  However, it is not intended that these tools will be the
 | |
| primary means by which end users perform conversions, and they have not
 | |
| been designed, tested, and debugged to the extent that general-purpose
 | |
| applications should be.")
 | |
|    (license license:lgpl2.1+)
 | |
|    (home-page "http://scripts.sil.org/cms/scripts/page.php?cat_id=teckit")))
 | |
| 
 | |
| (define-public graphite2
 | |
|   (package
 | |
|    (name "graphite2")
 | |
|    (version "1.3.9")
 | |
|    (replacement graphite2/fixed)
 | |
|    (source
 | |
|      (origin
 | |
|        (method url-fetch)
 | |
|        (uri (string-append "https://github.com/silnrsi/graphite/releases/"
 | |
|                            "download/" version "/" name "-" version ".tgz"))
 | |
|        (patches (search-patches "graphite2-ffloat-store.patch"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "0rs5h7m340z75kygx8d72cps0q6yvvqa9i788vym7585cfv8a0gc"))))
 | |
|    (build-system cmake-build-system)
 | |
|    (native-inputs
 | |
|     `(("python" ,python-2) ; because of "import imap" in tests
 | |
|       ("python-fonttools" ,python2-fonttools)))
 | |
|    (inputs
 | |
|     `(("freetype" ,freetype)))
 | |
|    (synopsis "Reimplementation of the SIL Graphite text processing engine")
 | |
|    (description
 | |
|     "Graphite2 is a reimplementation of the SIL Graphite text processing
 | |
| engine.  Graphite is a smart font technology designed to facilitate the
 | |
| process known as shaping.  This process takes an input Unicode text string
 | |
| and returns a sequence of positioned glyphids from the font.")
 | |
|    (license license:lgpl2.1+)
 | |
|    (home-page "https://github.com/silnrsi/graphite")))
 | |
| 
 | |
| (define graphite2/fixed
 | |
|   (package
 | |
|     (inherit graphite2)
 | |
|     (name "graphite2")
 | |
|     (version "1.3.9")
 | |
|     (replacement #f)
 | |
|     (source
 | |
|      (origin
 | |
|        (method url-fetch)
 | |
|        (uri (string-append "https://github.com/silnrsi/graphite/releases/"
 | |
|                            "download/" version "/" name "-" version ".tgz"))
 | |
|        (patches (search-patches
 | |
|                  "graphite2-ffloat-store.patch"
 | |
|                  "graphite2-check-code-point-limit.patch"
 | |
|                  "graphite2-CVE-2017-5436.patch"
 | |
|                  "graphite2-fix-32-bit-wrap-arounds.patch"
 | |
|                  "graphite2-non-linear-classes-even-number.patch"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "0rs5h7m340z75kygx8d72cps0q6yvvqa9i788vym7585cfv8a0gc"))))))
 | |
| 
 | |
| (define-public potrace
 | |
|   (package
 | |
|     (name "potrace")
 | |
|     (version "1.14")
 | |
|     (source
 | |
|      (origin
 | |
|       (method url-fetch)
 | |
|       (uri (string-append "mirror://sourceforge/potrace/" version
 | |
|                           "/potrace-" version ".tar.gz"))
 | |
|       (sha256
 | |
|        (base32
 | |
|         "0znr9i0ljb818qiwm22zw63g11a4v08gc5xkh0wbdp6g259vcwnv"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (native-inputs `(("ghostscript" ,ghostscript))) ;for tests
 | |
|     (inputs `(("zlib" ,zlib)))
 | |
|     (arguments
 | |
|      `(#:configure-flags
 | |
|       `("--with-libpotrace"))) ; install library and headers
 | |
|     (synopsis "Transform bitmaps into vector graphics")
 | |
|     (description
 | |
|      "Potrace is a tool for tracing a bitmap, which means, transforming a
 | |
| bitmap into a smooth, scalable image.  The input is a bitmap (PBM, PGM, PPM,
 | |
| or BMP format), and the default output is an encapsulated PostScript
 | |
| file (EPS).  A typical use is to create EPS files from scanned data, such as
 | |
| company or university logos, handwritten notes, etc.  The resulting image is
 | |
| not \"jaggy\" like a bitmap, but smooth.  It can then be rendered at any
 | |
| resolution.")
 | |
|     (license license:gpl2+)
 | |
|     (home-page "http://potrace.sourceforge.net/")))
 | |
| 
 | |
| (define-public libotf
 | |
|   (package
 | |
|     (name "libotf")
 | |
|     (version "0.9.13")
 | |
|     (source (origin
 | |
|               (method url-fetch)
 | |
|               (uri (string-append "mirror://savannah/m17n/libotf-"
 | |
|                                   version ".tar.gz"))
 | |
|               (sha256
 | |
|                (base32 "0239zvfan56w7vrppriwy77fzb10ag9llaz15nsraps2a2x6di3v"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (propagated-inputs
 | |
|      `(("freetype" ,freetype)))
 | |
|     (home-page "http://www.nongnu.org/m17n/")
 | |
|     (synopsis "Library for handling OpenType Font")
 | |
|     (description "This library can read Open Type Layout Tables from an OTF
 | |
| file.  Currently these tables are supported; head, name, cmap, GDEF, GSUB, and
 | |
| GPOS.  It can convert a Unicode character sequence to a glyph code sequence by
 | |
| using the above tables.")
 | |
|     (license license:lgpl2.0+)))
 | |
| 
 | |
| (define-public libspiro
 | |
|   (package
 | |
|     (name "libspiro")
 | |
|     (version "20071029")
 | |
|     (source
 | |
|      (origin
 | |
|       (method url-fetch)
 | |
|       (uri (string-append "mirror://sourceforge/libspiro/libspiro/"
 | |
|                           version "/libspiro_src-" version ".tar.bz2"))
 | |
|       (sha256
 | |
|        (base32
 | |
|         "1kylz8pvwnb85yya150r9i6mhbpzx38f32qy523qg3ylgd9b3zhy"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (arguments `(#:tests? #f))          ;no tests
 | |
|     (synopsis "Clothoid to bezier conversion library")
 | |
|     (description
 | |
|      "Raph Levien's Spiro package as a library.  A mechanism for drawing
 | |
| smooth contours with constant curvature at the spline joins.")
 | |
|     (license license:gpl2+)
 | |
|     (home-page "http://libspiro.sourceforge.net/")))
 | |
| 
 | |
| (define-public libuninameslist
 | |
|   (package
 | |
|     (name "libuninameslist")
 | |
|     (version "20160701")
 | |
|     (source
 | |
|      (origin
 | |
|        (method url-fetch)
 | |
|        (uri (string-append "https://github.com/fontforge/libuninameslist/"
 | |
|                            "archive/" version ".tar.gz"))
 | |
|        (file-name (string-append name "-" version ".tar.gz"))
 | |
|        (sha256
 | |
|         (base32
 | |
|          "12xxb301a66dh282pywpy00wxiaq5z8z20qm3pr2vql04r2g8d0x"))))
 | |
|     (build-system gnu-build-system)
 | |
|     (native-inputs `(("autoconf" ,autoconf)
 | |
|                      ("automake" ,automake)
 | |
|                      ("libtool" ,libtool)))
 | |
|     (arguments
 | |
|      `(#:phases
 | |
|        (modify-phases %standard-phases
 | |
|          (add-after 'unpack 'bootstrap
 | |
|            (lambda _ (zero? (system* "autoreconf" "-vi")))))))
 | |
|     (synopsis "Unicode names and annotation list")
 | |
|     (description
 | |
|      "LibUniNamesList holds www.unicode.org Nameslist.txt data which can be
 | |
| useful for programs that need Unicode \"Names\", \"Annotations\", and block
 | |
| definitions.")
 | |
|     (license license:gpl2)
 | |
|     (home-page "https://github.com/fontforge/libuninameslist")))
 | |
| 
 | |
| (define-public fontforge
 | |
|   (package
 | |
|    (name "fontforge")
 | |
|    (version "20160404")
 | |
|    (source (origin
 | |
|             (method url-fetch)
 | |
|             (uri (string-append
 | |
|                   "https://github.com/fontforge/fontforge/releases/download/"
 | |
|                   version "/fontforge-dist-" version ".tar.gz"))
 | |
|             (sha256 (base32
 | |
|                      "1kavnhbkzc1hk6f39fynq9s0haama81ddrbld4b5x60d0dbaawvc"))
 | |
|             (modules '((guix build utils)))
 | |
|             (snippet
 | |
|              '(begin
 | |
|                ;; Make builds bit-reproducible by using fixed date strings.
 | |
|                (substitute* "configure"
 | |
|                  (("^FONTFORGE_MODTIME=.*$")
 | |
|                   "FONTFORGE_MODTIME=\"1459819518L\"\n")
 | |
|                  (("^FONTFORGE_MODTIME_STR=.*$")
 | |
|                   "FONTFORGE_MODTIME_STR=\"20:25 CDT  4-Apr-2016\"\n")
 | |
|                  (("^FONTFORGE_VERSIONDATE=.*$")
 | |
|                   "FONTFORGE_VERSIONDATE=\"20160404\"\n"))))
 | |
|             (patches (list (search-patch "fontforge-svg-modtime.patch")))))
 | |
|    (build-system gnu-build-system)
 | |
|    (native-inputs
 | |
|     `(("pkg-config" ,pkg-config)))
 | |
|    (inputs `(("cairo"           ,cairo)
 | |
|              ("fontconfig"      ,fontconfig) ;dlopen'd
 | |
|              ("freetype"        ,freetype)
 | |
|              ("gettext"         ,gettext-minimal)
 | |
|              ("glib"            ,glib) ;needed for pango detection
 | |
|              ("libICE"          ,libice)
 | |
|              ("libSM"           ,libsm)
 | |
|              ("libX11"          ,libx11)
 | |
|              ("libXi"           ,libxi)
 | |
|              ("libjpeg"         ,libjpeg)
 | |
|              ("libltdl"         ,libltdl)
 | |
|              ("libpng"          ,libpng)
 | |
|              ("libspiro"        ,libspiro)
 | |
|              ("libtiff"         ,libtiff)
 | |
|              ("libungif"        ,libungif)
 | |
|              ("libuninameslist" ,libuninameslist)
 | |
|              ("libxft"          ,libxft)
 | |
|              ("libxml2"         ,libxml2)
 | |
|              ("pango"           ,pango)
 | |
|              ("potrace"         ,potrace)
 | |
|              ("python"          ,python)
 | |
|              ("zlib"            ,zlib)))
 | |
|    (arguments
 | |
|     '(#:tests? #f
 | |
|       #:phases
 | |
|       (modify-phases %standard-phases
 | |
|         (add-after 'build 'build-contrib
 | |
|           (lambda* (#:key outputs #:allow-other-keys)
 | |
|             (let* ((out (assoc-ref outputs "out"))
 | |
|                    (bin (string-append out "/bin")))
 | |
|               (and (zero? (system* "make" "-Ccontrib/fonttools"
 | |
|                                    "CC=gcc" "showttf"))
 | |
|                    (begin (install-file "contrib/fonttools/showttf" bin)
 | |
|                           #t)))))
 | |
|         (add-after 'install 'set-library-path
 | |
|           (lambda* (#:key inputs outputs #:allow-other-keys)
 | |
|             (let ((out (assoc-ref outputs "out"))
 | |
|                   (potrace (string-append (assoc-ref inputs "potrace") "/bin")))
 | |
|               (wrap-program (string-append out "/bin/fontforge")
 | |
|                 ;; Fontforge dynamically opens libraries.
 | |
|                 `("LD_LIBRARY_PATH" ":" prefix
 | |
|                   ,(map (lambda (input)
 | |
|                           (string-append (assoc-ref inputs input)
 | |
|                                          "/lib"))
 | |
|                         '("libtiff" "libjpeg" "libpng" "libungif"
 | |
|                           "libxml2" "zlib" "libspiro" "freetype"
 | |
|                           "pango" "cairo" "fontconfig")))
 | |
|                 ;; Checks for potrace program at runtime
 | |
|                 `("PATH" ":" prefix (,potrace)))))))))
 | |
|    (synopsis "Outline font editor")
 | |
|    (description
 | |
|     "FontForge allows you to create and modify postscript, truetype and
 | |
| opentype fonts.  You can save fonts in many different outline formats, and
 | |
| generate bitmaps.")
 | |
|    (license license:gpl3+)
 | |
|    (home-page "http://fontforge.org/")))
 |