用户1340774522 :关于我这几天在干什么:发现在 Windows 上 Qt GUI 的界面默认字体不会随着当前账户语言而变(如当前账户语言为英文时默认字体仍然为宋体)于是经过无数次虚拟机试验和带着对微软推荐的默认界面字体 MS Shell Dlg 2 的先入为主的执念扒 QFontDatabase 和 QFontEngine 源码总结得出问题根本不在于当前系统的字体列表中是否存在 MS Shell Dlg 2 而在于启动时更早的某处已经决定了默认字体后继续在 QFont 里打断点找到症结所在:Qt GUI 的界面默认字体(似乎)来自于启动时根据当前平台环境初始化主题时取的系统字体(SystemFont)而它来自于 Windows GDI API 中早已被不建议使用的只会根据当前*系统默认账户*的语言优先级列表(存储于注册表 HKEY_USERS\.DEFAULT\Control Panel\International\User Profile 的 Languages 值的二进制数据中)的首选语言取相应字体的 GetStockObject(DEFAULT_GUI_FONT) 函数。于是在系统默认账户为中文(可在控制面板-区域-管理-复制设置中修改)时无论当前用户选择了什么语言界面默认字体就是宋体。 2021-02-02 00:43:05 举报 收藏 操作
还没有人针对这条微博发表评论!