From 5ace1ec11f814367e24076a4e9e50a2ce86ca1ac Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Mon, 4 Feb 2008 00:52:02 +0000 Subject: [PATCH] (w32font_open_internal): Use font_unparse_fcname to set full_name. --- src/ChangeLog | 5 +++++ src/w32font.c | 26 +++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 30e62212cab..a332e604267 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-02-04 Jason Rumney + + * w32font.c (w32font_open_internal): Use font_unparse_fcname to + set full_name. + 2008-02-03 Jason Rumney * makefile.w32-in (OBJ1): Include font.o here. diff --git a/src/w32font.c b/src/w32font.c index 619ff7caf98..e2973db0eb6 100644 --- a/src/w32font.c +++ b/src/w32font.c @@ -227,8 +227,12 @@ w32font_close (f, font) font->font.font = 0; } + if (font->font.full_name && font->font.full_name != font->font.name) + xfree (font->font.full_name); + if (font->font.name) xfree (font->font.name); + xfree (font); } @@ -678,7 +682,27 @@ w32font_open_internal (f, font_entity, pixel_size, w32_font) font->font.name = (char *) xmalloc (len + 1); bcopy (logfont.lfFaceName, font->font.name, len); font->font.name[len] = '\0'; - font->font.full_name = font->font.name; + + { + char *name; + + /* We don't know how much space we need for the full name, so start with + 96 bytes and go up in steps of 32. */ + len = 96; + name = malloc (len); + while (name && font_unparse_fcname (font_entity, pixel_size, name, len) < 0) + { + char *new = realloc (name, len += 32); + + if (! new) + free (name); + name = new; + } + if (name) + font->font.full_name = name; + else + font->font.full_name = font->font.name; + } font->font.charset = 0; font->font.codepage = 0; font->font.size = w32_font->metrics.tmMaxCharWidth; -- 2.39.2