Skip to content

fix(editor): 居中工具栏下拉菜单的图标与文字 - #1898

Merged
sunsonliu merged 4 commits into
Tencent:devfrom
dvd233:fix/toolbar-icon-alignment
Oct 16, 2026
Merged

sunsonliu merged 4 commits into
Tencent:devfrom
dvd233:fix/toolbar-icon-alignment

Conversation

@dvd233

@dvd233 dvd233 commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Closes #1876

问题与修改

工具栏下拉菜单把字体图标与文字按 inline baseline 对齐,字体度量及文字换行会影响它们的垂直位置。将菜单项改为 flex 居中,并让字体图标内部居中、不收缩;保留原尺寸、间距、菜单点击逻辑和其他图标类型。新增 patch changeset 与编译后 CSS 的结构回归。

实际 examples/index.html 验证了标题、插入菜单,以及点击“二级标题”更新 Markdown。以当前 dev 原样式作对照,在 Windows Chromium 中测量 Arial、Times New Roman、Segoe UI、serif、monospace × 12/14/20px × 五行标题:75 组的中心最大偏差从 14.66px(包含换行情形)降到 0.88px,未发生横向溢出。12/14px 未换行组的原最大偏差为 2px。测量比较的是图标盒和文本 Range,不能据此声称所有字体字形的光学中心完全一致。

验证

  • yarn lint:0 errors;已有第三方示例共 3,469 warnings。
  • yarn typecheck:核心与小程序通过。
  • yarn test:核心 129 files / 2,223 tests、小程序 2 files / 23 tests 全通过。
  • yarn build:全部 workspace 构建通过,包括核心、小程序、demo、客户端和 VS Code 插件。
  • vp run -F cherry-markdown test:artifacts:6 passed / 1 failed。失败是 ES5 检查把 Windows 反斜杠绝对路径当 glob,报“Did not find any files”。相同真实 UMD 产物用正斜杠绝对路径和相对路径直接运行 ES-Check 均通过;没有修改检查脚本或跳过断言。
  • git diff --check 通过;构建改写的客户端版本文件已恢复,不包含构建产物或无关版本变化。
  • 真实示例浏览器控制台 0 errors;默认字体修改前后已截图检查。截图/几何依据来自实际页面与实际主线 SCSS,未合成替代 UI。

macOS 原生 Chrome、Windows Edge、屏幕阅读器和自定义图片/SVG 图标尚未验证;本次证据限定为 Windows Chromium 和上述真实菜单。菜单 DOM 内容及顺序未改变。

复核与贡献边界

从最新 dev 的 d9cbd13ba7bb25bddc83f28acf785bff72904cf9 准备,Issue 当前 assigned to dvd233。已检查 Issue timeline、问题关键词及全部开放 PR changed-files:#1829 是此前已合并的 inline 对齐方案;#1673 是 design-token 重构,未提供本项 flex 修复;#1840 的 MenuBase 改动是 Milkdown 桥接,不覆盖本问题。

本 PR 使用了 AI 辅助实现、自动代码审核和验证,作者为 dvd233。

@changeset-bot

changeset-bot Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 409fd08

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
cherry-markdown Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new

pkg-pr-new Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

cherry-markdown

pnpm add https://pkg.pr.new/cherry-markdown@1898
npm i https://pkg.pr.new/cherry-markdown@1898
yarn add https://pkg.pr.new/cherry-markdown@1898.tgz

@cherry-markdown/miniprogram

pnpm add https://pkg.pr.new/@cherry-markdown/miniprogram@1898
npm i https://pkg.pr.new/@cherry-markdown/miniprogram@1898
yarn add https://pkg.pr.new/@cherry-markdown/miniprogram@1898.tgz

commit: 409fd08

@cherry-markdown-bot

cherry-markdown-bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

💻 Client 构建产物

平台 架构 产物类型 下载
macOS Apple Silicon DMG 安装包 下载
macOS Apple Silicon App 应用 下载
macOS x64 App 应用 下载
macOS x64 DMG 安装包 下载
Windows x64 EXE 安装程序 下载
Windows x64 MSI 安装包 下载
Linux x64 Deb 包 下载
Linux x64 AppImage 下载

⏰ 产物保留 5 天

@cherry-markdown-bot

cherry-markdown-bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

🔌 VSCode Plugin 构建产物

下载 .vsix

⏰ 产物保留 5 天

@cherry-markdown-bot

Copy link
Copy Markdown
Collaborator

@sunsonliu

Copy link
Copy Markdown
Collaborator
image

感谢贡献,不过尝试了下,在Windows下,Edge和Chrome 浏览器下依然没有对齐。。。

@dvd233

dvd233 commented Oct 13, 2026

Copy link
Copy Markdown
Contributor Author

@sunsonliu 感谢复核,已正常推送补充修复 44cb7c3。

感谢截图,我在 Windows Chrome 上确认了“对齐”菜单中图标字形仍比文字高。此前只检查 flex 属性、图标盒与文本 Range 的中心,确实漏掉了实际字形的位置。

剩余偏移来自生成的 ch-icon 字体:hhea ascent/descent 是 1000/0,但 OS/2 的 typo 度量是 812/-212、Windows 度量是 812/212。在当前 Windows Chrome 中,14px 图标的实际字形 ascent/descent 是14/0px,字体行框却是11/3px;所以即使 flex 已生效,字形仍偏上。补充修复在字体生成器中统一这两套度量,保留菜单 DOM,没有增加固定像素位移。

验证环境为真实 Windows Chrome 155.0.8059.40、浏览器100%缩放、DPR1.75,中文实际字体 Microsoft YaHei。在真实“对齐”菜单七项中,可见像素边界中心差由约2.5–3.5 CSS px降到±0.3px以内;这是截图像素边界测量,不代表所有字形的主观视觉中心都相同。也检查了中英文标题/插入菜单、英文换行项,并实际点击标题和居中菜单确认 Markdown 更新。

新增回归运行实际生成器并检查 TTF/WOFF/WOFF2/EOT 的字体度量;精确原 head 17c65d5 上失败,修复后通过。全部121个映射图标的轮廓、宽度和边界未变;重复生成两次结果语义一致;真实 Chrome 在14/28px同一 alphabetic baseline 的全部图标逐像素绘制对照没有变化。

本地核心130files/2224tests、小程序2files/23tests、两包类型检查通过;lint为0errors,既有3469warnings;全部18项workspace构建通过。构建产物检查仍为6pass/1fail:原 ES5 检查在 Windows 把反斜杠路径当glob,精确原head的同一检查也失败;相同基线/修复UMD使用正斜杠路径直接ES-Check通过,没有将替代命令当作原测试通过。

Windows Edge 和 macOS Chrome 目前没有完成真实验证。当前控制接口只支持本机Chrome,虽然EdgeCore已安装,Edge不在可控制浏览器列表;也没有macOS环境。字体度量影响全部ch-icon使用处,因此还需要在这两个平台复核菜单及其他图标场景的对齐和裁切,不能声称全平台已解决。请在 PR 新版本构建完成后再帮忙确认原截图场景,谢谢。

今天再次运行字体度量与原 CSS 回归,2 files / 2 tests 通过。目前该精确 SHA 对应的7项 GitHub Actions 均显示 action_required,不能报告远端 CI 通过或预览已更新;请维护者确认是否需要批准运行后再复核预览。

@sunsonliu
sunsonliu merged commit 5001137 into Tencent:dev Oct 16, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

工具栏图标和文字没有对齐

3 participants