問題:使用java.awt包的Graphics2D進行操作,對每次上傳的圖片流都操作一次。在本地windows環境測試的非常流暢,字體的各種形式也能完整顯示,但是部署到linux服務器上就會出現中文字體變成口口口形式
原因:linux服務器器本身不帶中文字體,或者說是沒有字體的
解決:給linux服務器安裝字體庫
1. 查看服務器的字體庫
如果沒有安裝字體庫會出現:
如果已經安裝字體庫:
2. 安裝字體庫
輸入命令:
yum -y install fontconfig
如果安裝成功會提示:
這時我們可以輸入命令:
cd /usr/share
輸入命令:
ls
可以看到在/usr/share目錄下有fonts和fontconfig目錄了:
3. 安裝中文字體庫
在linux服務器中我們字體的存放路徑是上圖中fonts目錄,我們需要做的就是將中文字體放到該目錄下。
首先在windows系統下打開c盤,進入Windows/Fonts目錄:
找到需要的字體,根據個人習慣copy到自己喜歡的位置
然后我們輸入命令:
cd /usr/share/fonts
進入到fonts目錄下,輸入mkdir chinese創建目錄:
mkdir chinese
進入chinese目錄:
cd chinese
將copy下來的字體放入該目錄下,可以利用rz命令存入,也可以使用xftp工具上傳
4. 權限命令操作
修改chinese目錄的權限:
chmod -R 755 /usr/share/fonts/chinese
接下來需要安裝ttmkfdir來搜索目錄中所有的字體信息,並匯總生成fonts.scale文件,輸入命令:
yum -y install ttmkfdir
當看到下圖的提示信息時說明已安裝成功:
當然,已經安裝過的就不需要輸入了
然后執行ttmkfdir命令即可:
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
最后一步就是修改字體配置文件了,首先通過編輯器打開配置文件:
vi /etc/fonts/fonts.conf
可以看到一個Font list,即字體列表,在這里需要把我們添加的中文字體位置加進去:
<dir>/usr/share/fonts/chinese</dir>
然后輸入:wq保存退出,最后別忘了刷新內存中的字體緩存,這樣就不用reboot重啟了:
fc-cache
最后再次通過fc-list看一下字體列表:
假如水印如有生僻字顯示不出來參考如下方法:
1)在$JAVA_HOME/jre/lib/fonts下新建一個fallback目錄,讓Java程序渲染生僻字時在fallback里面找。(JAVA_HOME是你jdk安裝的目錄)
2)把windows/fonts/simsun.ttc拷貝到fallback去