{:7_509:}经常看到有人说我明明有某某字体为什么还找不到,今天就稍微扫盲下字体名称。
绝大多数的Windows的汉子字体有2个名字,一个是英语名,一个是汉子名。这里就拿明朝来说吧。在日语区域下,明朝显示的名字是MS 明朝而在非日语区域下,明朝显示的名字是MS Mincho。(同样知名的例子,宋体和SimSun)然后呢大多数调用字体的函数是根本不知道MS 明朝和MS Mincho是同一个东西。
接下来就写几个调用字体伪代码吧
call(MS 明朝);
这个代码会怎样呢,他直接暴力的调用明朝,而在找不到MS 明朝时候,程序会throw exception。对普通人来说就是——程序崩溃了!
if exist("MS 明朝") call ("MS 明朝");
这个程序稍微好点,先判断是否有MS 明朝,如果有就调用,没有就不调用。接下来如果程序有指定默认字体,那么皆大欢喜,如果没有。对不起,就是常见的打开看不到字体。
而完美的实现方法是什么呢?
首先指定默认字体,然后
if exist("MS 明朝") call ("MS 明朝")
else if exist("MS Mincho") call ("MS Mincho")
但是有个问题,日本人有不使用日区的吗?没有!所以就没有几个程序员会去写第二句了。
接下来有解决的方法吗?
找一个字体编辑软件,在中文区强制把字体名改成汉字名,不过这种做法有一定的风险,甚至可能导致系统崩溃。
所以最完美的方法就是转区。