font loading functionality. | (ns metabase.util.fonts (:require [clojure.string :as str] [metabase.util :as u] [metabase.util.files :as u.files] [metabase.util.log :as log])) |
Use a font's directory to derive a Display Name by changing underscores to spaces. | (defn- normalize-font-dirname [dirname] (str/replace dirname #"_" " ")) |
(defn- contains-font-file? [path] ;; todo: expand this to allow other font formats? (boolean (some #(str/includes? % ".woff") (u.files/files-seq path)))) | |
(defn- available-fonts*
[]
(u.files/with-open-path-to-resource [font-path "frontend_client/app/fonts"]
(let [font-path-str (str font-path "/")]
(log/info (str "Reading available fonts from " font-path))
(->> font-path
u.files/files-seq
(filter contains-font-file?)
(map #(str/replace (str %) font-path-str ))
(map normalize-font-dirname)
(sort-by u/lower-case-en))))) | |
Return an alphabetically sorted list of available fonts, as Strings. | (let [fonts (delay (available-fonts*))]
(defn available-fonts
[]
@fonts)) |
True if a font's 'Display String', | (defn available-font? [font] (boolean ((set (available-fonts)) font))) |