从软件开发的角度,研究如何自定义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中的字体映射关系相关推荐

  1. java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系

    1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...

  2. 解决 Windows 中缺少字体的问题

    在 Windows 7 和 Windows 8 中,默认的英文字体是"Segoe UI",与之相对应的简体中文字体是"微软雅黑",这种从 Vista 开始在界面 ...

  3. java中的多对多关系解析_Java中多对多映射关系(转)

    多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...

  4. java中的多对多关系解析_Java中多对多映射关系

    多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...

  5. 给Qt中添加新字体(windows中的字体)

    1.首先将字体(我选择windows下的宋体兰亭黑简.ttf)copy至qt_arm下面的lib/fonts目录下 2.设置环境变量export QT_QWS_FONTDIR=/home/works/ ...

  6. R语言中调用windows中的字体方法

    windowsFonts(A=windowsFont("华文彩云"),#这里使用的是字体的主题名称B=windowsFont("华文仿宋"),C=windows ...

  7. cad缺失字体补全工具_CAD图纸字体不全怎么办?只要修改字体映射表就可以轻松解决了...

    原创:就说我在开发区 趣说CAD,让枯燥生动起来. 导读:字体映射表是CAD的配置文件之一,随程序启动加载,通过修改其内容,可以对缺少的字体进行替代,解决字体缺失的困扰.今天将从字体缺失现象入手,分析 ...

  8. java Map键的映射关系

    Java键值映射是指使用Map集合,来保存Key-value的一堆组合,一个key对应一个value,可以比喻成一间房子对应着唯一的一把钥匙. Map提供的键值映射机制,可以很好的保存各种数据,完成扩 ...

  9. linux 添加微软字体,如何给Ubuntu添加Windows及Mac字体?

    由于Ubuntu是一个免费的Linux系统,所以对于一些非常好的字体在系统中并不存在,为了让文字可以在Ubuntu上更好的呈现,可以将Windows中的字体或者是Mac 系统中的字体安装到ubuntu ...

  10. LCD不带显存,是如何内存映射屏幕。S5PV210SoC在内存中选一段内存存放颜色数据,通过配置将LCD控制器和这一段内存连接起来,构成映射关系,LCD控制器就自动从显存中读取像素数据传给LCD驱动器

    一.LCD控制原理 S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口. 类型: STN ...

最新文章

  1. 冒险岛公益服发布网_溧阳单面布来款定制,儿童冲锋衣厂家-大圣服装批发定制网...
  2. textfield获取其中内容_天涯明月刀天下镖镖旗数量 天下镖内容介绍
  3. Vue 教程第一篇——基础概念
  4. mysql 什么时候用单列索引?什么使用用联合索引?
  5. PHP学习总结(8)——PHP入门篇之WAMPServer集成环境安装和配置
  6. C#正则提取字符串中的数字
  7. 基于Protostuff的通用序列化、反序列化功能实现
  8. 分布式技术(2)大型网站架构利器-CDN技术
  9. 知识点1--认识SSM框架并准备项目
  10. 《Renewable Energy》论文格式
  11. 阿里巴巴图标库字体iconfont旋转
  12. 机器学习----深刻理解高斯过程回归
  13. CCF_Java_201909-3_字符画
  14. 台式机标准计算机配置清单,台式机组装,教您组装电脑高配置清单
  15. nyoj 191 小柯的问题
  16. iphone 4 微信版本过低
  17. 判断输入数是奇数还是偶数
  18. python解方程代码_Python解方程的技巧介绍(代码示例)
  19. T 检验 (T test)
  20. C语言从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。

热门文章

  1. 微分方程计算机仿真国内外研究论文,微分方程数值解法毕业论文--开题报告.doc...
  2. 信捷XC系列PLC编程软件安装方法
  3. 【题目记录】——2021 年百度之星·程序设计大赛 - 初赛二
  4. 小米安卓java模拟器手机版_Android P(9.0) 行为变更完美适配WebView(小米手机也适用)...
  5. Webtrends网站运营分析解决方案简介
  6. mysql海量数据查询/处理
  7. 电力负荷预测数据集(2018.1-2020.12,间隔15min,10w多条,含温度、风速等天气因素特征)
  8. Velocity基本常用语法
  9. android模拟win98中文版,Win98模拟器
  10. LoadRunner11 下载 及 license注册