      行末の文字を取得する。行末が改行の場合は、改行文字の前の文字を取得する。
 
      - parameter range: 行末の文字を取得するための、現在行の全体における範囲。
-     - returns: 行末の文字
-     */
-    private func getLineTail(range: NSRange) -> String {
-        var tail = ""
+     - returns: (行末の文字, 行末が改行か)
+     */
+    private func getLineTail(range: NSRange) -> (String, Bool) {
+        var (tail, returned) = ("", false)
         let location = range.location + range.length
         if location <= self.attributedText.length {
             tail = self.attributedText.substring(NSMakeRange(location - 1, 1))
             if tail == "\n" && location - 2 >= 0 {  // 行末が改行の場合は、改行文字の前の文字を取得する。
                 tail = self.attributedText.substring(NSMakeRange(location - 2, 1))
-            }
-        }
-        return tail
+                returned = true
+            }
+        }
+        return (tail, returned)
     }
 
     /**

        while self.location < self.length {

            self.goToNextLinePosition()
            var offset = self.getOffset()
            let (currentLineCount, burasagari, oikomi) = self.getSuggestedLineCount(offset)
            var range = self.getCurrentLineRange(currentLineCount)


        return CTTypesetterSuggestLineBreak(
            self.typesetter,
            self.location,
            Double(self.width - (offset ?? self.getHeadOffset()) - self.truncateRect.size.width))
    }

    /**
