From 9b5bbd3f25cb5c32299bc0ff7d30967926da517f Mon Sep 17 00:00:00 2001 From: Aidan Wiseman Date: Mon, 1 Jun 2026 03:05:53 +0100 Subject: [PATCH] Fixes ligature parse bug. reorder_stext_line(...) used an unstable sort which resulted in ligature elements and following characters getting transposed. Using a stable sort instead fixes the issue. --- pdf_viewer/utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdf_viewer/utils.cpp b/pdf_viewer/utils.cpp index c940b2eb7..e3eaee243 100644 --- a/pdf_viewer/utils.cpp +++ b/pdf_viewer/utils.cpp @@ -505,7 +505,7 @@ std::vector reorder_stext_line(fz_stext_line* line) { }); } else { - std::sort(reordered_chars.begin(), reordered_chars.end(), [](fz_stext_char* lhs, fz_stext_char* rhs) { + std::stable_sort(reordered_chars.begin(), reordered_chars.end(), [](fz_stext_char* lhs, fz_stext_char* rhs) { return (lhs->quad.lr.x <= rhs->quad.lr.x) && (lhs->quad.ll.x < rhs->quad.ll.x); }); }