2 C# v* h+ K" _$ R& w3 h, g6 f1 `% M& ~- Q % ]( |! y0 J, i! D先查看字体信息 , \* j: v0 J' ^( J代码: 0 [( h8 m, D7 C5 A% h
sbit32.exe -i font00.ttf 7 x3 j3 [* o8 ^- p
, Y4 Q( n/ Q' d, d/ p6 k2 v
可以看到它集成了 12、14、16、18、15、13,6 个 pixel 的点阵字,这也就是为什么微软的宋体在很多不同大小时仍好看的原因。加上 " q3 B+ c9 f+ x/ R( w1 ]) V& M
代码: 1 X# _1 B& ?4 M
– v / N) `# { ^) B. s) Q" T8 M
$ T7 Y8 C$ V( N+ m6 ~
参数可以看到更详细的信息。而用 fontforge 时只能看到 12、14、16 这 3 个点阵,就是因为 flags 被设置为了 0 的缘故 ( x: \# C5 V' J6 u" e" ^
, u. y/ q/ w) I+ l" J2 k! L
提取点阵。这时就要用到 .met 文件了。修改 sample.met 的内容为 $ e! O Y1 ~' c/ ]+ s a/ |
代码: # C/ h" i( z4 L) K5 ~* B
PPEM 12 0 e, N6 }: M; ^: S9 G, O0 [. [8 k
后,保存 0 @$ K ^! j: n1 t
代码: 7 p( k# G0 j+ Y4 A" R6 f% g2 ysbit32.exe -x font00.ttf sample.met 12.bdf ; M% U b3 N" z: Y& e
5 }3 Z- ~/ f8 n$ |8 D: L' j+ D
就可以提取出 12 pixel 大小的点阵。再想提取其余别的 bdf 文件时,就要依次修改 sample.met 文件内 ( W0 S. v4 U3 p1 ]* W, [代码: 5 Z" h; m, e6 Q) {PPEM 1 @' u3 s8 w% g7 l% S ' b7 x/ [9 \9 c) L% _7 v的值后再进行提取。也可加上 2 T+ p% E9 u+ ~1 v1 @) y代码: 3 m' @" a/ p6 }! f/ h– v s( j) ]# L7 v$ l
- k! {- |* R! \. t. x+ I参数看到更详细的信息 % J# _7 o: u4 `; P* B- e, ^6 N# u }+ x" N
嵌入点阵。类似于提取点阵的方法 4 Q. |" D5 I' W3 d( G, O9 ^, i代码: 7 U+ m9 @, Z, c! r7 q* d, T: X; M
sbit.exe -a font00.ttf 12.bdf sample.met new.ttf - \+ ?: H6 J6 M- ]1 |4 Y; b" \4 e5 m6 b- x6 F' [) ?( e) o8 L
也要注意修改 sample.met 以便针对不同的点阵。也可加上 9 Q% U# h# o2 [* n代码: 0 ` N7 T- z. b [
– v . r. L( }+ |) _# a: X$ p |2 ~6 G5 u
: k0 I" W+ H: D- {+ G& L" U. K参数看到更详细的信息 8 [6 k5 f& d7 I0 g# x 9 L+ i6 i$ }+ |! f4 f删除点阵 . e* w0 c' o% o/ y: A5 w: C$ m5 q& l: C代码: 8 n/ ]8 ^. z# Q3 w Psbit32.exe -d font00.ttf sample.met new.ttf 3 T$ p, T! K) {4 A4 s( y9 y2 `* d/ M8 D( X0 S0 w
也要注意修改 sample.met 以便针对不同的点阵。也可加上 # T9 A0 U/ H0 f# g4 \% D7 D9 S# B
代码: + [9 c8 X% \ T* W6 L– v - Q# L- ?7 t. L
参数看到更详细的信息 - |5 V4 e+ @9 M# g" }6 X: a) V - ~' d3 N' n! o' \0 e2 O - w+ C0 h1 V1 W& @8 S+ O 5 ?5 P$ i5 z% T' R' Z) _5 S: qxmbdfed 工具:用于处理 bdf 格式的点阵字 3 E3 Z- A$ n* M* B/ S7 k, L. N) Q }
& U* n4 J5 L- Q6 I* f
4 {/ N; X( g" U$ A: ~( ~导入字体: $ w% I* }! U5 F: |8 {在终端执行 xmbdfed 以后,选择 File--Import 就可以导入多种非 bdf 格式的字体文件进行修改。这里选 TureType Font 就可以导入 ttf 或 ttc 字体。可以分别选择其中包含的字体、平台和编码。一般使用 Microsoft 和 ISO10646。然后就可以直接保存 Save As 为一个 bdf 文件 ( p( }3 I( w/ a" w
3 ~. t% m* p. S7 d; ?
加粗字体: . |; g7 v$ D& H* U1 A5 u* h: H& o打开 Open 或者导入 Import 一个字体后,执行 Operations--Embolden Glyphs 然后选择 All Glyphs,按 Embolden 就可以加粗字体。多次执行就可以继续加粗。其实质是将字符向右平移复制了一个单位。我们可以单独找一个字符做一下试验。随边找一个字符,双击打开修改窗口,执行 Operation--Embolden 就可以清楚看到它只是简单的在原字体右侧进行了重画线的工作 . w. L& J/ n7 u1 K- {2 k0 N
这种加粗方法目前还有一些缺点。当一个字符很小,或者比划很繁复的时候,会让加粗后的字符看起来聚在一起,看起来像一个疙瘩,不清楚。而且对于 iso10646 之类的既有表意(中文)又有非表意(英文)之类编码的字体,会由于上行高度(ascent)和下行高度(descent)不统一,造成加粗后字体的标点符号位置靠上,在右上角,而不是右下角的位置 , l% M: ?9 c M9 |" Y
; J& e$ w7 r. f- _4 A生成斜体: * k7 |/ h' U$ u ?6 u3 A
类似于生成粗体的方法。打开 Open 或者导入 Import 一个字体后,执行 Operations--Shear Glyphs 然后输入倾斜角度,可选范围是-45度~~+45 度。然后选择 All Glyphs,按 Shear 就可以生成斜体。我们可以单独找一个字符做一下试验。随边找一个字符,双击打开修改窗口,执行 Operation--Shear 输入数值后按 Shear 就可以生成倾斜效果 0 ]0 N% i' C5 H5 \; f
: c' o9 T4 z& q0 W7 G* o& t参数配置: $ w4 q. _3 C( h- F p) `' @. P
通过 Edit--Setup 选项可以设置一些默认参数。建议大家把 resolution 都设置为 72。因为点是固定大小的,在数字印刷中,一点(point)等于 1/72 英寸,这样便于计算。改变完参数后要记得依次点击 Update、Save Setup 以保存设置 / M7 b% y% c, {, @* c( b
7 n0 n7 _" ]6 X# B# v7 Y: @! [; A
修改字体信息: x- m' |4 f8 q
Edit--Font Info 修改某参数后 Update 保存即可 / w1 f8 E' q- E7 k 4 C7 N$ F2 j& Z/ a' o0 z修改字体属性: ' O- p/ Y$ p, qEdit--Properties 删除 Delete 或者修改某属性后 Update 保存即可。例如 COPYRIGHT、FAMILY_NAME、FOUNDRY 之类的。修改完之后记得 Edit--Font Name--Update Name From Properties 一下,就可以在主界面的 Font 栏看到 Name 变化后的效果。也可以直接更改 Font 栏的内容,然后用 Edit--Font Name--Update Properties From Name 命令从字体名更改属性。有关其中字体名的详细写法和意义可以参看 7 [/ P% J( f5 U, m
1 l& r: h" V2 D+ Y2 F
导入字体: 1 Z; L! ]' m+ A: m
基本上没什么好说的,提一下其中的 File--Import--Server Font 命令。xmbdfed 默认情况下导入 TureType 字体只能是 iso10646 编码的。如果实际内嵌点阵没有对应大小的字符时,它会根据对应编码位的矢量字用算法生成点阵。当然效果肯定没有人力手工制作并嵌入的点阵效果好。举个例子:用 File--Import--TrueType Font 命令导入的 simsun.ttf 会自动生成 latin 1 部分的点阵一样,而实际 simsun 只内嵌有 GB 编码的中文字 8 s" K3 \& q0 d如果想导入 GB2312 或者 GBK 之类的话。先按照正常方法安装你想提取点阵的字体,关键就是配置 X 核心字体子系统部分,使它能识别这个字体,特别是要写对 fonts.dir 文件。然后用 File--Import--Server Font 命令就能正常导入、导出其它多种编码的点阵字了。并且在导入字体时可以直接给出字号、分辨率以便提出符合要求的点阵 & n' C5 `4 G0 ~, P; Dfonts.dir 的具体写法可以参看 Linux字体设置fonts.dir文件分析: http://www.linuxfans.org/nuke/module...ight=fonts.dir 6 l5 a0 |8 f( M0 D8 i4 U2 G 9 r8 @7 \% O) u3 C / d# h' n/ n' B# C: N1 T还要说一下,这个工具对 bdf 文件的格式要求很严格。用 fontforge 或者 sbit32 提取出的 bdf 字体不能够打开,导致应用起来有些困难 ( C: T' O% Y9 o, ]7 txmbdfed 更详细的用法可以参看 man 手册、help 或者 http://crl.nmsu.edu/~mleisher/xmbdfed-doc.html . Q. B4 m% K+ E3 g0 r; N6 Q$ y9 G
4 I$ B8 S) J4 F, J) U0 a
5 a$ _6 \9 \( h" D5 P5 O- Z6 x
fontforce 工具: ; m. c F0 i6 I 9 V( h C: _1 B& o. X6 s 4 k1 V2 Y+ _5 d* A: Q% W ! ~" w* m, Z! \' ^; x提取点阵: 2 W y7 p" N3 O. o( X
打开含有点阵的字体后,会自动弹出窗口询问是否装载点阵。装载后可以在 view 菜单下选择 xx pixel bitmap 查看、修改点阵。用 File--Generate Fonts,右侧选单选择 BDF,点击Save后可以生成点阵字体 " s6 }- O& d) e, p0 U D2 m
2 ^. l# B( [0 G4 L( y( ~嵌入点阵: 9 m6 h: I3 h0 W3 N. F
File--Import 就可以嵌入不同格式的点阵字体。嵌入后可以在 Element--Bitmaps Available 下查看已有点阵和在不同环境、dpi 下的字号 2 F& T3 ?: d' w: I
: ~; W0 a$ [; L0 G替换字符: A: Z9 z$ x1 I
$ h6 I/ @* m2 W
$ k: V/ j+ K) ?# o0 A. _) r可以同时打开两个需要进行替换和被替换的字体,一个一个字符的进行复制、粘贴的工作。显然这样比较费时、费力。可以用下一种方法 # P1 b6 \ k. g$ W/ y" z: X+ J2 ?3 P) s/ q$ v! z% W5 D
Element 菜单下的 Merge fonts 直接导入进行合并。注意:如果 A 字体包含了 B 字体里的字符的话,最好是在 B 的基础上进行合并。例如我想用 tahoma 替换掉 simsun 里的相同部分。因为 simsun 已经包含了tahoma 里的字符,所以如果以 simsun 为基础合并 tahoma 的话,仍然会保留 simsun 原有的部分,而不是进行替换。应该打开 tahoma,然后合并 simsun * K( R1 h1 l, ?8 ^9 R$ o
合并之前还要注意两个字体的 Em Size 是否相同,否则可能会导致字体大小不一、不成比例。一般规定 PostScript 字型是1000,truetype 字型用2的次方(常是2048或4096)。可以通过 Element 菜单下的 Font info 内的General 进行修改。Ascent、Descent、Underline position 和 Height 也最好能一样 ! k2 r6 l. J# r) e
如果你并不想完全替换为另一字体的话,也可以先删除你不想要的部分字符后再进行合并 9 l8 s% H8 z3 a) Z ?
6 q, p7 q6 z2 ^$ _
4 j% p, E) Q0 ?( s, r ! z1 O4 f5 ?* G/ S8 x" W修改字体,实现粗斜体: ( a3 M( d4 f6 Q& l' f) e
系统是根据字体的 Family 是否一样来判断两款不同的字体究竟是不是能够互相搭配的一套的。而字体名只是起一种标示、区别字体的作用的。所以修改 Family 就是将不同字体变为同种,实现相同显示要求的关键。而 Weight 则用来鉴别字体是粗体还是常规字体。 % `6 ?' n) h' R; L" f2 D7 N+ H6 f分别打开每个要修改的字体后,点击 Element 菜单下的 Font info 项,修改 Names 选项卡中的 Family Name 和 Weight。TTF Values 选项卡中的 Weight Class 也进行修改。还有 Panose 选项卡中的 Weight。以及 TTF Names 选项卡中的内容。这在下面的例子中会详细提到 ! k- ]6 T& F# k( Z) a/ s0 j6 I5 g+ f8 N1 c1 ?
制作斜体: 1 j; U2 Q: ~2 {3 r) }7 }; o
可以执行 Element 菜单下的 Transform 然后在新弹出的对话框中改变第二个选框内的内容为 Skew,然后调整其后的倾斜度数值即可。在把字型修改成斜体后,还需要执行Element->Add Extrema (因为倾斜字体之后,垂直切点会移位,所以要在新的垂直切点上加上新的曲线点) 9 f' i4 C: ?+ V5 [3 _
1 Z5 D, `) j7 m " k, L* D( e: F. w: \6 \% [) K" S) S3 T% Y+ k
因为具体修改字体过程写的过于啰嗦繁琐,而且上面已经简单叙述了方法,所以本想把它删除。但是对于我这种打字速度的人来说,实在是不容易。所以终究没能狠下心,仍然保留了这段啰嗦的过程,各位不想看也罢 f9 S9 q$ C. j# r8 t! @2 S : e8 R" F, {6 M9 h. p# {: J- R我这里以方正圆体和 Bitstream Vera Sans 为例。用方正准圆作为“常规”字体显示,方正粗圆作为“粗体”显示。统一改为 Vera Sans YuanTi。“斜体”由“常规”字体生成,“粗斜体”由“粗体”生成。其中与 Bitstream Vera Sans 相同的部分全部进行替换 " N6 @: f) w! {% l* p' w' g没用中文名的原因是在不打 firefly( http://firefly.idv.tw/setfont-xft/ )补丁的情况下 linux 无法显示中文字体名 9 q) q% K7 ]" W! ^4 v% u) Z
3 ~) @- h4 i, F ]. l3 e制作"常规"字体 ) h! V- L: ]/ x7 Y) N
8 b" D- G7 p# S: n6 R0 H1 _ / ^% s! ?! z/ W( s- c. p! _1 Q( r# v$ ?9 w
安装完成 fontforce 后,在终端里输入 fontforce 运行。在弹出的界面里载入方正准圆(fzy3k.ttf) $ ]! A" t% M+ A 0 s' B) L1 X$ ^6 E点击菜单栏的 Element--Font Info 8 w% o) d9 l1 O5 p; A; f' YFontname 改为 Vera Sans YuanTi_JT(这一步的修改将显示为 PostScript 名。右键--属性,Meta 信息就可看到) 9 y6 Y# n f/ K- F' ?
Family Name 改为 Vera Sans YuanTi 5 ^8 E' M" s5 a4 v
Name For Humans 改为 Vera Sans YuanTi(这一步不改也可以,但为了统一我还是改了) ( `1 z; }. p {3 ~
Weight 改为 Medium(MS 带的字体这里均为 Book,你不改也可以) " @5 }4 u9 f4 ?; i
关键是 Family Name 应该和你将用的"粗体"统一,名字可以任意。我用 Vera Sans YuanTi 7 f& l& S# y8 P0 O! i2 m
7 a6 y9 |" g6 W N# E+ V切换到 TTF Values 选项卡 : T4 c" e+ K) l' C
Weight Class 改为 500 Medium(MS 带的字体这里均为 400 Book,你不改也可以) # j. u$ D4 \+ C. Q# l/ s" p0 H- J2 O Z' M; o4 E9 w6 o$ d& _3 N* ^+ V
切换到 Panose 选项卡 ( s |+ z+ m: B$ O/ |: u/ q3 E k) |
Weight 改为 Medium , F& }9 g" ^0 Y! f9 V
H0 B+ r c- {# D- p6 ?5 }8 i4 y
切换到 TTF Names 选项卡 ( z/ ]3 I0 ^# ~) [7 L2 A在下面第二个选框内选择 Chinese(PRC)zh_CN 3 u1 a3 m4 G, Q& E# V" P O" \改变第一个选框内的内容为 Family,此时将下面输入框内的内容改为 Vera Sans YuanTi ; Y- G- m f' G
改变第一个选框内的内容为 Fullname,此时将下面输入框内的内容改为 Vera Sans YuanTi # s( p9 d7 n" j6 M e" E
改变第一个选框内的内容为 UniqueID,此时将下面输入框内的内容改为 Founder:Vera Sans YuanTi Regular ; n2 h S: Y: N* q
然后将下面第二个选框内选择 English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了。方便选择。如果我不是色盲的话应该是绿色的 ) 6 Q7 H: i+ p3 d9 m9 g; k+ G做于 Chinese(PRC)zh_CN 类似的修改。即修改 Family;Fullname;UniqueID 三部分 ' s; |3 s2 U# Z1 p, |, f7 a1 H6 L1 h K
点击 OK 关闭对话框后。如果弹出窗口提示不匹配,询问是否改变的话,点击 Retain All。不做改变 ' N+ Z9 M" r% A% S . S8 p6 r5 l" n2 k" n( Q6 U9 l7 F选择 File--Generate Fonts,选择 True Type,点击 Save 后生成字体。文件名任意。我取为 Vera Sans YuanTi_regular.ttf。如果弹出窗口提示什么 Em Size 的话不用理会,点击 yes 确定 ! s6 U- ^1 B% C* u8 V' a+ J& F/ V4 `2 ~7 e6 Q. X+ U A) l7 f
- l0 [+ O! O6 s6 z5 N. G8 G6 n. S3 Z9 a
制作"粗体"字体(与制作"常规"字体类似,我就简单复制了阿 ) , D- O+ G a! f* w" T% C, ^$ ?
1 m- h3 ^/ S2 ^" }1 x$ I! k9 t点击菜单栏的 Element--Font Info * z2 _& g2 o3 H4 K& ]4 D
Fontname 改为 Vera Sans YuanTi-Bold_JT(这一步的修改将显示为 PostScript 名。右键--属性,Meta 信息就可看到) - H# h5 K7 }3 {' g1 K7 oFamily Name 改为 Vera Sans YuanTi % o2 p5 ], ?9 u* [# bName For Humans 改为 Vera Sans YuanTi Bold(这一步不改也可以,但为了统一我还是改了) 6 x* d6 B2 u0 k* K) b6 t
Weight 改为 Bold " n5 w5 `7 D8 f; c9 K/ D' t5 b* N关键是 Family Name 应该和你将用的"常规"统一,名字可以任意。我用 Vera Sans YuanTi " a% Z8 j. k9 k# i6 J' R9 E! y) [: [
切换到 TTF Values 选项卡 * `' s; J7 J- D( q3 u: H
Weight Class 改为 700 Bold " ?2 t# D" a2 A
9 K. G# |" y8 G% `6 y( \, m6 \/ f. v
切换到 Panose 选项卡 , F# V1 d9 i: q# i
Weight 改为 Bold / P; ~) D& c. P# {7 z
- X: O% L, Y3 @# V8 [
切换到 TTF Names 选项卡 ' ~/ m7 m3 u$ y6 [: P3 W9 e
在下面第二个选框内选择 Chinese(PRC)zh_CN 5 y }: a: M: `2 f确认第一个选框内的内容为 Styles(SubFamily),此时将下面输入框内的内容改为 Bold % ?, r" J. ~" N* s
改变第一个选框内的内容为 Family,此时将下面输入框内的内容改为 Vera Sans YuanTi " \7 H) q9 U% N7 r
改变第一个选框内的内容为 Fullname,此时将下面输入框内的内容改为 Vera Sans YuanTi Bold " t# J' g7 ?6 ^7 I# P改变第一个选框内的内容为 UniqueID,此时将下面输入框内的内容改为 Founder:Vera Sans YuanTi Bold * F6 N: `' t& ~( f6 D, Y
然后将下面第二个选框内选择 English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了。方便选择) % j& n8 a7 k% U做于 Chinese(PRC)zh_CN 类似的修改。即修改 Styles(SubFamily);Family;Fullname;UniqueID 四部分 * c; p" K2 o( f9 ^7 ^+ f) S" V- z
点击 OK 关闭对话框后。如果弹出窗口提示不匹配,询问是否改变的话,点击 Retain All。不做改变 5 h" J) y! i$ Y* @1 Q * |2 C7 Y( F: ?: n0 r: O" [选择 File--Generate Fonts,选择 True Type,点击 Save后生成字体。文件名可任意。我取为 Vera Sans YuanTi_bold。ttf。如果弹出窗口提示什么 Em Size 的话不用理会,点击 yes 确定 8 b9 \% C- _9 h3 b- b% I+ D, f% J % T) K+ M9 U$ h$ J# n j& C. j% J , \+ a H8 j7 v8 M, H! o % V5 f: W) @; c6 b制作"斜体"(与制作"常规"字体类似,我就简单复制了阿 ) & G$ v3 U( h+ S% ?3 d9 E : S$ W7 I9 ?* N! {$ ~ K# @, Z' H0 S ! g, V2 x; }& d1 ^( l3 e6 r安装完成 fontforc e后,在终端里输入 fontforce 运行。在弹出的界面里载入刚才修改过的常规字体(Vera Sans YuanTi_regular.ttf) 5 T# A: [+ [2 v3 f8 \
, L6 T j1 T. a* K0 h( P点击菜单栏的 Element--Font Info 7 w, _& k& Q9 A* @" } E( QFontname 改为 Vera Sans YuanTi-Italic_JT(这一步的修改将显示为 PostScript 名。右键--属性,Meta 信息就可看到) " I. y- v* D NFamily Name 改为 Vera Sans YuanTi , ^1 v: ^' L3 G' [Name For Humans 改为 Vera Sans YuanTi Italic(这一步不改也可以,但为了统一我还是改了) ! R; B8 C1 N" E/ w
Weight 改为 Medium(MS 带的字体这里均为 Book,你不改也可以) : ]) [4 {2 x0 q4 b1 Q# ^7 D1 K" f
关键是 Family Name 应该和你将用的"粗体"统一,名字可以任意。我用 Vera Sans YuanTi 0 U" l4 r0 v+ }, H/ ?$ @, N! E: U
3 G+ e) O2 m' P& D J! _2 J& L
切换到 TTF Values 选项卡 + x, r8 ]7 h6 `+ j. s; tWeight Class 改为 500 Medium(MS 带的字体这里均为 400 Book,你不改也可以) + K5 R# q8 E4 ^5 r6 J2 n$ s( ?8 L: A3 I* B. s0 h
切换到 Panose 选项卡 , P0 X. l* m0 s6 W& N. o8 FWeight 改为 Medium ( v+ ^4 X! n8 l1 M8 w4 h. @. a( ?2 s" i) s
切换到 TTF Names 选项卡 8 x2 t% [" X0 k* y5 c) \在下面第二个选框内选择 Chinese(PRC)zh_CN * o, e3 |' r' J2 Q8 W2 _. K$ V% |确认第一个选框内的内容为 Styles(SubFamily),此时将下面输入框内的内容改为 Italic # H- Q3 ?" q( { H- @; ^9 Z8 }改变第一个选框内的内容为 Family,此时将下面输入框内的内容改为 Vera Sans YuanTi " L9 s+ ~' D) I! ]# \, L
改变第一个选框内的内容为 Fullname,此时将下面输入框内的内容改为 Vera Sans YuanTi Italic 5 R T+ Z, Z0 ^/ V: L改变第一个选框内的内容为 UniqueID,此时将下面输入框内的内容改为 Founder:Vera Sans YuanTi Regular Italic 2 X& k- g" `( i
然后将下面第二个选框内选择 English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了。方便选择) : `8 _# C- a t' N; L
做于 Chinese(PRC)zh_CN 类似的修改。即修改 Styles(SubFamily);Family;Fullname;UniqueID 三部分 d: F( R9 ?4 F: `- H, Y
' F, B9 P3 D6 M* ~" I2 e
切换到 General 选项卡 , f" z8 r' J' s0 f# X+ ]+ K在 Italic Angle: 后输入 12 1 W |2 j8 z& v
1 v4 r% \- ?4 ^( v, ^% a9 g
点击OK关闭对话框后。如果弹出窗口提示不匹配,询问是否改变的话,点击 Retain All。不做改变 % X9 Q* N9 y5 ]% q% Z: W& N0 [, b9 @
选择 Edit--Select--Select All,然后执行 Element--Transform。 , S) v1 c. U: ]7 B* g在新弹出的对话框中改变第二个选框内的内容为 Skew,在将其后的数值改为 12(数值可根据你的视觉需要任意输入,windows 自带的英文字体多为 10;12;13;16。你可以先单独选中一个字体 Skew 一下试试看倾斜程度是否合适) & b2 T( y1 o& w7 j" A5 o6 K4 P
点击 OK 确定。 . r% @; e: c! x1 N" U! l" x1 [
: k |8 W y& U% X$ W/ _
在弹出的警告对话框中点击 OK 确定。如果弹出什么错误提示的话不用理会,一路回车。完成后会看到字体已变为斜体。接着按照刚才的警告执行Element--Add Extrema ' p0 U, y( I1 b n8 p, X
最后选择 File--Generate Fonts,选择 True Type,点击 Save 后生成字体。文件名可任意。我取为 Vera Sans YuanTi_Italic.ttf。如果弹出窗口提示什么 Em Size 的话不用理会,点击 yes 确定 ' j( y" w" G! w8 @" H7 ~ _: H, _' y2 J' t7 z* _ I, v/ _+ B0 c3 E; s+ ?( [8 R
* l) ^2 l" {$ ^ i- g
制作"粗斜体" $ h, o; e9 K9 K4 ]/ {. Q: D5 R# w, I
8 i# G2 B( J$ y- E0 ]4 V5 ]- W8 G; M/ ^ R, R* o; S
安装完成 fontforc e后,在终端里输入 fontforce 运行。在弹出的界面里载入刚才修改过的粗体(Vera Sans YuanTi_bold.ttf) ) W/ a$ `& d$ _) \7 z3 h' m( f ; Z( c: e( u0 f+ ^2 b- T4 O点击菜单栏的 Element--Font Info ! z& ^( w6 @9 q- ^4 B' v. VFontname 改为 Vera Sans YuanTi-BoldItalic_JT(这一步的修改将显示为 PostScript 名。右键--属性,Meta 信息就可看到) # d, e! s1 n+ |1 D& u
Family Name 改为 Vera Sans YuanTi & F+ s% d# L ~9 M7 [1 vName For Humans 改为 Vera Sans YuanTi Bold Italic(这一步不改也可以,但为了统一我还是改了) 8 p) }9 S1 B9 d' Q, CWeight 改为 Bold : J- I0 k4 K1 Y- ^5 d3 D* [关键是 Family Name 应该和你将用的"粗体"统一,名字可以任意。我用 Vera Sans YuanTi 4 ?5 \; Y; y3 Z1 O3 f- {* `- w L# z) J# [- t' a" S9 v6 K
切换到 TTF Values 选项卡 , D0 U3 Y, D; O. c: [Weight Class 改为 700 Bold - X4 |$ z; g7 j2 w+ @
9 j- l8 } D, T# k5 {" p切换到 Panose 选项卡 # E, g4 [9 P- @+ [: v
Weight 改为 Bold 9 x+ _0 q( j: Q. D
) x+ f9 h3 w. i7 b; ~切换到 TTF Names 选项卡 ! H- y& |* O& j3 {- w: ?' w& ^% L在下面第二个选框内选择 Chinese(PRC)zh_CN ! a% Y4 p; ~# A/ I* Z" K- f! q确认第一个选框内的内容为 Styles(SubFamily),此时将下面输入框内的内容改为 Bold Italic 7 z4 K0 b% _% U. d9 P# r
改变第一个选框内的内容为 Family,此时将下面输入框内的内容改为 Vera Sans YuanTi ' n+ ?7 a! V" w9 @4 a/ J9 Y
改变第一个选框内的内容为 Fullname,此时将下面输入框内的内容改为 Vera Sans YuanTi Bold Italic 3 L2 |) k. V7 z& T改变第一个选框内的内容为 UniqueID,此时将下面输入框内的内容改为 Founder:Vera Sans YuanTi Bold Italic ) N7 m$ g, C. m9 B6 u
然后将下面第二个选框内选择 English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了。方便选择) 6 R. e; d7 W; I# f+ s9 k2 F1 J; p5 l做于 Chinese(PRC)zh_CN 类似的修改。即修改 Styles(SubFamily);Family;Fullname;UniqueID 四部分 ' ]5 Z- N! O3 p$ c3 j6 e; L 9 Z4 P2 l2 w5 Z- t点击 OK 关闭对话框后。如果弹出窗口提示不匹配,询问是否改变的话,点击 Retain All。不做改变 5 z. D, y% Q" v3 _+ T$ i
5 w$ X; u- f9 |; v N4 m
选择 Edit--Select--Select All,然后执行 Element--Transform。 , N9 n7 [% D0 D) P+ W在新弹出的对话框中改变第二个选框内的内容为 Skew,在将其后的数值改为 12(数值可根据你的视觉需要任意输入,windows 自带的英文字体多为 10;12;13;16。你可以先单独选中一个字体 Skew 一下试试看倾斜程度是否合适) ) x/ [; W) g/ E* M0 W+ F' }
点击 OK 确定。 ( x: n! l; l9 O, j* z' [4 B$ q1 @! _$ K: U5 P" o% h
在弹出的警告对话框中点击 OK 确定。如果弹出什么错误提示的话不用理会,一路回车。完成后会看到字体已变为粗斜体。接着按照刚才的警告执行Element--Add Extrema , `4 _: o0 D6 A0 b/ `最后选择 File--Generate Fonts,选择 True Type,点击 Save后生成字体。文件名可任意。我取为 Vera Sans YuanTi_bold_Italic.ttf。如果弹出窗口提示什么 Em Size 的话不用理会,点击 yes 确定 6 G0 y. n/ f4 C( L2 Z r q& b0 R( I( q$ J' A3 j {# A: l$ R( J. k) i5 s
+ W c H1 _( a# Z2 E; c- D6 l
替换字符: 2 Z' G5 s$ [% R6 c- z, G3 a- E) k- C' [' m' n& d3 F5 D$ }
4 j& m* D* Y/ v ?. z/ ^" X% m. a; m, L$ Z6 I9 R- h
逐字复制粘贴: + R: t- Z+ l& H) P6 p& k还以上面的方正圆体和 Bitstream Vera Sans 为例。用 Bitstream Vera Sans 替换掉与方正圆体里相同的字符,如果圆体里没有某个字符的话就直接用 Bitstream Vera Sans 补足(如果你觉得 Bitstream Vera Sans 太粗、字体间距大的话也可以用 windows 的 arial 甚至是 tahoma) ) I: ~0 z3 f6 C
注意字体的搭配,斜体配斜体,粗体配粗体。下面以粗斜体为例 8 Z& j) \& v1 x, j+ C
运行 fontforge,分别打开 /usr/share/fonts/bitstream-vera/VeraBI.ttf(Bitstream Vera Sans 的粗斜体)和刚才做好的 Vera Sans YuanTi_bold_Italic.ttf 0 f/ s# G" h9 x ?在 Bitstream Vera Sans 的窗口中,选择 View--Compacted View,点击菜单栏的 Element--Font Info--Encoding 可以看到总共有 268个字符。不算多,慢慢来还可以接受。如果太多的话,我劝你还是放弃吧,除非你想锻炼耐心 % f. r- X$ N, f k; M点击菜单栏的 Element--Font Info--Encoded View,把浏览方式改回去(生成字体以前一定要改回) 6 L( i: a" c3 g. n- i6 q切换到方正圆体的 Element--Font Info--General 选项卡把 Em Size 改为 2048,即与 Bitstream Vera Sans 一样(两款字体的 Em Size 一定要一样,否则最后生成的字体会大小不一)。点击 OK 后,等待转换完成 # i% M1 a3 ^" J+ C$ G
然后在方正圆体里用鼠标选中与 Bitstream Vera Sans 重复的字符(可以拖动,多选);右键;Clear 清除。再用复制、粘贴把 Bitstream Vera Sans 的字符都贴过来即可(这一点说起来最轻松,但是做起来却最浪费时间)。有的字符在方正圆体没有包括,直接贴过来就行了。可以用 View--Next Defined Char 直接转到下一个字符,否则找起来很麻烦 6 V5 s. L2 l5 u: V0 H! N
5 J2 E* W9 E' S) I* ~清除合并: # |6 G# @8 L: |$ ]# r. J1 J4 X; A+ b4 J把方正圆体里与 Bitstream Vera Sans 重复的字符都清除后,选择 Element--Merge Fonts。在 Merge Fonts 窗口中选择 Bitstream Vera Sans。完成后,File--Generate Fonts 生成字体即可 + V) A' ~* L @合并字体时,只会合并原字体(这里是方正圆体)里没有包含的字符。而不会覆盖已有的字符,所以要先清除方正圆体里与 Bitstream Vera Sans 重复的字符后再合并 & q" e# z/ S$ q% b" a
`. `! s+ B( I1 q7 S
直接合并: * n) z. {9 [" }, Y8 ^8 x当然你也可以用 Bitstream Vera Sans 做基础把方正圆体合并进来。但这时你要修改的字体信息就比较多了 # M# b: Q# [3 c: U3 e. x打开 Bitstream Vera Sans 后,直接选择 Element--Merge Fonts。在 Merge Fonts 窗口中选择 Vera Sans YuanTi_bold_Italic.ttf。完成后,File--Generate Fonts 生成字体即可 ; q! ~" ^& J, v ; e; s6 j7 ^. { * ~0 [9 q- @% @7 \ F 9 _ \5 u, B% Z0 j6 Q) @% r2 i2 m7 }9 a; T4 c5 A
9 l* ?# \, b( }, j
+ @" C/ p# d R9 \! ]5 H . r( x5 Y1 u+ M; F1 n使用 hinting: 8 f' A9 T/ q( K$ W4 V
由于 TureType 字体的 hinting 是有专利的(apple),所以很多发行版默认并没有打开 hinting。这就造成了很多字体不够好看。由于有些字体已经内置了 hinting,所以为利用这种技术获得更好的显示效果,我们可以自己开启 hinting ' Y3 w4 f b7 n) n8 I" X$ y用如下方法就可以打开 hinting。前提是你使用 freetype2/xft2/fontconfig 显示字体 / n& N2 ^1 L7 y有一些发行版因为涉及到专利的原因,默认没有编译出带hinting支持的freetype。例如RH、FC的发行版 3 B9 E5 J& X, s$ J' j下载freetype2的源码,解压后,把 include/freetype/config/ftoption.h 里面的 7 A$ o$ A- h% z e引用: 7 `4 p7 x# F& H1 v; D$ I' I9 E8 k: O
/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ ' s) y& y1 m; Q
- r8 ]- O* R; v: o Z
+ h; K3 O6 D, V" \8 E
改成 $ i/ Q" W2 n9 s3 O# I/ [引用: + n/ l! ?) ~6 Z* \- h2 K" `8 u# q
#defineTT_CONFIG_OPTION_BYTECODE_INTERPRETER 7 M1 {; t( M5 A/ c, w+ U6 x+ i & K+ M& y! w8 i# L1 i/ A# s , [2 ~4 c& T) ]8 f然后编译,重新安装freetype2就行了 , J" w* y4 y) ~0 i _
或者下载freetype2的src.rpm。rpm -ivh 安装以后。改/usr/src/redhat/SPECS/freetype.spec 的 + P* f0 @% C7 I- F$ Q* v }9 b/ o引用: 3 K# f, [, }; h) v* T; a; D
' L" O t, O4 T1 t
%define without_bytecode_interpreter 1 3 e5 U, [' ?# K0 O6 u$ E$ P; E& G; Y7 A8 j9 G. h
% r; v0 u. a+ g* v: X% N6 q5 z( ]
为 ; b7 }8 a0 v" I; B! V) ]引用: 7 t" `7 i7 C o+ D5 z7 g6 V1 c" V1 k# t& ?$ v7 o* r
%define without_bytecode_interpreter 0 % m: L( ?6 Y6 _3 a/ z* N+ V: e
4 o' N5 Z: p( T) {7 l' d2 T! z
0 I% ^' \( ]& V3 L* O# X# W# E. O r然后 " l0 ^" U. ~1 S9 e引用: 3 W- ?, L+ C& H; ^* R' ]
* D) y$ P" _' B6 D
rpmbuild -bb /usr/src/redhat/SPECS/freetype.spec G; E# Z/ t4 G$ n1 N' m+ s& z4 _
, d0 Q" N5 H9 k) U9 R# e引用: 7 M1 m% U) A9 }/ V3 Q7 \* t4 c0 t: U! H
cd /usr/src/redhat/RPMS/i386 . l5 U5 O8 W$ Yrpm -ivh freetype*.rpm 1 Y) d. r. s. \4 F4 v1 H$ y I
9 H5 U o* u$ |" t+ \ 6 A5 s" W. x$ o然后在 /etc/fonts/fonts.conf 或者 /etc/fonts/local.conf 或者 ~/.fonts.conf 内加入 D' ~! y [4 ]: a. T% o1 J& A; b
代码: # n( g3 Z% B: {+ W; B<match target="font"> ; \: N4 z e% C- ]9 {9 O* H/ o( G4 x. k<edit name="hinting" mode="assign"> 5 ^0 N0 j" A6 K8 w T<bool>true</bool><!— 改成 false 即可关闭 --> , {1 i; z. B9 V9 a0 c& S
</edit> . E& ?+ o) I( V4 S) l
</match> ' G, j2 ^# p6 ~, j+ Q5 A/ T4 I s
+ [2 S. Y' r6 P8 q即可对所有具备 hinting 的字体使用 hinting + `# j* c. m8 s! h
代码: " @+ D' k5 g& h% R9 q/ j: H. x<match target="font"> & I) z& r4 V. c# o9 t, v
<test name="family" compare="eq"> 9 c5 Z; l( x$ O4 _7 f6 N
<string>fontname</string> $ [3 _+ \1 R. q- f</test> & K/ `3 a+ n& B' X0 E; U
<edit name="hinting" mode="assign"> 2 [# r+ j, |- l7 q- \& z% n<bool>true</bool><!— 改成 false 即可关闭 --> 2 N" d2 r$ e. ^0 b: |1 r `</edit> ; q# e# l3 z8 O$ ?4 ]</match> * y! P4 J0 c5 m, w7 \! h
3 U( K3 s# O+ W# y- S! d
可以对字体族(family)为 fontname 的有 hinting 字体使用 hinting - \* x4 b7 I; X2 U对于字体的 hinting 有四种风格 hintnone、 hintslight、hintmedium、hintfull 分别是无 hinting、轻度 hinting、中等 hinting、完全 hinting。对应于微调的强弱 0 g# \# G7 `7 G! e0 e; C在 /etc/fonts/fonts.conf 或者 /etc/fonts/local.conf 或者 ~/.fonts.conf 内加入 2 [( f7 I- X9 q- B代码: 1 w r* p3 n8 I {' k7 {0 @3 k<match target="font"> 1 H2 q. a( q! }& J" C4 Y8 c- Y& F<edit name="hintstyle" mode="assign"> $ Q& h9 U' Q2 k/ k; N: }% d! v
<const> hintfull </const><!— 可改成 hintnone、 hintslight、hintmedium --> 1 \( L: a; x' E! g7 }# t; O
</edit> 9 V" D7 T+ d* P. n* ]
</match> 0 P% k, b8 X: W: X* c( [7 F; v
1 c1 S5 n, P/ F7 f' v
即可调整所有具备 hinting 的字体的 hinting 风格 / M% Q7 L* h% z. L