在 Winform 程序开发中,要求统一整个UI的字体,否则这个地方是“宋体”,那个地方是“楷体”,感觉很杂乱。
还有一个原因是,当在不同语言环境下,字体名称也会有所不同,就用“mingliu.ttc”作例子,在“中文(PRC)”下为“MingLiU、PMingLiU”;在“中文(香港特别行政区)”下为“細明體、新細明體”。
如果你在“中文(PRC)”下将字体设置为“PMingLiU”,那在“中文(香港特别行政区)”下,则会因为找不到该字体,继而启用系统默认字体,这是很糟糕的事情,因为这种情况下,你程序中 Label 的文本可能会显示不完全或变长覆盖了后面的控件。
同时,考虑到客户端系统中,可能无开发中使用的字体,以及分发安装时的便携性,我采用了附带字体文件,并使用 PrivateFontCollection 类读取字体文件。
一开始我使用 PrivateFontCollection 读取字体文件,然后用 FontFamily 数组的 Index 确定使用哪一个字体,但是在使用中发现了问题:
“中文(PRC)”使用 PrivateFontCollection 读取它后,FontFamily 数组为:
0: MingLiU
1: PMingLiU
“中文(香港特别行政区)”使用 PrivateFontCollection 读取它后,FontFami