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()) { next_shift = element.get(); } 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>()->cast()->string(); - show_text(str, next_shift); + show_text(str); } } @@ -637,7 +639,7 @@ PDFErrorOr Renderer::set_graphics_state_from_dict(NonnullRefPtr(), 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 handle_text_next_line_show_string_set_spacing(Vector const& args); PDFErrorOr set_graphics_state_from_dict(NonnullRefPtr); - // 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> get_color_space(Value const&); ALWAYS_INLINE GraphicsState const& state() const { return m_graphics_state_stack.last(); }