LaTex中文字體加粗的問題


1. 字體加粗原理。

打開c/windows/fonts目錄,以圖標形式查看,我們可以發現有的圖標是一張紙的樣子,有的圖標是幾張紙疊着的樣子。雙擊幾張紙樣子的圖標,比如Arial,發現里面有很多個文件,有的文件名帶黑體,說明對於Arial,字體文件單獨區分了常規體和粗體。

我瀏覽了一下,發現英文大多數都單獨定義了粗體,斜體,但是中文字體只有很少的會單獨定義,只有雅黑和等線。

那么沒有定義的字體,在加粗時,其實是軟件做了簡單地描邊,效果肯定沒有單獨定義的好。

2. LaTex字體概念

  • LaTex字體有三個維度:

font family 字體族:分為rm羅馬,sf無襯線,tt打字機三種。默認是rm。

(這個其實很少)

font shape 形狀:如直立,傾斜。

font series 加粗

  • 以上很難滿足對多種字體的選擇需要,尤其是針對中文,我們的做法是分兩步,一是選三種較常用的字體,設為上面的三種字體族:

        \setCJKmainfont{SimSun} %對應rm羅馬
        \setCJKsansfont{SimHei}%對應sf無襯線
        \setCJKmonofont{FangSong}%對應tt打字機

這樣就可以使用rmfamily, sffamily這樣已有的命令來指定字體;

二是自己設定新的字體族:

\setCJKfamilyfont{yh}{Microsoft YaHei}

然后要自定義命令:
\newcommand{\yh}{\CJKfamily{yh}}

(英文字體的設定方法略)

2. LaTex加粗命令

textbf和bfseries是一樣的加粗命令,只是使用方式不同。

對於單獨定義了粗體的字體,這個命令無論對中文還是英文都是有效的。

對於沒有單獨定義粗體的字體,我們只說中文:

  • 如果沒有使用setCJKmainfont或setCJKfamilyfont,那么對默認字體(不使用\songti這些命令)使用加粗命令時,得到的是黑體,因為默認的中文字體族是rm,其正常字體是宋體,粗體是黑體。其實並不是我們想要的加粗效果,因為這個已經改變字體了。
  • 如果使用setCJKmainfont,可以加上AutoFakeBold這個參數,來實現加粗效果,否則是沒有加粗效果的:

\setCJKmainfont{SimSun}[AutoFakeBold,ItalicFont=KaiTi]

還有一種方式,可以直接指定加粗的字體,就是設置BoldFont=,但是我並沒有遇到可以應用的場合。


免責聲明!

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



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