You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixed a severe, Windows-specific performance regression in the "Scanning
contents" phase, most visible with --redo-ocr ({issue}1662). Since
v16.4.3, OCRmyPDF forced pdfminer's read buffer to 256 MiB to work around a
pdfminer bug that mishandled tokens split across the buffer boundary
({issue}1361). On Windows, CPython's BufferedReader.read() eagerly
allocates a buffer of the requested size on every read, so the oversized
buffer made each of pdfminer's thousands of reads cost tens of milliseconds
(this allocation is lazy, and effectively free, on Linux). The underlying
pdfminer bug was fixed upstream in pdfminer.six 20250327
(#1030), with a
follow-up for tokens split across streams in 20260107
(#1158), so the
workaround has been removed and the minimum pdfminer.six version raised to
20260107.
The font discovery used to build the OCR text layer now finds variable fonts
such as NotoSansArabic[wdth,wght].ttf, the form shipped by Homebrew casks
and current Google Fonts releases. Previously only static -Regular.ttf/.otf
files were matched, so users who had installed the correct Noto font still got
the glyphless fallback and a "No font found" warning ({issue}1652).
Font discovery is now language-aware for CJK: each Chinese, Japanese, and
Korean language maps to its own per-language Noto family (NotoSansSC, TC, HK,
JP, KR), with the pan-CJK super font kept as a shared fallback, since the
per-language fonts are region subsets that may lack glyphs from other scripts.
The warning shown when no installed font has glyphs for some text was reworded
to explain the consequence — the text is still added as a searchable, copyable
layer but appears blank when highlighted in a viewer — and to name the specific
font family to install.