From d3a30b87f4875c8c07cd6a254308054be56af0d9 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 20 Feb 2019 19:43:39 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=D0=B0?= =?UTF-8?q?=20fb2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Reader/TextPage/DrawHelper.js | 6 +++--- client/components/Reader/share/BookParser.js | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/client/components/Reader/TextPage/DrawHelper.js b/client/components/Reader/TextPage/DrawHelper.js index 26b629e6..21abb4ad 100644 --- a/client/components/Reader/TextPage/DrawHelper.js +++ b/client/components/Reader/TextPage/DrawHelper.js @@ -73,7 +73,7 @@ export default class DrawHelper { let lineText = ''; let center = false; - let space = false; + let space = 0; let j = 0; //формируем строку for (const part of line.parts) { @@ -97,7 +97,7 @@ export default class DrawHelper { lineText += `${tOpen}${text}${tClose}`; center = center || part.style.center; - space = space || part.style.space; + space = (part.style.space > 0 ? part.style.space : space); //избражения //image: {local: Boolean, inline: Boolean, id: String, imageLine: Number, lineCount: Number, paraIndex: Number}, @@ -129,7 +129,7 @@ export default class DrawHelper { const centerStyle = (center ? `text-align: center; text-align-last: center; width: ${this.w}px` : '') if ((line.first || space) && !center) { let p = (line.first ? this.p : 0); - p = (space ? p + this.p : p); + p = (space ? p + this.p*space : p); lineText = `${lineText}`; } diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index 7f8829de..0c5de7fb 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -39,7 +39,7 @@ export default class BookParser { let center = false; let bold = false; let italic = false; - let space = false; + let space = 0; this.binary = {}; let binaryId = ''; @@ -179,7 +179,7 @@ export default class BookParser { if (tag == 'epigraph') { italic = true; - space = true; + space += 1; } if (tag == 'poem') { @@ -187,7 +187,8 @@ export default class BookParser { } if (tag == 'text-author') { - space = true; + newParagraph(' ', 1); + space += 1; } } }; @@ -214,7 +215,7 @@ export default class BookParser { if (tag == 'epigraph') { italic = false; - space = false; + space -= 1; } if (tag == 'stanza') { @@ -222,7 +223,7 @@ export default class BookParser { } if (tag == 'text-author') { - space = false; + space -= 1; } } @@ -285,7 +286,7 @@ export default class BookParser { let tOpen = (center ? '
' : ''); tOpen += (bold ? '' : ''); tOpen += (italic ? '' : ''); - tOpen += (space ? '' : ''); + tOpen += (space ? `` : ''); let tClose = (space ? '' : ''); tClose += (italic ? '' : ''); tClose += (bold ? '' : ''); @@ -389,7 +390,9 @@ export default class BookParser { style.center = true; break; case 'space': { - style.space = true; + let attrs = sax.getAttrsSync(tail); + if (attrs.w.value) + style.space = attrs.w.value; break; } case 'image': { @@ -420,7 +423,7 @@ export default class BookParser { style.center = false; break; case 'space': - style.space = false; + style.space = 0; break; case 'image': image = {}; @@ -619,7 +622,7 @@ export default class BookParser { str += sp1 + word; let p = (j == 0 ? parsed.p : 0); - p = (style.space ? p + parsed.p : p); + p = (style.space ? p + parsed.p*style.space : p); let w = this.measureText(str, style) + p; let wordTail = word; if (w > parsed.w && prevStr != '') {