当前位置

更新和添加Unicode 14.0及Emoji 14.0内容

James Qi 在 2021年9月17日 - 17:10 提交

去年上半年我们进行了Emoji 13.0内容的更新和添加,而下半年更新和添加Emoji 13.1版本内容,我们往往都拖后了一段时间,几个月后才进行补充和更新,而这次Unicode 14.0和Emoji 14.0的发布时间是在推出前我们就了解到的,并提前做了准备工作,在正式发布的前一天我们就基本上都做到位了。✌️

下面记录一下我们做的一些工作:

一、Unicode v14.0/Emoji v14.0数据来源

主要数据来源无疑就是Unicode官方网站:

我主要处理的是5个数据文件,编写5个PHP程序来分别处理:

  • 14.0.emoji-test.txt.php(处理emoji-test.txt,添加新Emoji,设置qualified_status,程序后面添加循环检查table_all中内容,删除不符合这个文件的属性数据)
  • 14.0.emoji-zwj-sequences.txt.php(处理emoji-zwj-sequences.txt,处理5个分类下的零宽连接符序列,程序最后部分也加入循环对比table_all中内容的程序)
  • 14.0.emoji-sequences.txt.php(处理emoji-sequences.txt,设置type_field,程序最后添加循环table_all中所有符号,检查 type_field 是否相同,不同的进行修改)
  • 14.0.emoji-data.txt.php(处理emoji-data.txt,核对Property的6种属性)
  • 14.0.emoji-variation-sequences.txt.php(处理emoji-variation-sequences.txt,处理text style、emoji style)

二、CLDR通用语言仓库翻译导入

这5个文件处理后就新增了一百多个v14.0的Emoji,但只有英文名称,下一步就是添加翻译:

  • 下载cldr common v40.0(目前还没有正式推出,可以去github上下载最新的开发版本),解压上传annotations和annotationsDerived下的各种语言xml文件到服务器
  • 修改annotations-import.php 来读取 cldr-common-40.0/annotations中的文件,对比short name和keywords,导入翻译内容
  • 修改annotations-derived-import.php 来读取 cldr-common-40.0/annotationsDerived中的文件,对比short name和keywords,导入翻译内容
  • 新建fill-more-emoji.php,批量补充更多缺少short name和keywords翻译的emoji(带有FE0F的Emoji没有short_name就尝试用不带FE0F的Emoji的short_name来补充、带有FE0F的Emoji没有keywords就尝试用不带FE0F的Emoji的keywords来补充)
  • 其它杂项:人工检查缺少short name和keywords的Emoji、补充emoji_all表有而各语言表缺少一个emoji、keywords有超过256个字符的情况修改字段长度等

三、其它检查和处理:

  • 编写check_emoji_all_update.php,检查emoji_all表中内容,符合设定条件的进行更新操作,用上述程序检查emoji version,主要是qualified_status不是fully-qualified和component的emoji_version设置为空,解决大部分问题,少部分问题逐个版本核对、人工修改,最后完全正确
  • 修改上述程序,用于unicode version的核对,但发现无法核对匹配,因为有些非emoji字符只在我们网站(例如:多米诺骨牌、扑克牌、麻将、中国象棋、国际象棋等),有些非emoji字符只在其它emoji网站(例如:White Circle with Dot Right、Cross Pommee等),而且其它emoji网站的unicode version列表页面中的emoji有些是带有fe0f的,最后放弃核对,只纠正、补充了少量明显问题
  • 上传emoji v14.0下载的html文件到emoji/14.0/web/下,准备用程序来进行后续处理
  • 重新排序,编写14.0.emoji-list-html-to-list-number.php,读取list.html,更新list_number,模拟可以运行了,但未实际执行,因为虽然数量上一个版本v13.0是1814,新一个版本v14.0是1853,相差不大,但包含的emoji至少有几十个差异,顺序、分类也都变了,怕影响首页及各分类显示,准备15.0出来(14.0得到全面支持)的时候再更新到14.0
  • 重新分类,也是因为与13.0相差好几十个,怕影响首页及各分类显示,准备15.0出来的时候再更新到14.0

四、图片获取补充

  • 运行 get-files-from-urls.php,下载html页面保存到文件
  • 运行 get-images-from-files.php,获取各个平台各个版本的emoji图片,需要时间很长,持续很多个小时运行,如果有错误、失败的,重新运行几次,直到错误、失败数量减到最小
  • 整理对比下载的各个平台目录,下属各种尺寸,再下属各个版本,找出n个平台有更新,复制到对应的网站图片显示目录中就可以,2021-9-13新增copy-images-to-web.php程序,专用于更新图片的复制、覆盖、统计等工作

五、结果

112个Emoji v14.0的Emoji列表:https://www.emojiall.com/zh-hans/emoji-version/14.0,点击其中某个链接进入查看某个Emoji详情。

另外,这次14.0更新的时候,同事们也一起行动起来,编辑了几十个新Emoji的描述、举例、别名、相关Emoji等信息,进行了几十种语言的全部翻译工作。👍

六、后续

后续还有一部分工作需要去做:

  • 各个新Emoji的提案进行了人工核对、更新;
  • 从Unicode提案中截取了新Emoji的图片,加到我们网站中的Sample平台页
  • 分类、子分类按照最新进行调整;
  • 顺序号重新采集、修改,菜单重新排列;
  • CLDR 40正式版10月26日出了以后再次更新CLDR数据。

从2019年初我们开始做EmojiAll这个项目开始,经历了Emoji v12.0、12.1、13.0、13.1、14.0这几个版本,我们对Unicode标准的理解也很清晰了,更新做起来也很顺利,目前国内几个Emoji站基本都是学着我们做起来的,要跟上我们的更新步伐也是不容易的事情,国际上能迅速更上Unicode标准进行更新的网站也是很少数的。

几大操作系统(Google的Android、Microsoft的Windows、Apple的iOS和MacOS)和几大社交媒体平台和手机厂商(Twitter、Facebook、Samsung、LG等)对14.0新Emoji的图片支持也都是需要经过几个月到一年的时间。期待中......

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。