docs: def get_font(self, weight='medium', slant='upright', width='normal'):
          """Return the font matching or closest to the given style
  
          If a font with the given weight, slant and width is available, return
          it. Otherwise, return the font that is closest in style.
  
          Args:
              weight (FontWeight): weight of the font
              slant (FontSlant): slant of the font
              width (FontWidth): width of the font
  
          Returns:
              Font: the requested font
  
          """
          def find_closest_style(style, styles, alternatives):
              try:
                  return style, styles[style]
              except KeyError:
                  for option in alternatives[style]:
                      try:
                          return option, styles[option]
                      except KeyError:
                          continue
  
          def find_closest_weight(weight, weights):
              index = FontWeight.values.index(weight)
              min_distance = len(FontWeight.values)
              closest = None
              for i, option in enumerate(FontWeight.values):
                  if option in weights and abs(index - i) < min_distance:
                      min_distance = abs(index - i)
                      closest = option
              return closest, weights[closest]
  
          available_width, slants = find_closest_style(width, self,
                                                       FontWidth.alternatives)
          available_slant, weights = find_closest_style(slant, slants,
                                                        FontSlant.alternatives)
          available_weight, font = find_closest_weight(weight, weights)
  
          if (available_width != width or available_slant != slant or
              available_weight != weight):
              warn('{} does not include a {} {} {} font. Falling back to {} {} '
                   '{}'.format(self.name, width, weight, slant, available_width,
                               available_weight, available_slant))
          return font