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中的字体映射关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue全家桶 之 KTV前台收银管理系统
- 下一篇: php 日期时间 取日期,从PHP中的文