Fix: Underline does not appear in some fonts and scales (WinXP .. Win11) (#1308)

This commit is contained in:
ManoloFLTK
2025-09-17 17:07:45 +02:00
parent a8244ebcd8
commit 6160673bbf
2 changed files with 11 additions and 0 deletions
+1
View File
@@ -74,6 +74,7 @@ public:
static HBITMAP calc_HBITMAP_mask(Fl_RGB_Image *mask);
void delete_bitmask(fl_uintptr_t bm) FL_OVERRIDE;
HBITMAP create_alphamask(int w, int h, int d, int ld, const uchar *array);
void draw(const char *str, int n, int x, int y) FL_OVERRIDE;
void draw_unscaled(const char* str, int n, int x, int y) FL_OVERRIDE;
void draw_unscaled(int angle, const char *str, int n, int x, int y) FL_OVERRIDE;
void rtl_draw_unscaled(const char* str, int n, int x, int y) FL_OVERRIDE;
@@ -593,6 +593,16 @@ exit_error:
return;
} // fl_text_extents
void Fl_GDI_Graphics_Driver::draw(const char *str, int n, int x, int y) {
if (!size_ || !font_descriptor()) font(FL_HELVETICA, FL_NORMAL_SIZE);
Fl_Region r2 = scale_clip(scale());
int offset = (scale() == 1 ? 0 : -1); // for issue #1308
draw_unscaled(str, n, floor(x), floor(y + offset));
unscale_clip(r2);
}
void Fl_GDI_Graphics_Driver::draw_unscaled(const char* str, int n, int x, int y) {
COLORREF oldColor = SetTextColor(gc_, fl_RGB());
// avoid crash if no font has been set yet