您在這裡

更新和添加Emoji 13.1内容

James Qi 在 2020年11月23日 - 18:34 發表

今年上半年疫情在家辦公期間發現Emoji有了更新,于是進行了Emoji 13.0内容的更新和添加,而下半年9月份就有了Emoji 13.1版本推出,我們拖後了一段時間,11月份才進行補充和更新,現在把一些數據來源及更新工作進行記錄,以便以後再有新版本出的時候能更順利地進行補充和更新。

一、Emoji v13.1數據來源

主要數據來源無疑就是Unicode官方網站:

我主要處理的是3個數據文件,編寫3個PHP程序來分别處理:

  • 13.1.emoji-test.txt.php(處理emoji-test.txt,添加新Emoji,設置qualified_status,程序後面添加循環檢查table_all中内容,删除不符合這個文件的屬性數據)
  • 13.1.emoji-zwj-sequences.txt.php(處理emoji-zwj-sequences.txt,處理5個分類下的零寬連接符序列,程序最後部分也加入循環對比table_all中内容的程序)
  • 13.1.emoji-sequences.txt.php(處理emoji-sequences.txt,設置type_field,程序最後添加循環table_all中所有符号,檢查 type_field 是否相同,不同的進行修改)

二、CLDR通用語言倉庫翻譯導入

這3個文件處理後就新增了幾百個v13.1的Emoji,但隻有英文名稱,下一步就是添加翻譯:

  • 下載cldr common v38.0,解壓上傳annotations和annotationsDerived下的各種語言xml文件到服務器
  • 修改annotations-import.php 來讀取 cldr-common-38.0/annotations中的文件,對比short name和keywords,導入翻譯内容
  • 修改annotations-derived-import.php 來讀取 cldr-common-38.0/annotationsDerived中的文件,對比short name和keywords,導入翻譯内容
  • 新建fill-more-emoji.php,整合以前的temp.php, temp2.php, temp3.php, temp4.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 v13.1下載的html文件到emoji/13.1/web/下,準備用程序來進行後續處理
  • 重新排序,編寫13.1.emoji-list-html-to-list-number.php,讀取list.html,更新list_number,模拟可以運行了,但未實際執行,因為雖然數量上一個版本是1814,一個版本是1816,相差不大,但包含的emoji至少有幾十個差異,順序、分類也都變了,怕影響首頁及各分類顯示,準備14.0出來(13.1得到全面支持)的時候再更新到13.1
  • 重新分類,也是因為與13.0相差好幾十個,怕影響首頁及各分類顯示,準備14.0出來(13.1得到全面支持)的時候再更新到13.1

四、圖片獲取補充

  • 運行 get-files-from-urls.php,下載html頁面保存到文件
  • 運行 get-images-from-files.php,獲取各個平台各個版本的emoji圖片,需要時間很長,持續很多個小時運行,如果有錯誤、失敗的,重新運行幾次,直到錯誤、失敗數量減到最小
  • 整理對比下載的各個平台目錄,下屬各種尺寸,再下屬各個版本,找出n個平台有更新,複制到對應的網站圖片顯示目錄中就可以,Linux下用\cp這樣的命令複制(遇到同名的自動覆蓋),以後可以考慮也編寫一個php程序來進行複制和統計(2021-9-13補充,新增copy-images-to-web.php程序,專用于更新圖片的複制、覆蓋、統計等工作)

五、結果

217個Emoji v13.1的Emoji列表:https://www.emojiall.com/zh-hans/emoji-version/13.1,點擊其中某個鍊接進入查看某個Emoji詳情。

 

自由标簽:

回應

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。