"Pedro Araújo Chaves Jr." inckie@gmail.com writes:
Right now I can't think of another way around that bug except a patch that big, but I think we could break it into two smaller ones: the first one would change what must be changed for the second one ― the actual correction ― to work. Well, that first one involves changing the signatures of the ExtTextOut functions in winex11.drv, in a similar fashion to what Keith had proposed; but, instead of adding 'INT *breakTotalExtra, INT *breakCount' to their argument lists, I suggest that we pass them the whole DC instead of just its physDev ― that way we'd have access to the relevant attributes while still being able to get its physDev (assigning it to a variable right at the beginning of the functions, in order to keep their current functionality in this first step).
Passing the DC is not an option, that's a private gdi32 structure that the driver doesn't know about. You shouldn't need to change the function signature in any case, it already takes an lpDx array, all you have to do is put better spacing values in there.