Turns out there's a difference after all. See the attached images. If you move the cursor past the EOB, with the beyond_zv check the line is drawn with the line-number face, not the line-number-current-line face. If we check with it->what != IT_EOB, then the line-number-current-line face is used. I think the right thing to do, when dealing with the "phantom line" just past the EOB, is to: - Use line-number-current-line, if the cursor is there. - Use the line-number face, and not the tick faces, if the cursor is not, regardless of whether this phantom line would be a tick line or not if it were used. So there's a patch that checks for tick faces with beyond_zv, for the current line face with it->what, and that moves all face setting for line numbers entirely out of the loop.