From 4a862d1c86396b28a9015997c2d1d6381f42bc63 Mon Sep 17 00:00:00 2001 From: tsingliu <410869548@qq.com> Date: Sat, 7 Feb 2026 20:51:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=88=AA=E5=9B=BE=E6=96=87?= =?UTF-8?q?=E5=AD=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tools/screenshot.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/tools/screenshot.ts b/src/tools/screenshot.ts index 7dd6fc0..c884d24 100644 --- a/src/tools/screenshot.ts +++ b/src/tools/screenshot.ts @@ -32,7 +32,11 @@ export const ScreenshotTool: ToolModule = { handler: async (args: any, config: any) => { let browser; try { - browser = await chromium.launch({ headless: true }); + // Launch with specific args to improve font rendering + browser = await chromium.launch({ + headless: true, + args: ['--font-render-hinting=none'] + }); } catch (error: any) { if (error.message.includes("Executable doesn't exist")) { return "Error: Playwright browsers are not installed. Please run `npx playwright install chromium` to enable this feature."; @@ -41,8 +45,10 @@ export const ScreenshotTool: ToolModule = { } const context = await browser.newContext({ - userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', - viewport: { width: 1280, height: 720 } + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + viewport: { width: 1280, height: 720 }, + locale: 'zh-CN', // Set locale to Chinese to help with font selection and site localization + deviceScaleFactor: 2 // High DPI for better text clarity }); const page = await context.newPage(); @@ -50,7 +56,10 @@ export const ScreenshotTool: ToolModule = { console.log(`Navigating to ${args.url} for screenshot...`); await page.goto(args.url, { waitUntil: 'networkidle', timeout: 30000 }); - // Wait a bit for animations etc. + // Wait for fonts to be ready + await page.evaluate(() => document.fonts.ready); + + // Additional small delay for dynamic content await page.waitForTimeout(1000); await page.screenshot({ @@ -66,4 +75,4 @@ export const ScreenshotTool: ToolModule = { await browser.close(); } } -}; +}; \ No newline at end of file