[PATCH]fdo#47432: Impress renders all bold Chinese fonts incorrectly

Liu Flex winddss at gmail.com
Thu Oct 18 23:31:01 PDT 2012


Hi,

This patch adjust & improve the "faux bold" in cairo canvas,
to make the bold in Asian style font better & acceptable.


>From 72ad91b439d549b2199d7e6a081f3f64f5773fa2 Mon Sep 17 00:00:00 2001
From: Flex Liu <winddss at gmail.com>
Date: Fri, 19 Oct 2012 13:45:38 +0800
Subject: [PATCH] fdo#47432 Improve the "faux bold" in cairo canvas.

The "faux bold" make the bold font in Asian ugly & unacceptable,
Adjust & improve the "faux bold" to make the bold font better.
---
 canvas/source/cairo/cairo_textlayout.cxx |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/canvas/source/cairo/cairo_textlayout.cxx
b/canvas/source/cairo/cairo_textlayout.cxx
index 68143b5..29a2c26 100644
--- a/canvas/source/cairo/cairo_textlayout.cxx
+++ b/canvas/source/cairo/cairo_textlayout.cxx
@@ -604,12 +604,13 @@ namespace cairocanvas
             //faux bold
             if (rSysFontData.bFakeBold) {
                 double bold_dx = 0.5 * sqrt( 0.7 * aFont.GetHeight() );
-                int total_steps = 2 * ((int) (bold_dx + 0.5));
+                int total_steps = 1 * ((int) (bold_dx + 0.5));

                 // loop to draw the text for every half pixel of displacement
                 for (int nSteps = 0; nSteps < total_steps; nSteps++) {
                     for(int nGlyphIdx = 0; nGlyphIdx < (int)
cairo_glyphs.size(); nGlyphIdx++) {
-                        cairo_glyphs[nGlyphIdx].x += bold_dx * nSteps
/ total_steps;
+                        cairo_glyphs[nGlyphIdx].x += (bold_dx *
nSteps / total_steps) / 4;
+                        cairo_glyphs[nGlyphIdx].y -= (bold_dx *
nSteps / total_steps) / 4;
                     }
                     cairo_show_glyphs(pSCairo.get(),
&cairo_glyphs[0], cairo_glyphs.size());
                 }
-- 
1.7.7


Flex


More information about the LibreOffice mailing list