Mercurial > emacs
comparison src/nsfont.m @ 104123:132eb17eec1d
* nsfont.m (ns_descriptor_to_entity): Handle case when descriptor has no family set. (nsfont_open): Handle case when entity has no family.
author | Adrian Robert <Adrian.B.Robert@gmail.com> |
---|---|
date | Sun, 02 Aug 2009 15:37:07 +0000 |
parents | 6a6fc6d5dad8 |
children | 7f459491fb93 |
comparison
equal
deleted
inserted
replaced
104122:9fb3df55079f | 104123:132eb17eec1d |
---|---|
164 ns_descriptor_to_entity (NSFontDescriptor *desc, Lisp_Object extra, char *style) | 164 ns_descriptor_to_entity (NSFontDescriptor *desc, Lisp_Object extra, char *style) |
165 { | 165 { |
166 Lisp_Object font_entity = font_make_entity (); | 166 Lisp_Object font_entity = font_make_entity (); |
167 /* NSString *psName = [desc postscriptName]; */ | 167 /* NSString *psName = [desc postscriptName]; */ |
168 NSString *family = [desc objectForKey: NSFontFamilyAttribute]; | 168 NSString *family = [desc objectForKey: NSFontFamilyAttribute]; |
169 char *escapedFamily = strdup ([family UTF8String]); | |
170 unsigned int traits = [desc symbolicTraits]; | 169 unsigned int traits = [desc symbolicTraits]; |
171 | 170 char *escapedFamily; |
171 | |
172 /* Shouldn't happen, but on Tiger fallback desc gets name but no family. */ | |
173 if (family == nil) | |
174 family = [desc objectForKey: NSFontNameAttribute]; | |
175 if (family == nil) | |
176 family = [[NSFont userFixedPitchFontOfSize: 0] familyName]; | |
177 | |
178 escapedFamily = strdup ([family UTF8String]); | |
172 ns_escape_name (escapedFamily); | 179 ns_escape_name (escapedFamily); |
173 | 180 |
174 ASET (font_entity, FONT_TYPE_INDEX, Qns); | 181 ASET (font_entity, FONT_TYPE_INDEX, Qns); |
175 ASET (font_entity, FONT_FOUNDRY_INDEX, Qapple); | 182 ASET (font_entity, FONT_FOUNDRY_INDEX, Qapple); |
176 ASET (font_entity, FONT_FAMILY_INDEX, intern (escapedFamily)); | 183 ASET (font_entity, FONT_FAMILY_INDEX, intern (escapedFamily)); |
667 | 674 |
668 tem = AREF (font_entity, FONT_ADSTYLE_INDEX); | 675 tem = AREF (font_entity, FONT_ADSTYLE_INDEX); |
669 synthItal = !NILP (tem) && !strncmp ("synthItal", SDATA (SYMBOL_NAME (tem)), | 676 synthItal = !NILP (tem) && !strncmp ("synthItal", SDATA (SYMBOL_NAME (tem)), |
670 9); | 677 9); |
671 family = ns_get_family (font_entity); | 678 family = ns_get_family (font_entity); |
679 if (family == nil) | |
680 family = [[NSFont userFixedPitchFontOfSize: 0] familyName]; | |
672 /* Should be > 0.23 as some font descriptors (e.g. Terminus) set to that | 681 /* Should be > 0.23 as some font descriptors (e.g. Terminus) set to that |
673 when setting family in ns_spec_to_descriptor(). */ | 682 when setting family in ns_spec_to_descriptor(). */ |
674 if (ns_attribute_fvalue (fontDesc, NSFontWeightTrait) > 0.50) | 683 if (ns_attribute_fvalue (fontDesc, NSFontWeightTrait) > 0.50) |
675 traits |= NSBoldFontMask; | 684 traits |= NSBoldFontMask; |
676 if (fabs (ns_attribute_fvalue (fontDesc, NSFontSlantTrait) > 0.05)) | 685 if (fabs (ns_attribute_fvalue (fontDesc, NSFontSlantTrait) > 0.05)) |