diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-01-23 12:15:44 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-01-23 12:16:32 +0000 |
commit | 8f23e9813daae808aa2a81250b5e414dc57a3394 (patch) | |
tree | a9a01e43e7969792dfcbb10d5d179e08c3218ed8 | |
parent | 1921a96c323f5a0dcd846f5d17a6bbb3de208797 (diff) |
Resolves: fdo#44856 skew artificial fonts before glyph or layout rotation
-rw-r--r-- | qadevOOo/testdocs/vertical-testcase.odt | bin | 18060 -> 19594 bytes | |||
-rw-r--r-- | vcl/unx/generic/gdi/salgdi3.cxx | 11 |
2 files changed, 8 insertions, 3 deletions
diff --git a/qadevOOo/testdocs/vertical-testcase.odt b/qadevOOo/testdocs/vertical-testcase.odt Binary files differindex cd279c8115ad..de564f82887d 100644 --- a/qadevOOo/testdocs/vertical-testcase.odt +++ b/qadevOOo/testdocs/vertical-testcase.odt diff --git a/vcl/unx/generic/gdi/salgdi3.cxx b/vcl/unx/generic/gdi/salgdi3.cxx index e27cb43bf998..a44416187e9b 100644 --- a/vcl/unx/generic/gdi/salgdi3.cxx +++ b/vcl/unx/generic/gdi/salgdi3.cxx @@ -414,9 +414,6 @@ void X11SalGraphics::DrawServerFontLayout( const ServerFontLayout& rLayout ) cairo_matrix_init_identity(&m); - if (rFont.NeedsArtificialItalic()) - m.xy = -m.xx * 0x6000L / 0x10000L; - if (rLayout.GetOrientation()) cairo_matrix_rotate(&m, toRadian(rLayout.GetOrientation())); @@ -463,6 +460,14 @@ void X11SalGraphics::DrawServerFontLayout( const ServerFontLayout& rLayout ) cairo_matrix_translate(&m, xdiff, ydiff); } + if (rFont.NeedsArtificialItalic()) + { + cairo_matrix_t shear; + cairo_matrix_init_identity(&shear); + shear.xy = -shear.xx * 0x6000L / 0x10000L; + cairo_matrix_multiply(&m, &shear, &m); + } + cairo_set_font_matrix(cr, &m); cairo_show_glyphs(cr, &cairo_glyphs[nStartIndex], nLen); |