def METHOD_NAME(ttFont):
    """Checking font version fields (head and name table)."""
    # Get font version from the head table as an exact Fraction.
    head_version = fractions.Fraction(ttFont["head"].fontRevision)
    # 1/0x10000 is the best achievable when converting a decimal
    # to 16.16 Fixed point.
    warn_tolerance = 1 / 0x10000
    # Some tools aren't that accurate and only care to do a
    # conversion to 3 decimal places.
    # 1/2000 is the tolerance for accepting equality to 3 decimal places.
    fail_tolerance = fractions.Fraction(1, 2000)
    # Compare the head version against the name ID 5 strings in all name records.
    name_id_5_records = [
        record
        for record in ttFont["name"].names
        if record.nameID == NameID.VERSION_STRING
    ]
    failed = False
    if name_id_5_records:
        for record in name_id_5_records:
            try:
                name_version = parse_version_string(record.toUnicode())
                if abs(name_version - head_version) > fail_tolerance:
                    failed = True
                    yield FAIL, Message(
                        "mismatch",
                        f'head version is "{float(head_version):.5f}"'
                        f" while name version string (for"
                        f" platform {record.platformID},"
                        f" encoding {record.platEncID}) is"
                        f' "{record.toUnicode()}".',
                    )
                elif abs(name_version - head_version) > warn_tolerance:
                    yield WARN, Message(
                        "near-mismatch",
                        f'head version is "{float(head_version):.5f}"'
                        f" while name version string (for"
                        f" platform {record.platformID},"
                        f" encoding {record.platEncID}) is"
                        f' "{record.toUnicode()}".'
                        f" This matches to 3 decimal places, but"
                        f" is not as accurate as possible.",
                    )
            except ValueError:
                failed = True
                yield FAIL, Message(
                    "parse",
                    f"name version string for"
                    f" platform {record.platformID},"
                    f" encoding {record.platEncID}"
                    f' ("{record.toUnicode()}"),'
                    f" could not be parsed.",
                )
    else:
        failed = True
        yield FAIL, Message(
            "missing", "There is no name ID 5 (version string) in the font."
        )
    if not failed:
        yield PASS, "All font version fields match."