def METHOD_NAME(args):
    args = parser.parse_args(args)
    if args.replace_existing:
        existing_handling = "replace"
    else:
        existing_handling = "skip"  # One day we'll have "rename" as well
    if args.layout_closure:
        layout_handling = "closure"
    else:
        layout_handling = "subset"
    if not args.output:
        args.output = args.ufo1
    ufo1 = ufoLib2.Font.open(args.ufo1)
    ufo2 = ufoLib2.Font.open(args.ufo2)
    # Determine glyph set to merge
    def parse_cp(cp):
        if (
            cp.startswith("U+")
            or cp.startswith("u+")
            or cp.startswith("0x")
            or cp.startswith("0X")
        ):
            return int(cp[2:], 16)
        return int(cp)
    glyphs = set()
    if args.glyphs == "*":
        glyphs = ufo2.keys()
    elif args.glyphs_file:
        glyphs = set(open(args.glyphs_file).read().splitlines())
    elif args.glyphs:
        glyphs = set(args.glyphs.split(","))
    if args.codepoints:
        codepoints = set(args.codepoints.split(","))
    elif args.codepoints_file:
        codepoints = set(open(args.codepoints_file).read().splitlines())
    else:
        codepoints = []
    if codepoints:
        codepoints = [parse_cp(cp) for cp in codepoints]
    if args.exclude_glyphs:
        exclude_glyphs = set(args.exclude_glyphs.split(","))
    elif args.exclude_glyphs_file:
        exclude_glyphs = set(open(args.exclude_glyphs_file).read().splitlines())
    else:
        exclude_glyphs = set()
    merge_ufos(
        ufo1,
        ufo2,
        glyphs=glyphs,
        exclude_glyphs=exclude_glyphs,
        codepoints=codepoints,
        layout_handling=layout_handling,
        existing_handling=existing_handling,
    )
    ufo1.save(args.output, overwrite=True)