diff --git a/client/components/Reader/TextPage/DrawHelper.js b/client/components/Reader/TextPage/DrawHelper.js
index 9148c10f..f7a36343 100644
--- a/client/components/Reader/TextPage/DrawHelper.js
+++ b/client/components/Reader/TextPage/DrawHelper.js
@@ -23,17 +23,17 @@ export default class DrawHelper {
if (!this.lastBook || this.pageLineCount < 1 || !this.book || !lines || !this.parsed.textLength)
return '';
- const spaceWidth = this.measureText(' ', {});
+ const font = this.fontByStyle({});
+ const justify = (this.textAlignJustify ? 'text-align: justify; text-align-last: justify;' : '');
- let out = `
`;
+ let out = `
`;
let len = lines.length;
const lineCount = this.pageLineCount + (isScrolling ? 1 : 0);
len = (len > lineCount ? lineCount : len);
- let y = this.fontSize*this.textShift;
-
for (let i = 0; i < len; i++) {
const line = lines[i];
/* line:
@@ -48,76 +48,26 @@ export default class DrawHelper {
}
}*/
- let indent = line.first ? this.p : 0;
-
let lineText = '';
let center = false;
- let centerStyle = {};
for (const part of line.parts) {
- lineText += part.text;
+ let tOpen = (part.style.bold ? '' : '');
+ tOpen += (part.style.italic ? '' : '');
+ let tClose = (part.style.italic ? '' : '');
+ tClose += (part.style.bold ? '' : '');
+
+ lineText += `${tOpen}${part.text}${tClose}`;
+
center = center || part.style.center;
- if (part.style.center)
- centerStyle = part.style;
}
- let filled = false;
- // если выравнивание по ширине включено
- if (this.textAlignJustify && !line.last && !center) {
- const words = lineText.split(' ');
+ const centerStyle = (center ? `text-align: center; text-align-last: center; width: ${this.w}px` : '')
+ if (line.first)
+ lineText = `${lineText}`;
+ if (line.last || center)
+ lineText = `${lineText}`;
- if (words.length > 1) {
- const spaceCount = words.length - 1;
-
- const space = (this.w - line.width + spaceWidth*spaceCount)/spaceCount;
-
- let x = indent;
- for (const part of line.parts) {
- const font = this.fontByStyle(part.style);
- let partWords = part.text.split(' ');
-
- for (let j = 0; j < partWords.length; j++) {
- let f = font;
- let style = part.style;
- let word = partWords[j];
- if (i == 0 && this.searching && word.toLowerCase().indexOf(this.needle) >= 0) {
- style = Object.assign({}, part.style, {bold: true});
- f = this.fontByStyle(style);
- }
- out += this.fillText(word, x, y, f);
- x += this.measureText(word, style) + (j < partWords.length - 1 ? space : 0);
- }
- }
- filled = true;
- }
- }
-
- // просто выводим текст
- if (!filled) {
- let x = indent;
- x = (center ? (this.w - this.measureText(lineText, centerStyle))/2 : x);
- for (const part of line.parts) {
- let font = this.fontByStyle(part.style);
-
- if (i == 0 && this.searching) {//для поиска, разбивка по словам
- let partWords = part.text.split(' ');
- for (let j = 0; j < partWords.length; j++) {
- let f = font;
- let style = part.style;
- let word = partWords[j];
- if (word.toLowerCase().indexOf(this.needle) >= 0) {
- style = Object.assign({}, part.style, {bold: true});
- f = this.fontByStyle(style);
- }
- out += this.fillText(word, x, y, f);
- x += this.measureText(word, style) + (j < partWords.length - 1 ? spaceWidth : 0);
- }
- } else {
- out += this.fillText(part.text, x, y, font);
- x += this.measureText(part.text, part.style);
- }
- }
- }
- y += this.lineHeight;
+ out += (i > 0 ? '
' : '') + lineText;
}
out += '
';