 
 isVariationSelector = (string, index) ->
   0xFE00 <= string.charCodeAt(index) <= 0xFE0F
+
+isCombiningCharacter = (string, index) ->
+  0x0300 <= string.charCodeAt(index) <= 0x036F or
+  0x1AB0 <= string.charCodeAt(index) <= 0x1AFF or
+  0x1DC0 <= string.charCodeAt(index) <= 0x1DFF or
+  0x20D0 <= string.charCodeAt(index) <= 0x20FF or
+  0xFE20 <= string.charCodeAt(index) <= 0xFE2F
 
 # Is the character at the given index the start of a high/low surrogate pair?
 #

isVariationSequence = (string, index=0) ->
  not isVariationSelector(string, index) and isVariationSelector(string, index + 1)

# Is the character at the given index the start of high/low surrogate pair
# or a variation sequence?
#

#
# Return a {Boolean}.
isPairedCharacter = (string, index=0) ->
  isSurrogatePair(string, index) or isVariationSequence(string, index) or isCombinedCharacter(string, index)

# Does the given string contain at least surrogate pair or variation sequence?
#
