bug: Prompt editor: Polish diacritics (ą, ć, ę, ł, ń, ó, ś, ź, ż) rendered with a fallback font

这个报错通常出现在 Langfuse Cloud 的 Prompt 编辑器里输入波兰语变音字符(ą、ć、ę、ł、ń、ó、ś、ź、ż)时,这些字符会以回退字体显示,而正文其余字符显示正常。优先排查方向是编辑器的等宽字体(IBM Plex Mono)是否缺少 Latin Extended-A 字形覆盖。

快速结论:这个报错通常出现在 Langfuse Cloud 的 Prompt 编辑器里输入波兰语变音字符(ą、ć、ę、ł、ń、ó、ś、ź、ż)时,这些字符会以回退字体显示,而正文其余字符显示正常。优先排查方向是编辑器的等宽字体(IBM Plex Mono)是否缺少 Latin Extended-A 字形覆盖。

适用环境:已确认环境为 Langfuse Cloud;浏览器为 153.0.8010.53;操作系统为 Windows 11。Issue 中未提供自托管版本号、SDK 版本、Python、CUDA、PyTorch 或显卡信息。

最快修复方案:暂无确认的一步修复方案。Issue 中提到的修复 PR(#17876)在关闭时仍被 CLA 签名阻塞,随后由 #18455 接替处理,但未说明该修复对用户侧是否为即时应答。

注意事项:这是显示层问题,存储的 UTF-8 内容是正确的,不会因该字体回退导致提示词内容丢失或损坏。Issue 讨论中还指出,波兰语变音字符的修复不覆盖西里尔字形;希腊语由于 IBM Plex Mono 上游没有对应子集,无法用同样方式修复。

问题场景

在 Langfuse 的 Prompt 编辑器中操作时触发:进入 Prompts → 新建 prompt,或创建已有 prompt 的新版本,然后在编辑器中输入包含波兰语变音字符的文本,例如 Zażółć gęślą jaźń。此时变音字符会以不同于正文的字体渲染,导致 prompt 在视觉上难以阅读。

报错原文

bug: Prompt editor: Polish diacritics (ą, ć, ę, ł, ń, ó, ś, ź, ż) rendered with a fallback font

原因分析

根据 Issue 评论中的根因说明:#17557 将自托管字体切换为 IBM Plex Mono 的 Google Fonts latin 子集,该子集只有 230 个码位,其中 Latin Extended-A 仅覆盖 3/128;同时 shared-theme.ts 将 --font-mono 应用到所有 CodeMirror 编辑界面,因此缺少字形的波兰语字母会逐字回退到其他字体渲染。ó 看起来正常,是因为它属于 Latin-1 范围。

这是显示层问题,存储内容本身仍是正确的 UTF-8。

环境排查

  • 确认使用的是 Langfuse Cloud 还是自托管;Issue 报告的是 Langfuse Cloud。
  • 确认浏览器版本:Issue 中为 153.0.8010.53。
  • 确认操作系统:Issue 中为 Windows 11。
  • 如果是自托管,可检查是否包含 #17557 引入的 IBM Plex Mono latin 子集字体文件,以及 shared-theme.ts 中 --font-mono 的应用范围。
  • Issue 未提供 Python、CUDA、PyTorch、显卡或 SDK 版本,排查时不需要以这些为前置条件。

解决步骤

  1. 先确认问题属于显示层:检查 prompt 存储后的内容是否仍为完整的波兰语字符,Issue 中已确认存储内容为正确 UTF-8。
  2. 如果使用自托管,检查前端字体资源是否为 Google Fonts latin 子集;评论指出 #17557 的该子集只覆盖 3/128 个 Latin Extended-A 码位。
  3. 关注上游修复进展:Issue 中提到 #17876 通过引入 Latin Extended-A 覆盖来修复波兰语字形,但该 PR 因 license/cla 未签名而阻塞;后续由 #18455 替换为完整上游字体族,覆盖 230 → 930 个字符。
  4. 如需自行处理,可优先尝试确保编辑器等宽字体使用带有 Latin Extended-A 覆盖的字体子集或更完整的字体回退栈;Issue 中未给出可直接照搬的配置代码,因此这属于可优先尝试的方向。
  5. 若还需要覆盖西里尔字形,需要额外处理:评论指出 #17876 不覆盖 Cyrillic,并且 IBM Plex Mono 上游没有 Greek 子集,希腊语无法用同样方式修复。

验证方法

在 Prompt 编辑器中输入 Zażółć gęślą jaźń,确认 ą、ć、ę、ł、ń、ó、ś、ź、ż 与正文其余字符使用同一字体渲染,不再出现逐字回退。评论中给出的验证依据是字体二进制的 cmap 覆盖:修复后 Latin Extended-A 达到 128/128,字体度量不变;若同时引入 cyrillic 与 cyrillic-ext,则俄语 66/66、乌克兰语 8/8。

参考来源

langfuse/langfuse #17874

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 28429

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注