]> git.eshelyaron.com Git - emacs.git/commitdiff
Enable subpixel antialiasing on the Cairo font driver on Haiku
authorPo Lu <luangruo@yahoo.com>
Wed, 5 Jan 2022 12:02:32 +0000 (12:02 +0000)
committerPo Lu <luangruo@yahoo.com>
Wed, 5 Jan 2022 12:05:14 +0000 (12:05 +0000)
* src/ftcrfont.c (ftcrfont_open): Manually enable subpixel
antialiasing on Haiku.

* src/haiku_support.cc
(get_subpixel_antialiasing): New function declaration.
(be_use_subpixel_antialising):
* src/haiku_support.h (be_use_subpixel_antialising): New
functions.

src/ftcrfont.c
src/haiku_support.cc
src/haiku_support.h

index 337e804b89582af432ec974d57a2f191a881f941..558e44d5b91e1a68a803cb83c240f56022eec637 100644 (file)
@@ -169,6 +169,10 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
   cairo_matrix_init_scale (&font_matrix, pixel_size, pixel_size);
   cairo_matrix_init_identity (&ctm);
   cairo_font_options_t *options = cairo_font_options_create ();
+#ifdef USE_BE_CAIRO
+  if (be_use_subpixel_antialiasing ())
+    cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_SUBPIXEL);
+#endif
   cairo_scaled_font_t *scaled_font
     = cairo_scaled_font_create (font_face, &font_matrix, &ctm, options);
   cairo_font_face_destroy (font_face);
index 40f37d577e1d61408c27a4cd58acbeda800134a9..2e9eff4067600b62bab12a4f83ca91fdb50c05cb 100644 (file)
@@ -112,6 +112,10 @@ static BLocker child_frame_lock;
 
 static BLocker movement_locker;
 
+/* This could be a private API, but it's used by (at least) the Qt
+   port, so it's probably here to stay.  */
+extern status_t get_subpixel_antialiasing (bool *);
+
 extern "C"
 {
   extern _Noreturn void emacs_abort (void);
@@ -3043,3 +3047,14 @@ BWindow_is_active (void *window)
   BWindow *w = (BWindow *) window;
   return w->IsActive ();
 }
+
+bool
+be_use_subpixel_antialiasing (void)
+{
+  bool current_subpixel_antialiasing;
+
+  if (get_subpixel_antialiasing (&current_subpixel_antialiasing) != B_OK)
+    return false;
+
+  return current_subpixel_antialiasing;
+}
index 550ebd0050585bad0f1435f52d4541486acfc10c..6a99eb245dc6e3748decf2af2637a576c8f58ede 100644 (file)
@@ -853,6 +853,9 @@ extern "C"
   extern bool
   BWindow_is_active (void *window);
 
+  extern bool
+  be_use_subpixel_antialiasing (void);
+
 #ifdef __cplusplus
   extern void *
   find_appropriate_view_for_draw (void *vw);