             case "´",
                  "`":
                 // FIXME: Replacing a combining accent only works for the very first scalar in a string
-                return TypographizerToken(.fixable, "’")
+                return TypographizerToken(.apostrophe, "’")
             case "\"",
                  "'",
                  "-":

                    || CharacterSet.punctuationCharacters.contains(previousScalar) && !CharacterSet.whitespacesAndNewlines.contains(nextScalar)
                {
                    tokenText = self.openingSingleQuote
                } else if CharacterSet.whitespacesAndNewlines.contains(nextScalar) || CharacterSet.punctuationCharacters.contains(nextScalar) {
                    tokenText = self.closingSingleQuote
                } else {
                    tokenText = self.apostrophe
                }
            } else {
                if previousScalar == nil {
                    tokenText = self.openingSingleQuote
                } else {
                    tokenText = self.closingSingleQuote
                }
            }
        case "-":


struct Typographizer {

    enum TypographizerTokenResult: String {
        case openingSingle = "opening-single"
        case closingSingle = "closing-single"
        case openingDouble = "opening-double"
        case closingDouble = "closing-double"
        case apostrophe = "apostrophe"
        case enDash = "en-dash"
        // Unchanged text because it doesn’t contain the trigger characters:
        case unchanged = "unchanged"
        // It’s one of the trigger characters but didn’t need changing:
        case ignored = "ignored"
        // Was skipped because it was either a tag, or protected text between tags.
        case skipped = "skipped"
    }
    
    struct TypographizerToken {
        let result: TypographizerTokenResult
        let text: String
        
        init(_ result: TypographizerTokenResult, _ text: String) {
            self.result = result
            self.text = text
        }
    }
