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))