Subject: bug#22927: system-installed emacs does not find system-installed fonts

From: Alex Kost <[email-masked]>
Date: Sun, 03 Apr 2016 10:44:26 +0300

Ludovic Courtès (2016-04-02 20:29 +0300) wrote:

> Alex Kost <[email-masked]> skribis:
>
>> myglc2 (2016-03-06 21:57 +0300) wrote:
>>
>>> Not technically not a bug because the doc says ...
>>>
>>> 2.6.2 X11 Fonts
>>>
>>> The ‘fontconfig’ package in Guix looks for fonts in
>>> ‘$HOME/.guix-profile’ by default.  Thus, to allow graphical applications
>>> installed with Guix to display fonts, you have to install fonts with
>>> Guix as well.
>>
>> (I have not checked but) I believe this can be fixed by adding
>> "/run/current-system/profile/share/fonts" to '--with-add-fonts'
>> configure flag of the 'fontconfig' package.
>>
>> For now I think the following recipe should work:
>>
>> 1. Make a file "~/.config/fontconfig/fonts.conf" with the following
>>    contents:
>>
>> <?xml version="1.0"?>
>> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
>> <fontconfig>
>>     <dir>/run/current-system/profile/share/fonts</dir>
>> </fontconfig>
>
> Indeed.  I realize I did this independently in
> e71ef7adaece7e132a5059139122b45083ea1b39.
>
> The better fix will be to rebuild Fontconfig as you suggest.  Would you
> like to try that and apply it to ‘core-updates’?

Yes, the patch is attached.

>From fc239dda52244d6bd3b645660ca0827aa17afc05 Mon Sep 17 00:00:00 2001
From: Alex Kost <[email-masked]>
Date: Sun, 3 Apr 2016 10:27:45 +0300
Subject: [PATCH] gnu: fontconfig: Find fonts in the system profile.

Fixes <http://bugs.gnu.org/22927>.
Reported by myglc2 <[email-masked]>.

This also reverts commit e71ef7adaece7e132a5059139122b45083ea1b39.

* gnu/packages/fontutils.scm (fontconfig)[arguments]: Add
/run/current-system/profile/share/fonts to --with-add-fonts configure flag.
* gnu/system/shadow.scm (default-skeletons): Do not create "fonts.conf" file.
---
 gnu/packages/fontutils.scm |  8 ++++----
 gnu/system/shadow.scm      | 23 -----------------------
 2 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index ff10a4a..8d33211 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -95,10 +95,10 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
                            (assoc-ref %build-inputs "gs-fonts")
                            "/share/fonts")
 
-            ;; register fonts from user profile
-            ;; TODO: Add /run/current-system/profile/share/fonts and remove
-            ;; the skeleton that works around it from 'default-skeletons'.
-            "--with-add-fonts=~/.guix-profile/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")
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index a13ef11..6e62aee 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -131,12 +131,6 @@
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
 'useradd' in the home directory of newly created user accounts."
-  (define fonts.conf-content
-    ;; SXML for ~/.config/fontconfig/fonts.conf.  This works around the fact
-    ;; that Fontconfig currently does not such this directory by default,
-    ;; thereby ignoring fonts installed system-wide (FIXME).
-    `(fontconfig (dir "/run/current-system/profile/share/fonts")))
-
   (define copy-guile-wm
     #~(begin
         (use-modules (guix build utils))
@@ -180,22 +174,6 @@ source /etc/profile\n"))
         (xdefaults (plain-file "Xdefaults" "\
 XTerm*utf8: always
 XTerm*metaSendsEscape: true\n"))
-        (fonts.conf (computed-file
-                     "fonts.conf"
-                     #~(begin
-                         (use-modules (guix build utils)
-                                      (sxml simple))
-
-                         (define dir
-                           (string-append #$output
-                                          "/fontconfig"))
-
-                         (mkdir-p dir)
-                         (call-with-output-file (string-append dir
-                                                             "/fonts.conf")
-                           (lambda (port)
-                             (sxml->xml '#$fonts.conf-content port))))
-                     #:modules '((guix build utils))))
         (gdbinit   (plain-file "gdbinit" "\
 # Tell GDB where to look for separate debugging files.
 set debug-file-directory ~/.guix-profile/lib/debug\n")))
@@ -204,7 +182,6 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
       (".zlogin" ,zlogin)
       (".Xdefaults" ,xdefaults)
       (".guile-wm" ,guile-wm)
-      (".config" ,fonts.conf)
       (".gdbinit" ,gdbinit))))
 
 (define (skeleton-directory skeletons)
-- 
2.7.3