In SVGParser.swift in parseText method you're taking string's full range for regex matching in the following way:
let fullRange = NSRange(location: 0, length: elementString.count)
In case text contains Emoji, elementString.count returns wrong count, because Emoji is composed character. So, count of UTF16 code unites can be different than count of composed characters.
So, I propose to replace elementString.count with elementString.utf16.count, or maybe you have any other ways to fix the issue.
In SVGParser.swift in parseText method you're taking string's full range for regex matching in the following way: let fullRange = NSRange(location: 0, length: elementString.count)
In case text contains Emoji, elementString.count returns wrong count, because Emoji is composed character. So, count of UTF16 code unites can be different than count of composed characters.
So, I propose to replace elementString.count with elementString.utf16.count, or maybe you have any other ways to fix the issue.