Commit | Line | Data |
---|---|---|
b387a1c5 | 1 | ;;; GNU Guix --- Functional package management for GNU |
f1597358 | 2 | ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr> |
1e69db8f | 3 | ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> |
e86409c5 | 4 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> |
0be22e44 | 5 | ;;; Copyright © 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il> |
37e78bc7 | 6 | ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> |
4c20b0bc | 7 | ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> |
3c986a7d | 8 | ;;; Copyright © 2017 Nikita <nikita@n0.is> |
46175ad3 | 9 | ;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> |
695c501d | 10 | ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> |
a6f38001 | 11 | ;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> |
6e3cbafb | 12 | ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> |
cc51c03f | 13 | ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> |
2c9e2587 | 14 | ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
0ad27959 | 15 | ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> |
0b2f4307 | 16 | ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
6f12880a | 17 | ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> |
b5bbbca6 | 18 | ;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org> |
b387a1c5 AE |
19 | ;;; |
20 | ;;; This file is part of GNU Guix. | |
21 | ;;; | |
22 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
23 | ;;; under the terms of the GNU General Public License as published by | |
24 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
25 | ;;; your option) any later version. | |
26 | ;;; | |
27 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
28 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
29 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
30 | ;;; GNU General Public License for more details. | |
31 | ;;; | |
32 | ;;; You should have received a copy of the GNU General Public License | |
33 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
34 | ||
a86177d6 | 35 | (define-module (gnu packages fontutils) |
b387a1c5 | 36 | #:use-module (gnu packages) |
0c68fff5 MB |
37 | #:use-module (gnu packages autotools) |
38 | #:use-module (gnu packages bison) | |
427a51fd | 39 | #:use-module (gnu packages check) |
0c68fff5 | 40 | #:use-module (gnu packages compression) |
25e08f32 | 41 | #:use-module (gnu packages datastructures) |
0ad27959 | 42 | #:use-module (gnu packages docbook) |
0c68fff5 MB |
43 | #:use-module (gnu packages flex) |
44 | #:use-module (gnu packages fonts) | |
45 | #:use-module (gnu packages freedesktop) | |
46 | #:use-module (gnu packages fribidi) | |
25e08f32 | 47 | #:use-module (gnu packages gcc) |
0c68fff5 | 48 | #:use-module (gnu packages gettext) |
b972db72 | 49 | #:use-module (gnu packages ghostscript) |
0c68fff5 MB |
50 | #:use-module (gnu packages glib) |
51 | #:use-module (gnu packages gnome) | |
52 | #:use-module (gnu packages gperf) | |
53 | #:use-module (gnu packages gtk) | |
54 | #:use-module (gnu packages image) | |
019c0eda | 55 | #:use-module (gnu packages linux) |
25e08f32 | 56 | #:use-module (gnu packages man) |
319e2d17 | 57 | #:use-module (gnu packages perl) |
6e4da6ea | 58 | #:use-module (gnu packages pkg-config) |
319e2d17 | 59 | #:use-module (gnu packages python) |
44d10b1f | 60 | #:use-module (gnu packages python-xyz) |
ad8aaf47 | 61 | #:use-module (gnu packages sqlite) |
5581279f | 62 | #:use-module (gnu packages webkit) |
25e08f32 | 63 | #:use-module (gnu packages xdisorg) |
0c68fff5 MB |
64 | #:use-module (gnu packages xml) |
65 | #:use-module (gnu packages xorg) | |
0ad27959 | 66 | #:use-module (gnu packages tex) |
b5b73a82 | 67 | #:use-module ((guix licenses) #:prefix license:) |
b387a1c5 AE |
68 | #:use-module (guix packages) |
69 | #:use-module (guix download) | |
1436c5c7 | 70 | #:use-module (guix svn-download) |
579760d0 | 71 | #:use-module (guix git-download) |
319e2d17 | 72 | #:use-module (guix build-system cmake) |
427a51fd | 73 | #:use-module (guix build-system gnu) |
ad8aaf47 | 74 | #:use-module (guix build-system python) |
4affa918 MB |
75 | #:use-module (guix build-system meson) |
76 | #:use-module (guix utils) | |
77 | #:use-module (srfi srfi-1)) | |
b387a1c5 AE |
78 | |
79 | (define-public freetype | |
80 | (package | |
81 | (name "freetype") | |
79b31767 LC |
82 | (version "2.10.4") |
83 | (source | |
84 | (origin | |
85 | (method url-fetch) | |
86 | (uri (string-append "mirror://savannah/freetype/freetype-" | |
87 | version ".tar.xz")) | |
88 | (sha256 | |
89 | (base32 "112pyy215chg7f7fmp2l9374chhhpihbh8wgpj5nj6avj3c59a46")))) | |
b387a1c5 | 90 | (build-system gnu-build-system) |
695c501d RW |
91 | (arguments |
92 | ;; The use of "freetype-config" is deprecated, but other packages still | |
93 | ;; depend on it. | |
94 | `(#:configure-flags (list "--enable-freetype-config"))) | |
6983ba56 | 95 | (native-inputs |
8394619b | 96 | (list pkg-config)) |
6983ba56 SB |
97 | (propagated-inputs |
98 | ;; These are all in the Requires.private field of freetype2.pc. | |
99 | ;; XXX: add harfbuzz. | |
8394619b | 100 | (list libpng zlib)) |
35b9e423 | 101 | (synopsis "Font rendering library") |
b387a1c5 AE |
102 | (description |
103 | "Freetype is a library that can be used by applications to access the | |
35b9e423 | 104 | contents of font files. It provides a uniform interface to access font files. |
b387a1c5 | 105 | It supports both bitmap and scalable formats, including TrueType, OpenType, |
35b9e423 | 106 | Type1, CID, CFF, Windows FON/FNT, X11 PCF, and others. It supports high-speed |
b387a1c5 | 107 | anti-aliased glyph bitmap generation with 256 gray levels.") |
79c398a2 | 108 | (license license:freetype) ; some files have other licenses |
c70047f1 | 109 | (home-page "https://www.freetype.org/"))) |
6e4da6ea | 110 | |
1e69db8f EB |
111 | (define-public ttfautohint |
112 | (package | |
113 | (name "ttfautohint") | |
0be22e44 | 114 | (version "1.8.3") |
1e69db8f EB |
115 | (source |
116 | (origin | |
117 | (method url-fetch) | |
118 | (uri (string-append "mirror://savannah/freetype/ttfautohint-" | |
119 | version ".tar.gz")) | |
120 | (sha256 | |
121 | (base32 | |
0be22e44 | 122 | "0zpqgihn3yh3v51ynxwr8asqrijvs4gv686clwv7bm8sawr4kfw7")))) |
1e69db8f EB |
123 | (build-system gnu-build-system) |
124 | (native-inputs | |
8394619b | 125 | (list flex bison pkg-config)) |
1e69db8f | 126 | (inputs |
8394619b | 127 | (list freetype harfbuzz)) |
1e69db8f | 128 | (arguments |
f91270bf EF |
129 | `(#:configure-flags '("--disable-static" |
130 | "--with-qt=no"))) ;no gui | |
1e69db8f EB |
131 | (synopsis "Automated font hinting") |
132 | (description | |
133 | "ttfautohint provides a 99% automated hinting process and a platform for | |
134 | finely hand-hinting the last 1%. It is ideal for web fonts and supports many | |
135 | scripts.") | |
136 | (license (list license:gpl2+ license:freetype)) ;choose one or the other | |
44ff40c2 | 137 | (home-page "https://www.freetype.org/ttfautohint/"))) |
1e69db8f | 138 | |
508a85df EB |
139 | (define-public woff-tools |
140 | (package | |
141 | (name "woff-tools") | |
142 | (version "2009.10.04") | |
143 | (source | |
144 | (origin | |
145 | (method url-fetch) | |
146 | ;; Upstream source is unversioned, so use Debian's versioned tarball | |
147 | (uri (string-append "mirror://debian/pool/main/w/woff-tools/" | |
148 | "woff-tools_" version ".orig.tar.gz")) | |
149 | (file-name (string-append name "-" version ".tar.gz")) | |
150 | (sha256 | |
151 | (base32 | |
152 | "1i97gkqa6jfzlslsngqf556kx60knlgf7yc9pzsq2pizc6f0d4zl")))) | |
153 | (build-system gnu-build-system) | |
154 | (inputs | |
8394619b | 155 | (list zlib)) |
508a85df | 156 | (arguments |
146b7566 | 157 | `(#:make-flags '(,(string-append "CC=" (cc-for-target))) |
508a85df EB |
158 | #:tests? #f ;no tests |
159 | #:phases | |
160 | (modify-phases %standard-phases | |
161 | (delete 'configure) ;no configuration | |
162 | (replace 'install | |
163 | (lambda* (#:key outputs #:allow-other-keys) | |
164 | (let* ((out (assoc-ref outputs "out")) | |
165 | (bin (string-append out "/bin"))) | |
166 | (install-file "sfnt2woff" bin) | |
c547efe7 EF |
167 | (install-file "woff2sfnt" bin)) |
168 | #t))))) | |
508a85df EB |
169 | (synopsis "Convert between OpenType and WOFF fonts") |
170 | (description | |
171 | "This package provides two tools: | |
172 | @table @code | |
173 | @item sfnt2woff | |
174 | Converts OpenType fonts to WOFF fonts | |
175 | @item woff2sfnt | |
176 | Converts WOFF fonts to OpenType fonts | |
177 | @end table") | |
178 | (license (list license:mpl1.1 license:gpl2+ license:lgpl2.1+)) | |
179 | (home-page "https://people.mozilla.com/~jkew/woff/"))) | |
180 | ||
1555aee7 EB |
181 | (define-public ttf2eot |
182 | (package | |
183 | (name "ttf2eot") | |
af18fff0 | 184 | (version "0.0.3") |
1555aee7 EB |
185 | (source |
186 | (origin | |
af18fff0 TGR |
187 | (method git-fetch) |
188 | (uri (git-reference | |
b0e7b699 | 189 | (url "https://github.com/wget/ttf2eot") |
af18fff0 TGR |
190 | (commit (string-append "v" version)))) |
191 | (file-name (git-file-name name version)) | |
1555aee7 EB |
192 | (sha256 |
193 | (base32 | |
af18fff0 | 194 | "0l2yh2ialx7135pjzhjs204kk3br7zxjr09zwaia493by2adzigr")) |
1555aee7 EB |
195 | (patches (list (search-patch "ttf2eot-cstddef.patch"))))) |
196 | (build-system gnu-build-system) | |
197 | (arguments | |
af18fff0 | 198 | `(#:tests? #f ; no tests |
1555aee7 EB |
199 | #:phases |
200 | (modify-phases %standard-phases | |
af18fff0 TGR |
201 | (delete 'configure) ; no configuration |
202 | (replace 'install ; no install target | |
1555aee7 EB |
203 | (lambda* (#:key outputs #:allow-other-keys) |
204 | (let* ((out (assoc-ref outputs "out")) | |
205 | (bin (string-append out "/bin"))) | |
bf43e133 TGR |
206 | (install-file "ttf2eot" bin) |
207 | #t)))))) | |
1555aee7 EB |
208 | (synopsis "Convert from TrueType to Embeddable Open Type") |
209 | (description | |
210 | "This package contains a commandline wrapper around OpenTypeUtilities.cpp | |
211 | from Chromium, used to make EOT (Embeddable Open Type) files from | |
212 | TTF (TrueType/OpenType Font) files.") | |
213 | ;; While the README states "License: Derived from WebKit, so BSD/LGPL | |
214 | ;; 2/LGPL 2.1", the single derived source file includes only BSD in its | |
215 | ;; license header, and the wrapper source contains no license header. | |
216 | (license license:bsd-2) | |
af18fff0 | 217 | (home-page "https://github.com/wget/ttf2eot"))) |
1555aee7 | 218 | |
64965a06 LC |
219 | (define-public ttf2pt1 |
220 | (package | |
221 | (name "ttf2pt1") | |
222 | (version "3.4.4") | |
223 | (source (origin | |
224 | (method url-fetch) | |
225 | (uri (string-append "mirror://sourceforge/ttf2pt1/ttf2pt1/" | |
226 | version "/ttf2pt1-" version ".tgz")) | |
227 | (sha256 | |
228 | (base32 | |
229 | "1l718n4k4widx49xz7qrj4mybzb8q67kp2jw7f47604ips4654mf")) | |
230 | (modules '((guix build utils))) | |
231 | (snippet | |
232 | '(begin | |
233 | ;; Remove trailing backslashes in the sed expression of the | |
234 | ;; 'install' rule since sed would otherwise fail. | |
235 | (substitute* "Makefile" | |
236 | (("\\|;\\\\[[:space:]]*$") "|; ")) | |
237 | #t)))) | |
238 | (build-system gnu-build-system) | |
239 | (arguments | |
240 | '(#:tests? #f ;no tests | |
241 | #:phases (modify-phases %standard-phases | |
242 | (replace 'configure | |
243 | (lambda* (#:key outputs #:allow-other-keys) | |
244 | (let ((out (assoc-ref outputs "out"))) | |
245 | (substitute* "Makefile" | |
246 | (("INSTDIR =.*") | |
247 | (string-append "INSTDIR = " out "\n")) | |
248 | (("OWNER = .*") | |
249 | "OWNER = `id -un`\n") | |
250 | (("GROUP = .*") | |
251 | "GROUP = `id -g`\n")) | |
252 | #t))) | |
253 | (replace 'build | |
254 | (lambda _ | |
255 | (invoke "make" "-j" | |
256 | (number->string (parallel-job-count)) | |
257 | "all" "CC=gcc")))))) | |
8394619b | 258 | (inputs (list perl)) |
64965a06 LC |
259 | (synopsis "Convert TrueType fonts to Postscript Type 1") |
260 | (description | |
261 | "TTF2PT1 provides tools to convert most TrueType fonts (or other formats | |
262 | supported by the FreeType library) to an Adobe Type 1 @file{.pfa} or | |
263 | @file{.pfb} file. Another use is as a hinting engine: feed it an unhinted or | |
264 | poorly hinted Adobe Type 1 font through the FreeType library and get it back | |
265 | with freshly generated hints. The files produced by default are in | |
266 | human-readable form, which further needs to be encoded with t1utilities to | |
267 | work with most software requiring Type 1 fonts.") | |
268 | (home-page "http://ttf2pt1.sourceforge.net/") | |
269 | (license license:bsd-3))) | |
270 | ||
579760d0 | 271 | (define-public woff2 |
d9476a37 LDB |
272 | (package |
273 | (name "woff2") | |
274 | (version "1.0.2") | |
acc8a0c1 RG |
275 | (source |
276 | (origin | |
277 | (method git-fetch) | |
278 | (uri | |
279 | (git-reference | |
8ed4c468 | 280 | (url "https://github.com/google/woff2") |
acc8a0c1 RG |
281 | (commit (string-append "v" version)))) |
282 | (file-name | |
283 | (git-file-name name version)) | |
284 | (sha256 | |
285 | (base32 "13l4g536h0pr84ww4wxs2za439s0xp1va55g6l478rfbb1spp44y")))) | |
d9476a37 | 286 | (build-system cmake-build-system) |
acc8a0c1 RG |
287 | (outputs '("out" "bin")) |
288 | (arguments | |
289 | `(#:tests? #f ; No target | |
290 | #:configure-flags | |
291 | (list | |
292 | (string-append "-DCMAKE_INSTALL_BINDIR=" | |
293 | (assoc-ref %outputs "bin") | |
294 | "/bin") | |
295 | (string-append "-DCMAKE_INSTALL_INCLUDEDIR=" | |
296 | (assoc-ref %outputs "out") | |
297 | "/include") | |
298 | (string-append "-DCMAKE_INSTALL_LIBDIR=" | |
299 | (assoc-ref %outputs "out") | |
300 | "/lib")) | |
301 | #:phases | |
302 | (modify-phases %standard-phases | |
303 | ;; To install both binaries and libraries. | |
304 | (add-after 'unpack 'patch-installation | |
305 | (lambda _ | |
306 | (substitute* "CMakeLists.txt" | |
307 | (("NOT BUILD_SHARED_LIBS") | |
308 | "BUILD_SHARED_LIBS")) | |
309 | #t))))) | |
d9476a37 | 310 | (native-inputs |
8394619b | 311 | (list pkg-config)) |
d9476a37 | 312 | (inputs |
8394619b | 313 | (list brotli)) |
acc8a0c1 | 314 | (synopsis "Libraries and tools for WOFF2 font format") |
7230f6d5 | 315 | (description "WOFF2 provides libraries and tools to handle the Web Open |
acc8a0c1 RG |
316 | Font Format (WOFF).") |
317 | (home-page "https://w3c.github.io/woff/woff2/") | |
318 | (license license:expat))) | |
579760d0 | 319 | |
6e4da6ea | 320 | (define-public fontconfig |
7f9da31c MC |
321 | (hidden-package |
322 | (package | |
323 | (name "fontconfig-minimal") | |
07e9bd77 | 324 | (version "2.13.94") |
7f9da31c | 325 | (source (origin |
c738a054 MC |
326 | (method url-fetch) |
327 | (uri (string-append | |
328 | "https://www.freedesktop.org/software/" | |
329 | "fontconfig/release/fontconfig-" version ".tar.xz")) | |
330 | (sha256 (base32 | |
331 | "0g004r0bkkqz00mpm3svnnxn7d83158q0yb9ggxryizxfg5m5w55")) | |
332 | (patches (search-patches "fontconfig-cache-ignore-mtime.patch")))) | |
7f9da31c MC |
333 | (build-system gnu-build-system) |
334 | ;; In Requires or Requires.private of fontconfig.pc. | |
335 | (propagated-inputs `(("expat" ,expat) | |
336 | ("freetype" ,freetype) | |
337 | ("libuuid" ,util-linux "lib"))) | |
338 | (inputs | |
a682fea9 MD |
339 | ;; We use to use 'font-ghostscript' but they are not recognized by newer |
340 | ;; versions of Pango, causing many applications to fail to find fonts | |
341 | ;; otherwise. | |
8394619b | 342 | (list font-dejavu)) |
7f9da31c MC |
343 | (native-inputs |
344 | `(("gperf" ,gperf) | |
0ad27959 MC |
345 | ("pkg-config" ,pkg-config) |
346 | ("python" ,python-minimal))) ;to avoid a cycle through tk | |
7f9da31c MC |
347 | (arguments |
348 | `(#:configure-flags | |
349 | (list "--disable-docs" | |
350 | "--with-cache-dir=/var/cache/fontconfig" | |
351 | ;; register the default fonts | |
352 | (string-append "--with-default-fonts=" | |
353 | (assoc-ref %build-inputs "font-dejavu") | |
c738a054 | 354 | "/share/fonts")) |
7f9da31c MC |
355 | #:phases |
356 | (modify-phases %standard-phases | |
0ad27959 MC |
357 | (add-before 'check 'skip-problematic-tests |
358 | (lambda _ | |
6f12880a SM |
359 | ;; SOURCE_DATE_EPOCH doesn't make sense when ignoring mtime |
360 | (unsetenv "SOURCE_DATE_EPOCH") | |
361 | ||
0ad27959 MC |
362 | (substitute* "test/run-test.sh" |
363 | ;; The crbug1004254 test attempts to fetch fonts from the | |
364 | ;; network. | |
365 | (("\\[ -x \"\\$BUILDTESTDIR\"/test-crbug1004254 \\]") | |
366 | "false")))) | |
7f9da31c MC |
367 | (replace 'install |
368 | (lambda _ | |
369 | ;; Don't try to create /var/cache/fontconfig. | |
370 | (invoke "make" "install" | |
371 | "fc_cachedir=$(TMPDIR)" | |
372 | "RUN_FC_CACHE_TEST=false")))))) | |
373 | (synopsis "Library for configuring and customizing font access") | |
374 | (description | |
375 | "Fontconfig can discover new fonts when installed automatically; | |
6e4da6ea AE |
376 | perform font name substitution, so that appropriate alternative fonts can |
377 | be selected if fonts are missing; | |
378 | identify the set of fonts required to completely cover a set of languages; | |
379 | have GUI configuration tools built as it uses an XML-based configuration file; | |
380 | efficiently and quickly find needed fonts among the set of installed fonts; | |
381 | be used in concert with the X Render Extension and FreeType to implement | |
382 | high quality, anti-aliased and subpixel rendered text on a display.") | |
7f9da31c MC |
383 | ; The exact license is more X11-style than BSD-style. |
384 | (license (license:non-copyleft "file://COPYING" | |
385 | "See COPYING in the distribution.")) | |
c738a054 MC |
386 | (native-search-paths |
387 | ;; Since version 2.13.94, fontconfig knows to find fonts from | |
388 | ;; XDG_DATA_DIRS. | |
389 | (list (search-path-specification | |
390 | (variable "XDG_DATA_DIRS") | |
391 | (files '("share"))))) | |
7f9da31c MC |
392 | (home-page "https://www.freedesktop.org/wiki/Software/fontconfig")))) |
393 | ||
394 | ;;; The documentation of fontconfig is built in a separate package, as it | |
395 | ;;; causes a dramatic increase in the size of the closure of fontconfig. This | |
396 | ;;; is intentionally named 'fontconfig', as it's intended as the user-facing | |
397 | ;;; fontconfig package. | |
398 | (define-public fontconfig-with-documentation | |
399 | (package | |
400 | (inherit fontconfig) | |
401 | (name "fontconfig") | |
402 | (outputs (cons "doc" (package-outputs fontconfig))) | |
403 | (arguments | |
404 | (substitute-keyword-arguments (package-arguments fontconfig) | |
405 | ((#:configure-flags configure-flags) | |
406 | `(delete "--disable-docs" ,configure-flags)) | |
407 | ((#:phases phases '%standard-phases) | |
408 | `(modify-phases ,phases | |
a6f38001 LC |
409 | (add-after 'unpack 'no-pdf-doc |
410 | (lambda _ | |
411 | ;; Don't build documentation as PDF. | |
412 | (substitute* "doc/Makefile.in" | |
413 | (("^PDF_FILES = .*") | |
414 | "PDF_FILES =\n")))) | |
7f9da31c MC |
415 | (add-after 'install 'move-man-sections |
416 | (lambda* (#:key outputs #:allow-other-keys) | |
417 | ;; Move share/man/man{3,5} to the "doc" output. Leave "man1" in | |
418 | ;; "out" for convenience. | |
419 | (let ((out (assoc-ref outputs "out")) | |
420 | (doc (assoc-ref outputs "doc"))) | |
421 | (for-each (lambda (section) | |
422 | (let ((source (string-append out "/share/man/" | |
423 | section)) | |
424 | (target (string-append doc "/share/man/" | |
425 | section))) | |
426 | (copy-recursively source target) | |
427 | (delete-file-recursively source))) | |
428 | '("man3" "man5"))))))))) | |
429 | (native-inputs | |
430 | (append (package-native-inputs fontconfig) | |
431 | `(("docbook-utils" ,docbook-utils)))) | |
432 | (properties (alist-delete 'hidden? (package-properties fontconfig))))) | |
313b9012 AE |
433 | |
434 | (define-public t1lib | |
435 | (package | |
436 | (name "t1lib") | |
437 | (version "5.1.2") | |
438 | (source (origin | |
439 | (method url-fetch) | |
a60c705b EF |
440 | (uri (list (string-append "ftp://sunsite.unc.edu/pub/Linux/libs/" |
441 | "graphics/" name "-" version ".tar.gz") | |
442 | (string-append "https://fossies.org/linux/misc/old/" | |
443 | name "-" version ".tar.gz"))) | |
313b9012 | 444 | (sha256 (base32 |
4f3e02f1 EF |
445 | "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2")) |
446 | (patches (search-patches | |
9c2d2c13 | 447 | "t1lib-CVE-2010-2642.patch" ; 2011-0443, 2011-5244 |
4f3e02f1 | 448 | "t1lib-CVE-2011-0764.patch" |
9c2d2c13 EF |
449 | "t1lib-CVE-2011-1552+.patch")))) ; 2011-1553, 2011-1554 |
450 | (properties `((lint-hidden-cve . ("CVE-2011-0433" | |
451 | "CVE-2011-1553" | |
452 | "CVE-2011-1554" | |
453 | "CVE-2011-5244")))) | |
313b9012 AE |
454 | (build-system gnu-build-system) |
455 | (arguments | |
456 | ;; Making the documentation requires latex, but t1lib is also an input | |
457 | ;; for building texlive. | |
458 | `(#:tests? #f ; no test target | |
459 | #:make-flags | |
460 | '("without_doc"))) | |
9e771e3b | 461 | (synopsis "Library for generating bitmaps from Type 1 fonts") |
313b9012 AE |
462 | (description |
463 | "T1lib is a library for generating/rasterising bitmaps from Type 1 fonts. | |
464 | It is based on the code of the X11 rasteriser of the X11 project. | |
465 | ||
466 | The bitmaps created by t1lib are returned in a data structure with type | |
35b9e423 EB |
467 | GLYPH. This special GLYPH-type is also used in the X11 window system to |
468 | describe character bitmaps. It contains the bitmap data as well as some | |
469 | metric information. But t1lib is in itself entirely independent of the | |
470 | X11-system or any other graphical user interface.") | |
313b9012 | 471 | (license license:gpl2) |
d716a474 | 472 | (home-page "https://www.t1lib.org/"))) |
e5c0701f AE |
473 | |
474 | (define-public teckit | |
475 | (package | |
93a55838 | 476 | (name "teckit") |
4c230e71 | 477 | (version "2.5.10") ; signed by key 0xC9183BEA0288CDEE |
93a55838 MB |
478 | (source |
479 | (origin | |
480 | (method url-fetch) | |
481 | (uri (string-append "https://github.com/silnrsi/teckit/releases/" | |
482 | "download/v" version "/teckit-" version ".tar.gz")) | |
483 | (sha256 | |
4c230e71 | 484 | (base32 "12qnf8nhxyr4d5pc01s3vc6h726506957an4vvmmfz633cqi5796")))) |
93a55838 | 485 | (build-system gnu-build-system) |
9d2c24d2 MB |
486 | (arguments |
487 | '(#:configure-flags '("--disable-static"))) | |
93a55838 | 488 | (inputs |
8394619b | 489 | (list zlib expat)) |
93a55838 | 490 | (native-inputs |
8394619b | 491 | (list perl)) ;for the tests |
93a55838 MB |
492 | (synopsis "Toolkit for encoding conversions") |
493 | (description | |
494 | "TECkit is a low-level toolkit intended to be used by other applications | |
e5c0701f | 495 | that need to perform encoding conversions (e.g., when importing legacy data |
35b9e423 | 496 | into a Unicode-based application). The primary component of the TECkit |
e5c0701f | 497 | package is therefore a library that performs conversions; this is the |
35b9e423 | 498 | \"TECkit engine\". The engine relies on mapping tables in a specific binary |
e5c0701f AE |
499 | format (for which documentation is available); there is a compiler that |
500 | creates such tables from a human-readable mapping description (a simple | |
501 | text file). | |
502 | ||
503 | To facilitate the development and testing of mapping tables for TECkit, | |
504 | several applications are also included in the current package; these | |
505 | include simple tools for applying conversions to plain-text and Standard | |
506 | Format files, as well as both command-line and simple GUI versions of the | |
35b9e423 | 507 | TECkit compiler. However, it is not intended that these tools will be the |
e5c0701f AE |
508 | primary means by which end users perform conversions, and they have not |
509 | been designed, tested, and debugged to the extent that general-purpose | |
510 | applications should be.") | |
93a55838 | 511 | (license license:lgpl2.1+) |
0b2f4307 | 512 | (home-page "https://scripts.sil.org/cms/scripts/page.php?cat_id=teckit"))) |
319e2d17 AE |
513 | |
514 | (define-public graphite2 | |
515 | (package | |
516 | (name "graphite2") | |
8152024c | 517 | (version "1.3.13") |
319e2d17 AE |
518 | (source |
519 | (origin | |
520 | (method url-fetch) | |
6983ba56 SB |
521 | (uri (string-append "https://github.com/silnrsi/graphite/releases/" |
522 | "download/" version "/" name "-" version ".tgz")) | |
319e2d17 | 523 | (sha256 |
297a36ab | 524 | (base32 |
8152024c | 525 | "01jzhwnj1c3d68dmw15jdxly0hwkmd8ja4kw755rbkykn1ly2qyx")))) |
319e2d17 | 526 | (build-system cmake-build-system) |
e6f22a82 | 527 | (native-inputs |
8394619b | 528 | (list python python-fonttools)) |
319e2d17 | 529 | (inputs |
8394619b | 530 | (list freetype)) |
35b9e423 | 531 | (synopsis "Reimplementation of the SIL Graphite text processing engine") |
319e2d17 AE |
532 | (description |
533 | "Graphite2 is a reimplementation of the SIL Graphite text processing | |
534 | engine. Graphite is a smart font technology designed to facilitate the | |
535 | process known as shaping. This process takes an input Unicode text string | |
536 | and returns a sequence of positioned glyphids from the font.") | |
537 | (license license:lgpl2.1+) | |
e86409c5 | 538 | (home-page "https://github.com/silnrsi/graphite"))) |
ee69f85c EB |
539 | |
540 | (define-public potrace | |
541 | (package | |
542 | (name "potrace") | |
d9ff6ad8 | 543 | (version "1.16") |
ee69f85c EB |
544 | (source |
545 | (origin | |
546 | (method url-fetch) | |
de67e922 LF |
547 | (uri (string-append "mirror://sourceforge/potrace/" version |
548 | "/potrace-" version ".tar.gz")) | |
ee69f85c EB |
549 | (sha256 |
550 | (base32 | |
d9ff6ad8 | 551 | "1k3sxgjqq0jnpk9xxys05q32sl5hbf1lbk1gmfxcrmpdgnhli0my")))) |
ee69f85c | 552 | (build-system gnu-build-system) |
8394619b LC |
553 | (native-inputs (list ghostscript)) ;for tests |
554 | (inputs (list zlib)) | |
4797d84d AE |
555 | (arguments |
556 | `(#:configure-flags | |
557 | `("--with-libpotrace"))) ; install library and headers | |
ee69f85c EB |
558 | (synopsis "Transform bitmaps into vector graphics") |
559 | (description | |
560 | "Potrace is a tool for tracing a bitmap, which means, transforming a | |
561 | bitmap into a smooth, scalable image. The input is a bitmap (PBM, PGM, PPM, | |
562 | or BMP format), and the default output is an encapsulated PostScript | |
563 | file (EPS). A typical use is to create EPS files from scanned data, such as | |
564 | company or university logos, handwritten notes, etc. The resulting image is | |
565 | not \"jaggy\" like a bitmap, but smooth. It can then be rendered at any | |
566 | resolution.") | |
567 | (license license:gpl2+) | |
568 | (home-page "http://potrace.sourceforge.net/"))) | |
5277dbb0 | 569 | |
6ef0ec76 RJ |
570 | (define-public libotf |
571 | (package | |
572 | (name "libotf") | |
9b9e7481 | 573 | (version "0.9.16") |
6ef0ec76 RJ |
574 | (source (origin |
575 | (method url-fetch) | |
6a703976 MW |
576 | (uri (string-append "mirror://savannah/m17n/libotf-" |
577 | version ".tar.gz")) | |
6ef0ec76 | 578 | (sha256 |
9b9e7481 | 579 | (base32 "0sq6g3xaxw388akws6qrllp3kp2sxgk2dv4j79k6mm52rnihrnv8")))) |
6ef0ec76 | 580 | (build-system gnu-build-system) |
48342a04 | 581 | (native-inputs |
8394619b | 582 | (list pkg-config)) |
6ef0ec76 | 583 | (propagated-inputs |
8394619b | 584 | (list freetype)) |
340978d7 | 585 | (home-page "https://www.nongnu.org/m17n/") |
6ef0ec76 RJ |
586 | (synopsis "Library for handling OpenType Font") |
587 | (description "This library can read Open Type Layout Tables from an OTF | |
588 | file. Currently these tables are supported; head, name, cmap, GDEF, GSUB, and | |
589 | GPOS. It can convert a Unicode character sequence to a glyph code sequence by | |
590 | using the above tables.") | |
591 | (license license:lgpl2.0+))) | |
592 | ||
5277dbb0 EB |
593 | (define-public libspiro |
594 | (package | |
595 | (name "libspiro") | |
71016916 | 596 | (version "20200505") |
5277dbb0 EB |
597 | (source |
598 | (origin | |
599 | (method url-fetch) | |
24950127 | 600 | (uri (string-append "https://github.com/fontforge/libspiro/releases" |
42080463 | 601 | "/download/" version "/libspiro-dist-" version ".tar.gz")) |
5277dbb0 EB |
602 | (sha256 |
603 | (base32 | |
71016916 | 604 | "0j8fmyj4wz6mqk17dqs6f8jx0i52n68gv5px17qbrjnbilg9mih6")))) |
5277dbb0 | 605 | (build-system gnu-build-system) |
06639876 MB |
606 | (arguments |
607 | '(#:configure-flags '("--disable-static"))) | |
5277dbb0 EB |
608 | (synopsis "Clothoid to bezier conversion library") |
609 | (description | |
610 | "Raph Levien's Spiro package as a library. A mechanism for drawing | |
611 | smooth contours with constant curvature at the spline joins.") | |
612 | (license license:gpl2+) | |
613 | (home-page "http://libspiro.sourceforge.net/"))) | |
f945bf06 EB |
614 | |
615 | (define-public libuninameslist | |
616 | (package | |
617 | (name "libuninameslist") | |
3db5a01c | 618 | (version "20200313") |
27b73b49 | 619 | (home-page "https://github.com/fontforge/libuninameslist") |
f945bf06 EB |
620 | (source |
621 | (origin | |
622 | (method url-fetch) | |
27b73b49 MB |
623 | (uri (string-append home-page "/releases/download/" version |
624 | "/libuninameslist-dist-" version ".tar.gz")) | |
f945bf06 EB |
625 | (sha256 |
626 | (base32 | |
3db5a01c | 627 | "10ri80c64xb4rhbif3sr87y5vhi3m702zb0m02imvj1jib9rq0m8")))) |
f945bf06 | 628 | (build-system gnu-build-system) |
f945bf06 EB |
629 | (synopsis "Unicode names and annotation list") |
630 | (description | |
631 | "LibUniNamesList holds www.unicode.org Nameslist.txt data which can be | |
632 | useful for programs that need Unicode \"Names\", \"Annotations\", and block | |
633 | definitions.") | |
b19c92ef MB |
634 | ;; COPYING specifies GPL2, but according to LICENSE it only covers the |
635 | ;; configure script. The actual code is BSD-3, and the Unicode data | |
636 | ;; is governed by an X11-style license only found on the web. | |
637 | (license (list license:bsd-3 | |
638 | (license:x11-style | |
27b73b49 | 639 | "https://www.unicode.org/copyright.html#License"))))) |
0c115d8c EB |
640 | |
641 | (define-public fontforge | |
642 | (package | |
643 | (name "fontforge") | |
de42af14 | 644 | (version "20201107") |
0c115d8c EB |
645 | (source (origin |
646 | (method url-fetch) | |
56586557 AE |
647 | (uri (string-append |
648 | "https://github.com/fontforge/fontforge/releases/download/" | |
0a502c8c | 649 | version "/fontforge-" version ".tar.xz")) |
3b08c873 | 650 | (sha256 |
de42af14 | 651 | (base32 "0y3c8x1i6yf6ak9m5dhr1nldgfmg7zhnwdfd57ffs698c27vmg38")))) |
0a502c8c | 652 | (build-system cmake-build-system) |
56586557 | 653 | (native-inputs |
8394619b | 654 | (list pkg-config)) |
56586557 AE |
655 | (inputs `(("cairo" ,cairo) |
656 | ("fontconfig" ,fontconfig) ;dlopen'd | |
657 | ("freetype" ,freetype) | |
b94a6ca0 | 658 | ("gettext" ,gettext-minimal) |
0c115d8c EB |
659 | ("libICE" ,libice) |
660 | ("libSM" ,libsm) | |
56586557 AE |
661 | ("libX11" ,libx11) |
662 | ("libXi" ,libxi) | |
4bd428a7 | 663 | ("libjpeg" ,libjpeg-turbo) |
56586557 AE |
664 | ("libltdl" ,libltdl) |
665 | ("libpng" ,libpng) | |
0c115d8c | 666 | ("libspiro" ,libspiro) |
56586557 | 667 | ("libtiff" ,libtiff) |
de946028 | 668 | ("libungif" ,libungif) |
0c115d8c | 669 | ("libuninameslist" ,libuninameslist) |
56586557 AE |
670 | ("libxft" ,libxft) |
671 | ("libxml2" ,libxml2) | |
0c115d8c | 672 | ("pango" ,pango) |
56586557 | 673 | ("potrace" ,potrace) |
01a92a70 | 674 | ("python" ,python) |
56586557 | 675 | ("zlib" ,zlib))) |
0c115d8c | 676 | (arguments |
0a502c8c MB |
677 | '(#:configure-flags '(;; TODO: Provide GTK+ for the Wayland-friendly GDK |
678 | ;; backend, instead of the legacy X11 backend. | |
679 | ;; Currently it introduces a circular dependency. | |
680 | "-DENABLE_X11=ON") | |
681 | #:phases | |
5ab869f9 | 682 | (modify-phases %standard-phases |
0a502c8c | 683 | (add-after 'unpack 'do-not-override-RPATH |
6e3cbafb | 684 | (lambda _ |
0a502c8c MB |
685 | ;; Do not attempt to set a default RPATH, as our ld-wrapper |
686 | ;; already does the right thing. | |
687 | (substitute* "CMakeLists.txt" | |
688 | (("^set_default_rpath\\(\\)") | |
689 | "")) | |
6e3cbafb | 690 | #t)) |
5ab869f9 EB |
691 | (add-after 'install 'set-library-path |
692 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
693 | (let ((out (assoc-ref outputs "out")) | |
bc64d955 LC |
694 | (potrace (dirname |
695 | (search-input-file inputs "bin/potrace")))) | |
5ab869f9 EB |
696 | (wrap-program (string-append out "/bin/fontforge") |
697 | ;; Fontforge dynamically opens libraries. | |
698 | `("LD_LIBRARY_PATH" ":" prefix | |
699 | ,(map (lambda (input) | |
700 | (string-append (assoc-ref inputs input) | |
701 | "/lib")) | |
de946028 | 702 | '("libtiff" "libjpeg" "libpng" "libungif" |
5ab869f9 EB |
703 | "libxml2" "zlib" "libspiro" "freetype" |
704 | "pango" "cairo" "fontconfig"))) | |
705 | ;; Checks for potrace program at runtime | |
2f3f8ae0 | 706 | `("PATH" ":" prefix (,potrace))) |
5dd7bd12 | 707 | #t)))))) |
0c115d8c EB |
708 | (synopsis "Outline font editor") |
709 | (description | |
710 | "FontForge allows you to create and modify postscript, truetype and | |
711 | opentype fonts. You can save fonts in many different outline formats, and | |
712 | generate bitmaps.") | |
56586557 | 713 | (license license:gpl3+) |
3ab8c224 | 714 | (home-page "https://fontforge.github.io"))) |
427a51fd | 715 | |
4affa918 MB |
716 | ;; This is the last version that supports Python 2, which is needed for |
717 | ;; GNU FreeFont. Remove once no longer required. | |
718 | (define-public fontforge-20190801 | |
719 | (package | |
720 | (inherit fontforge) | |
721 | (version "20190801") | |
722 | (source (origin | |
723 | (method url-fetch) | |
724 | (uri (string-append | |
725 | "https://github.com/fontforge/fontforge/releases/download/" | |
726 | version "/fontforge-" version ".tar.gz")) | |
727 | (sha256 | |
728 | (base32 "0lh8yx01asbzxm6car5cfi64njh5p4lxc7iv8dldr5rwg357a86r")))) | |
729 | (build-system gnu-build-system) | |
730 | (arguments | |
731 | (substitute-keyword-arguments (package-arguments fontforge) | |
732 | ((#:configure-flags _) | |
733 | ''()) | |
734 | ((#:phases phases) | |
735 | `(modify-phases ,phases | |
736 | (delete 'do-not-override-RPATH))))) | |
737 | (inputs | |
738 | `(("python" ,python-2) | |
739 | ,@(alist-delete "python" (package-inputs fontforge)))))) | |
740 | ||
427a51fd | 741 | (define-public python2-ufolib |
742 | (package | |
743 | (name "python2-ufolib") | |
a82bb552 | 744 | (version "2.1.1") |
427a51fd | 745 | (source |
746 | (origin | |
747 | (method url-fetch) | |
748 | (uri (pypi-uri "ufoLib" version ".zip")) | |
749 | (sha256 | |
a82bb552 | 750 | (base32 "07qy6mx7z0wi9a30lc2hj5i9q1gnz1n8l40dmjz2c19mj9s6mz9l")))) |
427a51fd | 751 | (build-system python-build-system) |
752 | (arguments | |
753 | `(#:python ,python-2)) | |
754 | (propagated-inputs | |
8394619b | 755 | (list python2-fonttools)) |
427a51fd | 756 | (native-inputs |
8394619b | 757 | (list unzip python2-pytest python2-pytest-runner)) |
427a51fd | 758 | (home-page "https://github.com/unified-font-object/ufoLib") |
759 | (synopsis "Low-level UFO reader and writer") | |
760 | (description | |
761 | "UfoLib reads and writes Unified Font Object (UFO) | |
762 | files. UFO is a file format that stores fonts source files.") | |
763 | (license license:bsd-3))) | |
3715aff5 | 764 | |
765 | (define-public python2-defcon | |
766 | (package | |
767 | (name "python2-defcon") | |
e6d7686f | 768 | (version "0.3.5") |
3715aff5 | 769 | (source |
770 | (origin | |
771 | (method url-fetch) | |
772 | (uri (pypi-uri "defcon" version ".zip")) | |
773 | (sha256 | |
774 | (base32 | |
e6d7686f | 775 | "03jlm2gy9lvbwj68kfdm43yaddwd634jwkdg4wf0jxx2s8mwbg22")))) |
3715aff5 | 776 | (build-system python-build-system) |
777 | (arguments | |
778 | `(#:python ,python-2)) | |
779 | (native-inputs | |
8394619b | 780 | (list unzip python2-pytest python2-pytest-runner)) |
3715aff5 | 781 | (propagated-inputs |
8394619b | 782 | (list python2-fonttools python2-ufolib)) |
e85af137 | 783 | (home-page "https://pypi.org/project/defcon/") |
3715aff5 | 784 | (synopsis "Flexible objects for representing @acronym{UFO, unified font object} data") |
785 | (description | |
786 | "Defcon is a set of @acronym{UFO, unified font object} based objects | |
787 | optimized for use in font editing applications. The objects are built to | |
788 | be lightweight, fast and flexible. The objects are very bare-bones and | |
789 | they are not meant to be end-all, be-all objects. Rather, they are meant | |
790 | to provide base functionality so that you can focus on your application’s | |
791 | behavior, not object observing or maintaining cached data. Defcon | |
792 | implements UFO3 as described by the UFO font format.") | |
793 | (license license:expat))) | |
20d2c6e7 | 794 | |
795 | (define-public nototools | |
796 | (package | |
797 | (name "nototools") | |
798 | (version "20170925") | |
799 | (source | |
800 | (origin | |
b2447228 EF |
801 | (method git-fetch) |
802 | (uri (git-reference | |
803 | (url "https://github.com/googlei18n/nototools") | |
804 | (commit "v2017-09-25-tooling-for-phase3-update"))) | |
805 | (file-name (git-file-name name version)) | |
20d2c6e7 | 806 | (sha256 |
807 | (base32 | |
b2447228 | 808 | "03nzvcvwmrhfrcjhg218q2f3hfrm3vlivp4rk19sc397kh3hisiz")))) |
20d2c6e7 | 809 | (build-system python-build-system) |
810 | (arguments | |
811 | `(#:python ,python-2)) | |
812 | (propagated-inputs | |
8394619b LC |
813 | (list python2-booleanoperations |
814 | python2-defcon | |
815 | python2-fonttools | |
816 | python2-pillow | |
817 | python2-pyclipper | |
818 | python2-ufolib)) | |
20d2c6e7 | 819 | (home-page "https://github.com/googlei18n/nototools") |
820 | (synopsis "Noto fonts support tools and scripts") | |
821 | (description | |
822 | "Nototools is a Python package containing Python scripts used to | |
823 | maintain the Noto Fonts project.") | |
824 | (license (list license:asl2.0 | |
825 | ;; Sample texts are attributed to UN and OHCHR. | |
826 | ;; The permissions on the UDHR are pretty lax: | |
827 | ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx | |
828 | ;; "If UDHR translations or materials are reproduced, users | |
829 | ;; should make reference to this website as a source by | |
830 | ;; providing a link." | |
831 | license:public-domain | |
832 | (license:non-copyleft | |
833 | "file://sample_texts/attributions.txt" | |
834 | "See sample_texts/attributions.txt in the distribution."))))) | |
ad8aaf47 | 835 | |
25e08f32 MB |
836 | (define-public fcft |
837 | (package | |
838 | (name "fcft") | |
b5bbbca6 | 839 | (version "3.0.1") |
25e08f32 MB |
840 | (home-page "https://codeberg.org/dnkl/fcft") |
841 | (source (origin | |
842 | (method git-fetch) | |
843 | (uri (git-reference (url home-page) (commit version))) | |
844 | (file-name (git-file-name name version)) | |
845 | (sha256 | |
846 | (base32 | |
b5bbbca6 | 847 | "0jxy92ny8b7s7yvz1mr8zpf7l2zsn506fi9f98pvh9k25jprg0cx")))) |
25e08f32 | 848 | (build-system meson-build-system) |
25e08f32 | 849 | (native-inputs |
137ace6b | 850 | (list check pkg-config scdoc)) |
25e08f32 | 851 | (propagated-inputs |
e3196755 LC |
852 | (list ;; Required by fcft.pc. |
853 | fontconfig | |
854 | freetype | |
855 | harfbuzz | |
856 | pixman | |
857 | tllist)) | |
25e08f32 MB |
858 | (synopsis "Font loading and glyph rasterization library") |
859 | (description | |
860 | "@code{fcft} is a small font loading and glyph rasterization library | |
861 | built on-top of FontConfig, FreeType2 and pixman. | |
862 | ||
863 | It can load and cache fonts from a fontconfig-formatted name string, e.g. | |
864 | @code{Monospace:size=12}, optionally with user configured fallback fonts. | |
865 | ||
866 | After a font has been loaded, you can rasterize glyphs. When doing so, the | |
867 | primary font is first considered. If it does not have the requested glyph, | |
868 | the user configured fallback fonts (if any) are considered. If none of the | |
869 | user configured fallback fonts has the requested glyph, the FontConfig | |
870 | generated list of fallback fonts are checked.") | |
871 | ;; The code is distributed under the Expat license, but embeds Unicode | |
872 | ;; data files carrying the Unicode license. | |
873 | (license (list license:expat license:unicode)))) | |
874 | ||
ad8aaf47 BD |
875 | (define-public fontmanager |
876 | (package | |
877 | (name "fontmanager") | |
cea62941 | 878 | (version "0.8.7") |
ad8aaf47 BD |
879 | (source |
880 | (origin | |
881 | (method git-fetch) | |
882 | (uri (git-reference | |
883 | (url "https://github.com/FontManager/font-manager") | |
884 | (commit version))) | |
885 | (file-name (git-file-name name version)) | |
886 | (sha256 | |
cea62941 | 887 | (base32 "0nyda2a6vbzyz4sn9mmrr8bkifzxmmjp7x9a3c4s6n925ccy79cn")))) |
ad8aaf47 BD |
888 | (build-system meson-build-system) |
889 | (arguments | |
890 | `(#:glib-or-gtk? #t | |
891 | #:build-type "release" | |
892 | #:configure-flags | |
893 | (list (string-append "-Dc_link_args=-Wl,-rpath=" | |
894 | (assoc-ref %outputs "out") | |
895 | "/lib/font-manager")))) | |
896 | (native-inputs | |
5581279f | 897 | `(("desktop-file-utils" ,desktop-file-utils) |
ad8aaf47 BD |
898 | ("gettext" ,gettext-minimal) |
899 | ("glib" ,glib "bin") | |
900 | ("gobject-introspection" ,gobject-introspection) | |
5581279f | 901 | ("pkg-config" ,pkg-config) |
9295b911 | 902 | ("python-wrapper" ,python-wrapper) |
6aece4b9 | 903 | ("vala" ,vala-0.52) |
5581279f | 904 | ("yelp-tools" ,yelp-tools))) |
ad8aaf47 | 905 | (inputs |
5581279f | 906 | `(("fonconfig" ,fontconfig) |
ad8aaf47 | 907 | ("freetype" ,freetype) |
5581279f BD |
908 | ("gtk+" ,gtk+) |
909 | ("json-glib" ,json-glib) | |
6aece4b9 | 910 | ("libsoup" ,libsoup-minimal-2) |
5581279f | 911 | ("sqlite" ,sqlite) |
6aece4b9 | 912 | ("webkitgtk" ,webkitgtk-with-libsoup2))) |
ad8aaf47 BD |
913 | (home-page "https://fontmanager.github.io/") |
914 | (synopsis "Simple font management for GTK+ desktop environments") | |
915 | (description "Font Manager is intended to provide a way for users to | |
916 | easily manage desktop fonts, without having to resort to command-line | |
917 | tools or editing configuration files by hand. | |
918 | While designed primarily with the GNOME Desktop Environment in mind, it should | |
919 | work well with other GTK+ desktop environments.") | |
920 | (license license:gpl3+))) | |
cc51c03f RJ |
921 | |
922 | (define-public fntsample | |
923 | (package | |
924 | (name "fntsample") | |
44d0acfe | 925 | (version "5.4") |
cc51c03f | 926 | (source (origin |
405b9ba0 EF |
927 | (method git-fetch) |
928 | (uri (git-reference | |
929 | (url "https://github.com/eugmes/fntsample") | |
930 | (commit (string-append "release/" version)))) | |
931 | (file-name (git-file-name name version)) | |
cc51c03f RJ |
932 | (sha256 |
933 | (base32 | |
44d0acfe | 934 | "0pcqqdriv6hq64zrqd9vhdd9p2vhimjnajcxdz10qnqgrkmm751v")))) |
cc51c03f RJ |
935 | (build-system cmake-build-system) |
936 | (arguments | |
937 | `(#:tests? #f ; There are no tests. | |
938 | #:configure-flags | |
939 | (list (string-append | |
940 | "-DUNICODE_BLOCKS=" (assoc-ref %build-inputs "unicode-blocks"))) | |
941 | #:phases | |
942 | (modify-phases %standard-phases | |
943 | (add-after 'install 'set-library-path | |
944 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
945 | (let* ((out (assoc-ref outputs "out")) | |
946 | (pdf-api2 (assoc-ref inputs "perl-pdf-api2")) | |
947 | (intl (assoc-ref inputs "perl-libintl-perl")) | |
948 | (perllib (string-append pdf-api2 | |
949 | "/lib/perl5/site_perl/" | |
950 | ,(package-version perl) | |
951 | ":" intl | |
952 | "/lib/perl5/site_perl/" | |
953 | ,(package-version perl)))) | |
954 | (wrap-program (string-append out "/bin/pdfoutline") | |
44d0acfe | 955 | `("PERL5LIB" ":" prefix (,perllib))))))))) |
cc51c03f RJ |
956 | (native-inputs |
957 | `(("pkg-config" ,pkg-config) | |
958 | ("gettext" ,gettext-minimal))) | |
959 | (inputs | |
960 | `(("cairo" ,cairo) | |
961 | ("fontconfig" ,fontconfig) | |
962 | ("freetype" ,freetype) | |
963 | ("glib" ,glib) | |
964 | ("pango" ,pango) | |
965 | ("perl-pdf-api2" ,perl-pdf-api2) | |
966 | ("perl-libintl-perl" ,perl-libintl-perl) | |
967 | ("unicode-blocks" | |
3e73beaf TGR |
968 | ,(let ((version "14.0.0")) |
969 | (origin | |
970 | (method url-fetch) | |
971 | (uri (string-append "https://unicode.org/Public/" | |
972 | version "/ucd/Blocks.txt")) | |
973 | (file-name (string-append "unicode-blocks-" version ".txt")) | |
974 | (sha256 | |
975 | (base32 | |
976 | "05vzgrvfp35mgxjgkm4wnxjjgzva8n6545i9jxd4pczpvvfp122r"))))))) | |
cc51c03f RJ |
977 | (home-page "https://github.com/eugmes/fntsample") |
978 | (synopsis "PDF and PostScript font samples generator") | |
979 | (description "This package provides a tool that can be used to make font | |
980 | samples that show coverage of the font and are similar in appearance to | |
981 | Unicode Charts. It was developed for use with DejaVu Fonts project.") | |
982 | (license license:gpl3+))) | |
a1797f32 NG |
983 | |
984 | (define-public libraqm | |
985 | (package | |
986 | (name "libraqm") | |
2c9e2587 | 987 | (version "0.8.0") |
a1797f32 NG |
988 | (source |
989 | (origin | |
999ef90a NG |
990 | (method git-fetch) |
991 | (uri (git-reference | |
992 | (url "https://github.com/HOST-Oman/libraqm") | |
993 | (commit (string-append "v" version)))) | |
994 | (file-name (git-file-name name version)) | |
a1797f32 | 995 | (sha256 |
2c9e2587 | 996 | (base32 "0qrdw67n14n0km2f8l0gk8scgj3ybz662s9x8jwj3rrj33nl2d1a")))) |
999ef90a | 997 | (build-system meson-build-system) |
a1797f32 | 998 | (native-inputs |
e3196755 | 999 | (list gtk-doc/stable pkg-config python-wrapper)) |
a1797f32 | 1000 | (inputs |
8394619b | 1001 | (list freetype fribidi harfbuzz)) |
a1797f32 NG |
1002 | (home-page "https://github.com/HOST-Oman/libraqm") |
1003 | (synopsis "Library for complex text layout") | |
1004 | (description | |
1005 | "Raqm is a small library that encapsulates the logic for complex text | |
1006 | layout and provides a convenient API. | |
1007 | ||
1008 | It currently provides bidirectional text support (using FriBiDi), | |
1009 | shaping (using HarfBuzz), and proper script itemization. As a result, Raqm | |
1010 | can support most writing systems covered by Unicode.") | |
1011 | (license license:expat))) | |
eee35fe3 JL |
1012 | |
1013 | (define-public lcdf-typetools | |
1014 | (package | |
1015 | (name "lcdf-typetools") | |
1016 | (version "2.108") | |
1017 | (source (origin | |
1018 | (method git-fetch) | |
1019 | (uri (git-reference | |
1020 | (url "https://github.com/kohler/lcdf-typetools") | |
1021 | (commit (string-append "v" version)))) | |
1022 | (file-name (git-file-name name version)) | |
1023 | (sha256 | |
1024 | (base32 | |
1025 | "0a6jqaqwq43ldjjjlnsh6mczs2la9363qav7v9fyrfzkfj8kw9ad")))) | |
1026 | (build-system gnu-build-system) | |
1027 | (arguments | |
1028 | `(#:configure-flags | |
1029 | ;; This is only provided by the monolithic texlive distribution. | |
1030 | ;; FIXME: texlive-kpathsea doesn't come with the library and headers | |
1031 | (list "--without-kpathsea"))) | |
1032 | (native-inputs | |
8394619b | 1033 | (list autoconf automake)) |
eee35fe3 JL |
1034 | (home-page "https://lcdf.org/type/") |
1035 | (synopsis "Multiple font manipulation tools") | |
1036 | (description "LCDF Typetools comprises several programs for manipulating | |
1037 | PostScript Type 1, Type 1 Multiple Master, OpenType, and TrueType fonts. | |
1038 | These tools are cfftot1, mmafm, mmpfb, otfinfo, otftotfm, t1dotlessj, t1lint, | |
1039 | t1rawfm, t1reencode, t1testpage and ttftotype42.") | |
1040 | (license license:gpl2+))) |