diff --git a/src/element/textWysiwyg.tsx b/src/element/textWysiwyg.tsx index 109b557d67..05c4ed7f51 100644 --- a/src/element/textWysiwyg.tsx +++ b/src/element/textWysiwyg.tsx @@ -36,6 +36,7 @@ import { getMaxContainerWidth, computeContainerDimensionForBoundText, measureDOMHeight, + getLineHeightInPx, splitIntoLines, } from "./textElement"; import { @@ -278,11 +279,19 @@ export const textWysiwyg = ({ getFontString(updatedTextElement), updatedTextElement.lineHeight, ); - let lineHeight = element.lineHeight; - if (isSafari && domHeight > textElementHeight) { - lineHeight = (Math.floor(element.lineHeight * element.fontSize) / - element.fontSize) as ExcalidrawTextElement["lineHeight"]; + if (isSafari) { + const lineCount = splitIntoLines(element.text).length; + if (domHeight > textElementHeight) { + lineHeight = (Math.floor(element.lineHeight * element.fontSize) / + element.fontSize) as ExcalidrawTextElement["lineHeight"]; + textElementHeight = + getLineHeightInPx(element.fontSize, lineHeight) * lineCount; + mutateElement(updatedTextElement, { + lineHeight, + height: textElementHeight, + }); + } } // Make sure text editor height doesn't go beyond viewport