diff --git a/lib/Epub/Epub/ParsedText.cpp b/lib/Epub/Epub/ParsedText.cpp index 74a29d1a..d4d66144 100644 --- a/lib/Epub/Epub/ParsedText.cpp +++ b/lib/Epub/Epub/ParsedText.cpp @@ -799,7 +799,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } for (size_t wordIdx = 0; wordIdx < reorderedWidthsScratch.size(); wordIdx++) { - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); xpos += reorderedWidthsScratch[wordIdx]; const bool nextIsContinuation = @@ -830,7 +830,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const // Standard LTR/RTL positioning loop when no visual reordering is needed if (blockStyle.isRtl) { // RTL: position words from right to left - auto xpos = static_cast(effectivePageWidth); + int xpos = effectivePageWidth; if (effectiveAlignment == CssTextAlign::Left) { // Explicit left alignment in RTL context xpos = lineWordWidthSum + totalNaturalGaps; @@ -841,7 +841,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const for (size_t wordIdx = 0; wordIdx < lineWordCount; wordIdx++) { xpos -= wordWidths[lastBreakAt + wordIdx]; - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); const bool nextIsContinuation = wordIdx + 1 < lineWordCount && continuesVec[lastBreakAt + wordIdx + 1]; if (nextIsContinuation) { @@ -867,7 +867,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } } else { // LTR: position words from left to right - auto xpos = static_cast(firstLineIndent); + int xpos = firstLineIndent; if (effectiveAlignment == CssTextAlign::Right) { xpos = effectivePageWidth - lineWordWidthSum - totalNaturalGaps; } else if (effectiveAlignment == CssTextAlign::Center) { @@ -875,7 +875,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } for (size_t wordIdx = 0; wordIdx < lineWordCount; wordIdx++) { - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); const bool nextIsContinuation = wordIdx + 1 < lineWordCount && continuesVec[lastBreakAt + wordIdx + 1]; if (nextIsContinuation) { diff --git a/lib/Epub/Epub/Section.cpp b/lib/Epub/Epub/Section.cpp index 4ccfac0f..c13da526 100644 --- a/lib/Epub/Epub/Section.cpp +++ b/lib/Epub/Epub/Section.cpp @@ -10,7 +10,7 @@ #include "parsers/ChapterHtmlSlimParser.h" namespace { -constexpr uint8_t SECTION_FILE_VERSION = 25; +constexpr uint8_t SECTION_FILE_VERSION = 26; constexpr uint32_t HEADER_SIZE = sizeof(uint8_t) + sizeof(int) + sizeof(float) + sizeof(bool) + sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(bool) + sizeof(bool) + sizeof(uint8_t) + sizeof(bool) + sizeof(uint32_t) + sizeof(uint32_t) +