#endif
/* The font property key specifying the font design destination. The
- value is an unsigned integer code: 0 for WYSIWIG, and 1 for Video
+ value is an unsigned integer code: 0 for WYSIWYG, and 1 for Video
text. (See the documentation of X Logical Font Description
Conventions.) In the Mac font driver, 1 means the screen font is
used for calculating some glyph metrics. You can see the
if (!(textStorage && layoutManager && textContainer))
{
[textStorage release];
-
+
return 0;
}
}
#define CG_SET_FILL_COLOR_WITH_GC_FOREGROUND(context, s) \
- CGContextSetFillColorWithColor (context, \
- get_cgcolor (NS_FACE_FOREGROUND (s->face), \
- s->f))
-
+ do { \
+ CGColorRef refcol_ = get_cgcolor (NS_FACE_FOREGROUND (s->face), \
+ s->f); \
+ CGContextSetFillColorWithColor (context, refcol_) ; \
+ CGColorRelease (refcol_); \
+ } while (0)
#define CG_SET_FILL_COLOR_WITH_GC_BACKGROUND(context, s) \
- CGContextSetFillColorWithColor (context, \
- get_cgcolor (NS_FACE_BACKGROUND (s->face), \
- s->f))
-
+ do { \
+ CGColorRef refcol_ = get_cgcolor (NS_FACE_BACKGROUND (s->face),\
+ s->f); \
+ CGContextSetFillColorWithColor (context, refcol_); \
+ CGColorRelease (refcol_); \
+ } while (0)
#define CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND(context, s) \
- CGContextSetStrokeColorWithColor (context, \
- get_cgcolor (NS_FACE_FOREGROUND (s->face),\
- s->f))
+ do { \
+ CGColorRef refcol_ = get_cgcolor (NS_FACE_FOREGROUND (s->face),\
+ s->f); \
+ CGContextSetStrokeColorWithColor (context, refcol_); \
+ CGColorRelease (refcol_); \
+ } while (0)
\f
/* Mac font driver. */
/* The cached glyph for a character c is stored as the (c %
NGLYPHS_IN_VALUE)-th CGGlyph block of a value for the key (c /
- NGLYPHS_IN_VALUE). However, the glyph for a BMP characrer c is
+ NGLYPHS_IN_VALUE). However, the glyph for a BMP character c is
not stored here if row_nkeys_or_perm[c / 256] >=
ROW_PERM_OFFSET. */
CFMutableDictionaryRef dictionary;
static Lisp_Object macfont_list_family (struct frame *);
static void macfont_free_entity (Lisp_Object);
static Lisp_Object macfont_open (struct frame *, Lisp_Object, int);
-static void macfont_close (struct frame *, struct font *);
+static void macfont_close (struct font *);
static int macfont_has_char (Lisp_Object, int);
static unsigned macfont_encode_char (struct font *, int);
static int macfont_text_extents (struct font *, unsigned int *, int,
macfont_info = (struct macfont_info *) font;
macfont_info->macfont = macfont;
macfont_info->cgfont = mac_font_copy_graphics_font (macfont);
-
+
val = assq_no_quit (QCdestination, AREF (entity, FONT_EXTRA_INDEX));
if (CONSP (val) && EQ (XCDR (val), make_number (1)))
macfont_info->screen_font = mac_screen_font_create_with_name (font_name,
}
static void
-macfont_close (struct frame * f, struct font *font)
+macfont_close (struct font *font)
{
struct macfont_info *macfont_info = (struct macfont_info *) font;
- int i;
- block_input ();
- CFRelease (macfont_info->macfont);
- CGFontRelease (macfont_info->cgfont);
- if (macfont_info->screen_font)
- CFRelease (macfont_info->screen_font);
- macfont_release_cache (macfont_info->cache);
- for (i = 0; i < macfont_info->metrics_nrows; i++)
- if (macfont_info->metrics[i])
- xfree (macfont_info->metrics[i]);
- if (macfont_info->metrics)
- xfree (macfont_info->metrics);
- unblock_input ();
+ if (macfont_info->cache)
+ {
+ int i;
+
+ block_input ();
+ CFRelease (macfont_info->macfont);
+ CGFontRelease (macfont_info->cgfont);
+ if (macfont_info->screen_font)
+ CFRelease (macfont_info->screen_font);
+ macfont_release_cache (macfont_info->cache);
+ macfont_info->cache = NULL;
+ for (i = 0; i < macfont_info->metrics_nrows; i++)
+ if (macfont_info->metrics[i])
+ xfree (macfont_info->metrics[i]);
+ if (macfont_info->metrics)
+ xfree (macfont_info->metrics);
+ unblock_input ();
+ }
}
static int
}
unblock_input ();
- if (metrics)
+ if (metrics)
metrics->width = width;
return width;
for (i = 0; i < len; i++)
{
int width;
-
+
glyphs[i] = *(s->char2b + s->cmp_from + i);
width = (s->padding_p ? 1
: macfont_glyph_extents (s->font, glyphs[i],
#define BUINT32_VALUE(lval) OSReadBigInt32 (&(lval), 0)
/* Return UVS subtable for the specified FONT. If the subtable is not
- found or ill-formated, then return NULL. */
+ found or ill-formatted, then return NULL. */
static CFDataRef
mac_font_copy_uvs_table (FontRef font)