/* Font back-end driver for the NeXT/Open/GNUstep and MacOSX window system.
See font.h
- Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* This should be the first include, as it may set up #defines affecting
interpretation of even the system includes. */
#include "config.h"
+#include <setjmp.h>
#include "lisp.h"
#include "dispextern.h"
static Lisp_Object Vns_reg_to_script;
static Lisp_Object Qapple, Qroman, Qmedium;
extern Lisp_Object Qappend;
-extern int ns_antialias_text;
+extern Lisp_Object ns_antialias_text;
extern float ns_antialias_threshold;
extern int ns_tmp_flags;
extern struct nsfont_info *ns_tmp_font;
return w;
}
#endif
- w = [sfont widthOfString: cstr];
+ {
+ NSDictionary *attrsDictionary =
+ [NSDictionary dictionaryWithObject: sfont forKey: NSFontAttributeName];
+ w = [cstr sizeWithAttributes: attrsDictionary].width;
+ }
return max (w, 2.0);
}
return ns_fallback_entity ();
if (NSFONT_TRACE)
- fprintf (stderr, " Returning %d entities.\n", XINT (Flength (list)));
+ fprintf (stderr, " Returning %ld entities.\n",
+ (long) XINT (Flength (list)));
return list;
}
/* FIXME: escape the name? */
if (NSFONT_TRACE)
- fprintf (stderr, "nsfont: list families returning %d entries\n",
- XINT (Flength (list)));
+ fprintf (stderr, "nsfont: list families returning %ld entries\n",
+ (long) XINT (Flength (list)));
return list;
}
/* max bounds */
font_info->max_bounds.ascent =
lrint (hshrink * [sfont ascender] + expand * hd/2);
+ /* [sfont descender] is usually negative. Use floor to avoid
+ clipping descenders. */
font_info->max_bounds.descent =
- -lrint (hshrink* [sfont descender] - expand*hd/2);
+ -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
font_info->height =
font_info->max_bounds.ascent + font_info->max_bounds.descent;
font_info->max_bounds.width = lrint (font_info->width);
#endif
/* set up metrics portion of font struct */
- font->ascent = [sfont ascender];
- font->descent = -[sfont descender];
- font->min_width = [sfont widthOfString: @"|"]; /* FIXME */
+ font->ascent = lrint([sfont ascender]);
+ font->descent = -lrint(floor([sfont descender]));
+ font->min_width = ns_char_width(sfont, '|');
font->space_width = lrint (ns_char_width (sfont, ' '));
font->average_width = lrint (font_info->width);
font->max_width = lrint (font_info->max_bounds.width);
CGContextSetFont (gcontext, font->cgfont);
CGContextSetFontSize (gcontext, font->size);
- if (ns_antialias_text == Qnil || font->size <= ns_antialias_threshold)
+ if (NILP (ns_antialias_text) || font->size <= ns_antialias_threshold)
CGContextSetShouldAntialias (gcontext, 0);
else
CGContextSetShouldAntialias (gcontext, 1);
NSGlyphGenerator *glyphGenerator = [NSGlyphGenerator sharedGlyphGenerator];
/*NSCharacterSet *coveredChars = [nsfont coveredCharacterSet]; */
unsigned int numGlyphs = [font_info->nsfont numberOfGlyphs];
- unsigned int gInd =0, cInd =0;
+ NSUInteger gInd =0, cInd =0;
[glyphStorage setString: allChars font: font_info->nsfont];
[glyphGenerator generateGlyphsForGlyphStorage: glyphStorage
}
/* NSGlyphStorage protocol */
-- (unsigned int)layoutOptions
+- (NSUInteger)layoutOptions
{
return 0;
}
return attrStr;
}
-- (void)insertGlyphs: (const NSGlyph *)glyphs length: (unsigned int)length
- forStartingGlyphAtIndex: (unsigned int)glyphIndex
- characterIndex: (unsigned int)charIndex
+- (void)insertGlyphs: (const NSGlyph *)glyphs length: (NSUInteger)length
+ forStartingGlyphAtIndex: (NSUInteger)glyphIndex
+ characterIndex: (NSUInteger)charIndex
{
len = glyphIndex+length;
for (i =glyphIndex; i<len; i++)
maxGlyph = len;
}
-- (void)setIntAttribute: (int)attributeTag value: (int)val
- forGlyphAtIndex: (unsigned)glyphIndex
+- (void)setIntAttribute: (NSInteger)attributeTag value: (NSInteger)val
+ forGlyphAtIndex: (NSUInteger)glyphIndex
{
return;
}