我正在开发一个字体检测库,该库必须非常小,适合内嵌在网站的每个页面上。我已经知道它很小了(压缩了417个字节)。您可以在the Github repo上签出。
经过进一步思考,如果我可以做出一些基本假设,则可以再次大幅减少库的大小(大约再减少10%):
没有space字符/定义,就不可能定义有效的字体文件(无论如何对于浏览器而言)。
或者,如果可以创建这样的space
省略字体,则当需要space
字符时,所有现代浏览器和IE9 +都会选择后备字体的space
字符。也就是说,就字体后备而言,space
字符没有其他特殊之处。
切线地,所有现代浏览器和IE9 +的浏览器提供的space
和serif
通用字体中的monospace
字符的宽度都将不同(可能,但我需要进一步测试)。
我只是尝试使用FontSquirrel's font generator显式定义没有space
字符的字体。这是通过从选定的子集中显式省略空格并禁用space
的“修复缺失字形”来完成的。 FontSquirrel仍生成具有space
字符的字体,其宽度不同于serif
和monospace
。
我了解某些语言在传统意义上没有space
字符,但是由于字体文件格式和定义的性质,我认为针对这种语言量身定制的字体不能或会省略space
字符。
如果这些假设全部成立,则库可以消除支持自定义文本检查的需要,并将测试次数从3个减少到2个,从而加快了库的速度并减少了其内存使用量。压缩后,新的大小约为380个字节或更少。
那么,字体专家呢?是否可以定义没有space
字符定义的有效字体?如果有这样的字体,您可以举个例子吗?
最佳答案
看起来,虽然有可能,但是创建没有空格字符的字体实际上是闻所未闻的。甚至图标字体服务似乎也包含它。除special case for a font detection library之外,没有已知的字体会省略空格字符。
这项研究使我的onfontready library得到了改善。详细信息here。感谢Mike 'Pomax' Kamermans的贡献。