diff --git a/src/activities/reader/MdReaderActivity.cpp b/src/activities/reader/MdReaderActivity.cpp index 4be66cd7..b2e7c8bc 100644 --- a/src/activities/reader/MdReaderActivity.cpp +++ b/src/activities/reader/MdReaderActivity.cpp @@ -613,6 +613,12 @@ bool MdReaderActivity::loadPageAtOffset(size_t offset, bool startInCodeBlock, st } } + if (renderer.isSdCardFont(cachedFontId)) { + std::string flatText; + for (const auto& span : flatLine.spans) flatText += span.text; + if (!flatText.empty()) renderer.ensureSdCardFontReady(cachedFontId, flatText.c_str()); + } + size_t linesBefore = outLines.size(); int remainingLines = linesPerPage - static_cast(outLines.size()); bool fullyConsumed = wordWrapParsedLine(flatLine, 0, outLines, remainingLines); diff --git a/src/activities/reader/TxtReaderActivity.cpp b/src/activities/reader/TxtReaderActivity.cpp index 5a7c6718..df42479a 100644 --- a/src/activities/reader/TxtReaderActivity.cpp +++ b/src/activities/reader/TxtReaderActivity.cpp @@ -45,6 +45,10 @@ size_t parseAndWrapLines(const uint8_t* buffer, size_t chunkSize, size_t fileOff std::string line(reinterpret_cast(buffer + pos), displayLen); size_t lineBytePos = 0; + if (renderer.isSdCardFont(fontId) && !line.empty()) { + renderer.ensureSdCardFontReady(fontId, line.c_str()); + } + while (!line.empty() && static_cast(outLines.size()) < linesPerPage) { if (renderer.getTextWidth(fontId, line.c_str()) <= vw) { outLines.push_back(line);