DG EMOJIK / 中文 (繁體字, 中國香港特別行政區)

複合 emoji 與 ZWJ:如何由多個字元組成單一圖形?

一個可見的 emoji 可以由多個 Unicode 字元組成。ZWJ(零寬度連接符)位於某些 emoji 序列的元素之間,並實現組合顯示。如果接收系統不支援該序列,可能會顯示為獨立的圖形。

匈牙利語原文的完整機器翻譯。

堆疊在一起的拼圖碎片特寫。
插圖。 · congerdesign / Pixabay

因此,對程式而言,單一圖形可能比一個字母更長。這在複製、刪除和字元限制方面具有實際意義。讓我們透過三個具體範例來看看哪些元素必須保持在一起。

讓我們與技術人員一起看看

👩‍💻 序列由女性、連接符和筆記型電腦字元組成。ZWJ 的碼點是 U+200D;它本身不是可見的書寫符號。支援的序列可以由顯示器繪製成單一圖形。然而,在任意字元之間插入 ZWJ 並不會自動產生一個在所有地方都能運作的新 Emoji。來源:Unicode Emoji – Emoji ZWJ Sequences

可見範例 碼點順序 序列的組成部分
👩‍💻 U+1F469, U+200D, U+1F4BB 女性、連接符、筆記型電腦。
👨‍🍳 U+1F468, U+200D, U+1F373 男性、連接符、表示烹飪的字元。
👩🏽‍💻 U+1F469, U+1F3FD, U+200D, U+1F4BB 女性、膚色修飾符、連接符、筆記型電腦。

在第三行中,膚色修飾符位於女性字元之後。它執行與連接符不同的任務。例如,👋🏽 揮手手勢包含膚色,但沒有 ZWJ:僅選擇膚色並不會使符號成為 ZWJ 序列。國家旗幟的字母對也由多個元素組成,但遵循不同的連接規則。

「一個字元」意味著什麼?

閱讀時,你可能將程式儲存為多個碼點的內容感知為單一圖形。Unicode 的文字分割規則也處理這類由使用者感知為單一的群組。技術名稱是字素簇。來源:Unicode Text Segmentation

因此,在檢查輸入欄位的長度限制時,請提出三個不同的問題:有多少可見單位,它們由多少碼點組成,以及程式計算哪些單位?如果介面計算的內容與讀者預期不同,「最多十個字元」的標籤提供的資訊很少。

在空白筆記中嘗試:貼上 👩🏽‍💻 圖形,然後刪除它。它是一次性消失,還是留下了一個人、一台筆記型電腦或一個膚色符號?你可以從編輯器的行為中看出這一點。縮寫重要文字時,也請檢查保留的部分。

為什麼複製時可能會散開?

兩個檢查方向很有用。一個是顯示:相同的完整序列在另一個程式中是否也顯示為多個圖像?另一個是資料:在複製和儲存過程中,序列的元素是否保留?這兩種情況在外觀上可能相似,但需要不同的修正。

首先將完整符號複製到空白筆記中,然後再複製回來。接著嘗試一個簡單的微笑。如果只有複合圖形發生變化,請在錯誤報告中提供具體序列和兩個應用程式的名稱。螢幕截圖顯示外觀,而貼上的文字則允許檢查原始字元。

複製和縮寫時請保持完整

不要在圖形的不可見中間切斷文字。編輯時請選取整個 Emoji,並檢查縮寫後的版本。開發程式時,建議選擇處理使用者感知字元邊界的文字處理,然後使用具體的複合符號進行測試。

發布前的測試應簡單:將一個基本微笑、一個膚色手勢和一個 ZWJ 序列放入測試文字中。檢查儲存、重新載入和刪除。關於 顯示為方塊的 Emoji 和 SMS 字元限制 的指南詳細說明了兩個相關的除錯情境。

帶上重點

三題知識測驗

嘗試應用你讀到的內容。每題選擇一個答案;每個正確答案得一分。評估將針對這三種情況提供回饋,我們不會儲存或發送你的答案。

1. 一個表單將 👩‍💻 符號計算為三個碼點,而你看到一個圖形。哪個結論是合理的?
2. ZWJ 在展示的序列中扮演什麼角色?
3. 複製後圖形散開。哪個錯誤報告更有用?

解答與解釋
  1. 程式計算的單位與可見圖形的數量不同。 女性、ZWJ 和筆記型電腦這三個碼位共同構成一個可見的圖形。
  2. 在需要一起顯示的元素之間使用不可見的連接符。 連接符是序列的一部分,要顯示組合圖案還需要顯示支援。
  3. 可複製的序列、外觀以及受影響的應用程式名稱。 資料和顯示方式共同有助於確定 emoji 在哪裡發生了變化。

計算你的正確答案:每個得一分。跳過的答案得零分。

  • 3 分: 在三種情況下,你分別處理了圖形和儲存的序列;請在筆記中嘗試複製和刪除。
  • 2 分: 檢查哪個組件或除錯資料遺漏了。
  • 0–1 分: 從拆解技術層面開始:女性、ZWJ 和筆記型電腦。

還有一篇不錯的閱讀文章

全部 20 篇文章 · 尋找 Emoji