code: def get_font_size(columns: List[str]) -> float:
      """Calculate font size based on number of columns
  
      Args:
          columns: List of column names.
  
      Returns:
          Font size for missing values plots.
      """
      max_label_length = max(len(label) for label in columns)
  
      if len(columns) < 20:
          font_size = 13.0
      elif 20 <= len(columns) < 40:
          font_size = 12.0
      elif 40 <= len(columns) < 60:
          font_size = 10.0
      else:
          font_size = 8.0
  
      font_size *= min(1.0, 20.0 / max_label_length)
      return font_size
  
file_path: ydata-profiling/src/ydata_profiling/visualisation/missing.py
imports: from typing import Any, List
  from matplotlib import pyplot
  from ydata_profiling.config import Settings
  from ydata_profiling.visualisation.context import manage_matplotlib_context
  from ydata_profiling.visualisation.plot import missing_bar, missing_heatmap, missing_matrix
  from ydata_profiling.visualisation.utils import hex_to_rgb, plot_360_n0sc0pe
label_desc: Use image node_id 1 for calling a global function with example usage: get_font_size(columns) and returns: font_size