mirror of
https://github.com/penpot/penpot.git
synced 2025-05-10 13:26:37 +02:00
🐛 Prevent font flickering on font change.
This commit is contained in:
parent
9441b87d36
commit
38bbe89f60
2 changed files with 23 additions and 12 deletions
|
@ -152,16 +152,18 @@
|
||||||
(defmulti ^:private load-font :backend)
|
(defmulti ^:private load-font :backend)
|
||||||
|
|
||||||
(defmethod load-font :builtin
|
(defmethod load-font :builtin
|
||||||
[{:keys [id] :as font}]
|
[{:keys [id ::on-loaded] :as font}]
|
||||||
(js/console.log "[debug:fonts]: loading builtin font" id))
|
(js/console.log "[debug:fonts]: loading builtin font" id)
|
||||||
|
(on-loaded id))
|
||||||
|
|
||||||
(defmethod load-font :google
|
(defmethod load-font :google
|
||||||
[{:keys [id family variants] :as font}]
|
[{:keys [id family variants ::on-loaded] :as font}]
|
||||||
(js/console.log "[debug:fonts]: loading google font" id)
|
(js/console.log "[debug:fonts]: loading google font" id)
|
||||||
(let [base (str "https://fonts.googleapis.com/css?family=" family)
|
(let [base (str "https://fonts.googleapis.com/css?family=" family)
|
||||||
variants (str/join "," (map :name variants))
|
variants (str/join "," (map :name variants))
|
||||||
uri (str base ":" variants)
|
uri (str base ":" variants "&display=block")
|
||||||
node (create-link-node uri)]
|
node (create-link-node uri)]
|
||||||
|
(.addEventListener node "load" (fn [event] (on-loaded id)))
|
||||||
(.append (.-head js/document) node)
|
(.append (.-head js/document) node)
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
|
@ -170,9 +172,16 @@
|
||||||
(js/console.warn "no implementation found for" backend))
|
(js/console.warn "no implementation found for" backend))
|
||||||
|
|
||||||
(defn ensure-loaded!
|
(defn ensure-loaded!
|
||||||
[id]
|
([id]
|
||||||
(when-not (contains? @loaded id)
|
(when-not (contains? @loaded id)
|
||||||
(when-let [font (get @fontsdb id)]
|
(when-let [font (get @fontsdb id)]
|
||||||
(load-font font)
|
(load-font font)
|
||||||
(swap! loaded conj id))))
|
(swap! loaded conj id))))
|
||||||
|
([id on-loaded]
|
||||||
|
(if (contains? @loaded id)
|
||||||
|
(on-loaded id)
|
||||||
|
(when-let [font (get @fontsdb id)]
|
||||||
|
(load-font (assoc font ::on-loaded on-loaded))
|
||||||
|
(swap! loaded conj id)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,9 +57,11 @@
|
||||||
(let [id (-> (dom/get-target event)
|
(let [id (-> (dom/get-target event)
|
||||||
(dom/get-value))
|
(dom/get-value))
|
||||||
font (get fonts id)]
|
font (get fonts id)]
|
||||||
(dwt/set-font! editor id (:family font))
|
(fonts/ensure-loaded! id
|
||||||
(when (not= id font-id)
|
#(do
|
||||||
(dwt/set-font-variant! editor nil nil nil))))
|
(dwt/set-font! editor id (:family font))
|
||||||
|
(when (not= id font-id)
|
||||||
|
(dwt/set-font-variant! editor nil nil nil))))))
|
||||||
|
|
||||||
on-font-size-change
|
on-font-size-change
|
||||||
(fn [event]
|
(fn [event]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue