diff --git a/lib/Epub/Epub/ParsedText.cpp b/lib/Epub/Epub/ParsedText.cpp index 73a3988..1e19c39 100644 --- a/lib/Epub/Epub/ParsedText.cpp +++ b/lib/Epub/Epub/ParsedText.cpp @@ -122,7 +122,10 @@ void ParsedText::layoutAndExtractLines(const GfxRenderer& renderer, const int fo } // Calculate spacing - const int spareSpace = pageWidth - lineWordWidthSum; + int spareSpace = pageWidth - lineWordWidthSum; + if (!extraParagraphSpacing && wordWidthIndex ==0) { + spareSpace -= 3*spaceWidth; + } int spacing = spaceWidth; const bool isLastLine = lineBreak == totalWordCount; @@ -132,6 +135,9 @@ void ParsedText::layoutAndExtractLines(const GfxRenderer& renderer, const int fo // Calculate initial x position uint16_t xpos = 0; + if (!extraParagraphSpacing && wordWidthIndex ==0) { + xpos = 3*spaceWidth; + } if (style == TextBlock::RIGHT_ALIGN) { xpos = spareSpace - (lineWordCount - 1) * spaceWidth; } else if (style == TextBlock::CENTER_ALIGN) { diff --git a/lib/Epub/Epub/ParsedText.h b/lib/Epub/Epub/ParsedText.h index 188cb12..cfeb1f4 100644 --- a/lib/Epub/Epub/ParsedText.h +++ b/lib/Epub/Epub/ParsedText.h @@ -16,9 +16,11 @@ class ParsedText { std::list words; std::list wordStyles; TextBlock::BLOCK_STYLE style; + bool extraParagraphSpacing; public: - explicit ParsedText(const TextBlock::BLOCK_STYLE style) : style(style) {} + explicit ParsedText(const TextBlock::BLOCK_STYLE style, const bool extraParagraphSpacing) + : style(style), extraParagraphSpacing(extraParagraphSpacing) {} ~ParsedText() = default; void addWord(std::string word, EpdFontStyle fontStyle); diff --git a/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp b/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp index 3c1f5ca..9c2e9e9 100644 --- a/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp +++ b/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp @@ -48,7 +48,7 @@ void ChapterHtmlSlimParser::startNewTextBlock(const TextBlock::BLOCK_STYLE style makePages(); } - currentTextBlock.reset(new ParsedText(style)); + currentTextBlock.reset(new ParsedText(style, extraParagraphSpacing)); } void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* name, const XML_Char** atts) {