all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Bruno Victal <mirai@makinata.eu>
To: 65741@debbugs.gnu.org
Subject: bug#65741: The URW fontconfig dilemma
Date: Mon, 4 Sep 2023 18:33:50 +0100	[thread overview]
Message-ID: <e9c47e35-1b50-4db3-b1ee-6659b22b2381@makinata.eu> (raw)

During my attempt to build the enblend-enfuse documentation [1],
it would fail and display the following message:
--8<---------------cut here---------------start------------->8---
Error: fontconfig: Didn't find expected font family. Perhaps URW Type 1 fonts need installing?
--8<---------------cut here---------------end--------------->8---

Naturally searching for the URW fonts in guix didn't yield anything
other than some texlive packages so I ended up writing a definition
for it.
It turned out to be unnecessary as I later found out 'font-ghostscript'
provides just that. (an issue of discoverability perhaps?)

Nonetheless my newly written package (which should be “merged” into
the definition of 'font-ghostscript' with a better description and
perhaps a rename) is an update of what font-ghostscript provides and
should work just the same, in theory. (spoilers: it doesn't)

Intrigued by this difference and after some doc reading and several
arcane commands thrown in desperation, I've distilled them to this:

With the existing font-ghostscript package:
--8<---------------cut here---------------start------------->8---
$ guix shell -C font-ghostscript fontconfig
[env]$ fc-match 'Nimbus Sans L'
n019003l.pfb: "Nimbus Sans L" "Regular"
--8<---------------cut here---------------end--------------->8---

With the new font-urw-base35 package (definition below):
--8<---------------cut here---------------start------------->8---
$ ~/src/guix/pre-inst-env guix shell -C font-urw-base35 fontconfig
[env]$ fc-match 'Nimbus Sans L' 
DejaVuSans.ttf: "DejaVu Sans" "Book"
--8<---------------cut here---------------end--------------->8---

The source of the font-urw-base35 has a file for fontconfig at
'fontconfig/urw-fallback-backwards.conf' that contains this:
--8<---------------cut here---------------start------------->8---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<!--
This file is used to alias/map previous versions of font families from (URW)++
to similar/metric-conmpatible font families of latest font versions from
(URW)++ itself.

Most likely this aliasing/mapping will be useful for people who:
 * have latest versions of (URW)++ fonts, but their documents still reference
   or requires older versions of these fonts

latest URW fonts:     previous URW fonts:
====================  =============================================
Nimbus Mono PS        Nimbus Mono L | Nimbus Mono
URW Gothic            URW Gothic L
URW Bookman           URW Bookman L | Bookman URW
Z003                  URW Chancery L | Chancery URW
D050000L              Dingbats
Nimbus Sans           Nimbus Sans L
Nimbus Sans Narrow    Nimbus Sans Narrow (same as current name)
C059                  Century Schoolbook L | Century SchoolBook URW
P052                  URW Palladio L | Palladio URW
Standard Symbols PS   Standard Symbols L
Nimbus Roman          Nimbus Roman No9 L
-->
…
  <alias binding="same">
    <family>Nimbus Sans L</family>
    <accept>
      <family>Nimbus Sans</family>
    </accept>
  </alias>
…
--8<---------------cut here---------------end--------------->8---

So unless I misunderstood the fontconfig documentation and the comment,
'fc-match' should have found the newer Nimbus Sans, not DejaVu Sans.
What gives?


The definition for this font-urw-base35 package:
--8<---------------cut here---------------start------------->8---
;; Note: add #:use-module (guix build-system copy) to gnu/packages/fonts.scm.
;; when trying this out.
;; See <https://src.fedoraproject.org/rpms/urw-base35-fonts/blob/ed09bf27915269b454df3efb36b2e0cf45accd26/f/urw-base35-fonts.spec> for more information.
(define-public font-urw-base35
  (let ((commit "3c0ba3b5687632dfc66526544a4e811fe0ec0cd9")
        (revision "0")
        (base-version "20200910"))
    (package
      (name "font-urw-base35")
      (version (git-version base-version revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/ArtifexSoftware/urw-base35-fonts")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32
           "11mc9r2ap80jmh0w5jmypyq9hzyi9g9g4hcj45d5xn66m3jnlgjq"))))
      (build-system copy-build-system)
      (arguments
       (list
        #:install-plan
        #~`(("fonts/" "share/fonts/urw-base35"
             #:exclude ("README" "COPYING"))
            ("appstream/" "share/metainfo"
             #:exclude ("README.md"))
            ("fontconfig/" "share/fontconfig/conf.avail/"
             #:exclude ("README.md")))
        #:phases
        #~(modify-phases %standard-phases
            (add-before 'install 'configure
              (lambda _
                ;; Set font priority for fontconfig.
                (with-directory-excursion "fontconfig"
                  (for-each (lambda (f)
                              ;; As recommended in the README.md.
                              (rename-file f
                                           (string-append "61-"
                                                          (basename f))))
                            (find-files "." "\\.conf$"
                                        #:fail-on-error? #t))))))))
      (home-page "https://github.com/ArtifexSoftware/urw-base35-fonts")
      (synopsis "URW++ base 35 font set.")
      (description "This package provides substitutes for the 35 fonts
required by Adobe Postscript(c) Language Level 2 specification.")
      (license license:agpl3))))
--8<---------------cut here---------------end--------------->8---

[1]: <https://issues.guix.gnu.org/65706>


-- 
Furthermore, I consider that nonfree software must be eradicated.

Cheers,
Bruno.




             reply	other threads:[~2023-09-04 17:42 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-04 17:33 Bruno Victal [this message]
2023-09-07 16:47 ` bug#65741: Thanks for debugging! Felix Lechner via Bug reports for GNU Guix

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e9c47e35-1b50-4db3-b1ee-6659b22b2381@makinata.eu \
    --to=mirai@makinata.eu \
    --cc=65741@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.