Эх сурвалжийг харах

Улучшена загрузка внешних шрифтов

Book Pauk 5 жил өмнө
parent
commit
9d68cfcaf0

+ 10 - 3
client/components/Reader/TextPage/TextPage.vue

@@ -247,6 +247,9 @@ class TextPage extends Vue {
             this.parsed.imageHeightLines = this.imageHeightLines;
             this.parsed.imageFitWidth = this.imageFitWidth;
             this.parsed.compactTextPerc = this.compactTextPerc;
+
+            this.parsed.testText = 'Это тестовый текст. Его ширина выдается системой неверно некоторое время.';
+            this.parsed.testWidth = this.drawHelper.measureText(this.parsed.testText, {});
         }
 
         //scrolling page
@@ -335,11 +338,15 @@ class TextPage extends Vue {
         // ширина шрифта некоторое время выдается неверно, поэтому
         if (!omitLoadFonts) {
             const parsed = this.parsed;
-            await sleep(100);
+
+            let i = 0;
+            const t = this.parsed.testText;
+            while (i++ < 50 && this.parsed === parsed && this.drawHelper.measureText(t, {}) === this.parsed.testWidth)
+                await sleep(100);
+
             if (this.parsed === parsed) {
-                parsed.force = true;
+                this.parsed.testWidth = this.drawHelper.measureText(t, {});
                 this.draw();
-                parsed.force = false;
             }
         }
     }

+ 2 - 0
client/components/Reader/share/BookParser.js

@@ -605,6 +605,7 @@ export default class BookParser {
 
         if (!this.force &&
             para.parsed && 
+            para.parsed.testWidth === this.testWidth &&
             para.parsed.w === this.w &&
             para.parsed.p === this.p &&
             para.parsed.wordWrap === this.wordWrap &&
@@ -620,6 +621,7 @@ export default class BookParser {
             return para.parsed;
 
         const parsed = {
+            testWidth: this.testWidth,
             w: this.w,
             p: this.p,
             wordWrap: this.wordWrap,