Skip to content

Commit 4c0e47b

Browse files
committed
fix text rendering in turtle library
1 parent fecf62d commit 4c0e47b

3 files changed

Lines changed: 50 additions & 23 deletions

File tree

.changeset/rich-numbers-type.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@hyperbook/markdown": patch
3+
"hyperbook": patch
4+
---
5+
6+
Fix font rendering in turtle library

packages/markdown/assets/directive-pyide/client.js

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,22 @@ hyperbook.python = (function () {
381381
const numeric = Number(value);
382382
return Number.isFinite(numeric) ? numeric : fallback;
383383
};
384+
const toPlainBoolean = (value, fallback = false) => {
385+
if (value === null || value === undefined) return fallback;
386+
if (typeof value === "boolean") return value;
387+
if (typeof value === "number") return value !== 0;
388+
if (typeof value === "bigint") return value !== 0n;
389+
if (typeof value === "string") {
390+
const normalized = value.trim().toLowerCase();
391+
if (!normalized) return fallback;
392+
if (["false", "0", "no", "off"].includes(normalized)) return false;
393+
if (["true", "1", "yes", "on"].includes(normalized)) return true;
394+
}
395+
if (typeof value.toJs === "function") {
396+
return toPlainBoolean(value.toJs({ pyproxies: [] }), fallback);
397+
}
398+
return Boolean(value);
399+
};
384400
const fontSizeToCanvasUnits = (value) => {
385401
const numeric = toPlainNumber(value, Number.NaN);
386402
if (!Number.isFinite(numeric) || numeric === 0) {
@@ -1026,28 +1042,21 @@ hyperbook.python = (function () {
10261042
let writeMove = move;
10271043
let writeAlign = align;
10281044
let writeFont = font;
1029-
1030-
if (isWriteKwargsObject(writeAlign)) {
1031-
const kwargs = toPlainObject(writeAlign);
1032-
if (kwargs) {
1033-
if (hasOwn(kwargs, "arg")) writeText = kwargs.arg;
1034-
else if (hasOwn(kwargs, "text")) writeText = kwargs.text;
1035-
if (hasOwn(kwargs, "move")) writeMove = kwargs.move;
1036-
if (hasOwn(kwargs, "align")) writeAlign = kwargs.align;
1037-
if (hasOwn(kwargs, "font")) writeFont = kwargs.font;
1038-
}
1039-
}
1040-
if (isWriteKwargsObject(writeFont)) {
1041-
const kwargs = toPlainObject(writeFont);
1042-
if (kwargs) {
1043-
if (hasOwn(kwargs, "arg")) writeText = kwargs.arg;
1044-
else if (hasOwn(kwargs, "text")) writeText = kwargs.text;
1045-
if (hasOwn(kwargs, "move")) writeMove = kwargs.move;
1046-
if (hasOwn(kwargs, "align")) writeAlign = kwargs.align;
1047-
if (hasOwn(kwargs, "font")) writeFont = kwargs.font;
1048-
}
1049-
writeFont = null;
1050-
}
1045+
const applyWriteKwargs = (candidate) => {
1046+
if (!isWriteKwargsObject(candidate)) return;
1047+
const kwargs = toPlainObject(candidate);
1048+
if (!kwargs) return;
1049+
if (hasOwn(kwargs, "arg")) writeText = kwargs.arg;
1050+
else if (hasOwn(kwargs, "text")) writeText = kwargs.text;
1051+
if (hasOwn(kwargs, "move")) writeMove = kwargs.move;
1052+
if (hasOwn(kwargs, "align")) writeAlign = kwargs.align;
1053+
if (hasOwn(kwargs, "font")) writeFont = kwargs.font;
1054+
};
1055+
applyWriteKwargs(writeText);
1056+
applyWriteKwargs(writeMove);
1057+
applyWriteKwargs(writeAlign);
1058+
applyWriteKwargs(writeFont);
1059+
if (isWriteKwargsObject(writeFont)) writeFont = null;
10511060

10521061
let family = currentFontFamily;
10531062
let size = fontSize;
@@ -1080,7 +1089,7 @@ hyperbook.python = (function () {
10801089
},
10811090
],
10821091
});
1083-
if (Boolean(writeMove)) {
1092+
if (toPlainBoolean(writeMove, false)) {
10841093
const metrics = measureTurtleText(String(writeText), family, size, style);
10851094
const left = metrics.left || 0;
10861095
const right = metrics.right || metrics.width || 0;

website/en/book/changelog.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ If you need a new feature, open an [issue](https://github.com/openpatch/hyperboo
3838
::::
3939
-->
4040

41+
## v0.93.1
42+
43+
::::tabs
44+
45+
:::tab{title="Fixed :bug:" id="fixed"}
46+
47+
- Fix text rendering in turtle library.
48+
49+
:::
50+
51+
::::
52+
4153
## v0.93.0
4254

4355
::::tabs

0 commit comments

Comments
 (0)