code: def com_google_fonts_check_valid_glyphnames(ttFont):
    
    if ttFont.sfntVersion == b'\x00\x01\x00\x00' and ttFont.get(
        "post") and ttFont["post"].formatType == 3.0:
      yield SKIP, ("TrueType fonts with a format 3.0 post table contain no"
                   " glyph names.")
    else:
      import re
      bad_names = []
      for _, glyphName in enumerate(ttFont.getGlyphOrder()):
        if glyphName in [".null", ".notdef", ".ttfautohint"]:
          # These 2 names are explicit exceptions
          # in the glyph naming rules
          continue
        if not re.match(r'^(?![.0-9])[a-zA-Z._0-9]{1,31}$', glyphName):
          bad_names.append(glyphName)
  
      if len(bad_names) == 0:
        yield PASS, "Glyph names are all valid."
      else:
        from fontbakery.utils import pretty_print_list
        yield FAIL, ("The following glyph names do not comply"
                     " with naming conventions: {}\n\n"
                     " A glyph name may be up to 31 characters in length,"
                     " must be entirely comprised of characters from"
                     " the following set:"
                     " A-Z a-z 0-9 .(period) _(underscore). and must not"
                     " start with a digit or period."
                     " There are a few exceptions"
                     " such as the special character \".notdef\"."
                     " The glyph names \"twocents\", \"a1\", and \"_\""
                     " are all valid, while \"2cents\""
                     " and \".twocents\" are not."
                     "").format(pretty_print_list(bad_names))
docs: Glyph names are all valid?