准备

工具fontforge,原名pfaedit,主页:http://fontforge.sourceforge.net/

原料:两款中文字体。一款作为“常规”字体显示,一款作为“粗体”显示。两款字体并不一定是同一种,只要你自己看着舒服就行。但是粗体比常规粗是必须的。当然,如果你不这么做我也没办法。

优点:不用对现有字体引擎打补丁、做修改。

缺点:比较麻烦;有版权问题;比较配套的字体不好找。

附言:经wxz8指点后,添加了斜体的制作方法。

备注:Windows的ArialCourierTimesVerdana等都是通过定义4个相关字体实现的粗斜体,而不是用算法.这样的效果应该不错。

我这里以方正圆体为例。

目标:以方正准圆作为“常规”字体显示,方正粗圆作为“粗体”显示,统一改为FZYuanTi

没用中文名的原因是在不打firefly( http://firefly.idv.tw/setfont-xft/ )补丁的情况下无法显示中文字体名。

制作常规体

1. 安装完成fontforge后,在终端里输入fontforge运行,在弹出的界面里载入方正准圆(fzy3k.ttf)。

2. 点击菜单栏的Element--Font Info

Fontname改为FZYuanTi_JT(这一步的修改将显示为PostScript名。右键--属性,Meta信息就可看到);

Family Name改为FZYuanTi

Name For Humans改为FZYuanTi(这一步不改也可以,但为了统一我还是改了);

Weight改为Medium(MS带的字体这里均为Book,你不改也可以);

关键是Family Name应该和你将用的“粗体”统一,名字可以任意。我用FZYuanTi

3. 切换到TTF Values选项卡

Weight Class改为500 Medium(MS带的字体这里均为400 Book,你不改也可以)。

4. 切换到Panose选项卡

Weight改为Medium

5. 切换到TTF Names选项卡

在下面第二个选框内选择Chinese(PRC)zh_CN

改变第一个选框内的内容为Family,此时将下面输入框内的内容改为FZYuanTi

改变第一个选框内的内容为Fullname,此时将下面输入框内的内容改为FZYuanTi

改变第一个选框内的内容为UniqueID,此时将下面输入框内的内容改为Founder:FZYuanTi Regular

然后将下面第二个选框内选择English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了、方便选择。如果我不是色盲的话应该是绿色的);

做与Chinese(PRC)zh_CN类似的修改,即修改FamilyFullnameUniqueID三部分。

6. 点击OK关闭对话框后,如果弹出窗口提示不匹配,询问是否改变的话,点击Retain All,不做改变。

7. 选择File--Generate Fonts,选择True Type,点击Save后生成字体,文件名任意,我取为FZYuanTi_regular.ttf。如果弹出窗口提示什么Em Size的话不用理会,点击yes确定。

制作粗体

1. 安装完成fontforge后,在终端里输入fontforge运行,在弹出的界面里载入方正粗圆(fzy4k.ttf)。

2. 点击菜单栏的Element--Font Info

Fontname改为FZYuanTi-Bold_JT(这一步的修改将显示为PostScript名。右键--属性,Meta信息就可看到);

Family Name改为FZYuanTi

Name For Humans改为FZYuanTi Bold(这一步不改也可以,但为了统一我还是改了);

Weight改为Bold

关键是Family Name应该和你将用的“常规”统一,名字可以任意。我用FZYuanTi

3. 切换到TTF Values选项卡

Weight Class改为700 Bold

4. 切换到Panose选项卡

Weight改为Bold

5. 切换到TTF Names选项卡

在下面第二个选框内选择Chinese(PRC)zh_CN

确认第一个选框内的内容为Styles(SubFamily),此时将下面输入框内的内容改为Bold

改变第一个选框内的内容为Family,此时将下面输入框内的内容改为FZYuanTi

改变第一个选框内的内容为Fullname,此时将下面输入框内的内容改为FZYuanTi Bold

改变第一个选框内的内容为UniqueID,此时将下面输入框内的内容改为Founder:FZYuanTi Bold

然后将下面第二个选框内选择English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了、方便选择);

做与Chinese(PRC)zh_CN类似的修改,即修改Styles(SubFamily)FamilyFullnameUniqueID四部分。

6. 点击OK关闭对话框后,如果弹出窗口提示不匹配,询问是否改变的话,点击Retain All,不做改变。

7. 选择File--Generate Fonts,选择True Type,点击Save后生成字体,文件名任意,我取为FZYuanTi_bold.ttf。如果弹出窗口提示什么Em Size的话不用理会,点击yes确定。

制作斜体

1. 安装完成fontforge后,在终端里输入fontforge运行,在弹出的界面里载入刚才修改过的常规字体(FZYuanTi_regular.ttf)。

2. 点击菜单栏的Element--Font Info

Fontname改为FZYuanTi-Italic_JT(这一步的修改将显示为PostScript名。右键--属性,Meta信息就可看到);

Family Name改为FZYuanTi

Name For Humans改为FZYuanTi Italic(这一步不改也可以,但为了统一我还是改了);

Weight改为Medium(MS带的字体这里均为Book,你不改也可以);

关键是Family Name应该和你将用的“粗体”统一,名字可以任意。我用FZYuanTi

3. 切换到TTF Values选项卡

Weight Class改为500 Medium(MS带的字体这里均为400 Book,你不改也可以)。

4. 切换到Panose选项卡

Weight改为Medium

5. 切换到TTF Names选项卡

在下面第二个选框内选择Chinese(PRC)zh_CN

确认第一个选框内的内容为Styles(SubFamily),此时将下面输入框内的内容改为Italic

改变第一个选框内的内容为Family,此时将下面输入框内的内容改为FZYuanTi

改变第一个选框内的内容为Fullname,此时将下面输入框内的内容改为FZYuanTi Italic

改变第一个选框内的内容为UniqueID,此时将下面输入框内的内容改为Founder:FZYuanTi Regular Italic

然后将下面第二个选框内选择English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了、方便选择);

做与Chinese(PRC)zh_CN类似的修改,即修改Styles(SubFamily)FamilyFullnameUniqueID四部分。

6. 切换到General选项卡,在“Italic Angle:”后输入12

7. 点击OK关闭对话框后,如果弹出窗口提示不匹配,询问是否改变的话,点击Retain All,不做改变。

8. 选择Edit--Select--Select All,然后执行Element--Transform

在新弹出的对话框中改变第二个选框内的内容为Skew,在将其后的数值改为12(数值可根据你的视觉需要任意输入,Windows自带的英文字体多为10121316。你可以先单独选中一个字体Skew一下试试看倾斜程度是否合适)。点击OK确定。

9. 在弹出的警告对话框中点击OK确定,如果弹出什么错误提示的话不用理会,一路回车。完成后会看到字体已变为斜体。接着按照刚才的警告执行Element--Add Extrema

最后选择File--Generate Fonts,选择True Type,点击Save后生成字体,文件名可任意。我取为FZYuanTi_Italic.ttf。如果弹出窗口提示什么Em Size的话不用理会,点击yes确定。

制作粗斜体

1. 安装完成fontforge后,在终端里输入fontforge运行,在弹出的界面里载入刚才修改过的粗体(FZYuanTi_bold.ttf)。

2. 点击菜单栏的Element--Font Info

Fontname改为FZYuanTi-BoldItalic_JT(这一步的修改将显示为PostScript名。右键--属性,Meta信息就可看到);

Family Name改为FZYuanTi

Name For Humans改为FZYuanTi Bold Italic(这一步不改也可以,但为了统一我还是改了);

Weight改为Bold

关键是Family Name应该和你将用的“粗体”统一,名字可以任意。我用FZYuanTi

3. 切换到TTF Values选项卡

Weight Class改为700 Bold

4. 切换到Panose选项卡

Weight改为Bold

5. 切换到TTF Names选项卡

在下面第二个选框内选择Chinese(PRC)zh_CN

确认第一个选框内的内容为Styles(SubFamily),此时将下面输入框内的内容改为Bold Italic

改变第一个选框内的内容为Family,此时将下面输入框内的内容改为FZYuanTi

改变第一个选框内的内容为Fullname,此时将下面输入框内的内容改为FZYuanTi Bold Italic

改变第一个选框内的内容为UniqueID,此时将下面输入框内的内容改为Founder:FZYuanTi Bold Italic

然后将下面第二个选框内选择English(US)en_US(这里字体所支持的语言会用不同颜色显示,直观明了、方便选择);

做与Chinese(PRC)zh_CN类似的修改,即修改Styles(SubFamily)FamilyFullnameUniqueID四部分。

6. 切换到General选项卡,在“Italic Angle:”后输入12

7. 点击OK关闭对话框后,如果弹出窗口提示不匹配,询问是否改变的话,点击Retain All,不做改变。

8. 选择Edit--Select--Select All,然后执行Element--Transform

在新弹出的对话框中改变第二个选框内的内容为Skew,在将其后的数值改为12(数值可根据你的视觉需要任意输入,Windows自带的英文字体多为10121316。你可以先单独选中一个字体Skew一下试试看倾斜程度是否合适)。点击OK确定。

9. 在弹出的警告对话框中点击OK确定,如果弹出什么错误提示的话不用理会,一路回车。完成后会看到字体已变为粗斜体。接着按照刚才的警告执行Element--Add Extrema

最后选择File--Generate Fonts,选择True Type,点击Save后生成字体,文件名可任意。我取为FZYuanTi_bold_Italic.ttf。如果弹出窗口提示什么Em Size的话不用理会,点击yes确定。

安装字体

1./usr/share/fonts目录下新建local目录,把刚才制作好的四个字体复制到/usr/share/fonts/local下。

2. 执行

 # ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale # cp /usr/share/fonts/local/fonts.scale /usr/share/fonts/local/fonts.dir 

3. 更改/etc/X11/XF86Config(如果你用的X是xorg的话就应改修改xorg.conf),在字体字段加入一行

 FontPath "/usr/share/fonts/local" 

类似于

 RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/share/fonts/local" FontPath "unix/:7100" 

4. 更改/etc/X11/fs/config,在查找字体字段增加一行

 /usr/share/fonts/local, 

类似于

 catalogue = /usr/share/fonts/zh_CN/TrueType, /usr/share/fonts/local, /usr/X11R6/lib/X11/fonts/korean, 

5. 编辑/etc/fonts/fonts.conf,在每个字体字段最前面加入

 <family>FZYuanTi</family> 

类似于

 <alias> <family>FZYuanTi</family> <family>Bitstream Vera Serif</family> <family>Times</family> <family>Times New Roman</family> <family>Nimbus Roman No9 L</family> <family>Luxi Serif</family> <family>Kochi Mincho</family> <family>AR PL SungtiL GB</family> <family>AR PL Mingti2L Big5</family> <family>Baekmuk Batang</family> <default><family>serif</family></default> </alias> 

6. 编辑/etc/gtk-2.0/gtkrc(这一步是为在KDE下GTK2的程序设置字体。如果你用的是gnome就不用修改,否则字体设置会不起作用),加入

 style "user-font" { font_name="FZYuanTi 12" } widget_class "*" style "user-font" 

7. 注销或者执行init 3退出X。 8. 执行

 # fc-cache -fv # /etc/init.d/xfs restart 

9. startx或者init 5进入X后,在字体设置里选择FZYuanTi,大小为12即可。

使用替换字体

往往一款中文字体里的英文字符不是很好看,所以为达到更好的显示效果就会使用替换字体(显示中文时使用指定的中文字体,遇到英文时就使用另一款英文字体替换)。这也可以解决中文字体丢字符的问题(有时要显示的字符没有包含在这款中文字体里,此时就可以用包含这些字符的字体来替换)例如常用的Tahoma替换Simsun。

方正圆体的英文部分过于紧凑,不好看。我个人觉得Bitstream Vera Sans与其搭配很好(当然你也可以用Windows自带的Arial)。

1. 编辑/etc/fonts/fonts.conf,把Bitstream Vera Sans (Arial)加在FZYuanTi前,类似

 <alias> <family>Bitstream Vera Sans</family> <family>FZYuanTi</family> <family>Bitstream Vera Serif</family> <family>Times</family> <family>Times New Roman</family> <family>Nimbus Roman No9 L</family> <family>Luxi Serif</family> <family>Kochi Mincho</family> <family>AR PL SungtiL GB</family> <family>AR PL Mingti2L Big5</family> <family>Baekmuk Batang</family> <default><family>serif</family></default> </alias> 

2. 编辑/etc/gtk-2.0/gtkrc(这一步是为在KDE下GTK2的程序设置字体。如果你用的是gnome就不用修改,否则字体设置会不起作用)。加入

 style "user-font" { font_name="Bitstream Vera Sans,FZYuanTi 12" } widget_class "*" style "user-font" 

3. 运行qtconfig,选择Fonts选项卡,在Font Substitution里选择Bitstream Vera SansFamily,然后在下面的Substitution Family里把FZYuanTi加入,保存退出。

4. 在字体设置里选择Bitstream Vera Sans

进一步美化字体

替换字符

到以上为止,使用了替换字体后,显示效果应该已经可以算不错了。如果你觉得不够满意,不想用那么多字体的话,可以直接修改字体,用一款英文字体替换掉中文字体里的相同部分。

还以上面的方正圆体Bitstream Vera Sans为例。用Bitstream Vera Sans替换掉与方正圆体里相同的字符,如果圆体里没有某个字符的话就直接用Bitstream Vera Sans补足(如果你觉得Bitstream Vera Sans太粗、字体间距大的话也可以用Windows的Arial甚至是Tahoma)。

注意字体的搭配,斜体配斜体,粗体配粗体。下面以粗斜体为例。

运行fontforge,分别打开/usr/share/fonts/bitstream-vera/VeraBI.ttf(Bitstream Vera Sans的粗斜体)和刚才做好的FZYuanTi_bold_Italic.ttf

Bitstream Vera Sans的窗口中,选择View--Compacted View,点击菜单栏的Element--Font Info--Encoding可以看到总共有268个字符,不算多,慢慢来还可以接受。如果太多的话,我劝你还是放弃吧,除非你想锻炼耐心;

点击菜单栏的Element--Font Info--Encoded View,把浏览方式改回去(生成字体以前一定要改回);

切换到方正圆体Element--Font Info--General选项卡把Em Size改为2048,即与Bitstream Vera Sans一样(两款字体的Em Size一定要一样,否则最后生成的字体会大小不一)。点击OK后,等待转换完成;

然后在方正圆体里用鼠标选中与Bitstream Vera Sans重复的字符(可以拖动,多选),右键,Clear清除,再用复制、粘贴把Bitstream Vera Sans的字符都贴过来即可(这一点说起来最轻松,但是做起来却最浪费时间)。有的字符在方正圆体没有包括,直接贴过来就行了。可以用View--Next Defined Char直接转到下一个字符,否则找起来很麻烦;

可能是改的字体的问题,别人复制都没问题,但是在我改的这两个字体里,直接复制后部分字符会变形,所以使用了合并功能(你做字体的时候如果不能复制粘贴的话,可以试试合并);

方正圆体里与Bitstream Vera Sans重复的字符都清除后,选择Element--Merge Fonts,在Merge Fonts窗口中选择Bitstream Vera Sans。完成后,File--Generate Fonts生成字体即可;

合并字体时,只会合并原字体(这里是方正圆体)里没有包含的字符,而不会覆盖已有的字符,所以要先清除方正圆体里与Bitstream Vera Sans重复的字符后再合并;

当然你也可以用Bitstream Vera Sans做基础把方正圆体合并进来,但这时你要修改的字体信息就多了,我不建议这样做。

此时就不用修改配置文件替换字体了,都使用FZYuanTi就行了。

导入点阵(位图)字体

有人可能喜欢用Simsun,觉得小字体时中文清晰锐利。那是因为Simsun包含了3个点阵字体。我们把它提取出来。

运行fontforge,在装入位图字体对话框中Select All装入。File--Generate Fonts,在两个下拉列表里分别选择No Outline FontBDF即可生成bdf格式的位图字体。

得到点阵字体后,就可以把他们加入自己想要的字体里。用fontforge打开任一款矢量字体(ttf),File--Import,格式选BDF。导入后File--Generate Fonts,分别选择True TypeIn TTF生成后就是包含点阵字的ttf。当系统显示时,如果大小与内嵌的点阵字相同的话会优先使用点阵字体显示。

另:Windows里除了Simsun以外Mingliu也包含了6个点阵字体,还有gb18030Simsun

Starsuite 7.0soui.ttf里能发现11~21pixel的点阵字。

unisun里包含了6个点阵。其中Simsun的点阵没有latin1部分,所以在显示时会使用ttf中的英文,造成效果不好。

但有些字体包含的点阵信息是fontforge读不出的,各位试试东文宋体就知道了。9~12号格外清晰锐利,无论AA与否。而且fontforge打开后直接生成字体会小好几M。

在某些方正宋体18030方正黑体18030也含点阵但是一样读不出,用gnome-font-viewer就很明显能看到了,特别是方正黑体。

文笔有限再加上才疏学浅,多有不当之处,还希望大家多多指正。包括错别字。

作者拾遗

方正细圆+方正准圆是一对比较合适的字体。如果你觉得字体有些发虚模糊的话,可以用方正准圆+方正粗圆搭配。有一点要说一下,圆体在大字体时使用AA会很好看,但是在小字体(例如经常使用的9、10号字)时效果就不怎么好了。我觉得准圆(粗圆)比细圆(准圆)粗的不够,显示粗体的时候,只感觉到黑感觉不到粗。

细圆+粗圆方正黑体+方正大黑东文黑体+东文粗黑华文宋体+华文中宋搭配也都不错。

至今没找到能做宋体粗体的字体,希望能有人给出好建议;如有好的字体搭配建议也尽管共享出来。多谢。

效果截图

修改TTF字体美化显示效果【原文转自:http://www.linuxfans.org/】相关推荐

  1. 修改ttf字体美化显示效果

    很多人在使用 linux 做桌面时常常会抱怨字体模糊.破碎变形.英文不好看.没有粗斜体等.在 firefly(台湾) http://firefly.idv.tw/test/Forum.php?Boar ...

  2. 如何编辑ttf字体文件

    libfreetype的目标是以最小的内存最快的速度,读取和渲染字体.因此libfreetype并不适宜用来编辑ttf字体文件. 编辑字体文件,可以用FontCreator.微软fonttools.f ...

  3. ubuntu下修改终端字体颜色以及terminator字体美化

    Ubuntu下终端字体如果全是白色很不直观,可以根据自己喜好修改颜色. 2019年快乐,ros indigo很快就要停止维护了,昨天把ubuntu重装成16.04,装了ros kinetic,以前配好 ...

  4. MacType - 美化 Windows 字体的神器!(让字体渲染显示效果比苹果电脑更清晰炫丽)

    软件下载地址:http://dl.vmall.com/c0t6h3wo3k点击打开链接 苹果 Mac 系统总能让人眼前一亮,除了其精美的软件界面设计外,最重要是其文字显示效果(渲染方式)比 Windo ...

  5. Linux字体美化实战(Fontconfig配置)(转)

    原文地址:http://www.jinbuguo.com/gui/linux_fontconfig.html 本文的主题是Linux环境下的字体美化,但是首先得要有字体,然后才能谈美化.所以第一件事就 ...

  6. 我的AA字体美化方法【方正圆体字】(转)

    我的AA字体美化方法[方正圆体字](转)[@more@]使用AA字体进行美化实际上很简单,所做的工作就是把字体安装的系统中,然后使用之.不过,为了追求更加完美的效果,还需要做一点点配置工作.下面说一下 ...

  7. ttf字体库裁剪工具制作与使用 sfntly,FontSubsetGUI,FontPruner

    https://blog.csdn.net/linxinfa/article/details/88427808 关于字体剥离和精简工具 FontSubsetGUI 和 FontPruner 的比较. ...

  8. Ubuntu 所需要的中文字体美化操作步骤

    中文字体美化是个很讨厌的事情,无数初学者在这里面浪费了无数时间,做了无数没有意义的事情.但这也是不得不做的,我把 Debian/Ubuntu 所需要的中文字体美化操作步骤详细记录在这里,希望能节约大家 ...

  9. 【crunch bang】字体美化

    中文字体美化是个很讨厌的事情,无数初学者在这里面浪费了无数时间,做了无数没有意义的事情.但这也是不得不做的,我把 Debian/Ubuntu 所需要的中文字体美化操作步骤详细记录在这里,希望能节约大家 ...

最新文章

  1. 英文linux学习app,Linux应用软件,Linux Application Software,音标,读音,翻译,英文例句,英语词典...
  2. 802.15.4的超帧
  3. java和python的比较-java 和 python的一些对比
  4. ViewFlipper的功能和用法
  5. Matlab | Matlab从入门到放弃(8)——线性代数
  6. 云栖大会 | 开源引力峰会线下参会指南
  7. [导入]C#中TextBox只能输入数字的代码
  8. vsftp 简单教程
  9. python爬虫从入门到放弃-python爬虫从入门到放弃(八)之 Selenium库的使用
  10. 安卓平台中的动态加载技术分析
  11. 【物理应用】基于matlab波数谱计算【含Matlab源码 508期】
  12. js高级学习笔记(b站尚硅谷)-6-IIFE
  13. 细说 MySQL登录
  14. CVPR 2020 最佳论文提名 | 神经网络能否识别镜像翻转
  15. 超级经典回帖专用语(转载)
  16. 怎样把QQ群降级(1000人降到200或500人,500人降到200)
  17. Linux系统的优点小结
  18. Kaggle无法出现人机验证的解决办法
  19. 永宏B1主机2个常见问题
  20. 浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析

热门文章

  1. Unity3D学习笔记(6)—— 飞碟射击游戏
  2. 加勒比海盗5——死无对证
  3. 复杂网络中节点重要性方面的研究热点问题
  4. Python爬虫:scrapy爬取斗鱼直播图片
  5. 李建忠设计模式——装饰模式
  6. verilog中always和initial的区别
  7. HDU 3613 Best Reward 扩展kmp算法(将一个字符串分成两个回文串)
  8. Springboot手机验证码
  9. EEG-MI 基于EEG信号的运动想象分类实验
  10. c语言应用(2)试卷管理