Skip to content

[Bug] Markdown 文件预览在 150% 显示缩放下出现文本行重叠 #1304

Description

@oceaman

问题描述

在 BitFun 对话内展开 Markdown 文件预览时,diff 视图中的文本行出现垂直重叠,导致内容难以阅读。

复现步骤

  1. 在对话中让 AI 写入或修改一个 Markdown 文件
  2. 点击展开文件预览(diff 视图)
  3. 观察文本行,特别是中英文混排的行

实际表现

相邻行的文本在垂直方向上重叠,例如:

  • 第 4 行:content_settings 并清空 permission_actions 历史Open References 重叠
  • 第 12 行:## 关键文件permission_actions 记录拒绝操作...` 重叠

期望表现

文本行应该清晰分离,不出现重叠。

环境信息

  • BitFun 版本: 0.2.10
  • 操作系统: Windows 11
  • 显示缩放: 150% (144 DPI)
  • WebView2 版本: Edge WebView2 (随系统更新)

根因分析

这是 Tauri 2 + WebView2 的已知渲染缺陷,在以下条件下容易触发:

  1. 非整数缩放比例:150% 缩放是 WebView2 文本渲染 bug 的重灾区。100%、200% 这种整数倍缩放像素对齐完美,而 125%、150% 会出现亚像素渲染问题。

  2. 等宽字体 + 中英文混排:中文字体和英文字体的行高(line-height)不一致,WebView2 的行高计算没有正确取最大值。

  3. diff 视图的特殊布局:BitFun 的 diff 视图可能用了 white-space: pre 或类似的 CSS,绕过了正常的文本布局引擎。

为什么只在对话内出现?

BitFun 的对话视图和编辑器用的是不同的渲染路径:

  • 编辑器:可能用了 Monaco Editor 或 CodeMirror,有自己的文本渲染引擎
  • 对话内的 diff 预览:直接用 WebView2 渲染 HTML/CSS,依赖浏览器引擎的文本布局

临时绕过方案

用户侧可以尝试:

  • 调整显示缩放到 200%(整数倍),文本重叠问题基本消失
  • 切换代码字体为纯英文字体(如 Fira CodeJetBrains Mono),避免中英文字体行高冲突

建议的修复方案

在 BitFun 的 CSS 里强制行高补偿,例如:

.diff-view, .markdown-preview {
  line-height: 1.8 !important;  /* 比默认 1.5 更大,给中英文混排留余量 */
}

或者在 diff 视图的容器上添加:

.diff-line {
  min-height: 1.6em;
  line-height: 1.6;
}

截图

Image

相关 Issue

这个问题与 Tauri 2 + WebView2 的文本渲染相关,可能影响所有使用非整数缩放的用户。


备注:这个问题不影响文件内容的正确性,只是预览渲染有瑕疵。文件本身在磁盘上是完好的。

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