diff --git a/frontend/src/app/main/ui/workspace/shapes/text/v2_editor.cljs b/frontend/src/app/main/ui/workspace/shapes/text/v2_editor.cljs index 4e6d2ea326..ecd0d811fe 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text/v2_editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text/v2_editor.cljs @@ -321,7 +321,7 @@ "bottom" (- y (- height (:height selrect))) "center" (- y (/ (- height (:height selrect)) 2)) y)] - [(assoc selrect :y y :width (:width selrect) :height (:height selrect)) transform]) + [(assoc selrect :y y :width (:width selrect) :height (max height (:height selrect))) transform]) (let [bounds (gst/shape->rect shape) x (mth/min (dm/get-prop bounds :x) diff --git a/frontend/src/app/render_wasm/api/fonts.cljs b/frontend/src/app/render_wasm/api/fonts.cljs index d9d9324c1e..1962ed224f 100644 --- a/frontend/src/app/render_wasm/api/fonts.cljs +++ b/frontend/src/app/render_wasm/api/fonts.cljs @@ -26,6 +26,8 @@ (l/derived :fonts st/state)) (def ^:private default-font-size 14) +(def ^:private default-line-height 1.2) +(def ^:private default-letter-spacing 0.0) (defn- google-font-id->uuid [font-id] @@ -221,6 +223,26 @@ :else 400)))) +(defn serialize-line-height + ([line-height] + (serialize-line-height line-height default-line-height)) + ([line-height default-value] + (cond + (number? line-height) + line-height + + (string? line-height) + (or (d/parse-double line-height) default-value)))) + +(defn serialize-letter-spacing + [letter-spacing] + (cond + (number? letter-spacing) + letter-spacing + + (string? letter-spacing) + (or (d/parse-double letter-spacing) default-letter-spacing))) + (defn store-font [shape-id font] (let [font-id (get font :font-id) diff --git a/frontend/src/app/render_wasm/api/texts.cljs b/frontend/src/app/render_wasm/api/texts.cljs index 02ded78242..15827186de 100644 --- a/frontend/src/app/render_wasm/api/texts.cljs +++ b/frontend/src/app/render_wasm/api/texts.cljs @@ -55,10 +55,8 @@ text-direction (sr/translate-text-direction (get paragraph :text-direction)) text-decoration (sr/translate-text-decoration (get paragraph :text-decoration)) text-transform (sr/translate-text-transform (get paragraph :text-transform)) - line-height (get paragraph :line-height 1.2) - line-height (if (not (number? line-height)) 1.2 line-height) - letter-spacing (get paragraph :letter-spacing) - letter-spacing (if (not (number? letter-spacing)) 0.0 letter-spacing)] + line-height (f/serialize-line-height (get paragraph :line-height)) + letter-spacing (f/serialize-letter-spacing (get paragraph :letter-spacing))] (-> offset (mem/write-u8 dview text-align) @@ -75,17 +73,14 @@ [offset dview spans paragraph] (let [paragraph-font-size (get paragraph :font-size) paragraph-font-weight (-> paragraph :font-weight f/serialize-font-weight) - paragraph-line-height (get paragraph :line-height 1.2)] + paragraph-line-height (f/serialize-line-height (get paragraph :line-height))] (reduce (fn [offset span] (let [font-style (sr/translate-font-style (get span :font-style "normal")) font-size (get span :font-size paragraph-font-size) font-size (f/serialize-font-size font-size) - line-height (get span :line-height paragraph-line-height) - line-height (if (not (number? line-height)) 1.2 line-height) - - letter-spacing (get span :letter-spacing 0.0) - letter-spacing (if (not (number? letter-spacing)) 0.0 letter-spacing) + line-height (f/serialize-line-height (get span :line-height) paragraph-line-height) + letter-spacing (f/serialize-letter-spacing (get paragraph :letter-spacing)) font-weight (get span :font-weight paragraph-font-weight) font-weight (f/serialize-font-weight font-weight)