I want a function f such that:
f("abc") == ["a", "b", "c"]
f("café") == ["c", "a", "f", "é"]
f("") == ["", ""]
I'm not sure if the last example renders correctly by mail for everyone but
the input String contains these _two_ "natural/visual characters":
(1) A family emoji
(2) a construction worker (woman, with skin tone modifier) emoji.
and the result is an Array of two strings (one for each emoji).
The first two examples are easy, the third example is the tricky one.
Is there a (practical) way to do this (in Swift 3)?
It's OK if the function has to depend on eg a graphics context etc.
(I tried writing a function so that it extracts the glyphs, using
NSTextStorage, NSLayoutManager and the AppleColorEmoji font, but it says
that "" contains 18(!) glyphs, whereas eg "café" contains
4 as expected.)
If the emojis of the third example doesn't look like they should in this
mail, here is another way to write the exact same example using only simple
let inputOfThirdExample =
let result = f(inputOfThirdExample)
let expectedResult =
print(result.elementsEqual(result)) // Should print true