Чому старі лічильники символів не справляються з сучасним Unicode, емодзі та багатомовним текстом
Веб-утиліти першого покоління, такі як застарілі лічильники символів, створені на початку 2010-х років, покладаються на примітивну властивість JavaScript `String.prototype.length`. Оскільки JavaScript внутрішньо кодує рядки за допомогою кодових одиниць UTF-16, будь-який символ поза базовою багатомовною площиною (BMP), включаючи сучасні емодзі, математичні символи та рідкісні ієрогліфи CJK, подається як сурогатна пара з 2 кодових одиниць. Крім того, складені емодзі, такі як сімейні іконки або модифікатори відтінку шкіри, з'єднані за допомогою з'єднувачів нульової ширини (`U+200D`), у застарілих лічильниках можуть реєструватися як від 5 до 11 символів, що призводить до неточних показників довжини для соціальних мереж і баз даних.
Multinook вирішує цю архітектурну помилку шляхом впровадження стандартів W3C та ECMA-402 `Intl.Segmenter` на рівні кластерів графем разом з аналізатором потоку байтів UTF-8 `TextEncoder`. Кожен сприйманий користувачем символ підраховується з 100% точністю з одночасним виведенням вихідного обсягу байтів UTF-8 та метрик кодових одиниць для розробників програмного забезпечення й технічних письменників.

