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=,但是我並沒有遇到可以應用的場合。