emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 62e4dc4: Fix synthetic bold on macOS retina display


From: Alan Third
Subject: [Emacs-diffs] master 62e4dc4: Fix synthetic bold on macOS retina displays
Date: Sun, 4 Sep 2016 22:16:26 +0000 (UTC)

branch: master
commit 62e4dc4660cb3b29cfffcad0639e51c7f382ced8
Author: Alan Third <address@hidden>
Commit: Alan Third <address@hidden>

    Fix synthetic bold on macOS retina displays
    
    * src/macfont.m (macfont_draw): Multiply the synthetic bold scaling
    factor by the OS window backing scale factor.
---
 src/macfont.m |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/macfont.m b/src/macfont.m
index c799100..d9bad03 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -2878,7 +2878,19 @@ macfont_draw (struct glyph_string *s, int from, int to, 
int x, int y,
       if (macfont_info->synthetic_bold_p && ! no_antialias_p)
         {
           CGContextSetTextDrawingMode (context, kCGTextFillStroke);
+
+          /* Stroke line width for text drawing is not correctly
+             scaled on Retina display/HiDPI mode when drawn to screen
+             (whereas it is correctly scaled when drawn to bitmaps),
+             and synthetic bold looks thinner on such environments.
+             Apple says there are no plans to address this issue
+             (rdar://11644870) currently.  So we add a workaround.  */
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+          CGContextSetLineWidth (context, synthetic_bold_factor * font_size
+                                 * [[FRAME_NS_VIEW(f) window] 
backingScaleFactor]);
+#else
           CGContextSetLineWidth (context, synthetic_bold_factor * font_size);
+#endif
           CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND (context, face, f);
         }
       if (no_antialias_p)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]