toCodePoints static method
Convert provided string into an array of Unicode Code Points. Based on https://stackoverflow.com/a/21409165/1556249 and https://www.npmjs.com/package/code-point-at.
Implementation
static Uint32List toCodePoints(String input) {
var codePoints = Uint32List(input.length);
var sizeOffset = 0;
var codePointIndex = 0;
for (var i = 0; i < input.length; i++) {
var before = input.codeUnitAt(i);
if (before >= 0xd800 && before <= 0xdbff && input.length > i + 1) {
var next = input.codeUnitAt(i + 1);
if (next >= 0xdc00 && next <= 0xdfff) {
codePoints[codePointIndex++] =
((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);
i++;
sizeOffset++;
continue;
}
}
codePoints[codePointIndex++] = (before);
}
codePoints = codePoints.sublist(0, codePoints.length - sizeOffset);
return codePoints;
}