惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Troy Hunt's Blog
Scott Helme
Scott Helme
T
Threat Research - Cisco Blogs
T
Tenable Blog
L
LINUX DO - 热门话题
V
Visual Studio Blog
I
Intezer
Blog — PlanetScale
Blog — PlanetScale
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
Netflix TechBlog - Medium
SecWiki News
SecWiki News
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Project Zero
Project Zero
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
S
Securelist
Spread Privacy
Spread Privacy
L
LangChain Blog
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The Last Watchdog
The Last Watchdog
Attack and Defense Labs
Attack and Defense Labs
博客园 - 司徒正美
Help Net Security
Help Net Security
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
Forbes - Security
Forbes - Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
博客园 - 【当耐特】
T
Tor Project blog

博客园 - 南水之源

osgImage和QImage互相转换 AI助手选哪个?Cowork vs OpenClaw深度解析:程序猿、打工人、老板们看过来 "数字管家"Claude Cowork,正在接管你的桌面 Claude Code:那只被称为"代码章鱼"的AI,正在吃掉整个编程世界 “拥有数字生命的龙虾”OpenClaw的前世今生 怎么领取使用国家超算中心小龙虾tokens 使用gdal修改shp数据 保存OE中使用的高程数据用gdal保存成tif文件[完成] blender GIS介绍 c++开发大模型mcp服务(七)使用cpp-mcp的例子MCP-ExcelAutoCpp c++开发大模型mcp服务(六)cpp-mcp库说明 c++开发大模型mcp服务(五)编译c++版本的mcp库(cpp-mcp) c++开发大模型mcp服务(四)使用工具测试高德地图的MCP(流程验证) c++开发大模型mcp服务(三)一个常规的MCP调用例子(以高德地图MCP举例) c++开发大模型mcp服务(二)MCP 架构说明 c++开发大模型mcp服务(一)目的和概念 解除360首页锁定操作 辅助Visual Studio上C++开发的工具(插件) [书]清华大学DeepSeek:从入门到精通 [原]geoserver缓存切片类GeoServerMetaTile的解析UML
使用qt读取系统字体库,并进行英文名称映射
南水之源 · 2025-10-10 · via 博客园 - 南水之源

映射函数:

// 创建中文字体到英文名称的映射表
QMap<QString, QString> createFontMapping() {
    QMap<QString, QString> mapping;
    mapping[QString::fromLocal8Bit("宋体")] = "simsun.ttc";
    mapping[QString::fromLocal8Bit("黑体")] = "simhei.ttf";
    mapping[QString::fromLocal8Bit("微软雅黑")] = "msyh.ttc";
    mapping[QString::fromLocal8Bit("微软雅黑粗体")] = "msyhbd.ttc";
    mapping[QString::fromLocal8Bit("微软雅黑细体")] = "msyhl.ttc";
    mapping[QString::fromLocal8Bit("微软正黑体")] = "msyhbd.ttc";
    mapping[QString::fromLocal8Bit("楷体")] = "simkai.ttf";
    mapping[QString::fromLocal8Bit("新宋体")] = "simsun.ttc";
    mapping[QString::fromLocal8Bit("仿宋")] = "simfang.ttf";
    mapping[QString::fromLocal8Bit("幼圆")] = "SIMYOU.TTF";
    mapping[QString::fromLocal8Bit("隶书")] = "SIMLI.TTF";
    mapping[QString::fromLocal8Bit("华文细黑")] = "STXIHEI.TTF";
    mapping[QString::fromLocal8Bit("华文楷体")] = "STKAITI.TTF";
    mapping[QString::fromLocal8Bit("华文宋体")] = "STSONG.TTF";
    mapping[QString::fromLocal8Bit("华文仿宋")] = "STFANGSO.TTF";
    mapping[QString::fromLocal8Bit("华文中宋")] = "STZHONGS.TTF";
    mapping[QString::fromLocal8Bit("华文彩云")] = "STCAIYUN.TTF";
    mapping[QString::fromLocal8Bit("华文琥珀")] = "STHUPO.TTF";
    mapping[QString::fromLocal8Bit("华文新魏")] = "STXINWEI.TTF";
    mapping[QString::fromLocal8Bit("华文隶书")] = "STLITI.TTF";
    mapping[QString::fromLocal8Bit("华文行楷")] = "STXINGKA.TTF";
    mapping[QString::fromLocal8Bit("方正舒体")] = "FZSTK.TTF";
    mapping[QString::fromLocal8Bit("方正姚体")] = "FZYTK.TTF";

    mapping[QString::fromLocal8Bit("思源黑体")] = "Source Han Sans CN.ttf";
    mapping[QString::fromLocal8Bit("思源宋体")] = "Source Han Serif SC.ttf";
    mapping[QString::fromLocal8Bit("文泉驿微米黑")] = "WenQuanYi Micro Hei.ttf";

    mapping[QString::fromLocal8Bit("苹方")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("华文黑体")] = "STHeiti.ttf";
    // 注意:其他“华文”字体如“华文楷体”等已定义,不再重复

    mapping[QString::fromLocal8Bit("冬青黑体简")] = "Hiragino Sans GB.ttf";
    mapping[QString::fromLocal8Bit("兰亭黑-简")] = "Lantinghei SC.ttf";
    mapping[QString::fromLocal8Bit("翩翩体-简")] = "Hanzipen SC.ttf";
    mapping[QString::fromLocal8Bit("手札体-简")] = "Hannotate SC.ttf";
    mapping[QString::fromLocal8Bit("宋体-简")] = "Songti SC.ttf";
    mapping[QString::fromLocal8Bit("娃娃体-简")] = "Wawati SC.ttf";
    mapping[QString::fromLocal8Bit("魏碑-简")] = "Weibei SC.ttf";
    mapping[QString::fromLocal8Bit("行楷-简")] = "Xingkai SC.ttf";
    mapping[QString::fromLocal8Bit("雅痞-简")] = "Yapi SC.ttf";
    mapping[QString::fromLocal8Bit("圆体-简")] = "Yuanti SC.ttf";

    mapping[QString::fromLocal8Bit("汉仪旗黑")] = "HYQihei.ttf"; // 注意:有多个粗细,但家族名一致
    mapping[QString::fromLocal8Bit("汉仪大宋简")] = "HYDaSongJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪楷体")] = "HYKaiti.ttf";
    mapping[QString::fromLocal8Bit("汉仪家书简")] = "HYJiaShuJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪PP体简")] = "HYPPTiJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪乐喵体简")] = "HYLeMiaoTi.ttf";
    mapping[QString::fromLocal8Bit("汉仪小麦体")] = "HYXiaoMaiTiJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪程行体")] = "HYChengXingJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪黑荔枝")] = "HYHeiLiZhiTiJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪雅酷黑W")] = "HYYaKuHeiW.ttf";
    mapping[QString::fromLocal8Bit("汉仪大黑简")] = "HYDaHeiJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪尚魏手书")] = "HYShangWeiShouShuW.ttf";


    // 补齐常见 Windows 中文字体映射
    mapping[QString::fromLocal8Bit("新细明体")] = "PMingLiU.ttf";
    mapping[QString::fromLocal8Bit("细明体")] = "MingLiU.ttf";
    mapping[QString::fromLocal8Bit("标楷体")] = "DFKai-SB.ttf";
    mapping[QString::fromLocal8Bit("Arial Unicode MS")] = "Arial Unicode MS.ttf";
    mapping[QString::fromLocal8Bit("Times New Roman")] = "Times New Roman.ttf";
    mapping[QString::fromLocal8Bit("Courier New")] = "Courier New.ttf";
    mapping[QString::fromLocal8Bit("Tahoma")] = "Tahoma.ttf";
    mapping[QString::fromLocal8Bit("Verdana")] = "Verdana.ttf";
    mapping[QString::fromLocal8Bit("Georgia")] = "Georgia.ttf";
    mapping[QString::fromLocal8Bit("Trebuchet MS")] = "Trebuchet MS.ttf";
    mapping[QString::fromLocal8Bit("Impact")] = "Impact.ttf";
    mapping[QString::fromLocal8Bit("Comic Sans MS")] = "Comic Sans MS.ttf";
    mapping[QString::fromLocal8Bit("Lucida Console")] = "Lucida Console.ttf";
    mapping[QString::fromLocal8Bit("Lucida Sans Unicode")] = "Lucida Sans Unicode.ttf";

    // 常见补充中文字体
    mapping[QString::fromLocal8Bit("方正兰亭黑")] = "FZLanTingHei.ttf";
    mapping[QString::fromLocal8Bit("方正报宋")] = "FZBaoSong.ttf";
    mapping[QString::fromLocal8Bit("方正姚体")] = "FZYaoti.ttf";
    mapping[QString::fromLocal8Bit("方正舒体")] = "FZShuTi.ttf";
    mapping[QString::fromLocal8Bit("方正仿宋")] = "FZFangSong.ttf";
    mapping[QString::fromLocal8Bit("方正楷体")] = "FZKaiTi.ttf";
    mapping[QString::fromLocal8Bit("方正书宋")] = "FZShuSong.ttf";

    // 其他开源或常用字体
    mapping[QString::fromLocal8Bit("霞鹜文楷")] = "LXGW WenKai.ttf";
    mapping[QString::fromLocal8Bit("霞鹜文楷屏显")] = "LXGW WenKai Screen.ttf";
    mapping[QString::fromLocal8Bit("快乐体")] = "Kuaile.ttf";
    mapping[QString::fromLocal8Bit("得意黑")] = "Smiley Sans.ttf";
    mapping[QString::fromLocal8Bit("得意黑体")] = "Smiley Sans.ttf";

    // Adobe 字体系列
    mapping[QString::fromLocal8Bit("Adobe 黑体-Std")] = "Adobe Heiti Std.ttf";
    mapping[QString::fromLocal8Bit("Adobe 宋体-Std")] = "Adobe SongStd.ttf";
    mapping[QString::fromLocal8Bit("Adobe 楷体-Std")] = "Adobe Kaiti Std.ttf";
    mapping[QString::fromLocal8Bit("Adobe 仿宋-Std")] = "Adobe Fangsong Std.ttf";

    // 补充 macOS / 跨平台但可能存在于 Windows 的字体
    mapping[QString::fromLocal8Bit("SF Pro Text")] = "SF Pro Text.ttf";
    mapping[QString::fromLocal8Bit("SF Pro Display")] = "SF Pro Display.ttf";
    mapping[QString::fromLocal8Bit("Noto Sans CJK SC")] = "Noto Sans CJK SC.ttf"; // 思源黑体另一种名称
    mapping[QString::fromLocal8Bit("Noto Serif CJK SC")] = "Noto Serif CJK SC.ttf"; // 思源宋体另一种名称

    // 特殊用途字体
    mapping[QString::fromLocal8Bit("Symbol")] = "Symbol.ttf";
    mapping[QString::fromLocal8Bit("Webdings")] = "Webdings.ttf";
    mapping[QString::fromLocal8Bit("Wingdings")] = "Wingdings.ttf";
    mapping[QString::fromLocal8Bit("MS Gothic")] = "MS Gothic.ttf";
    mapping[QString::fromLocal8Bit("Gulim")] = "Gulim.ttf"; // 韩文
    mapping[QString::fromLocal8Bit("MS Mincho")] = "MS Mincho.ttf"; // 日文明体

    // 补充“等线”系列(Windows 内置无衬线中文字体)
    mapping[QString::fromLocal8Bit("等线")] = "Deng.ttf";
    mapping[QString::fromLocal8Bit("等线 细体")] = "Dengl.ttf";
    mapping[QString::fromLocal8Bit("等线 粗体")] = "Dengb.ttf";
    mapping[QString::fromLocal8Bit("等线 Light")] = "Dengl.ttf";

    // 补充“微软雅黑”变体
    mapping[QString::fromLocal8Bit("微软雅黑 Light")] = "Microsoft YaHei Light.ttf";
    mapping[QString::fromLocal8Bit("微软雅黑 Bold")] = "Microsoft YaHei Bold.ttf";
    mapping[QString::fromLocal8Bit("微软雅黑 UI")] = "Microsoft YaHei UI.ttf";

    // 补充“苹方”不同字重(若已安装)
    mapping[QString::fromLocal8Bit("苹方-极细体")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("苹方-细体")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("苹方-中等体")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("苹方-常规体")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("苹方-中粗体")] = "PingFang SC.ttf";
    mapping[QString::fromLocal8Bit("苹方-纤细体")] = "PingFang SC.ttf";

    // 补充其他汉仪字体(常见)
    mapping[QString::fromLocal8Bit("汉仪中宋简")] = "HYZhongSongJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪长仿宋")] = "HYZhangFangSongJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪细行楷")] = "HYXingKaiTiJ.ttf";
    mapping[QString::fromLocal8Bit("汉仪雪君体")] = "HXueJunTiJ.ttf";

    // 补充方正字体
    mapping[QString::fromLocal8Bit("方正静蕾体")] = "FZJingLei.ttf";
    mapping[QString::fromLocal8Bit("方正胖娃体")] = "FZPangWa.ttf";
    mapping[QString::fromLocal8Bit("方正北魏楷书")] = "FZBeiWeiKai.ttf";
    mapping[QString::fromLocal8Bit("方正剪纸")] = "FZJianZhi.ttf";

    return mapping;
}

// 使用示例
QString getEnglishFontName(const QString& chineseName) {
    static QMap<QString, QString> mapping = createFontMapping();
    return mapping.value(chineseName, chineseName); // 找不到则返回原名
}

调用:

#include <QFontComboBox>

    connect(ui.fontComboBox, &QFontComboBox::currentFontChanged, this, &CVRTextSymbolDialog::_slotFontChanged);


void _slotFontChanged(const QFont font)
{
    string strFont = getEnglishFontName(font.family()).toLocal8Bit() ;
}

这个的 strFont 就是英文映射的字体库名称,可以在程序其他地方调用