diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index ca49634c4..914d6b1f3 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -58,6 +58,7 @@ export default defineConfig({ server: { host: true, + strictPort: true, port: Number.parseInt(process.env.PORT ?? "3000", 10), }, diff --git a/packages/pdf/src/hooks/use-register-fonts.test.ts b/packages/pdf/src/hooks/use-register-fonts.test.ts index b6df0d740..7d66dbf40 100644 --- a/packages/pdf/src/hooks/use-register-fonts.test.ts +++ b/packages/pdf/src/hooks/use-register-fonts.test.ts @@ -44,6 +44,7 @@ describe("registerFonts", () => { it("registers CJK PDF fallbacks for normal and italic text styles", async () => { const registerSpy = vi.spyOn(Font, "register").mockImplementation(() => {}); + vi.spyOn(Font, "registerHyphenationCallback").mockImplementation(() => {}); const cjkFallbackSource = getWebFontSource("Noto Serif SC", "400", false); const { registerFonts } = await import("./use-register-fonts"); @@ -71,6 +72,7 @@ describe("registerFonts", () => { it("uses the full CJK font source for synthetic italic variants when the CJK font is primary", async () => { const registerSpy = vi.spyOn(Font, "register").mockImplementation(() => {}); + vi.spyOn(Font, "registerHyphenationCallback").mockImplementation(() => {}); const cjkFallbackSource = getWebFontSource("Noto Serif SC", "400", false); const { registerFonts } = await import("./use-register-fonts"); diff --git a/packages/pdf/src/hooks/use-register-fonts.ts b/packages/pdf/src/hooks/use-register-fonts.ts index 68f294253..50f324c62 100644 --- a/packages/pdf/src/hooks/use-register-fonts.ts +++ b/packages/pdf/src/hooks/use-register-fonts.ts @@ -65,6 +65,11 @@ const resolvePdfTypography = (typography: Typography): Typography => { }; export const registerFonts = (typography: Typography): PdfTypography => { + Font.registerHyphenationCallback((word) => { + if (word.match(/\p{Script=Han}/u)) return word.split("").flatMap((l) => [l, ""]); + return [word]; + }); + const pdfTypography = resolvePdfTypography(typography); const bodyFontFamily = pdfTypography.body.fontFamily; const headingFontFamily = pdfTypography.heading.fontFamily;