]> code.delx.au - gnu-emacs/commitdiff
* nsfont.m (LCD_SMOOTHING_MARGIN): New define.
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 13 Jan 2013 14:29:22 +0000 (15:29 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 13 Jan 2013 14:29:22 +0000 (15:29 +0100)
(nsfont_draw): Remove disabling of LCD smoothing.
(ns_glyph_metrics): Add LCD_SMOOTHING_MARGIN to bearings to fix
Bug#11484 with LCD smooting on.

src/ChangeLog
src/nsfont.m

index dbba6322423329028e19e9ade4003309adeb21bc..18eb69c9f6903a1d53699cf89eda844f3300b8b1 100644 (file)
@@ -1,3 +1,10 @@
+2013-01-13  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfont.m (LCD_SMOOTHING_MARGIN): New define.
+       (nsfont_draw): Remove disabling of LCD smoothing.
+       (ns_glyph_metrics): Add LCD_SMOOTHING_MARGIN to bearings to fix
+       Bug#11484 with LCD smooting on.
+
 2013-01-11  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>  (tiny change)
 
        * gtkutil.c (xg_initialize): Backport from trunk.
index 9dd80b28b9f95f20fc0350afd8a5cb21d1a60e62..207b6a404831a98e8e73c33137e5f277d31b9996 100644 (file)
@@ -44,6 +44,7 @@ Author: Adrian Robert (arobert@cogsci.ucsd.edu)
 #endif
 
 #define NSFONT_TRACE 0
+#define LCD_SMOOTHING_MARGIN 2
 
 extern Lisp_Object Qns;
 extern Lisp_Object Qnormal, Qbold, Qitalic, Qcondensed, Qexpanded;
@@ -1235,7 +1236,6 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
     else
       CGContextSetShouldAntialias (gcontext, 1);
 
-    CGContextSetShouldSmoothFonts (gcontext, NO);
     CGContextSetTextMatrix (gcontext, fliptf);
 
     if (bgCol != nil)
@@ -1401,11 +1401,12 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
 
       lb = r.origin.x;
       rb = r.size.width - w;
+      // Add to bearing for LCD smoothing.  We don't know if it is there.
       if (lb < 0)
-        metrics->lbearing = round (lb);
+        metrics->lbearing = round (lb - LCD_SMOOTHING_MARGIN);
       if (font_info->ital)
         rb += 0.22 * font_info->height;
-      metrics->rbearing = lrint (w + rb);
+      metrics->rbearing = lrint (w + rb + LCD_SMOOTHING_MARGIN);
 
       metrics->descent = r.origin.y < 0 ? -r.origin.y : 0;
  /*lrint (hshrink * [sfont ascender] + expand * hd/2); */