                     break
                 }
                 
-                let newCharacters = prefixCharacters + characters
-                
-                allLineCharacters[lineCharactersIndex] = newCharacters
-                
-                lineCharactersIndex += 1
-            }
-            
-            
-        }
-        
-        let textAppended = allLineCharacters.joinWithSeparator("\n")
+                let lineStringWithPrefix = prefixString + lineString
+                
+                allLineString[index] = lineStringWithPrefix
+                
+            } else {
+                // Normal text
+                // Nothing needs to do.
+            }
+            
+            // add 1 for '\n' char length.
+            moveLocationValue += lineString.characters.count + 1
+        }
+        
+        let textAppended = allLineString.joinWithSeparator("\n")
         
         return textAppended
     }

                    let checkBoxListItem = item as! CheckBoxListItem
                    
                    if checkBoxListItem.isChecked {
                        prefixCharacters = "- [x] "
                    } else {
                        prefixCharacters = "- [ ] "
                    }
                    
                    numberedItemIndex = 1

    
    // MARK: - Convert
    
    func appendGlyphsWithText(text: String, textRange: UITextRange) -> String
    {
        // All of the point y in seleted text.
        let selectedPointYArray = CKTextUtil.seletedPointYArrayWithTextView(self, selectedRange: textRange, isContainFirstLine: true, sortByAsc: true)
        
        var allLineString = (text as NSString).componentsSeparatedByString("\n")
        
        var numberedItemIndex = 1
        // move location record current range location of string.
        var moveLocationValue = 0
        
        for (index, lineString) in allLineString.enumerate() {
            let currentPosition = self.positionFromPosition(self.beginningOfDocument, offset: moveLocationValue)
            let currentY = self.caretRectForPosition(currentPosition!).origin.y
            
            if let item = itemFromListItemContainerWithY(currentY) {
                var prefixString: String! = ""
                
                switch item.listType() {
                case .Numbered:
                    prefixString = "\(numberedItemIndex). "
                    numberedItemIndex += 1
                    
                    break
                case .Bulleted:
                    prefixString = "* "
                    
                    numberedItemIndex = 1
                    
