全形字寬度判斷:碼位 ≥ 0x2E80 視為雙寬

終端機與等寬字型排版要決定一個字元佔幾格時,最常見的簡化做法是:碼位 ≥ 0x2E80 就當成雙寬(double-width)0x2E80 是 Unicode 裡 CJK(中日韓)相關區塊的起始位置之一,所以這條線大致等於「全形 vs 半形」的分界。

CJK 相關 Unicode 區塊

區塊範圍說明
CJK Radicals SupplementU+2E80 – U+2EFF部首補充
CJK Unified IdeographsU+4E00 – U+9FFF主要漢字區
CJK Compatibility IdeographsU+F900 – U+FAFF相容表意文字
CJK Unified Ideographs Ext AU+3400 – U+4DBF擴展 A 區
CJK Unified Ideographs Ext BU+20000 – U+2A6DF擴展 B 區

為什麼是簡化做法

許多 wcwidth 實作就是這樣判的:用一個門檻取代逐區塊查表。代價是邊界情況會判錯——這個門檻以上並非全部是雙寬(例如某些標點、注音符號、非 CJK 的區塊也落在其中),而 emoji、組合字、零寬字元則需要另外處理。要精準就得查 Unicode 的 East Asian Width 屬性(W / F 才是雙寬),但那需要一張表。

實務上會踩到的地方:終端機 UI 對齊、表格排版、字串截斷(按字元數截會讓中文行變兩倍寬)、以及計算輸出是否超過終端寬度。