https://bugs.winehq.org/show_bug.cgi?id=39051
--- Comment #3 from Eric Mullins wine@goabq.org --- Further experimentation reveals that it's not so much 1 at a time, as the text containing ONLY tab chars. ie: "\t\t\t " will work as expected in a single TabbedTextOut() call because of the inclusion of a space. But "\t\t\t" will exhibit the problematic behavior because it only contains tabs.
Possibly this was an "optimization" in the original code, thinking that a call that contains only tabs need not output anything, only update the delta x as if it were a GetTabbedTextExtent() call. That would explain the fact that the errant output mimics the previoius line-- nothing gets output, so it's still in the bitmap.