查看: 16803|回复: 52
收起左侧

[讨论] 检查你的字体是否可以商用

  [复制链接]
慕若曦
发表于 2020-8-28 21:06:54 | 显示全部楼层 |阅读模式
在前些年我看到了好多起因为各种版权产生了法律纠纷的事件。
比如视觉中国版权门事件。
再比如很多设计师甚至不知道微软雅黑字体居然不能用来商用。
近年来这类事件屡见不鲜。
在我之前,有“360查字体”这个网站,遗憾的是,它看起来已经不再维护了。
这令人有点儿伤心。
因此我在闲暇时间制作了这个网站,我希望他能帮我们简单的排查出字体方面的隐患,降低一些不必要的版权纠纷。
好吧,虽然我觉得一个好的设计师,肯定会知道哪些字体可以被用作商业设计。
图1.jpg

原理
在前端,你没法直接读取电脑上已经安装的字体列表,这是一个权限安全的问题。
因此需要借助一个取巧的方式,通过 CSS 来搞定它。
  1. function CheckFont(t) {
  2.     if (t == "") { return "" };
  3.     var f = "他们给我说这个东西越长就越精准我特别想试试ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsyuvwxyz1234567890";
  4.     var s = document.createElement("span");
  5.     s.style.fontSize = '72px';
  6.     s.innerHTML = f;
  7.     var b = document.getElementsByTagName("body")[0];
  8.     b.appendChild(s);
  9.     s.style.fontFamily = f;
  10.     var w = s.offsetWidth;
  11.     var h = s.offsetHeight;
  12.     s.style.fontFamily = t + ',' + f;
  13.     var r = ((s.offsetWidth != w) || (s.offsetHeight != h));
  14.     b.removeChild(s);
  15.     return r ? true : false;
  16. }
复制代码

如你所见,创建一个元素,假如当前电脑不存在这个字体,则它的offsetWidth和offsetHeight会和字体存在时的值不同。
理论上来说,只要我的元素足够大,内容足够多,就可以通过和默认字体的大小比对来判断出一个字体是否存在。
因此只要你理解了前端样式中的offsetWidth和offsetHeight,你就能很简单的读懂这段代码。
缺点
一个很大的缺点,在于对人力的消耗上。
我必须知道字体的名字,然后再去找这个字体的出处,以便确认它到底能不能用来商用。
我低估了它的工作量,尽管我已经很努力的填充字体。
我太难了。
尽管我写了一些用来辅助我的软件。
图2.png
万幸,我会的程序开发语言很多,虽然我没有任何精通的语言。
不过因此我会把一些小工具的源码也传到这个仓库里,因此你可能会看到各种语言所写。
不要慌,如果你想接手我这个项目,你只需要对以下知识略有了解就行。
开发
语言
构件
是否必须
说明
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

已知问题:我的测试环境是谷歌,发这个帖子的时候才发现,在火狐下貌似无法检测部分字体
演示地址不提供下载服务(我服务器带宽不行,不敢提供)

评分

参与人数 11分享 +3 魅力 +1 人气 +23 收起 理由
myGXW + 1 版区有你更精彩: )
七游 + 2 感谢大佬
沅潇01 + 3 版区有你更精彩: )
sise风之魅影 + 1 真就全栈工程师啊
YorkWaugh + 2 版区有你更精彩: )

查看全部评分

chncwk
发表于 2020-9-13 22:20:21 | 显示全部楼层
本帖最后由 chncwk 于 2020-9-17 19:26 编辑
慕若曦 发表于 2020-9-13 20:21
这个说法太绝对了,比如方正的四款字体:方正黑体、方正书宋、方正仿宋、方正楷体。针对“商业发布”这种 ...

https://www.zhihu.com/question/314675078

在印刷、广告领域出现的中易宋体、中易黑体会被认为是应用传统字体,但在自行开发的软件中嵌入中易宋体、黑体则需要额外授权。
出于完全避免任何法律纠纷的考虑,依然不推荐一般人使用非自由版权的字体。

评分

参与人数 1人气 +3 收起 理由
慕若曦 + 3 感谢解答: )

查看全部评分

ghostByWolf
发表于 2020-9-5 12:49:18 | 显示全部楼层
顶一下
volodia
发表于 2020-9-7 09:06:24 | 显示全部楼层
好东西,检测下避免被告
jeep2700
发表于 2020-9-7 09:26:51 | 显示全部楼层
版权保护走极端呀,要不就是 一些小软件的开发者 该保的保不了,要不就是一些大公司 设套挖坑 流氓维权!
lchong649cn
发表于 2020-9-7 09:42:51 | 显示全部楼层
若曦好厉害,支持一下
hao1234566
发表于 2020-9-7 12:19:20 | 显示全部楼层
大佬厉害
Hermaros
发表于 2020-9-7 15:43:55 | 显示全部楼层
jeep2700 发表于 2020-9-7 09:26
版权保护走极端呀,要不就是 一些小软件的开发者 该保的保不了,要不就是一些大公司 设套挖坑 流氓维权!

你什么时候产生了封建制度是为了保护自耕农的错觉。
nmyh
发表于 2020-9-7 16:16:40 | 显示全部楼层
本帖最后由 nmyh 于 2020-9-7 16:22 编辑

不知道这个链接是不是有问题:http://fonts.safe.360.cn
fonts.safe.360.cn.jpg

“宋体”等字体显示需要授权才能商用,而用楼主的代码除了“微软雅黑”,其余几个中文字体都是可商用的。
冰晶淑女
发表于 2020-9-7 21:48:39 | 显示全部楼层
免费字体下载大全,可免费商用中文字体一览表 - 猫啃网
https://www.maoken.com/all-fonts
字由-设计师必备字体利器
https://www.hellofont.cn/
327025010
发表于 2020-9-7 23:18:52 | 显示全部楼层
这个可以有~
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-26 21:55 , Processed in 0.153046 second(s), 23 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表