在前些年我看到了好多起因为各种版权产生了法律纠纷的事件。 比如视觉中国版权门事件。 再比如很多设计师甚至不知道微软雅黑字体居然不能用来商用。 近年来这类事件屡见不鲜。 在我之前,有“360查字体”这个网站,遗憾的是,它看起来已经不再维护了。 这令人有点儿伤心。 因此我在闲暇时间制作了这个网站,我希望他能帮我们简单的排查出字体方面的隐患,降低一些不必要的版权纠纷。 好吧,虽然我觉得一个好的设计师,肯定会知道哪些字体可以被用作商业设计。
原理在前端,你没法直接读取电脑上已经安装的字体列表,这是一个权限安全的问题。 因此需要借助一个取巧的方式,通过 CSS 来搞定它。 - function CheckFont(t) {
- if (t == "") { return "" };
- var f = "他们给我说这个东西越长就越精准我特别想试试ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsyuvwxyz1234567890";
- var s = document.createElement("span");
- s.style.fontSize = '72px';
- s.innerHTML = f;
- var b = document.getElementsByTagName("body")[0];
- b.appendChild(s);
- s.style.fontFamily = f;
- var w = s.offsetWidth;
- var h = s.offsetHeight;
- s.style.fontFamily = t + ',' + f;
- var r = ((s.offsetWidth != w) || (s.offsetHeight != h));
- b.removeChild(s);
- return r ? true : false;
- }
复制代码
如你所见,创建一个元素,假如当前电脑不存在这个字体,则它的offsetWidth和offsetHeight会和字体存在时的值不同。 理论上来说,只要我的元素足够大,内容足够多,就可以通过和默认字体的大小比对来判断出一个字体是否存在。 因此只要你理解了前端样式中的offsetWidth和offsetHeight,你就能很简单的读懂这段代码。 缺点一个很大的缺点,在于对人力的消耗上。 我必须知道字体的名字,然后再去找这个字体的出处,以便确认它到底能不能用来商用。 我低估了它的工作量,尽管我已经很努力的填充字体。 我太难了。 尽管我写了一些用来辅助我的软件。 万幸,我会的程序开发语言很多,虽然我没有任何精通的语言。 不过因此我会把一些小工具的源码也传到这个仓库里,因此你可能会看到各种语言所写。 不要慌,如果你想接手我这个项目,你只需要对以下知识略有了解就行。 开发语言 | 构件 | 是否必须 | 说明 | html5 | UI | 是 | 用户界面,提供字体版权鉴定、字体查询、字体下载、字体提交等功能。 | html5 | Layui | 否 | @贤心开发的前端脚手架,因为我是前端菜鸟,它能让我省下去写各种尺寸的客户端的兼容问题,感谢@贤心 | SQLite | SQL | 是 | 我选择了SQLlite,这样我就不用天天把MySQL开在后台来做开发了。当然如果你需要的话,可以使用MySQL或者其他数据库,在conf.php里配置一下第7行的数组即可。就目前而言,我开发的功能里,你应该不需要修改其它内容。对了,别忘了把表fonts.sqlite3的结构导入你的新数据库。 | php | API | 是 | 为了方便更新字体列表,我用php写了后端,包括字体上传等接口。 | php | xiunoPHP | 否 | 出于安全起见,我调用了老黄开发的xiunoPHP,他的另一个作品xiunoBBS也是基于此开发的,安全性非常高。当然安全这个问题,还是和开发者有关,我很菜,所以我不保证我写的代码没有被脱裤或者其他安全隐患。 | c# | 字体入库工具 | 否 | 按我的设想,用户从前端提交过来的字体,应该由我再确定一遍安全性和字体的准确性,而不会直接出现在字体列表。因此我在数据库里设置了一个verify字段,用来判断是否经过了审核。然而这个字段在我自己录入字体的时候很麻烦。另外,也因为我要确定字体的fontFamily,以便它能被正确识别为是否安装。所以我用C#写了这个小工具。 | 致谢感谢@梦浪的小虾米,他教了我三天php,让我能写这个程序。 感谢@Nt!M4XEUR$,他在Web安全方面给了我很多指导。 感谢@山顶的一棵草,教我写C#。 感谢@电脑发烧友,帮我调Bug。 感谢@贤心开发了LayUI,让前端菜鸟也能写前端了。 感谢@老黄开发了xiunoPHP和xiunoBBS,让我可以复制粘贴。 感谢@只为设计,让我对设计有兴趣。 感谢@我的沙雕群友们,每天催我更新,更,更,更,不知道我是鸽子精么!
项目演示地址:https://www.muruoxi.com/font/index.html
已知问题:我的测试环境是谷歌,发这个帖子的时候才发现,在火狐下貌似无法检测部分字体。 演示地址不提供下载服务(我服务器带宽不行,不敢提供)
|