]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix synthetic bold on macOS retina displays
authorAlan Third <alan@idiocy.org>
Mon, 29 Aug 2016 19:48:06 +0000 (20:48 +0100)
committerAlan Third <alan@idiocy.org>
Sun, 4 Sep 2016 22:06:14 +0000 (23:06 +0100)
* src/macfont.m (macfont_draw): Multiply the synthetic bold scaling
factor by the OS window backing scale factor.

src/macfont.m

index c799100c8550823ac84311d5eae0f2f0c9474bec..d9bad034fe963802fbc200bcca51b72990f02b67 100644 (file)
@@ -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)