http://bugs.winehq.org/show_bug.cgi?id=33190
--- Comment #11 from Ralf Habacker ralf.habacker@freenet.de 2013-09-30 03:19:35 CDT ---
[reply] [-] Description Ralf Habacker 2013-03-12 08:09:10 CDT
We recognized an gdi text display issue using the application Gausz http://appdb.winehq.org/objectManager.php?sClass=application&iId=13649.
The problem appears when gdi text is drawn with font rotation *and* display context rotation.
The problem do not appear when either font rotation or display context rotation is zero.
The application uses CreateIndirectFont to set a fixed size font with optional set rotation and draws the text with TextOut(). The display context rotation has been set with SetWorldTransform().
We tried to find a test case application, but where not able to reproduce the problem outside the application. We also tried to debug into wine's code based, but got lost by the details.
[reply] [-] Comment 1 Ralf Habacker 2013-03-12 08:27:48 CDT
Created attachment 43905 [details] zero degree - no error
[reply] [-] Comment 2 Ralf Habacker 2013-03-12 08:28:23 CDT
Created attachment 43906 [details] 45 degree dc rotation - showing error
[reply] [-] Comment 3 Ralf Habacker 2013-03-12 08:28:55 CDT
Created attachment 43907 [details] 90 degree rotation - showing error too
[reply] [-] Comment 4 Ralf Habacker 2013-03-12 08:42:00 CDT
From my observations I would say that there is something wrong with the advance
of the character origin vector, seeable on the '6.0' or 'DN 200' text.
[reply] [-] Comment 5 Ralf Habacker 2013-03-13 03:28:18 CDT
(In reply to comment #0)
We tried to find a test case application, but where not able to reproduce the problem outside the application. We also tried to debug into wine's code based, but got lost by the details.
Any hints or inside informations welcome which let us go into the right direction for providing a test case or to find the bug.
[reply] [-] Comment 6 Alexandre Julliard 2013-03-13 05:18:41 CDT
Most gdi functions, including text, don't properly support GM_ADVANCED yet.
[reply] [-] Comment 7 Ralf Habacker 2013-03-13 06:40:22 CDT
Just for info: We tried crossover linux, which shows the same problem and reported this bug to Jeremy White from codeWeavers.
[reply] [-] Comment 8 Ralf Habacker 2013-03-13 08:14:19 CDT
Created attachment 43920 [details] testcase source
Based on the GM_ADVANCED hint I was able to create a test case
[reply] [-] Comment 9 Ralf Habacker 2013-03-13 08:14:39 CDT
Created attachment 43921 [details] testcase binary
[reply] [-] Comment 10 Ralf Habacker 2013-03-18 04:02:21 CDT
(In reply to comment #6)
Most gdi functions, including text, don't properly support GM_ADVANCED yet.
One problem with rotated text display seems to be in the implementation of GetTextExtendExPointW(), which output differs between windows and wine (beside the general scaling and rounding differences)
Windows 0° 18 34 49 67 85 102 121 138 156 165 182 193 200 218 235 244 262 271 278 295 313 331 349 367 375 393 409 420 437 446 464 482 491 509 526 544 561 579 597 10° 18 34 49 67 85 102 121 138 156 165 182 193 200 218 235 244 262 271 278 295 313 331 349 367 375 393 409 420 437 446 464 482 500 509 526 544 561 579 597 614 45° 18 34 49 67 85 102 121 138 156 165 182 193 200 218 235 244 262 271 278 295 313 331 349 367 375 393 409 420 437 446 464 482 500 509 526 544 561 579 597 614 60° 18 34 49 67 85 102 121 138 156 165 182 193 200 218 235 244 262 271 278 295 313 331 349 367 375 393 409 420 437 446 464 482 500 509 526 544 561 579 597 614 80° 18 34 50 68 86 104 123 141 159 168 186 197 204 222 240 249 267 276 283 301 319 338 356 374 383 401 417 428 446 455 474 492 510 519 537 555 573 591 609 627
Wine 0° 13 26 39 52 65 78 92 105 118 125 138 145 151 164 177 184 197 204 210 223 236 250 263 276 283 296 309 316 329 336 350 363 370 383 396 409 422 435 448 10° 13 26 38 51 64 77 91 103 116 123 136 143 149 162 174 181 194 201 207 220 232 246 259 272 279 292 304 311 324 331 345 357 370 377 390 403 416 428 441 454 45° 6 13 19 25 32 38 45 52 58 62 68 71 74 81 87 91 97 100 103 110 116 123 129 136 139 146 152 156 162 165 173 179 185 189 195 202 208 214 221 227 60° 4 7 11 14 18 21 25 28 32 34 37 39 41 44 48 50 53 55 57 60 64 67 71 74 76 80 83 85 89 91 94 98 101 103 107 110 114 117 121 124 80° 1 1 2 2 3 3 4 4 5 5 6 6 6 7 7 7 8 8 9 9 10 10 11 11 11 12 13 13 13 14 14 15 15 16 16 17 17 18 18 19
Looks like that wine use the rotation from the world transformation matrix, while the windows implementation do not use this rotation.