[PATCH v2 5/7] gdi32: Handle zero-width control characters in get_glyph_outline.

Sven Baars sbaars at codeweavers.com
Thu Nov 12 04:41:16 CST 2020


On 12-11-2020 10:38, Huw Davies wrote:
> On Mon, Nov 09, 2020 at 03:07:17PM +0100, Sven Baars wrote:
>>          {
>> +            todo_wine {
>>              ok(len > 0, "Test %d: got %d.\n", i, len);
>>              ok(abc.abcA + abc.abcB + abc.abcC <= len && abc.abcA + abc.abcB + abc.abcC > 0,
>>                 "Test %d: expected %d >= %d > 0.\n", i, len, abc.abcA + abc.abcB + abc.abcC);
>>              ok(abc.abcB > 0, "Test %d: got %d.\n", i, abc.abcB);
>> +            }
>>          }
> 
> I haven't looked at this in any detail, but if your changes require
> adding todo_wine blocks that's going to require a lot of
> justification.
> 
> Huw.
> 
Hi Huw,

Right, I added these tests to cover everything that is affected by
changes to get_glyph_outline(). The change in this patch fixes the
behavior of GetCharacterPlacementW() in 15/17 cases,
GetTextExtentExPointW() in 17/17 cases and GetCharWidth32W() and
GetCharABCWidthsW() in 10/17 cases. In wine they all depend on the same
function (get_glyph_outline()), on Windows they clearly do not.  I'm not
sure if it's worth it to change these functions to not all use
get_glyph_outline() so we can attempt to make then behave correctly in
all cases. Especially since it's so inconsistent between these
functions, and apparently also across different Windows version. Note
that this may be easier now after the recent restructuring of gdi32 than
it was at the time when I wrote these patches.

Some of these issues can also be attributed to the different
implementation of Tahoma that we have in wine, making testing this more
difficult. If I use the windows one I get quite some "Test succeeded
inside todo block" failures.

Cheers,
Sven



More information about the wine-devel mailing list