遇到有罕用字(外字)無法列印的問題,
原因是該(.ttf)字體沒有這個字的緣故,
在這邊做個筆記,
若是外字不多的情況,可以使用該方法應急。
P.S.在以下的內容中將以(外字 = 罕用字)說明之。
一、首先文章會出現的工具如下:
JasperReport:Java產生報表的lib。
iReport:設計報表樣式的工具。
fontforge:字體(.ttf)整合(merge)工具。(教學可參考:http://blog.twtnn.com/2015/01/svg12.html
二、問題描述:
- iReport須設定pdf所需要使用的字體,我使用的是標楷體(kaiu.ttf)。
- 該外字在標楷體(kaiu.ttf)中並無此字型。
- 驗證方法係開啟Word,將外字複製過去選擇標楷體,會把字體強制轉為細明體-ExtB。
- 在iReport中不方便設定細明體-ExtB(mingliub.ttc),原因如下:
- JasperReport對(.ttc)的字體支援是有問題的。
- 將該(.ttc)轉成(.ttf)也沒有辦法,因為該字體只儲存外字,這樣一般字就會無法顯示。
將一般字的.ttf與外字的.ttf合併起來,
此方式須將所需外字一個個字合併。
此方式須將所需外字一個個字合併。
(慶幸我目前只需處理五個字.......XD)
我所合併的字體是,
全字庫正宋體 Ext-B(TW-Sung-Ext-B-98_1.ttf)併入標楷體,
全字庫正宋體 Ext-B(TW-Sung-Ext-B-98_1.ttf)併入標楷體,
之後只要將merge後的標楷體放入程式所需位置,
就可以產生出外字了。
就可以產生出外字了。
四、步驟:
- 下載全字庫字體(位置:http://data.gov.tw/node/5961 )。
- 安裝 fontforge (位置:http://fontforge.github.io/en-US/downloads/windows/)。
- 開啟 fontforge 以及 全字庫正宋體 Ext-B (TW-Sung-Ext-B-98_1.ttf)。
- 按下ctrl+shift+> 找出外字的Unicode or Decimal。
- 我係先用java轉出外字的Unicode,再使用網站轉換成Decimal搜尋(網站:https://www.branah.com/unicode-converter )。
- 在依照該網站上的教學http://blog.twtnn.com/2015/01/svg12.html 將字體一個個貼到標楷體,接著再匯出(.ttf)就行了。
沒有留言:
張貼留言