er from 'graphemer'; const splitter = new Graphemer(); // plain latin alphabet - nothing spectacular splitter.splitGraphemes('abcd'); // returns ["a", "b", "c", "d"] // two-char emojis and six-char combined emoji splitter.splitGraphemes('🌷🎁💩😜👍🏳️‍🌈'); // returns ["🌷","🎁","💩","😜","👍","🏳️‍🌈"] // diacritics as combining marks, 10 JavaScript chars splitter.splitGraphemes('Ĺo͂řȩm̅'); // returns ["Ĺ","o͂","ř","ȩ","m̅"] // individual Korean characters (Jamo), 4 JavaScript chars splitter.splitGraphemes('뎌쉐'); // returns ["뎌","쉐"] // Hindi text with combining marks, 8 JavaScript chars splitter.splitGraphemes('अनुच्छेद'); // returns ["अ","नु","च्","छे","द"] // demonic multiple combining marks, 75 JavaScript chars splitter.splitGraphemes('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞'); // returns ["Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍","A̴̵̜̰͔ͫ͗͢","L̠ͨͧͩ͘","G̴̻͈͍͔̹̑͗̎̅͛́","Ǫ̵̹̻̝̳͂̌̌͘","!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞"] ``` ## TypeScript Graphemer is built with TypeScript and, of course, includes type declarations. ```javascript import Graphemer from 'graphemer'; const splitter = new Graphemer(); const split: string[] = splitter.splitGraphemes('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞'); ``` ## Contributing See [Contribution Guide](./CONTRIBUTING.md). ## Acknowledgements This library is a fork of the incredible work done by Orlin Georgiev and Huáng Jùnliàng at https://github.com/orling/grapheme-splitter. The original library was heavily influenced by Devon Govett's excellent [grapheme-breaker](https://github.com/devongovett/grapheme-breaker) CoffeeScript library.