Windows中的字体映射关系
从软件开发的角度,研究如何自定义Windows的系统字体。
在Windows程序开发中经常使用CreateFont创建指定的字体,其中一个参数"lpszFace"指定了字体名称。
那么系统是如何加载这个字体的?
首先会从注册表中查找:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
这里列出了系统中已经安装的字体信息,以及该字体对应的字体文件名(默认路径是C:\windows\fonts)。
如果找到了,则加载对应的字体到内存,用作文字输出。
如果没找到呢?
系统还会寻找:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
这里定义的是复用字体,如果系统中没有安装指定的字体,但是可以在这里添加一个表项,指向系统中已有的字体。
如果还是没有找到呢?
那么CreateFont函数可能会返回失败,文字输出可能会使用一个叫做“System, 16”的字体代替。
在研究注册表的时候,还有一个表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
这里定义的是字体链表,作用是当我加载的字体中没有要显示的文字的时候,就会从这里找到对应字体的备选字体文件。
从备选字体中加载要显示的文字。
------------------------
所以如果要安全地去掉“微软雅黑”字体的方法就是:
1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts中删除微软雅黑
2. 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes中设置微软雅黑的别名
3.重启电脑
4.删除C:\Windows\Fonts\msyh.ttf
Windows中的字体映射关系相关推荐
- java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系
1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...
- 解决 Windows 中缺少字体的问题
在 Windows 7 和 Windows 8 中,默认的英文字体是"Segoe UI",与之相对应的简体中文字体是"微软雅黑",这种从 Vista 开始在界面 ...
- java中的多对多关系解析_Java中多对多映射关系(转)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- java中的多对多关系解析_Java中多对多映射关系
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- 给Qt中添加新字体(windows中的字体)
1.首先将字体(我选择windows下的宋体兰亭黑简.ttf)copy至qt_arm下面的lib/fonts目录下 2.设置环境变量export QT_QWS_FONTDIR=/home/works/ ...
- R语言中调用windows中的字体方法
windowsFonts(A=windowsFont("华文彩云"),#这里使用的是字体的主题名称B=windowsFont("华文仿宋"),C=windows ...
- cad缺失字体补全工具_CAD图纸字体不全怎么办?只要修改字体映射表就可以轻松解决了...
原创:就说我在开发区 趣说CAD,让枯燥生动起来. 导读:字体映射表是CAD的配置文件之一,随程序启动加载,通过修改其内容,可以对缺少的字体进行替代,解决字体缺失的困扰.今天将从字体缺失现象入手,分析 ...
- java Map键的映射关系
Java键值映射是指使用Map集合,来保存Key-value的一堆组合,一个key对应一个value,可以比喻成一间房子对应着唯一的一把钥匙. Map提供的键值映射机制,可以很好的保存各种数据,完成扩 ...
- linux 添加微软字体,如何给Ubuntu添加Windows及Mac字体?
由于Ubuntu是一个免费的Linux系统,所以对于一些非常好的字体在系统中并不存在,为了让文字可以在Ubuntu上更好的呈现,可以将Windows中的字体或者是Mac 系统中的字体安装到ubuntu ...
- LCD不带显存,是如何内存映射屏幕。S5PV210SoC在内存中选一段内存存放颜色数据,通过配置将LCD控制器和这一段内存连接起来,构成映射关系,LCD控制器就自动从显存中读取像素数据传给LCD驱动器
一.LCD控制原理 S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口. 类型: STN ...
最新文章
- 冒险岛公益服发布网_溧阳单面布来款定制,儿童冲锋衣厂家-大圣服装批发定制网...
- textfield获取其中内容_天涯明月刀天下镖镖旗数量 天下镖内容介绍
- Vue 教程第一篇——基础概念
- mysql 什么时候用单列索引?什么使用用联合索引?
- PHP学习总结(8)——PHP入门篇之WAMPServer集成环境安装和配置
- C#正则提取字符串中的数字
- 基于Protostuff的通用序列化、反序列化功能实现
- 分布式技术(2)大型网站架构利器-CDN技术
- 知识点1--认识SSM框架并准备项目
- 《Renewable Energy》论文格式
- 阿里巴巴图标库字体iconfont旋转
- 机器学习----深刻理解高斯过程回归
- CCF_Java_201909-3_字符画
- 台式机标准计算机配置清单,台式机组装,教您组装电脑高配置清单
- nyoj 191 小柯的问题
- iphone 4 微信版本过低
- 判断输入数是奇数还是偶数
- python解方程代码_Python解方程的技巧介绍(代码示例)
- T 检验 (T test)
- C语言从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。
热门文章
- 微分方程计算机仿真国内外研究论文,微分方程数值解法毕业论文--开题报告.doc...
- 信捷XC系列PLC编程软件安装方法
- 【题目记录】——2021 年百度之星·程序设计大赛 - 初赛二
- 小米安卓java模拟器手机版_Android P(9.0) 行为变更完美适配WebView(小米手机也适用)...
- Webtrends网站运营分析解决方案简介
- mysql海量数据查询/处理
- 电力负荷预测数据集(2018.1-2020.12,间隔15min,10w多条,含温度、风速等天气因素特征)
- Velocity基本常用语法
- android模拟win98中文版,Win98模拟器
- LoadRunner11 下载 及 license注册