def text2svg(self): # anti-aliasing size = self.size * 10 lsh = self.lsh * 10 if self.font == '': self.font = get_customization()['style']['font'] dir_name = get_text_dir() hash_name = self.text2hash() file_name = os.path.join(dir_name, hash_name) + '.svg' if os.path.exists(file_name): return file_name settings = self.text2settings() width = 600 height = 400 disable_liga = self.disable_ligatures return manimpango.text2svg( settings, size, lsh, disable_liga, file_name, START_X, START_Y, width, height, self.text, )
def text2svg(self): """Convert the text to SVG using Pango.""" size = self.font_size dir_name = get_text_dir() disable_liga = self.disable_ligatures if not os.path.exists(dir_name): os.makedirs(dir_name) hash_name = self.text2hash() file_name = os.path.join(dir_name, hash_name) + ".svg" if os.path.exists(file_name): return file_name extra_kwargs = {} extra_kwargs['justify'] = self.justify extra_kwargs['pango_width'] = DEFAULT_PIXEL_WIDTH - 100 if self.lsh: extra_kwargs['line_spacing'] = self.lsh return MarkupUtils.text2svg( f'<span foreground="{self.color}">{self.text}</span>', self.font, self.slant, self.weight, size, 0, # empty parameter disable_liga, file_name, START_X, START_Y, DEFAULT_PIXEL_WIDTH, # width DEFAULT_PIXEL_HEIGHT, # height **extra_kwargs)
def get_file_path_by_content(self, content: str) -> str: hash_content = str((content, self.justify, self.indent, self.alignment, self.line_width)) svg_file = os.path.join(get_text_dir(), tex_hash(hash_content) + ".svg") if not os.path.exists(svg_file): self.markup_to_svg(content, svg_file) return svg_file
def text2svg(self): # anti-aliasing size = self.size * 10 lsh = self.lsh * 10 if self.font == '': print(NOT_SETTING_FONT_MSG) dir_name = get_text_dir() #consts.TEXT_DIR hash_name = self.text2hash() 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) context = cairo.Context(surface) context.set_font_size(size) context.move_to(START_X, START_Y) settings = self.text2settings() offset_x = 0 last_line_num = 0 for setting in settings: font = setting.font slant = self.str2slant(setting.slant) weight = self.str2weight(setting.weight) text = self.text[setting.start:setting.end].replace('\n', ' ') context.select_font_face(font, slant, weight) if setting.line_num != last_line_num: offset_x = 0 last_line_num = setting.line_num context.move_to(START_X + offset_x, START_Y + lsh * setting.line_num) context.show_text(text) offset_x += context.text_extents(text)[4] return file_name
def get_file_path(self): full_markup = self.get_full_markup_str() svg_file = os.path.join(get_text_dir(), tex_hash(full_markup) + ".svg") if not os.path.exists(svg_file): self.markup_to_svg(full_markup, svg_file) return svg_file
def get_file_path_by_content(self, content: str) -> str: svg_file = os.path.join(get_text_dir(), tex_hash(content) + ".svg") if not os.path.exists(svg_file): self.markup_to_svg(content, svg_file) return svg_file