FWIW: I can conclude that the third example does not render correctly in Gmail ...
On Fri, May 12, 2017 at 10:43 AM, Jens Persson <j...@bitcycle.com> wrote: > 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)? > > /Jens > > > > PS > > 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 > text: > > let inputOfThirdExample = "\u{1F468}\u{200D}\u{1F469}\u{ > 200D}\u{1F467}\u{200D}\u{1F466}\u{1F477}\u{1F3FE}\u{200D}\u{2640}\u{FE0F}" > > let result = f(inputOfThirdExample) > > let expectedResult = ["\u{1F468}\u{200D}\u{1F469}\ > u{200D}\u{1F467}\u{200D}\u{1F466}", "\u{1F477}\u{1F3FE}\u{200D}\u{ > 2640}\u{FE0F}"] > > print(result.elementsEqual(result)) // Should print true > > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users