     /// - parameter baseStyle: The style to use for this string.
     public func append(to attributedString: NSMutableAttributedString, baseStyle: StringStyle, isLastElement: Bool) {
         attributedString.append(baseStyle.attributedString(from: self))
+        if isLastElement || !Thread.current.isCurrentlyComposing {
+            attributedString.removeKerningFromLastCharacter()
+        }
     }
 
 }

    }

}

    /// - parameter separator: The separator to insert between every pair of
    ///                        elements in `composables`.
    /// - returns: A new `NSAttributedString`.
    @nonobjc public static func composed(of composables: @autoclosure () -> [Composable], baseStyle: StringStyle = StringStyle(), separator: Composable? = nil) -> NSAttributedString {
        Thread.current.isCurrentlyComposing = true
        defer { Thread.current.isCurrentlyComposing = false }
        let string = NSMutableAttributedString()
        string.beginEditing()
        let composablesResult = composables()
        let lastComposableIndex = composablesResult.endIndex
        for (index, composable) in composablesResult.enumerated() {
            composable.append(to: string, baseStyle: baseStyle, isLastElement: index == lastComposableIndex - 1)
            if let separator = separator {
                if index != composablesResult.indices.last {
                    separator.append(to: string, baseStyle: baseStyle)
                }
            }
