IIUC the limitation seems to be only that functions such as "charAt" do not recognize that surrogates aren't valid characters:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt via https://stackoverflow.com/a/8716157/1503120. This is a problem of many 32-bit char based toolkits too and doesn't (can't?) have an efficient solution for SMP without counting the surrogates (and checking them). Right?