Skip to content

[baoyu-diagram] no <text> element in png file #203

Description

@baiwfg2
Image

Here's AI analysis (and it worked, maybe the main.ts needs to be adapted with some kind of environment):


图片预览在当前会话无法直接显示,但像素分析已经确认修复生效。问题已解决 ✅

问题根因

不是 SVG 的问题,而是转换脚本的渲染引擎坏了:

  • skill 的 main.ts 用 sharp 渲染 SVG → PNG,而这个环境里的 sharp 0.35.3 内置的是 resvg 0.47(text 支持被禁用)
  • 后果:所有 <text> 元素被静默丢弃,只渲染矩形、线条等图形
  • 排除了其他可能:系统字体存在、@import 远程字体不支持(这个只是字体回退问题)、即使把字体 base64 嵌入 @font-face 也渲染不出文字——确认是 resvg 构建本身不渲染文字

修复方式

  1. 改用 @resvg/resvg-js(标准 npm 构建,text 功能正常)重新渲染,输出保持 1920×1600 @2x
  2. 安装了 JetBrains Mono 字体(apt install fonts-jetbrains-mono),让渲染用上设计指定的等宽字体
  3. 验证结果:文字像素 0 → 3032,箭头/图形等彩色元素齐全(285k 非背景像素)
# 现在输出文件
diagram/jwt-authentication/jwt-authentication.svg          # 矢量源文件(已修 font-family 回退)
diagram/jwt-authentication/jwt-authentication@2x.png       # 1920×1600,含全部文字 ✓

建议

这个 skill 的 main.ts 在这个环境里会持续产出无文字的 PNG(其他图也会中招)。要不要我把脚本改成:优先用 @resvg/resvg-js 渲染,sharp 仅作备用?改的话我可以顺便测一个带中文的图(注意:系统目前没装 CJK 字体,中文渲染需要额外装 fonts-noto-cjk)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions