class_docstr: Helper to create TextureFont instances and reuse them when possible
class_docstr_tok: ["Helper","to","create","TextureFont","instances","and","reuse","them","when","possible"]
docstr: Get a font described by face and size
code: def get_font(self, face, bold=False, italic=False):
      """Get a font described by face and size"""
      key = "%s-%s-%s" % (face, bold, italic)
      if key not in self._fonts:
          font = dict(face=face, bold=bold, italic=italic)
          self._fonts[key] = TextureFont(font, self._renderer)
      return self._fonts[key]
  
imports: from __future__ import division
  import numpy
  from copy import deepcopy
  import sys
  from ._sdf_gpu import SDFRendererGPU
  from ._sdf_cpu import _calc_distance_field
  from ...gloo import TextureAtlas, IndexBuffer, VertexBuffer
  from ...gloo import context
  from ...gloo.wrappers import _check_valid
  from ...util.fonts import _load_glyph
  from ..transforms import STTransform
  from ...color import ColorArray
  from ..visual import Visual
  from ...io import load_spatial_filters
label_desc: Use image node_id 2 for calling the FontManager obj's underlying member method code with example usage: obj.get_font(face, bold, italic) and returns: self