Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix [61550f38bf]: font actual returns wrong font size with Xft. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-6-branch |
Files: | files | file ages | folders |
SHA3-256: |
84cd707d483d30cd1069401a08157c15 |
User & Date: | fvogel 2023-11-15 19:55:23 |
References
2024-05-20
| ||
14:58 | Revert 3rd change from [84cd707d] following Csaba's request. check-in: 0d473dd0 user: fvogel tags: bug-8162e9b7a9 | |
2024-05-18
| ||
14:27 | • Ticket [8162e9b7] Fonts are always scaled with UI when creating new instances status still Open with 3 other changes artifact: b638febf user: fvogel | |
2024-05-17
| ||
20:51 | • Ticket [8162e9b7]: 3 changes artifact: cc92c93e user: fvogel | |
2024-05-16
| ||
06:09 | • Ticket [8162e9b7]: 3 changes artifact: aa11b00b user: jan.nijtmans | |
2024-05-15
| ||
22:09 | • Ticket [8162e9b7]: 3 changes artifact: ca2dbee6 user: fvogel | |
11:28 | Experiment: is [84cd707d] the cause of [8162e9b7a9]? I don't see anything wrong with this commit. Closed-Leaf check-in: a2234d91 user: jan.nijtmans tags: backout-84cd707d | |
Context
2024-05-15
| ||
11:28 | Experiment: is [84cd707d] the cause of [8162e9b7a9]? I don't see anything wrong with this commit. Closed-Leaf check-in: a2234d91 user: jan.nijtmans tags: backout-84cd707d | |
2023-11-22
| ||
12:28 | Fix [22a4ad2a6e]: Aqua: let Core Graphics manage pixmap data memory. Patch from Christopher Chavez. check-in: 3eb478b0 user: fvogel tags: core-8-6-branch | |
2023-11-21
| ||
22:11 | Fix [22a4ad2a6e]: Aqua: let Core Graphics manage pixmap data memory. Patch from Christopher Chavez. check-in: 6926b536 user: fvogel tags: bug-22a4ad2a6e | |
21:11 | Patch for [1d8b7124b6]: X11: Photo images not drawn correctly for 32-bit visuals, by Christopher Chavez. This does not build on Windows though. check-in: 182ef922 user: fvogel tags: bug-1d8b7124b6 | |
2023-11-16
| ||
20:09 | merge core-8-6-branch check-in: 618aa93c user: fvogel tags: less_tests_constraints | |
2023-11-15
| ||
20:19 | Merge 8.6 check-in: 8e171a9f user: jan.nijtmans tags: core-8-branch | |
19:55 | Fix [61550f38bf]: font actual returns wrong font size with Xft. check-in: 68b2ed5c user: fvogel tags: trunk, main | |
19:55 | Fix [61550f38bf]: font actual returns wrong font size with Xft. check-in: 84cd707d user: fvogel tags: core-8-6-branch | |
19:54 | Remove debug outputs. Closed-Leaf check-in: dbc9bb9f user: fvogel tags: bug-61550f38bf | |
2023-11-13
| ||
17:26 | Using the application's TkMainInfo struct for sharing the nbTabsStickBit in a thread-safe manner. Thanks Christian W.! check-in: a1b5bcd3 user: csaba tags: core-8-6-branch | |
Changes
Changes to tests/font.test.
︙ | ︙ | |||
2335 2336 2337 2338 2339 2340 2341 | font actual -xyz--*-*-*-*-*-*-*-*-*-*-*-* font actual -xyz-*-*-*-*-*-*-*-*-*-*-*-*-* font actual -xyz-?-*-*-*-*-*-*-*-*-*-*-*-* lindex [font actual -xyz-times-*-*-*-*-*-*-*-*-*-*-*-*] 1 } -result [font actual {times 0} -family] | | > | | | 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 | font actual -xyz--*-*-*-*-*-*-*-*-*-*-*-* font actual -xyz-*-*-*-*-*-*-*-*-*-*-*-*-* font actual -xyz-?-*-*-*-*-*-*-*-*-*-*-*-* lindex [font actual -xyz-times-*-*-*-*-*-*-*-*-*-*-*-*] 1 } -result [font actual {times 0} -family] test font-44.1 {TkFontGetPixels: size < 0} -setup { set oldscale [tk scaling] } -body { set oldsize [expr {-(-12.0 / $oldscale)}] tk scaling 0.5 expr {round([font actual {times -12} -size] / $oldscale * 0.5) - round($oldsize) == 0} } -cleanup { tk scaling $oldscale } -result 1 test font-44.2 {TkFontGetPoints: size >= 0} -constraints {noExceed haveTimes12Font} -setup { set oldscale [tk scaling] } -body { tk scaling 0.5 font actual {times 12} -size } -cleanup { tk scaling $oldscale |
︙ | ︙ |
Changes to unix/tkUnixRFont.c.
︙ | ︙ | |||
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | * * GetTkFontAttributes -- * Fill in TkFontAttributes from an XftFont. */ static void GetTkFontAttributes( XftFont *ftFont, TkFontAttributes *faPtr) { const char *family = "Unknown"; const char *const *familyPtr = &family; int weight, slant, pxsize; double size, ptsize; (void) XftPatternGetString(ftFont->pattern, XFT_FAMILY, 0, familyPtr); | > | | | | | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | * * GetTkFontAttributes -- * Fill in TkFontAttributes from an XftFont. */ static void GetTkFontAttributes( Tk_Window tkwin, XftFont *ftFont, TkFontAttributes *faPtr) { const char *family = "Unknown"; const char *const *familyPtr = &family; int weight, slant, pxsize; double size, ptsize; (void) XftPatternGetString(ftFont->pattern, XFT_FAMILY, 0, familyPtr); if (XftPatternGetDouble(ftFont->pattern, XFT_PIXEL_SIZE, 0, &ptsize) == XftResultMatch) { size = -ptsize; } else if (XftPatternGetDouble(ftFont->pattern, XFT_SIZE, 0, &ptsize) == XftResultMatch) { size = ptsize; } else if (XftPatternGetInteger(ftFont->pattern, XFT_PIXEL_SIZE, 0, &pxsize) == XftResultMatch) { size = (double)-pxsize; } else { size = 12.0; } if (XftPatternGetInteger(ftFont->pattern, XFT_WEIGHT, 0, |
︙ | ︙ | |||
210 211 212 213 214 215 216 | #ifdef DEBUG_FONTSEL printf("family %s size %d weight %d slant %d\n", family, (int)size, weight, slant); #endif /* DEBUG_FONTSEL */ faPtr->family = Tk_GetUid(family); | | | 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | #ifdef DEBUG_FONTSEL printf("family %s size %d weight %d slant %d\n", family, (int)size, weight, slant); #endif /* DEBUG_FONTSEL */ faPtr->family = Tk_GetUid(family); faPtr->size = TkFontGetPoints(tkwin, size); faPtr->weight = (weight > XFT_WEIGHT_MEDIUM) ? TK_FW_BOLD : TK_FW_NORMAL; faPtr->slant = (slant > XFT_SLANT_ROMAN) ? TK_FS_ITALIC : TK_FS_ROMAN; faPtr->underline = 0; faPtr->overstrike = 0; } /* |
︙ | ︙ | |||
346 347 348 349 350 351 352 | if ((ftFont == NULL) || errorFlag) { Tk_DeleteErrorHandler(handler); FinishedWithFont(fontPtr); ckfree(fontPtr); return NULL; } fontPtr->font.fid = XLoadFont(Tk_Display(tkwin), "fixed"); | | | 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | if ((ftFont == NULL) || errorFlag) { Tk_DeleteErrorHandler(handler); FinishedWithFont(fontPtr); ckfree(fontPtr); return NULL; } fontPtr->font.fid = XLoadFont(Tk_Display(tkwin), "fixed"); GetTkFontAttributes(tkwin, ftFont, &fontPtr->font.fa); GetTkFontMetrics(ftFont, &fontPtr->font.fm); Tk_DeleteErrorHandler(handler); if (errorFlag) { FinishedWithFont(fontPtr); ckfree(fontPtr); return NULL; } |
︙ | ︙ | |||
502 503 504 505 506 507 508 | pattern = XftPatternCreate(); if (faPtr->family) { XftPatternAddString(pattern, XFT_FAMILY, faPtr->family); } if (faPtr->size > 0.0) { XftPatternAddDouble(pattern, XFT_SIZE, faPtr->size); } else if (faPtr->size < 0.0) { | | | 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 | pattern = XftPatternCreate(); if (faPtr->family) { XftPatternAddString(pattern, XFT_FAMILY, faPtr->family); } if (faPtr->size > 0.0) { XftPatternAddDouble(pattern, XFT_SIZE, faPtr->size); } else if (faPtr->size < 0.0) { XftPatternAddDouble(pattern, XFT_PIXEL_SIZE, -faPtr->size); } else { XftPatternAddDouble(pattern, XFT_SIZE, 12.0); } switch (faPtr->weight) { case TK_FW_NORMAL: default: weight = XFT_WEIGHT_MEDIUM; |
︙ | ︙ | |||
671 672 673 674 675 676 677 | * character. * *---------------------------------------------------------------------- */ void TkpGetFontAttrsForChar( | | | | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 | * character. * *---------------------------------------------------------------------- */ void TkpGetFontAttrsForChar( Tk_Window tkwin, /* Window on the font's display */ Tk_Font tkfont, /* Font to query */ int c, /* Character of interest */ TkFontAttributes *faPtr) /* Output: Font attributes */ { UnixFtFont *fontPtr = (UnixFtFont *) tkfont; /* Structure describing the logical font */ FcChar32 ucs4 = (FcChar32) c; /* UCS-4 character to map */ XftFont *ftFont = GetFont(fontPtr, ucs4, 0.0); /* Actual font used to render the character */ GetTkFontAttributes(tkwin, ftFont, faPtr); faPtr->underline = fontPtr->font.fa.underline; faPtr->overstrike = fontPtr->font.fa.overstrike; } int Tk_MeasureChars( Tk_Font tkfont, /* Font in which characters will be drawn. */ |
︙ | ︙ |