如前面博文所述,其实JDK是能够认识TTC字体文件的。问题在哪里?吾以为有三个:
没有预先读取文件中的所有字体名。
没有这个东西,外部字体名传递进来,也是傻眼。
接上,新建字体时,传递的字体索引是0,没有传递字体名。
接口参数问题。
前面两个问题解决了,这个就容易了。
开始吾想自己解释字体文件。于是找了FontForge,结果编译没有通过……回头一想,JDK已经支持TTC,吾何不在此基础上处理?
增加一个TrueTypeFont构造器,获取所有字体名。
增加一个TrueTypeFont构造器,把字体索引换成字体名。
内部构造器中增加字体名参数。
如果字体名有效,则忽略字体索引。
构造器中,先把字体名全部读取出来。然后再从字体名中找到索引,重新初始化。这个办法是比较笨的,以后考虑优化一下处理。
听着是不是很简单?做起来好像也不难,因为咱有泰山JDK啊。