日本新年號的資訊系統問題:合字

日本因天皇讓位,將自 2019 年 5 月 1 日起採用新的年號,稱為「改元」。同年 4 月 1 日頒布了新的年號為「令和」。日常生活中使用和曆(日本年號紀元)而非西元的地方非常多,因此日本經濟產業省發表了一系列的「改元所伴隨的企業資訊系統修正之對策」,例如紙本表單若是來不及修改,則可以用橡皮章修正;政府機關也容許「平成 33 年」這種未來的年份存在無法修正的文件上,如駕照期限。

但與 1989 年昭和改平成不同的是,21 世紀的生活大量依賴電腦資訊系統,尤其是商業活動、政府和銀行,因此作業系統和應用軟體將不得不支援新的年號,堪稱「日本的 Y2K 問題」。在經產省的網頁上,可以找到一份日本微軟的技術說明會簡報 (PDF),裡面提及了不少他們將如何支援新年號的問題,使用者可能會遇到的問題,以及哪些舊軟體將不支援新的年號。例如,Excel 自動填滿日期的時候應該要在 2019/5/1 換新的年號、官方採用「元年」而非「1 年」。某些本地化模組也將支援西元和和曆的自動轉換。

其中我比較關注的是合字的文字編碼問題,在這裏特別拿出來講一下。

年號的合字

日本的年號其實是有合字 (ligature) 的。什麼叫做合字呢?基本上就是多個字合起來變成一個字。在活字印刷時代,會把常用的組合鑄成一個活字,例如 fi 有一個 fi 的合字。Unicode 裡面也收錄了不少人類文明史上的合字,包括日本明治以來的年號合字:

明治、大正、昭和、平成四個日本年號的合字在 Unicode 的碼位。圖為 macOS 內建的 Character Viewer。

因應新年號實施,Unicode 當然也要給這個合字一個碼位。不過「㍻」前面的 U+337A 已經被指定了,「㍾」後面的 U+337F 也被指定了(㍿),只能選一個別的區段,最後 Unicode 決定保留 U+32FF 給新年號的合字用,但是無法立刻發布新版本。因為 Unicode 編纂合字時,會一併紀錄合字拆開來是哪些字,這稱為正規化 (Normalization)。例如「㍻」的拆解就是<square> 5E73 6210 [ ‌平 ‌成 ] 。他們的計畫是在年號公布之後儘快發佈 Unicode 新版本

此外字型也需要支援這個字符。在上述的微軟技術簡報中指出,Windows 內建字型,包括從別的廠商買來的授權,將近 30 套字型需要支援這個合字。並且還有直排橫排要支援。而 Adobe 動作也很快,在新年號公布之後,已經開始更新 Adobe Fonts 的字型了。

在作業系統內有安裝新版字型的情況下,應該可以看到如下的合字:

或是參考這個示意圖:

「令和」合字模擬示意圖。用繪圖軟體縮放的兩個字,筆畫不成比例請見諒。

年號合字的來源

這些合字是怎麼來的呢?為了寫這篇文章我上網搜尋了一下。細節可以參考這篇 Shift_JIS 編碼名稱的故事Adobe 官方的日本年號合字簡史

1982 年,日本微軟和當時的一些系統廠商制定了 Shift_JIS 碼表來在 16 位元 OS 裡表示日文(關於制定的歷史可以看一下維基百科)。在 MS-DOS 裡面稱為 CP932。微軟開放了其他 OEM 廠可以任意擴張字元,於是 NEC 和 IBM 就各自加入了自己的字符。年號的合字就是 NEC 加進去的。

1993 年 Windows 3.1 問世時,微軟禁止其他廠商任意擴張字元,並把 NEC 和 IBM 自己加入的字符都統一了。這個新的碼表叫做 Windows-31J,在 MS-DOS 系統內部依然是 CP932,直到今天。

有趣的是,上述的微軟技術簡報中明確指出,Shift_JIS 將不支援新年號「令和」的合字。也就是說,如果文件是採用 Shift_JIS 編碼,又剛好用了「㍻」等合字,那麼新年號是鐵定無法支援的,除非貼圖(像前文的示意圖)、自行造字,或是放棄合字,改用兩個漢字。

關於更換年號的時程

根據現行日本國憲法,天皇無權干政,而頒布年號是政府的職權而非天皇本人,並僅限於皇位繼承。(承襲自明治時代所規定的一世一元制度,以前日本也像中原傳統一樣,會因天災人禍甚至君主心情而改年號)。

跟以往因天皇駕崩而在當日改元有所不同,這次政府希望盡量降低社會成本,而打算提早公布。不過政府內的保守派基於避免兩個權威的原則,希望可以當日公布並實施。最後協調的結果是登基一個月前的 4/1 公布新的年號。

政府は当初、改元の準備期間を長くとるため今夏ごろの公表を検討。しかし、新元号の発表によって天皇陛下と新たに即位する皇太子さまという「二重権威」が生じるとの懸念が強まり、公表時期をできるだけ即位日に近づける方向となった。

——日新聞》 2018年5月17日 大久保貴裕

至於為什麼是 4/1 呢?據說是微軟向政府要求的。原本政府想要在 4/10,天皇在位 30 年紀念活動隔日,即 4/11,公布新的年號,但 Windows 有固定的更新時程,是每個月的第二個星期三。2019 年 4 月是 4/10。如果不在那之前發布更新檔(註冊表),就只能等到 5/8 了。

同(マイクロソフト)社は毎月1回、第2水曜日に全世界統一でソフトの更新を行うが、4月は10日、5月は8日となる。政府は当初、4月10日に開かれる天皇陛下ご在位30年の「お祝いと感謝の集い」の翌11日に新元号の公表を検討していたが、11日ではソフト更新に向けた改修作業が次の5月8日まで行うことができず、同月1日の改元には間に合わない。

——《産経新聞》2019年1月4日 小川真由美

如果屬實的話,微軟果然是世界的巨頭啊,連日本年號的發布日期都受他們的影響😂

但話說回來這次平成的天皇明仁生前退位,也是在 2016 年他老人家發表了「關於象徵天皇之務的想法」的演講,說他身體撐不下去了,但是依法他無法干政,也無法自行宣布退位,懇請各位國民體諒。言下之意就是拜託政府立個法讓我讓位吧。他也許也預想到自己若自然辭世,必然會重演 1989 年當時社會無法因應新年號的問題。這次可以平順地過度到新的年號,我認為是他給日本社會最大的禮物之一。

年號與西元的轉換

日本作為世界上少數採用自有年號的國家,外界可能不太清楚年號是怎麼在日常生活使用的。事實上日本的年號是以日為單位的

例如昭和換平成的時候是 1989/1/7 駕崩,1/8 起採用新的年號。也因此在正式的文書裡面,記載和曆生日是需要看日期的。1989/1/7 以前出生的人是昭和 64 年,1/8 以後出生的則是平成元年。這也反映到了網上金融系統,如線上申請信用卡的網站,會同時有昭和 64 年和平成元年的選項。

而年度的區分則還是照陽曆年末年初的規則,所以令和元年是從 2019/5/1 到 12/31,到 2020/1/1 就是令和 2 年了。

前大日本帝國最後一次更改年號是 1926/12/25 大正改昭和,而 1926/12/25 既是大正 15 年也是昭和元年。該從幾點幾分切開我沒找到,但大概也不重要了吧。真要探究的話,當初日本帝國還有兩個時區(台灣屬於 GMT+8 西部標準時),那麼當地幾點幾分開始算昭和呢?也是個會讓人想破頭的問題吧。