docs: def com_google_fonts_check_required_tables(ttFont):
    """Font contains all required tables?"""
    from .shared_conditions import is_variable_font
  
    REQUIRED_TABLES = {
        "cmap", "head", "hhea", "hmtx", "maxp", "name", "OS/2", "post"}
    OPTIONAL_TABLES = {
        "cvt ", "fpgm", "loca", "prep", "VORG", "EBDT", "EBLC", "EBSC", "BASE",
        "GPOS", "GSUB", "JSTF", "DSIG", "gasp", "hdmx", "LTSH", "PCLT", "VDMX",
        "vhea", "vmtx", "kern"
    }
    # See https://github.com/googlefonts/fontbakery/issues/617
    #
    # We should collect the rationale behind the need for each of the
    # required tables above. Perhaps split it into individual checks
    # with the correspondent rationales for each subset of required tables.
    #
    # com.google.fonts/check/kern_table is a good example of a separate
    # check for a specific table providing a detailed description of
    # the rationale behind it.
  
    optional_tables = [opt for opt in OPTIONAL_TABLES if opt in ttFont.keys()]
    if optional_tables:
      yield INFO, ("This font contains the following"
                   " optional tables [{}]").format(", ".join(optional_tables))
  
    if is_variable_font(ttFont):
      # According to https://github.com/googlefonts/fontbakery/issues/1671
      # STAT table is required on WebKit on MacOS 10.12 for variable fonts.
      REQUIRED_TABLES.add("STAT")
  
    missing_tables = [req for req in REQUIRED_TABLES if req not in ttFont.keys()]
    if "glyf" not in ttFont.keys() and "CFF " not in ttFont.keys():
      missing_tables.append("CFF ' or 'glyf")
  
    if missing_tables:
      yield FAIL, ("This font is missing the following required tables:"
                   " ['{}']").format("', '".join(missing_tables))
    else:
      yield PASS, "Font contains all required tables."