|
|

楼主 |
发表于 2003-7-6 16:42:59
|
显示全部楼层
好吧,我就来贴一个。
对于CJK中中文字体的粗体问题,引一段sk8er主页上的说明。
怎样让汉字可以显示粗体?
你是否发现,在 \section 标号的小节中,英语是粗体表示的,而汉字却没有变化?很多时候你想让汉字也成为粗体。
如果你用 \textbf{你好}, 你会发现根本没有变化。就像你在 Word 里使用"粗体",打印出来也没有粗体效果一样。因为 Word 其实只是显示在屏幕上的时候让你看到很"粗",但是其实你没有"粗宋体"这个字体,它打印时是不会打印出粗体的。Word 还有很多比如"下划线"之类的字体变化,但是实际上那些都是不符合排版的美学的。
CJK 宏包为没有粗体的人提供了一个"穷人"的办法:在 CJK 的字体定义文件中设置 \CJKbold. 看看你的 c19song.fd 里是否有以下内容:
\DeclareFontFamily{C19}{song}{}
\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbksong}{\CJKbold}
\DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbksongsl}{}
\DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{\CJKbold}
\DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbksongsl}{}
\endinput
如果有的话,你用 \textbf{粗体} 就会得到一种"穷人的粗体",它是把宋体汉字平移了三次重合在一起实现的,看看你的 CJK.sty 有如下定义:
\DeclareRobustCommand{\CJKsymbols}[2]{
\char #1\char #2\relax
\ifCJK@bold@
\hbox to \CJKboldshift{\hss\char #1\char #2}
\hbox to \CJKboldshift{\hss\char #1\char #2}
\fi}
这样的到的粗体显然是非常难看的,在PDF文件里显示明显有"彩虹"效果!根本不能用。所以 gbkfonts 生成的 fd 文件全部去掉了这个选项。
字体不是一个你想怎么变就可以怎么变的东西,它如果设计的时候就不是粗体,那你是不可能把它变成粗体的。如果你用LaTeX缺省的英文字体,一般的时候是 cmr10, 用粗体的时候其实用的是 cmbx10。 cmr10 和 cmbx10 是同一家族(Computer Modern)的两种不同的字体。cmbx 并不是 cmr 做了什么几何变换得到的,甚至 cmr10 也跟本不是 cmr5 扩大了两倍变出来的!
字体都是专门的设计,每一个尺寸的每一笔每一划都经过了字体设计者的精雕细琢。它们有的也可以变化大小,比如很多TrueType和Type1字体都可以随意变化尺寸,但是它们对每一个尺寸范围都设置了不同的参数,这并不是一个等比例的"缩放"过程。如果你把一个LaTeX文档里的 5pt TrueType 字体抓图抓下来,然后用一个图像处理程序(比如 ImageMagick)把图片扩大到原来的两倍,跟你在文档里直接用这个字体的 10pt 的效果肯定不一样,字体的长宽比例,甚至很多弧线的角度都有很大差别。
"原设计"只有放在"原尺寸"才是最好看的,更不用说"粗体"和"普通体"之间这么巨大的变化了。如果你简单的把普通字体经过什么几何变换得到一个"粗体",那么它在美学上是过不了关的,你的字符会"不融合",使得文档"黑白不均",文档的整体效果会受到很大影响。
所以,你不应该把你正在用的这个"宋体"变"粗",而必须去找专门的"粗宋体"来用。但是如果你没有,那就用黑体代替好了。
做法是这样:当要求使用粗体(bx)的时候,用黑体代换。你可以把你的 c19song.fd, c19kai.fd, ... 都改成如下的样子:
\DeclareFontFamily{C19}{song}{}
\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbkhei}{}
\DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbkheisl}{}
\DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbkheisl}{}
\endinput
这样黑体就会作为"粗体"出现在章节标题,粗体环境中了。
如果你运气好,你有一个真正的漂亮的"粗宋体",比如它的名字叫做 gbkBsong。你就可以仿造上面在 c19song.fd 加入:
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbkBsong}{}
如果你还有一个"粗楷体"叫做 gbkBkai。你就依葫芦画瓢,修改 c19kai.fd:
\DeclareFontShape{C19}{kai}{bx}{n}{<-> CJKb * gbkBkai}{}
-----------引自 http://learn.tsinghua.edu.cn/homepage/015450/tex_frame.html
所谓的"穷人的粗体"就是如下的效果。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|