diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-06-06 16:55:05 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-06-06 16:55:05 +0200 |
| commit | 033ad1d732c21ff576986805ca475d1cf83bae5a (patch) | |
| tree | add4683a04dd75e58c357d289a1ed0410ff2a7fa | |
| parent | bba90ce005b2bfc37a1eea206084d918915463d3 (diff) | |
Fix "Fl::get_font_name() with Pango is inconsistent"-cont'd (#732)
| -rw-r--r-- | src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx | 7 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx index c9e2c37f8..4a2e09159 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx @@ -1092,10 +1092,13 @@ Fl_Font Fl_Cairo_Graphics_Driver::set_fonts(const char* /*pattern_name*/) pango_font_family_list_faces(families[fam], &faces, &n_faces); for (int j = 0; j < n_faces; j++) { const char *p = pango_font_face_get_face_name(faces[j]); + // Remove " Regular" suffix from font names + if (!strcasecmp(p, "regular")) p = NULL; // build the font's FLTK name - int lfont = lfam + strlen(p) + 2; + int lfont = lfam + (p ? strlen(p) + 2 : 1); char *q = new char[lfont]; - snprintf(q, lfont, "%s %s", fam_name, p); + if (p) snprintf(q, lfont, "%s %s", fam_name, p); + else strcpy(q, fam_name); Fl::set_font((Fl_Font)(count++ + FL_FREE_FONT), q); } /*g_*/free(faces); // glib source code shows that g_free is equivalent to free diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx index 06a8b9bae..959711b63 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx @@ -1412,10 +1412,13 @@ Fl_Font Fl_Xlib_Graphics_Driver::set_fonts(const char* pattern_name) pango_font_family_list_faces(families[fam], &faces, &n_faces); for (int j = 0; j < n_faces; j++) { const char *p = pango_font_face_get_face_name(faces[j]); + // Remove " Regular" suffix from font names + if (!strcasecmp(p, "regular")) p = NULL; // build the font's FLTK name - int lfont = lfam + strlen(p) + 2; + int lfont = lfam + (p ? strlen(p) + 2 : 1); char *q = new char[lfont]; - snprintf(q, lfont, "%s %s", fam_name, p); + if (p) snprintf(q, lfont, "%s %s", fam_name, p); + else strcpy(q, fam_name); Fl::set_font((Fl_Font)(count++ + FL_FREE_FONT), q); } /*g_*/free(faces); // glib source code shows that g_free is equivalent to free |
