[問題] 看起來像是同一個字,印到圖上卻不一樣

作者: art1 (人,原來不是人)   2020-10-07 06:12:36
一開始以為這問題是全字庫字體沒辦法正確顯示的問題,研究後發現是詭異無法解釋的
問題
平台是 google 的 colab,使用的字型是全字庫 TW-Kai-98_1.ttf
使用的繪圖函式庫是
from PIL import Image, ImageFont, ImageDraw
from IPython.display import Image as iii (使用這個是因為 plt 印出來的圖太小)
https://i.imgur.com/362DbO9.png
看起來都是同一個字「路」,圖片印出來是不一樣的結果
第一個路字 yyy 是我用 gcin 輸入法輸入的
第三個路字 ggg 則是把第一個路字複製貼上
第五個路字 eee 是從本機 VSCode 用 gcin 輸入法輸入後複製貼過來的
第二個路字 ttt 是從網路上找到複製下來貼上去的
第四個路字 sss 一樣是第二個路字複製貼上
第六個路字則是與第五個路字在同一個檔案中,但來源也是網路上複製貼上
使用 https://www.ifreesite.com/unicode-ascii-ansi.htm 這網站的編碼轉換工具
第一個路字 yyy 的編碼是 \u8def,第二個路字 ttt 的編碼是 \uf937
其實不只這個字出問題而已,想請教像這種長相一樣,編碼卻不一樣導致輸出有問題的
情況該怎麼解決?
作者: TuCH (謬客)   2020-10-07 08:07:00
來源網站?
作者: ddavid (謊言接線生)   2020-10-07 10:05:00
其實我想問的是你「為什麼」要解決,你想要解決「什麼」如果來源就是那樣,這表示他就是用那個字,你用不存在該字的字型來顯示有問題是合理的情況如果你想要全部轉換成同一個你認為能正確顯示的字,那就是要像簡繁體轉換一樣,建立一個字詞庫把所有可能發生此問題的字與要轉的目標字建表,全部取代處理基本上應該沒有任何取巧的方法
作者: alvinlin (林矜業)   2020-10-07 13:41:00
看起來是從某來源抓取的一些字然想用圖片顯示結果發現有些字可以顯示有些字不行所以想弄懂怎麼解決。建議用regx。在Unicode 裡每個國家的編碼是有特定區間的。請參考shorturl.at/ijnG0shorturl.at/ijnG0
作者: banyhong (=_=)   2020-10-07 17:22:00
這裡有列表 https://bit.ly/3dd7hYv
作者: art1 (人,原來不是人)   2020-10-07 17:45:00
感謝樓上提供的資訊
作者: ddavid (謊言接線生)   2020-10-07 17:53:00
真的有建好的表耶,那就好辦了
作者: art1 (人,原來不是人)   2020-10-07 22:08:00
有建好的表真的變輕鬆很多

Links booklink

Contact Us: admin [ a t ] ucptt.com