2021年3月29日 星期一

漢字使用環境的建置 —— 十五萬漢字粉墨登場

☆ 2022/06/10 更新支援至十八萬漢字,詳情請見 漢字使用環境的建置 ——十八萬漢字初稿登場
☆ 2021/12/28 更新支援至十七萬三千漢字,詳情請見 漢字使用環境的建置 ——十七萬漢字初稿登場
☆ 2021/07/09 更新支援至十五萬五千漢字,詳情請見 漢字使用環境的建置 —— 追加三千漢字

從去年底開始,我將注意力放在了一部目前已經出版的收字最多的字典——《漢字海》身上。前後花了三個多月的時間,終於將這部字典的字頭清理完畢。《漢字海》第一版 (全三冊),2014 年由香港大正出版公司出版,共收錄 102447 個漢字字頭,超越了《漢語大字典》的 60367、《中華字海》的 86987,成為目前為止收錄漢字最多的字典(《教育部異體字字典》收字 104302,但未實質出版,故不列入比較)。經清查該字典有 12 個字頭重出,而與既有的全宋體 12 萬字庫比對,約有七萬字已收,最後將 32373 個未收字補入字庫,成功將字庫的字量推升到 151917 字,一舉超過了十五萬字大關。

新增超過三萬個字符,憑我一人之力要一一造字根本不可能。我採用的方法是將掃描的字頭點陣圖片,利用開源的軟體 Potrace 批量轉成 SVG 向量圖檔,再利用開源軟體 FontForge 撰寫 Python script,批量將 SVG 圖檔整合為一個字型,縮放成一致大小並調整居中,讓它們排列整齊。這思路是仿效當年紫雪藍海兄處理漢語大字典字頭的做法,不過做法細節上經過了我的改良,與紫兄的做法不盡相同。雖然這些字符的顯示品質會略差,但這卻是目前為止可以快速地讓這些漢字為大家所用的唯一方法。

整個作業中最辛苦的部分就是與既有的 12 萬字庫比對,篩選出未收漢字。這部分雖然有部分自行撰寫的軟體輔助,但幾乎還是需要純人工。感謝 suns99 兄,獨力為數萬字頭一一編製倉頡碼,並剔除已收字。我雖然也同步利用批量部件檢索篩出數千組可能已收字,但若沒有 suns99 兄的火力支援,要完成這些比對的工作,還不知道要多久的時間。由衷地感謝 suns99 兄,每次都是我跳坑他沒有第二句話就跟著跳,得友如此,此生也算不枉了,呵呵!

部件檢索也同步更新,支援全部十五萬漢字的檢字。由於補充字大幅擴增,檢字的響應必然變得比較慢,我尚在研究利用   HTML5   的多線程功能來改善的可能性,現階段只能先請大家多包涵。為此,新增了一個「限標準字」開關,預設勾選,勾選時不比對補充字,讓不使用補充字的情境下可以加速響應速度。需要檢索補充字時,則請記得取消勾選。


此外新增了一個 Filter function,方便需要客製化篩選字符的使用者可以自行撰寫邏輯來過濾不想要的字符。

經過九個月時間的測試使用,我覺得「類聚鍵盤」有其顯著的優點,故今後不再提供「傳統鍵盤」的版本,只專心維護「類聚鍵盤」版本。

雖然這次新增的補充字多數顯示品質略差、拆分數據也還沒完全優化,但先推出來讓大家使用仍有其價值。我初步用這新的字庫去比對一些古籍、字書,發現能將不少以往無法以既有字符對應的漢字重新以新的字符對應,這意味著利用這次的新字庫便能讓這些漢字得以顯示、檢索,有利於相關的數位化、學術研究之用。

我常跟 suns99 兄開玩笑說,我們兩個年過半百的老頭兒,簡直就是現代版的愚公一號跟二號,整天與望不見盡頭的漢字整理任務拚搏。如果您剛好也想不開,想加入愚公的行列,歡迎跟我報名,呵呵!我最終的目標還是希望將《教育部異體字字典》的所有圖片字都清理出來、納進字庫。目前只清理出了 57250 字,進展緩慢。這陣子剛忙完《漢字海》這個大部頭,先喘口氣,收拾一些零碎工作,接下來就要全力對付《教育部異體字字典》了。

感謝文良兄,協助了 CNS 漢字拆分的初步優化。感謝 suns99  兄,不斷地協助字形的糾錯、訂正。感謝瑾昀老弟,提供了很多使用上的反饋。感謝很多直接或間接提供協助的朋友。

樂見學術研究、教育工作、個人閱讀這方面的運用,但請勿用做任何形式的商業營利行為。希望「全宋體」這個字庫以及「部件檢索」這個檢字工具,能在漢字文化的整理、研究上幫上一點小忙。


下載連結:全宋體.zip
下載連結:部件檢索(測試版).7z
下載連結:倉頡碼表.7z (由於每個人的習慣不同,僅保留漢字部分,請自行併入您慣用的碼表)


勘誤:

󰩴、󱮵 兩字重複,後者註銷。(2021/03/30)
画、󺣼 兩字重複,後者註銷。(2021/03/31)
󰔂、󱇫 兩字重複,後者註銷。(2021/04/06)
󴷃、󼴔 兩字重複,後者註銷。(2021/04/13)
󸮟、󻐇 兩字重複,後者註銷。(2021/04/17)
𬟅、󹆢 兩字重複,後者註銷。(2021/04/19)
󰏈、󱐍 兩字重複,後者註銷。(2021/05/09)
󲡛、󲡶 兩字重複,後者註銷。(2021/05/10)
𪼟、󸌴 兩字重複,後者註銷。(2021/05/10)




22 則留言:

  1. 居然还有配套仓颉码表,这工作也真是太细致了,感谢!!

    回覆刪除
  2. 除了感謝無法還是感謝!

    回覆刪除
  3. 謝謝你的付出!
    請問在技術上是否可以直接將全宋體製作成兩種字體,全宋體(等寬)和全宋體(調和),而不是分割成複數個ttf檔再用reg檔串接,因為串接的方式似乎不能應用在mac上,若是字體一開始就打包在一起,那似乎可以直接解決這個痛點。

    回覆刪除
    回覆
    1. 您好!正因為技術上無法達成,所以才必須拆成多個 ttf,呵呵!據我的了解,一個 ttf 的字型檔最多只能內含 65535 個字符,這是它的上限,無法超越。應該是當初制定字型標準時就是用一個 16 位元的整數來索引字符,因此除非有更新、更大容量的字形標準出現,否則這個問題無解。

      目前官方定義的漢字數目早已超過了 65535 個,若再加上西文字符、各式符號,要全部都塞入一個 ttf 是不可能的。這點從 Windows 作業系統內建的台灣細明體、大陸宋體都是拆成兩個 ttc,便可略窺端倪。

      建議您向蘋果官方詢問、反應這個問題,或許他們已經有解決方案只是我們不知道罷了。如果沒有,至少讓他們知道這個問題,期待有一天他們能提出解決方案。

      刪除
    2. 謝謝回覆,希望能找到解決方案。

      刪除
  4. 您好
    謝謝您的付出,有一個不情之請,因為沒有您的私人聯絡方式,所以在此處發言,如有不當請見諒,或是直接把我的發文刪除。
    因為個人缺乏製作技術,不知道您是否願意發心幫我製作.mdx檔案(佛學辭典),我已經有內容的.txt和.pdf檔案,不知道在剩下的步驟是否會花很多時間?
    若是願意,此外MDict官網有提供Windows (1.3 RC4)、Windows (2.0.12)兩種程式,目前我的環境只能運行Windows (1.3 RC4),我發現有一些字典無法在這個版本運行,請問是否可以編輯成Windows (1.3 RC4)可運行的版本?
    如果願意和我私人聯絡可以參考下面的email。
    ignorantly_speiled@aleeas.com
    謝謝!
    另外您對中文字典方面研究甚深,如果您願意,這部分也想和您交流請益。

    回覆刪除
    回覆
    1. 您好:

      承蒙您看得起,如果不是太複雜,製作的目的是利益大眾或是有助於學術研究,我是很樂意幫忙。不過 mdx 的製作可大可小,快的幾分鐘就可以搞定,慢的幾天、幾個月都有可能,端看資料內容是否規整、需不需要精細處理等等。

      您提到佛學辭典,這部份相對來說比較沒有版權問題,製作的人應該很多,除非很特殊的辭典,否則應該有不少現成的製作可以利用,對岸的論壇裡有位阿彌陀佛兄就製作了大量的佛學辭典,您不妨到 https://forum.freemdict.com/ 找找他的製作,看是否剛好有您需要的。

      如果仍然需要我的幫忙,請再次在此留言,我會與您聯繫,了解詳細的情形。

      刪除
  5. 謝謝您的回覆
    1. 辭典版權部分,我不是相關法律專業,但是基本上都是20年以上的辭典,並且原作者應該都已經往生,相信應當沒問題。
    2. 您的作品在質量上難以匹及,讓我在使用上受益良多。
    3. 因為這兩部辭典對我尤其重要,我希望內容務必無誤,我閱讀時常推敲每個文字的內涵,也常使用您製作的字典輔助。您說的現成來源,我猜應該是我目前看到的版本之一,光看成品部分,質量上我不確定如何。我無法將已經製作好的mdx和我手邊比較可靠的內容進行校對。再者,因為有一些不常見字,所以若能另製成以全宋體這類字體的版本會更好。另外,畢竟是對岸內容,擔心有簡體繁體轉換問題,對我而言這樣重要的內容使用軟體自帶的自動轉換還是不太放心。
    希望您能協助。

    回覆刪除
  6. 我目前協助開發的編輯器,可以指定顯示 字碼範圍和字型,想問一下 全宋體 各ttf所在的字碼區間為何?
    或是可以聊看看或看看這個編輯器

    回覆刪除
    回覆
    1. 您好!您開發的是什麼樣的編輯器呢?手機、平板上的APP?可以指定「顯示字碼範圍」這個我有點不理解,有什麼作用?

      全宋體各 ttf 所佔用的字碼區間如下:
      FSung-m or FSung-p:0x0000 - 0xFFFF
      FSung-1:0x10000 - 0x1FFFF
      FSung-2:0x20000 - 0x2FFFF
      FSung-3:0x30000 - 0x3FFFF
      FSung-F:0xF0000 - 0xFFFFF
      FSung-X:0x100000 - 0x10FFFF(即將推出)

      刪除
  7. 就是 He11/He12 (漢書),程式本身可以設定 顯示字碼範圍和對應字體,也可以顯示彩色 Emoji,這是 PC 用的文書處理

    回覆刪除
    回覆
    1. 原來是大名鼎鼎的「漢書」啊,呵呵!雖然我沒用過,但是在 DOS 時代我也是用 PE-II 過來的。在 Windows 的環境下,於漢書裏指定全宋體為顯示字型,應該也能正確使用吧!

      刪除
    2. 其實 Windows 對於一些字的抓取常常有問題,比如說 0x2F800 的 Unicode 文字,你設定細明體有時候會顯示不出來,所以我在漢書就用 自訂區間和字型對應(當然內部也有自動搜尋有哪些字),去對應進而顯示,所以目前 漢書,可以完整顯示所有 Unicode 文字,包含 彩色 Emoji

      刪除
    3. 編輯器我倒是沒遇過類似問題,通常指定了正確字型就可以顯示。有類似問題的反倒是瀏覽器,目前發現以 WebKit 為核心的瀏覽器對於兼容區的字似乎會不理會 css 指定的字型,而固定以系統的預設字形顯示,包含 Chrome、Edge 都是如此。IE、Firefox 則無此問題。

      刪除
  8. 目前對應後顯示效果不錯,顯示圖 https://mega.nz/file/CE9GDBpD#N0hdw84Zjr6c5wygWNxlkhsgW6XZ03bSX6uqmpeFPeU

    回覆刪除
    回覆
    1. 嗯,看起來很不錯。因應 Unicode 14.0,我增補了一些符號。另外就是針對《教育部異體字字典》的字頭做了清理,大約又增補了一萬八千多個漢字,目前漢字總數超過了十七萬,還在做最後整理,希望能儘快將成果發布出來讓大家使用。

      刪除
  9. 目前我幫修正的 漢書12 版本可以完整正確顯示所有字出來,如果你要使用看看,可以跟我 Line 聯絡一下,
    就是 .txt 文字檔案可以直接顯示(都可以放大縮小),不需要用到 .doc,然後,載入都是秒載入

    回覆刪除
    回覆
    1. 如果有機會的話倒是可以試用看看漢書,不過真是抱歉,我沒使用 Line,呵呵!平常的編輯需求裡,使用正則的機會很大,不知漢書有無提供正則表示式的功能?

      刪除
    2. 有的,包含搜尋置換,和色彩顯示等,都有提供正則,那如何聯絡,有 FB 或是 Skype ?

      刪除
    3. 感謝!我是個手機的低度使用者,所以這些社群軟體幾乎都沒使用,呵呵!Blogger 沒有悄悄話的功能,不過您可以留言後立刻刪除,我還是會收到完整留言的通知信,留個 e-mail 給我,我便可以私下跟您聯繫。

      刪除