+ '(let* ((fonts '(;"1971-ibm-3278" ; BSD 3-clause
+ ;"1975-knight-tv" ; GPL
+ "1977-apple2" ; Non-Free
+ "1977-commodore-pet" ; Non-Free
+ "1979-atari-400-800" ; Non-Free
+ "1982-commodore64" ; Non-Free
+ "1985-atari-st" ; ?
+ "1985-ibm-pc-vga" ; Unclear
+ ;"modern-fixedsys-excelsior" ; Redistributable
+ ;"modern-hermit" ; SIL
+ ;"modern-inconsolata"; SIL
+ ;"modern-pro-font-win-tweaked" ; X11
+ ;"modern-proggy-tiny"; X11
+ ;"modern-terminus" ; SIL
+ "modern-monaco")) ; Apple Non-Free
+ (name-rx (make-regexp " *name: *\"([^\"]*)\""))
+ (source-rx (make-regexp " *source: \"fonts/([^/]*)[^\"]*\""))
+ (fontname-rx (make-regexp "\"fontName\":\"([^\"]*).*"))
+ (names
+ ;; Gather font names from all Fonts*.qml files.
+ ;; These will be used to remove items from the
+ ;; default profiles.
+ (fold
+ (lambda (font-file names)
+ (call-with-input-file font-file
+ (lambda (port)
+ (let loop ((name #f) (names names))
+ (let ((line (read-line port)))
+ (cond
+ ((eof-object? line) (pk 'names names))
+ ((regexp-exec name-rx line)
+ => (lambda (m)
+ (loop (match:substring m 1) names)))
+ ((regexp-exec source-rx line)
+ => (lambda (m)
+ (let ((font (match:substring m 1)))
+ (if (member font fonts)
+ (loop #f (lset-adjoin string=?
+ names name))
+ (loop #f names)))))
+ (else (loop name names))))))))
+ '() (find-files "app/qml" "Font.*\\.qml"))))
+ ;; Remove the font files themselves