Cursor changing heights over widget created spans

The cursor height is taken from the client rectangles of the text or widget next to it. Browsers do not expose something like line height to scripts, and it often wouldn’t be appropriate to use the same cursor height for a whole line anyway, so that’s the best we do. As you found, inline blocks don’t tend to actually match the surrounding text in height. You can, in some cases, put a custom coordsAt method on your widgets to work around this, but in your case, where the widget doesn’t contain text that will align with the surrounding text, that may not help a lot.