/* Font driver on Mac OSX Core text.
- Copyright (C) 2009-2015 Free Software Foundation, Inc.
+ Copyright (C) 2009-2016 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
{
long percent_val = lround (val * 100);
- if (percent_val == -40 || percent_val == 56)
+ if (percent_val == -40)
{
CTFontRef font = NULL;
CFStringRef name =
{
CFIndex weight = mac_font_get_weight (font);
- if (percent_val == -40)
- {
- /* Workaround for crash when displaying Oriya characters
- with Arial Unicode MS on OS X 10.11. */
- if (weight == 5)
- val = 0;
- }
- else /* percent_val == 56 */
- {
- if (weight == 9)
- /* Adjustment for HiraginoSans-W7 on OS X 10.11. */
- val = 0.4;
- }
+ /* Workaround for crash when displaying Oriya characters
+ with Arial Unicode MS on OS X 10.11. */
+ if (weight == 5)
+ val = 0;
CFRelease (font);
}
}
!= (spacing >= FONT_SPACING_MONO)))
continue;
- /* Don't use a color bitmap font unless its family is
- explicitly specified. */
- if ((sym_traits & kCTFontTraitColorGlyphs) && NILP (family))
+ /* Don't use a color bitmap font until it is supported on
+ free platforms. */
+ if (sym_traits & kCTFontTraitColorGlyphs)
continue;
if (j > 0
{
if (s->hl == DRAW_MOUSE_FACE)
{
- face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+ face = FACE_FROM_ID_OR_NULL (s->f,
+ MOUSE_HL_INFO (s->f)->mouse_face_face_id);
if (!face)
face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
}
{
struct mac_glyph_layout *gl;
CGPoint position;
+ CGFloat max_x;
if (!RIGHT_TO_LEFT_P)
gl = glbuf + range.location;
CTRunGetGlyphs (ctrun, range, &gl->glyph_id);
CTRunGetPositions (ctrun, range, &position);
+ max_x = position.x + CTRunGetTypographicBounds (ctrun, range,
+ NULL, NULL, NULL);
+ max_x = max (max_x, total_advance);
gl->advance_delta = position.x - total_advance;
gl->baseline_delta = position.y;
- gl->advance = (gl->advance_delta
- + CTRunGetTypographicBounds (ctrun, range,
- NULL, NULL, NULL));
- total_advance += gl->advance;
+ gl->advance = max_x - total_advance;
+ total_advance = max_x;
}
if (RIGHT_TO_LEFT_P)