docs: def com_google_fonts_check_family_win_ascent_and_descent(ttFont, vmetrics):
    """Checking OS/2 usWinAscent & usWinDescent.
  
    A font's winAscent and winDescent values should be greater than the
    head table's yMax, abs(yMin) values. If they are less than these
    values, clipping can occur on Windows platforms,
    https://github.com/RedHatBrand/Overpass/issues/33
  
    If the font includes tall/deep writing systems such as Arabic or
    Devanagari, the winAscent and winDescent can be greater than the yMax and
    abs(yMin) to accommodate vowel marks.
  
    When the win Metrics are significantly greater than the upm, the
    linespacing can appear too loose. To counteract this, enabling the
    OS/2 fsSelection bit 7 (Use_Typo_Metrics), will force Windows to use the
    OS/2 typo values instead. This means the font developer can control the
    linespacing with the typo values, whilst avoiding clipping by setting
    the win values to values greater than the yMax and abs(yMin).
    """
    failed = False
  
    # OS/2 usWinAscent:
    if ttFont['OS/2'].usWinAscent < vmetrics['ymax']:
      failed = True
      yield FAIL, Message("ascent",
                          ("OS/2.usWinAscent value"
                           " should be equal or greater than {}, but got"
                           " {} instead").format(vmetrics['ymax'],
                                                 ttFont['OS/2'].usWinAscent))
    if ttFont['OS/2'].usWinAscent > vmetrics['ymax'] * 2:
      failed = True
      yield FAIL, Message(
          "ascent", ("OS/2.usWinAscent value {} is too large."
                     " It should be less than double the yMax."
                     " Current yMax value is {}").format(ttFont['OS/2'].usWinDescent,
                                                         vmetrics['ymax']))
    # OS/2 usWinDescent:
    if ttFont['OS/2'].usWinDescent < abs(vmetrics['ymin']):
      failed = True
      yield FAIL, Message(
          "descent", ("OS/2.usWinDescent value"
                      " should be equal or greater than {}, but got"
                      " {} instead").format(
                          abs(vmetrics['ymin']), ttFont['OS/2'].usWinDescent))
  
    if ttFont['OS/2'].usWinDescent > abs(vmetrics['ymin']) * 2:
      failed = True
      yield FAIL, Message(
          "descent", ("OS/2.usWinDescent value {} is too large."
                      " It should be less than double the yMin."
                      " Current absolute yMin value is {}").format(ttFont['OS/2'].usWinDescent,
                                                                   abs(vmetrics['ymin'])))
    if not failed:
      yield PASS, "OS/2 usWinAscent & usWinDescent values look good!"