Attached patch fixes isprintable and other ctype-like methods. I left isspace() out for now because I could not find a test character outside of BMP to test with, but I think we should fix that for completeness as well.
At this point the goal is mostly to showcase Py_UNICODE_NEXT(), not completeness. See issue10542.
I also noticed that upper/lower/swapcase methods have the same issue:
>>> '\N{MATHEMATICAL BOLD CAPITAL A}'.lower() == '\N{MATHEMATICAL BOLD CAPITAL A}'
True
This will be a subject of a separate issue.