def METHOD_NAME(package_dir):
    package = Path(package_dir)
    infofile = package / "fontinfo.plist"
    orderfile = package / "order.plist"
    uistatefile = package / "UIState.plist"
    glyphorder = []
    if orderfile.exists():
        with open(orderfile, "r", encoding="utf-8") as order_fh:
            glyphorder = openstep_plist.load(order_fh)
    with open(infofile, "r", encoding="utf-8") as info_fh:
        data = openstep_plist.load(info_fh, use_numbers=True)
    if uistatefile.exists():
        with open(uistatefile, "r", encoding="utf-8") as uistate_fh:
            uistate = openstep_plist.load(uistate_fh, use_numbers=True)
            if "displayStrings" in uistate and "DisplayStrings" not in uistate:
                uistate["DisplayStrings"] = uistate.pop("displayStrings")
            data.update(uistate)
    data["glyphs"] = []
    for glyphfile in (package / "glyphs").glob("*.glyph"):
        with open(glyphfile, "r") as fh:
            glyph = openstep_plist.load(fh, use_numbers=True)
        data["glyphs"].append(glyph)
    # Sort according to glyphorder
    def sort_key(glyph):
        glyphname = glyph["glyphname"]
        if glyphname in glyphorder:
            return (0, glyphorder.index(glyphname))
        else:
            return (1, glyphname)
    data["glyphs"] = list(sorted(data["glyphs"], key=sort_key))
    return data