src/Edit/Editor/edit_main.cppTeXmacs/tests/tmu/212_7_中文_English.tmu
- 打开测试文件
TeXmacs/tests/tmu/212_7_中文_English.tmu - 确保文档没有设置
global-title和doc-title - 导出为 PDF
- 使用 PDF 阅读器查看文档属性中的标题,应正确显示为
212_7_中文_English.tmu
在 edit_main.cpp 的 get_metadata 函数中,当回退到文件名作为标题时,添加 cork_to_utf8 转换。
edit_main_rep::get_metadata 在获取 title 元数据时,前两个来源(global-title 和 doc-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 转换。
将上述代码改为:
if (kind == "title") return cork_to_utf8 (as_string (tail (get_name ())));