[gtk/matthiasc/color-profiles: 4/4] ngl: Use stem darkening for glyphs
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/color-profiles: 4/4] ngl: Use stem darkening for glyphs
- Date: Thu, 30 Sep 2021 13:53:07 +0000 (UTC)
commit b8b62c66fae368ed29f20854c4307e095860f711
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Sep 30 09:48:54 2021 -0400
ngl: Use stem darkening for glyphs
This involves tweaking a freetype driver property
directly, since cairo font options don't cover this.
So the code is a bit ugly, but it does make text
appear darker.
gsk/ngl/gsknglglyphlibrary.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/gsk/ngl/gsknglglyphlibrary.c b/gsk/ngl/gsknglglyphlibrary.c
index 1e67bd098d..64e86066c5 100644
--- a/gsk/ngl/gsknglglyphlibrary.c
+++ b/gsk/ngl/gsknglglyphlibrary.c
@@ -29,6 +29,12 @@
#include "gskngldriverprivate.h"
#include "gsknglglyphlibraryprivate.h"
+#include <cairo-ft.h>
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_PARAMETER_TAGS_H
+
#define MAX_GLYPH_SIZE 128
G_DEFINE_TYPE (GskNglGlyphLibrary, gsk_ngl_glyph_library, GSK_TYPE_GL_TEXTURE_LIBRARY)
@@ -162,16 +168,22 @@ gsk_ngl_glyph_library_create_surface (GskNglGlyphLibrary *self,
static void
render_glyph (cairo_surface_t *surface,
- const cairo_scaled_font_t *scaled_font,
+ cairo_scaled_font_t *scaled_font,
const GskNglGlyphKey *key,
const GskNglGlyphValue *value)
{
cairo_t *cr;
cairo_glyph_t glyph;
+ FT_Face face;
+ FT_Bool darken = 1;
+ FT_Parameter property = { FT_PARAM_TAG_STEM_DARKENING, &darken };
g_assert (surface != NULL);
g_assert (scaled_font != NULL);
+ face = cairo_ft_scaled_font_lock_face (scaled_font);
+ FT_Face_Properties (face, 1, &property);
+
cr = cairo_create (surface);
cairo_set_scaled_font (cr, scaled_font);
cairo_set_source_rgba (cr, 1, 1, 1, 1);
@@ -184,6 +196,8 @@ render_glyph (cairo_surface_t *surface,
cairo_destroy (cr);
cairo_surface_flush (surface);
+
+ cairo_ft_scaled_font_unlock_face (scaled_font);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]