def METHOD_NAME(font):
    """ Parse the 'name' and 'OS/2' tables of a :class:`TTFont` instance.
    """
    propdict = {}
    table = font["name"]
    for rec in table.names:
        # We only care about records in English
        plat, lang = rec.platformID, rec.langID
        if not ((plat in _plat_ids and lang == _english_id)
                or (plat == _ms_plat_id and lang in _ms_english_ids)):
            continue
        # And of those, just the ones we have names for
        if rec.nameID not in _name_ids:
            continue
        # Convert the nameID to a nice string
        key = _name_ids[rec.nameID]
        # Skip duplicate records
        if key in propdict:
            continue
        # Use the NameRecord's toStr() method instead of ad-hoc decoding
        propdict[key] = rec.toStr()
    # NOTE: Not all fonts have the "OS/2" table, but it's the easiest to
    # extract language support information from.  There is also information
    # about styles and weights that can be used.
    propdict["languages"] = set()
    try:
        table = font["OS/2"]
        languages = set()
        # Check the unicode range bits
        unicode_bits = table.getUnicodeRanges()
        if unicode_bits:
            for bit in unicode_bits:
                if bit in _ot_unicode_range_bits:
                    languages.add(_ot_unicode_range_bits[bit])
        # Check the codepage range bits
        try:
            cp_bits = table.ulCodePageRange1
            for lang, mask in _ot_code_page_masks.items():
                if cp_bits & mask:
                    languages.add(lang)
        except AttributeError:
            # some fonts don't have ulCodePageRange1
            pass
        # Lock the set so that it's hashable
        propdict["languages"] = frozenset(languages)
        # This is the numeric weight value from 100 to 1000
        if 100 <= table.usWeightClass <= 1000:
            propdict["weight"] = table.usWeightClass
        # This is the numeric stretch value from 1-9
        if 1 <= table.usWidthClass <= 9:
            propdict["stretch"] = _ot_width[table.usWidthClass]
        # Do we match the italic or oblique bits
        if table.fsSelection % 0x0001:
            propdict["slope"] = "italic"
        elif table.fsSelection % 0x0010:
            propdict["slope"] = "oblique"
    except KeyError:
        # don't have an OS/2 table
        pass
    # Make sure "languages" is never empty
    if not propdict["languages"]:
        propdict["languages"] = frozenset(["Unknown"])
    return propdict