問題
我們有個系統,字型套用使用者自造字(EUDC)後,
當遇到地政系統轉過來的罕見字後,那個字就會看不見的問題,如下,
如果不套用 EUDC 就會有一個白色方塊出現,如下,
解決
為什麼套上 EUDC 字型後,地政系統的罕用字會看不見呢?
我們可以將地政系統的罕用字貼到 Word 中,
選取它,再按下Alt + X
,就可以發現它的內碼為 F6BC
透過 fontforge 開啟 自造字型(RM.TTE
) 及 微軟正黑體(msjh.ttc
) 來比較一下,
可以發現,
自造字型(RM.TTE
) 的 F6BC 是一個空白的內容,
微軟正黑體(msjh.ttc
) 的 F6BC 是 X 的內容。
也就是說,自造字型(RM.TTE
) 是有使用 F6BC ,但沒有任何的內容。
微軟正黑體(msjh.ttc
)則完全沒有使用到 F6BC 這個位子。
所以,如果想要套用 自造字型(RM.TTE
) ,並想要讓那些 地政系統的罕用字 也要有一個白色的方塊,
則需要讓 自造字型(RM.TTE
) 不要使用到那個位子,
但那個卻不是我們可以控制的,
所以只好從 FontForge-Scripting 來想辬法。
先來復習一下,
要在網頁上顯示使用者自造字(EUDC),
可以透過fontforge 來將 TTE 產生出 TTF 及 WOFF 字型檔讓網頁使用。
例如,我的自造字檔名為 RM.TTE
,有安裝 fontforge ,
就可以透過以下的 Script 存成 tte2woff.pe
,執行 fontforge -script tte2woff.pe
就可以產出 WOFF 及 TTF 字型檔,
1 | #Open EUDC TTE |
1 | fontforge -script tte2woff.pe |
- 註: 如果執行發生錯誤,請確定產出的目錄是否沒權限
1 | <html> |
這樣那些 使用者自造字(EUDC) 就可以在網頁上顯示,
但地政系統的罕用字卻會看不見。
所以上述的 Script 要加上判斷,
如果有佔到字的位子,但卻沒有字(判斷GlyphInfo("LBearing")==0
),就將它清除掉,如下,
1 | #Open EUDC TTE |
再執行一次 fontforge -script tte2woff.pe
產出 WOFF 及 TTF 字型檔
執行網頁後,可以發現那些套用 EUDC 字型的 地政系統的罕用字 會顯示一個白色方塊,
而不會像之前那樣,完全看不見。
透過 fontforge 來開啟 RM.WOFF
,
也可以發現 F6BC 等沒有建立字的位子,都是 X 了哦~
參考資料
地政罕用字查詢系統
為 SQL Server Reporting Services (SSRS) Preview 報表加上自造字(EUDC Font) Support
Windows 透過「造字程式」來造字
EUDC 字元集和字型
FontForge-Scripting functions