使用qt读取系统字体库,并进行英文名称映射

news/2025/10/10 16:30:20/文章来源:https://www.cnblogs.com/lyggqm/p/19133337

映射函数:

// 创建中文字体到英文名称的映射表
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 就是英文映射的字体库名称,可以在程序其他地方调用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab配置aws的s3作为docker镜像的存储

编辑 /etc/gitlab/gitlab.rb 文件external_url http://192.168.60.118 registry_external_url http://192.168.60.118:5005 gitlab_rails[registry_enabled] = true gitlab_rails[registry_host] = "192.168.60.…

阿克曼函数

点击查看代码 #include <iostream> using namespace std; int ack(int x,int y) {if (x==0){return y + 1;}else if (x > 0 && y == 0){return ack(x - 1, 1);}else if (x > 0 && y > …

shell脚本监控ssl证书到期时间

一、需求 说明:(1)读取域名列表文件。(2)获取域名到期时间,进行告警后邮件提醒。 #!/bin/bash ## 第1步 配置文件 # 颜色定义 RED=\033[0;31m GREEN=\033[0;32m YELLOW=\033[1;33m BLUE=\033[0;34m PURPLE=\033…

AI如何通过卫星图像识别刺猬栖息地

剑桥大学研究人员利用卫星图像和机器学习技术,通过识别黑莓灌木丛来绘制刺猬潜在栖息地地图,为保护这种濒危物种提供创新解决方案。AI如何通过卫星图像识别刺猬栖息地 你不能从太空中直接发现刺猬,但通过寻找黑莓灌…

04-补充mybatis-plus的Service接口

04-补充mybatis-plus的Service接口$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");常用方法查询相关方法以前是我们自己实现的Service接口和方法先在mp给我们…

LeetCode热题100-75、跳跃游戏

LeetCode热题100-75、跳跃游戏给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回…

rust 模块和引用

rust的模块声明有两种方式: 1、mod.rs文件方式 在 2018 年后的版本中已逐渐被新的模块系统取代,Rust 官方文档中已删除对 mod.rs 的介绍,主要因为该功能在 Rust 1.30 版本后被新的模块命名约定替代。 目录结构为: …

moectf2025-reverse-wp

moectf2025-reverse-wp upx 壳是什么?upx是什么?upx可以用来干什么?用自己的upx脱壳 upx -d +文件地址然后就去ida里面编译但是找不到main函数 我们直接shift+F12查看字符串然后点进去鼠标移到这里 按X 然后定位到主…

国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?

国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?随着科技的飞速发展,智慧社区的概念逐渐深入人心。智慧社区旨在通过先进的信息技术手段,实现社区的智能化管理和服务,提升居民的生活质量和社区…

完整教程:【论文阅读】纯视觉语言动作(VLA)模型:全面综述

完整教程:【论文阅读】纯视觉语言动作(VLA)模型:全面综述2025-10-10 16:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

TypeScript Declaration Merging(声明合并)使用说明

最近在进行前端开发的时候,为了拓展引用,使用了TS声明合并的特性,完整的了解了一下该特性,特此记录成笔记。 声明合并指在TypeScript里面,编译器将两个或者多个独立的相同名称的声明合并到一起。合并后的定义同时…

第七章 手写数字识别V5

# 优化: # 新建Model类,将神经网络的结构定义、训练流程(前向/后向)和预测逻辑统一封装起来 # 何将权重更新的职责从网络层(Linear)中分离出来,交给优化器(SGD)来完成 # 使用动量梯度下降优化算法(MSGD) # …

关于根据距离列表排序sql

关于根据距离列表排序sql//第一种 根据经纬度排序 $map = "1=1 ";if ($loadCode && $unloadCode) {$map .= " AND load_city_id = $loadCode and unload_city_id = $unloadCode";}…

2025年高适配铝型材厂家推荐:深圳市方达铝业领衔,3家企业覆盖多场景

随着科技的进步与工业的发展,铝型材作为一种轻质、高强度且耐腐蚀的材料,广泛应用于 3C 数码、智能家居、工业设备等多个领域。然而,市场上铝型材厂家众多,产品质量与服务水平参差不齐,给消费者的选择带来了困扰。…

注册c模块到lua中使用

#define REGISTER_CUSTOM_LIBRARY(name, lua_c_fn) \ int lua_c_fn(lua_State*); \ luaL_requiref(L, name, lua_c_fn, 0); \ lua_pop(L, 1) /* remove lib */ //注册c模块void open_custom_libs(lua_State* …

S3Bucket安全评分与合规状态逻辑修复:全面提升云存储安全评估准确性 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

DNA权威书籍

《基因XII》- 本杰明卢因分子生物学“圣经”。 这是全球最经典、最权威的分子生物学教材,每隔几年就会更新一版。内容极其全面、系统,从DNA结构、复制、转录、翻译到基因调控、基因组学、新技术都有详尽的阐述。插图…

220V转5V500mA非隔离电源芯片WT5105

220V转5V500mA非隔离电源芯片WT5105 WT5105 是一款集成非隔离式电源控制器,可将 220V 电压转换为 5V、500mA 的稳定输出,为低功率设备提供稳定、高效的供电解决方案。以下是其相关介绍:核心参数:输出电压为 5V,输…

linux基础-find查找

linux基础-find查找 1.认识 实时查找工具,通过便利指定路径完成文件的查找工作特点:(1)精确查找(2)实时查找(3)查找速度慢(4)可能之搜索用户具备读取和执行权限的目录语法 :   find [OPTION]... [查找路径…

220V转12V电机水泵供电驱动WT5105

220V转12V电机水泵供电驱动WT5105 WT5105是一款AC-DC开关电源驱动芯片,适用于220V转12V的电机水泵应用。以下是详细介绍:基本参数输入电压:85V~265V AC(覆盖220V市电)输出电压:可调,支持12V输出输出功率:5V-15…