diff options
-rw-r--r-- | Userland/Libraries/LibPDF/Renderer.cpp | 8 | ||||
-rw-r--r-- | Userland/Libraries/LibPDF/Renderer.h | 3 |
2 files changed, 6 insertions, 5 deletions
diff --git a/Userland/Libraries/LibPDF/Renderer.cpp b/Userland/Libraries/LibPDF/Renderer.cpp index f7766c4912..79b33f7332 100644 --- a/Userland/Libraries/LibPDF/Renderer.cpp +++ b/Userland/Libraries/LibPDF/Renderer.cpp @@ -453,8 +453,10 @@ RENDERER_HANDLER(text_show_string_array) } else if (element.has<float>()) { next_shift = element.get<float>(); } else { + auto shift = next_shift / 1000.0f; + m_text_matrix.translate(-shift * text_state().font_size * text_state().horizontal_scaling, 0.0f); auto str = element.get<NonnullRefPtr<Object>>()->cast<StringObject>()->string(); - show_text(str, next_shift); + show_text(str); } } @@ -637,7 +639,7 @@ PDFErrorOr<void> Renderer::set_graphics_state_from_dict(NonnullRefPtr<DictObject return {}; } -void Renderer::show_text(String const& string, float shift) +void Renderer::show_text(String const& string) { auto& text_rendering_matrix = calculate_text_rendering_matrix(); @@ -660,7 +662,7 @@ void Renderer::show_text(String const& string, float shift) m_painter.draw_glyph(glyph_position.to_type<int>(), code_point, *font, state().paint_color); auto glyph_width = char_width * font_size; - auto tx = (glyph_width - shift / 1000.0f); + auto tx = glyph_width; tx += text_state().character_spacing; if (code_point == ' ') diff --git a/Userland/Libraries/LibPDF/Renderer.h b/Userland/Libraries/LibPDF/Renderer.h index 0be1c342f6..75e57a80c3 100644 --- a/Userland/Libraries/LibPDF/Renderer.h +++ b/Userland/Libraries/LibPDF/Renderer.h @@ -98,8 +98,7 @@ private: PDFErrorOr<void> handle_text_next_line_show_string_set_spacing(Vector<Value> const& args); PDFErrorOr<void> set_graphics_state_from_dict(NonnullRefPtr<DictObject>); - // shift is the manual advance given in the TJ operator array - void show_text(String const&, float shift = 0.0f); + void show_text(String const&); PDFErrorOr<NonnullRefPtr<ColorSpace>> get_color_space(Value const&); ALWAYS_INLINE GraphicsState const& state() const { return m_graphics_state_stack.last(); } |