如你所见,我是一名设计爱好者,这是我用屁股想的说明文档,因此如果发现阅读起来狗屁不通,属于正常情况。
在前些年我看到了好多起因为各种版权产生了法律纠纷的事件。
比如视觉中国版权门事件。
再比如很多设计师甚至不知道微软雅黑字体居然不能用来商用。
近年来这类事件屡见不鲜。
在我之前,有“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会和字体存在时的值不同。
理论上来说,只要我的元素足够大,内容足够多,就可以判断出一个字体是否存在。
虽然我上面的代码是JavaScript,然而它其实是通过CSS中的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,让我可以复制粘贴。
感谢@只为设计,让我对设计有兴趣。
感谢@我的沙雕群友们,每天催我更新,更,更,更,不知道我是鸽子精么!