Заменить textarea на div contenteditable=true
Получить позицию курсора по selection.getRange
Вставить в эту позицию спан с zero-width space
Получить координаты спана
Сорри, что без ссылок, пишу с телефона. Но каждая из этих штук легко гуглится.
UPD: Как-то так:
(там есть глюк, куда-то пробелы пропадают, но мне лень разбираться)