Thanks Ali, I think I get close: bool is_id(dchar c) { return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= 0xc0 && c <= 0x0d || c >= 0xd8 && c <= 0xf6 || c >= 0xf8 && c <= 0xff; } this doesn't include some math symbols. like c >= 0xc0 did.