Mercurial > emacs
changeset 91496:d3d1ab7e6e35
(w32font_open_internal): Use font_unparse_fcname to set full_name.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Mon, 04 Feb 2008 00:51:33 +0000 |
parents | d342b8d1b1cd |
children | 19d5f22c1c5c |
files | src/w32font.c |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32font.c Sun Feb 03 21:59:56 2008 +0000 +++ b/src/w32font.c Mon Feb 04 00:51:33 2008 +0000 @@ -227,8 +227,12 @@ 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 @@ 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;