                 range = NSMakeRange(self.location, truncateLineCount + self.truncateText.length)
                 self.typesetter = CTTypesetterCreateWithAttributedString(self.attributedText)
             }
-            let (tailCharacter, returned) = self.getLineTail(range)
-            let tailOffset = self.getTailOffset(tailCharacter)
+            let (_, returned) = self.getLineTail(range)
 
             lines.append(self.getCTLine(NSMakeRange(range.location, range.length - (returned ? 1 : 0)),
-                headOffset: offset, tailOffset: tailOffset, burasagari: burasagari, oikomi: oikomi))
+                headOffset: offset, burasagari: burasagari, oikomi: oikomi))
 
             // 次の行が指定した高さを超える場合は終了
             if overflow {

    }

    /**
     行末オフセットを取得。カーニング対象文字の場合は、半角分のオフセット

     - parameter lineTail: 行末文字
     */
    private func getTailOffset(lineTail: String) -> CGFloat {
        return kCharactersHaveRightSpace.contains(lineTail) ? self.fontHalfWidth : 0
    }

    /**
     offset を考慮したうえで、現在の行には何文字入るか？

     - parameter offset: 行頭オフセット。指定しない場合は `getOffset()` で算出したものを使用する


        let context: CGContext? = needsDrawing ? self.createContext(canvasContext) : nil

        /// typographicWidth, offsetX, offsetY, ctline
        var lines: [(CGFloat, CGFloat, CGFloat, CTLine)] = []

        while self.location < self.length {
