Skip to content

Latest commit

 

History

History
38 lines (27 loc) · 1.55 KB

File metadata and controls

38 lines (27 loc) · 1.55 KB

[212_7] 修复导出 PDF 时中英文混合文件名导致的标题乱码

相关文档

  • 212_6 - 修复 PDF 导出时不可见字符导致的渲染问题
  • 222_66 - 修复超链接预览中异常显示的中文字符

任务相关的代码文件

  • src/Edit/Editor/edit_main.cpp
  • TeXmacs/tests/tmu/212_7_中文_English.tmu

如何测试

  1. 打开测试文件 TeXmacs/tests/tmu/212_7_中文_English.tmu
  2. 确保文档没有设置 global-titledoc-title
  3. 导出为 PDF
  4. 使用 PDF 阅读器查看文档属性中的标题,应正确显示为 212_7_中文_English.tmu

2026/05/08 修复 PDF 标题乱码

What

edit_main.cppget_metadata 函数中,当回退到文件名作为标题时,添加 cork_to_utf8 转换。

Why

edit_main_rep::get_metadata 在获取 title 元数据时,前两个来源(global-titledoc-title)都使用了 cork_to_utf8 转换,但第三个来源(文件名)没有:

if (kind == "title") return as_string (tail (get_name ()));

TeXmacs 内部字符串使用 Cork 编码,文件名在某些情况下可能是 Cork 编码(如 <#4E2D><#6587>English.tm)。缺少 cork_to_utf8 转换会导致 PDF 元数据中的标题出现乱码。

这与 [222_66] 中修复超链接预览乱码的思路一致:在将内部字符串传递给需要 UTF-8 的外部系统(如 PDF 库或 UI)时,需要进行 cork_to_utf8 转换。

How

将上述代码改为:

if (kind == "title") return cork_to_utf8 (as_string (tail (get_name ())));