From 6eb7edc664d48498fa53aefabf838c2aa80782fa Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Fri, 18 Jun 2021 17:59:15 +0530 Subject: [PATCH 1/2] Scale Text Correctly Change TEXT_MOB_SCALE_FACTOR value Also deprecate `size` parameter Also, now text isn't scaled when increasing font size instead it is passed to the underlying enging for handling. Though always a Text object is scaled with a default value so that it fits the screen. Signed-off-by: Naveen M K --- manimlib/mobject/svg/text_mobject.py | 29 +++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/manimlib/mobject/svg/text_mobject.py b/manimlib/mobject/svg/text_mobject.py index e0161f23..d8dbe184 100644 --- a/manimlib/mobject/svg/text_mobject.py +++ b/manimlib/mobject/svg/text_mobject.py @@ -3,6 +3,7 @@ import hashlib import os import re import typing +import warnings from contextlib import contextmanager from pathlib import Path @@ -17,7 +18,7 @@ from manimlib.utils.directories import get_downloads_dir, get_text_dir from manimpango import PangoUtils from manimpango import TextSetting -TEXT_MOB_SCALE_FACTOR = 0.001048 +TEXT_MOB_SCALE_FACTOR = 1/100 class Text(SVGMobject): @@ -30,7 +31,7 @@ class Text(SVGMobject): "font": '', "gradient": None, "lsh": -1, - "size": 1, + "size": None, "font_size": 48, "tab_width": 4, "slant": NORMAL, @@ -46,7 +47,17 @@ class Text(SVGMobject): def __init__(self, text, **config): self.full2short(config) digest_config(self, config) - self.lsh = self.size if self.lsh == -1 else self.lsh + if self.size: + warnings.warn( + "self.size has been deprecated and will " + "be removed in future.", + DeprecationWarning + ) + self.font_size = self.size + if self.lsh == -1: + self.lsh = self.font_size + self.font_size * 0.3 + else: + self.lsh = self.font_size + self.font_size * self.lsh text_without_tabs = text if text.find('\t') != -1: text_without_tabs = text.replace('\t', ' ' * self.tab_width) @@ -67,7 +78,7 @@ class Text(SVGMobject): # anti-aliasing if self.height is None: - self.scale(TEXT_MOB_SCALE_FACTOR * self.font_size) + self.scale(TEXT_MOB_SCALE_FACTOR) def remove_empty_path(self, file_name): with open(file_name, 'r') as fpr: @@ -144,7 +155,7 @@ class Text(SVGMobject): def text2hash(self): settings = self.font + self.slant + self.weight settings += str(self.t2f) + str(self.t2s) + str(self.t2w) - settings += str(self.lsh) + str(self.size) + settings += str(self.lsh) + str(self.font_size) id_str = self.text + settings hasher = hashlib.sha256() hasher.update(id_str.encode()) @@ -198,8 +209,8 @@ class Text(SVGMobject): def text2svg(self): # anti-aliasing - size = self.size * 10 - lsh = self.lsh * 10 + size = self.font_size + lsh = self.lsh if self.font == '': self.font = get_customization()['style']['font'] @@ -210,8 +221,8 @@ class Text(SVGMobject): if os.path.exists(file_name): return file_name settings = self.text2settings() - width = 600 - height = 400 + width = DEFAULT_PIXEL_WIDTH + height = DEFAULT_PIXEL_HEIGHT disable_liga = self.disable_ligatures return manimpango.text2svg( settings, From 5765ab9055598b756c448e473ad7c594e1cb406a Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Sat, 19 Jun 2021 00:43:01 +0530 Subject: [PATCH 2/2] Move 0.3 constant to `DEFAULT_LINE_SPACING_SCALE` --- manimlib/mobject/svg/text_mobject.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manimlib/mobject/svg/text_mobject.py b/manimlib/mobject/svg/text_mobject.py index d8dbe184..ed173272 100644 --- a/manimlib/mobject/svg/text_mobject.py +++ b/manimlib/mobject/svg/text_mobject.py @@ -19,7 +19,7 @@ from manimpango import PangoUtils from manimpango import TextSetting TEXT_MOB_SCALE_FACTOR = 1/100 - +DEFAULT_LINE_SPACING_SCALE = 0.3 class Text(SVGMobject): CONFIG = { @@ -55,7 +55,7 @@ class Text(SVGMobject): ) self.font_size = self.size if self.lsh == -1: - self.lsh = self.font_size + self.font_size * 0.3 + self.lsh = self.font_size + self.font_size * DEFAULT_LINE_SPACING_SCALE else: self.lsh = self.font_size + self.font_size * self.lsh text_without_tabs = text