關於Linux下LaTeX無法找到已安裝字體的問題與解決


關於Linux下Texlive無法找到已安裝字體的問題與解決

當我在Ubuntu系統下使用Latex時,在編譯渲染時報出了Font "xxx" does not contain requested這種錯誤,其中xxx就是你可能想使用的字體格式。

然而我的Ubuntu系統已經正確安裝了一些常用中文字體,然而在LaTeX編譯渲染時還會報出錯誤。

由於筆者為了解決這個問題翻遍了國內外的網站、去查看了Texlive官方文檔,耗費了許多時間與精力,都沒能找到解決我的問題的信息,人們的時間往往都很珍貴,一般找不到解決方案過后,往往都不了了之,本着互聯網極客精神(開源精神),在這里將筆者的解決過程記錄並分享,希望人們可以將這種精神繼承並傳承下去。

我甚至在Texlive的官方安裝文檔中看到這么一段話:

image

可以看到關乎於LaTeX排版中讓人非常頭疼的問題就是漢字的一些處理了,好在今天有非常多好用的宏包可以解決處理這個問題。

首先看一下筆者出現的問題:

image

image

可以看到終端給出的錯誤提示是未能找到已安裝的字體(installed font not found),有了這句話的提示,筆者想的可能是,在我的系統上已安裝了的字體中,在LaTeX中未能正確地引用,查看代碼中可以看到:

image

在這里設置字體格式的時候我們設置楷體對應的字體文件為simkai,我們可以查看我們的字體庫中是否有simkai.ttf楷體的字體文件:

在Ubuntu存放字體的目錄/usr/share/fonts/下可以使用find命令查找:

image

可以看到,筆者的系統中已經存放了simkai.ttf這個字體文件,為什么LaTeX還沒有找到這個字體呢。

通過一番排查,原來是在Ubuntu中,對字體的使用並不僅僅是字體文件名,而是另一個別名。

我們可以使用fc-list來查看系統可用的字體列表,然后使用grep匹配simkai.ttf的字體文件,可以進一步查看字體的信息:

image

原來,圖中1號框中的名字只是字體文件名,而在系統應用中想要使用這個字體,我們需要指定2號框中的字體名,例如本圖,我們想要使用楷體就需要指定KaiTi楷體這個名字。

回到LaTeX代碼中,將之前出現錯誤原因的simkai替換成KaiTi即可解決問題。

image

image

為了進一步驗證筆者的猜想,可以看到上圖代碼中,在KaiTi的下面還使用了SimSun宋體的使用,然而SimSun並不報錯,這里筆者想可以繼續查看SimSun的字體信息,其后面的別名應該包含SimSun

image

所以筆者的猜想是正確的,所以在我們不同的系統、不同的字體文件中,每個人發生無法正確找到我們想要使用的字體的錯誤可能都不一樣,因為我們使用的字體文件不同可能導致我們的在應用中使用字體中需要引用的名稱的不同而不同,所以出現這種問題我們要具體問題具體分析,對症下葯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM