Skip to content

Commit 41ee5bb

Browse files
authored
Fix text renderer wrap error (#1914)
* fix(text): fix wrap error
1 parent d45e403 commit 41ee5bb

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

packages/core/src/2d/text/TextUtils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ export class TextUtils {
215215
} else {
216216
word += char;
217217
wordWidth += charInfo.xAdvance;
218-
wordMaxAscent = lineMaxAscent = Math.max(wordMaxAscent, ascent);
219-
wordMaxDescent = lineMaxDescent = Math.max(wordMaxDescent, descent);
218+
wordMaxAscent = Math.max(wordMaxAscent, ascent);
219+
wordMaxDescent = Math.max(wordMaxDescent, descent);
220220
}
221221
}
222222
}

tests/src/core/2d/text/TextUtils.test.ts

+23
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ describe("TextUtils", () => {
88
let scene: Scene;
99
let textEntity1: Entity;
1010
let textEntity2: Entity;
11+
let textEntity3: Entity;
12+
let textEntity4: Entity;
1113
let textRendererTruncate: TextRenderer;
1214
let textRendererOverflow: TextRenderer;
15+
let wrap1TextRenderer: TextRenderer;
16+
let wrap2TextRenderer: TextRenderer;
1317

1418
before(async function () {
1519
engine = await WebGLEngine.create({
@@ -29,13 +33,20 @@ describe("TextUtils", () => {
2933

3034
textEntity1 = rootEntity.createChild("text1");
3135
textEntity2 = rootEntity.createChild("text2");
36+
textEntity3 = rootEntity.createChild("text3");
37+
textEntity4 = rootEntity.createChild("text4");
3238

3339
textRendererTruncate = textEntity1.addComponent(TextRenderer);
3440
textRendererTruncate.font = Font.createFromOS(engine, "Arial");
3541

3642
textRendererOverflow = textEntity2.addComponent(TextRenderer);
3743
textRendererOverflow.font = Font.createFromOS(engine, "Arial");
3844

45+
wrap1TextRenderer = textEntity3.addComponent(TextRenderer);
46+
wrap1TextRenderer.font = Font.createFromOS(engine, "Arial");
47+
wrap2TextRenderer = textEntity4.addComponent(TextRenderer);
48+
wrap2TextRenderer.font = Font.createFromOS(engine, "Arial");
49+
3950
engine.run();
4051
});
4152

@@ -200,6 +211,18 @@ describe("TextUtils", () => {
200211
expect(result.height).to.be.equal(162);
201212
expect(result.lines).to.be.deep.equal([" ", " ", "W", "o", "rl", "d"]);
202213
expect(result.lineHeight).to.be.equal(27);
214+
215+
wrap1TextRenderer.enableWrapping = true;
216+
wrap1TextRenderer.width = 5;
217+
wrap1TextRenderer.fontSize = 60;
218+
wrap1TextRenderer.text = "测试";
219+
const text1Metrics = TextUtils.measureTextWithWrap(wrap1TextRenderer);
220+
wrap2TextRenderer.enableWrapping = true;
221+
wrap2TextRenderer.width = 5;
222+
wrap2TextRenderer.fontSize = 60;
223+
wrap2TextRenderer.text = "测试。";
224+
const text2Metrics = TextUtils.measureTextWithWrap(wrap2TextRenderer);
225+
expect(text1Metrics.lineMaxSizes[0].size).to.be.equal(text2Metrics.lineMaxSizes[0].size);
203226
});
204227

205228
it("measureTextWithoutWrap", () => {

0 commit comments

Comments
 (0)