diff options
Diffstat (limited to 'src/libnrtype')
| -rw-r--r-- | src/libnrtype/Layout-TNG-Output.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index b2de090a0..aa3875048 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -141,6 +141,7 @@ void Layout::print(SPPrintContext *ctx, { if (_input_stream.empty()) return; + Geom::Matrix ctm_2geom(ctm); Direction block_progression = _blockProgression(); bool text_to_path = ctx->module->textToPath(); for (unsigned glyph_index = 0 ; glyph_index < _glyphs.size() ; ) { @@ -160,9 +161,9 @@ void Layout::print(SPPrintContext *ctx, _getGlyphTransformMatrix(glyph_index, &glyph_matrix); Geom::PathVector temp_pv = (*pv) * glyph_matrix; if (!text_source->style->fill.isNone()) - sp_print_fill(ctx, temp_pv, &ctm, text_source->style, pbox, dbox, bbox); + sp_print_fill(ctx, temp_pv, &ctm_2geom, text_source->style, pbox, dbox, bbox); if (!text_source->style->stroke.isNone()) - sp_print_stroke(ctx, temp_pv, &ctm, text_source->style, pbox, dbox, bbox); + sp_print_stroke(ctx, temp_pv, &ctm_2geom, text_source->style, pbox, dbox, bbox); } glyph_index++; } else { @@ -297,14 +298,14 @@ void Layout::showGlyphs(CairoRenderContext *ctx) const if (_path_fitted) { ctx->pushState(); - ctx->transform(&glyph_matrix); + ctx->transform(&to_2geom(glyph_matrix)); } else if (opacity != 1.0) { ctx->pushState(); ctx->setStateForStyle(style); ctx->pushLayer(); } if (glyph_index - first_index > 0) - ctx->renderGlyphtext(span.font->pFont, &font_matrix, glyphtext, style); + ctx->renderGlyphtext(span.font->pFont, &to_2geom(font_matrix), glyphtext, style); if (_path_fitted) ctx->popState(); else if (opacity != 1.0) { |
