diff --git a/manim/mobject/svg/text_mobject.py b/manim/mobject/svg/text_mobject.py index 0dd0981a8b..42bc791a4b 100644 --- a/manim/mobject/svg/text_mobject.py +++ b/manim/mobject/svg/text_mobject.py @@ -129,6 +129,11 @@ def __init__(self, text, **config): self.line_spacing = self.size + self.size * 0.3 else: self.line_spacing = self.size + self.size * self.line_spacing + if self.size > 800: + logger.warning( + "Using a font size larger than 800 can lead to render problems." + " See https://github.com/ManimCommunity/manim/pull/476 for details." + ) file_name = self.text2svg() self.remove_last_M(file_name) SVGMobject.__init__(self, file_name, **config) @@ -318,7 +323,7 @@ def text2svg(self): file_name = os.path.join(dir_name, hash_name) + ".svg" if os.path.exists(file_name): return file_name - surface = cairo.SVGSurface(file_name, 600, 400) + surface = cairo.SVGSurface(file_name, 4 * len(self.text) * size, 400) context = cairo.Context(surface) context.set_font_size(size) context.move_to(START_X, START_Y) @@ -684,6 +689,11 @@ def __init__(self, text: str, **config): # pylint: disable=redefined-outer-name self.line_spacing = self.size + self.size * 0.3 else: self.line_spacing = self.size + self.size * self.line_spacing + if self.size > 800: + logger.warning( + "Using a font size larger than 800 can lead to render problems." + " See https://github.com/ManimCommunity/manim/pull/476 for details." + ) file_name = self.text2svg() self.remove_last_M(file_name) SVGMobject.__init__(self, file_name, **config) @@ -891,7 +901,7 @@ def text2svg(self): file_name = os.path.join(dir_name, hash_name) + ".svg" if os.path.exists(file_name): return file_name - surface = cairocffi.SVGSurface(file_name, 600, 400) + surface = cairocffi.SVGSurface(file_name, 4 * len(self.text) * size, 400) context = cairocffi.Context(surface) context.move_to(START_X, START_Y) settings = self.text2settings() diff --git a/tests/test_text.py b/tests/test_text.py new file mode 100644 index 0000000000..ea227c58aa --- /dev/null +++ b/tests/test_text.py @@ -0,0 +1,9 @@ +from manim import Text + + +def test_long_string(): + """Check that `#469 `_ + is resolved.""" + + t = Text("a" * 150, font="Arial") + assert len(t.text) == len(t.submobjects)