Difference between revisions of "Fonts (简体中文)"

From ArchWiki
Jump to: navigation, search
('''2 自由中文字体''')
m (updated AUR package name)
(42 intermediate revisions by 16 users not shown)
Line 1: Line 1:
[[Category:General (简体中文)]]
+
[[Category:简体中文]]
 +
[[Category:Fonts (简体中文)]]
 +
[[Category:Graphics and desktop publishing (简体中文)]]
 +
[[cs:Fonts]]
 +
[[en:Fonts]]
 +
[[es:Fonts]]
 +
[[it:Fonts]]
 +
[[ja:Fonts]]
 +
[[ru:Fonts]]
 +
[[tr:Yazıtipleri]]
 +
[[zh-TW:Fonts]]
 +
{{TranslationStatus (简体中文)|Fonts|2012-10-11|227928}}
 +
{{Translateme (简体中文)}}
 +
{{Article summary start|摘要}}
 +
{{Article summary text|包含了在 Arch Linux 中安装和使用字体的信息}}
 +
{{Article summary heading|合法性}}
 +
{{Article summary text|某些字体包可能会遇到一些法律限制。}}
 +
{{Article summary heading|相关页面}}
 +
{{Article summary wiki|Font Configuration (简体中文)}}
 +
{{Article summary wiki|Java Fonts - Sun JRE}}
 +
{{Article summary wiki|MS Fonts}}
 +
{{Article summary end}}
 +
From [[Wikipedia:Computer font|Wikipedia]]:
 +
:''A computer font (or font) is an electronic data file containing a set of glyphs, characters, or symbols such as dingbats.''
 +
== 字体类型 ==
  
 +
大多数当代电脑使用的不是点阵字体就是矢量字体。
 +
;点阵字体: 每种字形的每种形式和每种尺寸的图像都由点或者像素组成的矩阵构成。由于位图的原故,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下。但对于 12-16px 这样小的汉字,点阵字体常常比其它类型的字体在屏幕上更好的显示效果。常见的点阵字体有 bdf,pcf,fnt,hbf 等格式。
 +
;矢量字体: 使用贝塞尔曲线, 绘图指令和数学公式来描述每种字形,使得字体可以适应各种尺寸。
  
 +
=== 通用类型 ===
  
=前言 :=
+
* {{ic|bdf}} and {{ic|bdf.gz}} – 点阵字体,“b”代表点阵,“d”代表布局,“f”代表形式,用gzip压缩 {{ic|bdf}}。
 +
* {{ic|pcf}} and {{ic|pcf.gz}} – 点阵字体,“p”代表可移植,“c”代表编译 “f”代表字体,用gzip压缩 {{ic|pcf}}。
 +
* {{ic|psf}},{{ic|psfu}},{{ic|psf.gz}} and {{ic|psfu.gz}} – 点阵字体,“PC”,“s”代表屏幕,“f”代表字体,“PC”,“s”代表屏幕,“f”代表字体,“U”代表Unicode,用gzip压缩(不适用于X.Org)。
 +
* {{ic|pfa}} and {{ic|pfb}} – 矢量字体,“P”代表PostScript,“f”代表字体,“A”代表ASCII。“P”代表PostScript,“f”代表字体,“b”代表二进制。PostScript字体包含内嵌打印令。
 +
* {{ic|ttf}} – outline,“T”rue“T”ype,“f”代表字体。作为PostScript字体的替代。
 +
* {{ic|otf}} – outline,“O”pen“T”ype,“f”代表字体。带有PostScript打印指令的TrueType字体。
  
Arch Linux 是一个定制性很强的发行版,其设计的哲学决定了Arch Linux 不太可能像SUSE、Fedora、Mandriva等发行版一样预设了一套完善的字体配置,Arch 的设计哲学更像Gentoo Linux。Arch Linux需要用户进行一定的定制,用户在定制、配置过程中能学到更多的知识,这也是Arch Linux的设计哲学之一。
+
在多数情况下,TrueType和OpenType的技术差异可以忽略,一些带有{{ic|ttf}}扩展的字体实际上是OpenType字体。
  
=一 .字体相关库的简介=
+
=== 其它类型 ===
  
==1 . LibXft ==
+
排版程序“TeX”和配套的字体软件“Metafont”用它们自己的方法渲染字体。一些用于这两个程序的字体的文件后缀是{{ic|*pk}}, {{ic|*gf}}, {{ic|mf}} and {{ic|vf}}。
  
libXft库是为了给X应用程序提供一个能访问FreeType字体光栅化引擎和X渲染扩展的、便于使用的接口,鉴于FreeType没有提供配置和定制 字体的功能,Xft也担负了这一任务。Xft提供了新的字体命名约定、复杂而精密的字体匹配和选择机制,并对相关功能进行充分的抽象,从而使得一般应用程 序既能够从使用X渲染扩展的文本输出获得益处,又能在不支持这一扩展的X服务器上正常工作。
+
“FontForge”, 一个字体编辑程序,可能用自己的格式来储存字体,例如{{ic|sfd}}, “s”代表线条,“f”代表字体,“d”代表数据库。
  
libXft 是画字函数库, 它使用 Fontconfig match 到了所要的字型之后, 来决定该如何画这些字。libXft 会看情况而决定要不要使用 core protocol 或 XRender 来画字。libXft 主要作GTK 2 (GTK < 2.8.0)程序,QT 程序的画字函数库。
+
[http://www.w3.org/TR/SVG/fonts.html SVG]格式也有自己的字体描述方法
  
==2 .Cairo==
+
== 安装 ==
  
一个支持多种输出的向量图形库,也就是说,cairo是种画图的工具库,他可以向多种设备上画图.可以输出到pdf,ps,xlib,XCB,win32,svg。基于GTK ( = >  2.8.0)的程序用cairo 画字而不再使用libXft 。
+
你可以使用多种方法安装字体。
  
==3 .Fontconfig==
+
=== Pacman ===
  
Fontconfig 包含两个基本的模块,即读取XML文件并建立内部配置的配置模块和接受请求的字体样板并返回最接近所需字体的匹配模块。
+
有效的源中的字体和字体集可以使用[[Pacman|pacman]]来安装。 可以使用以下方式查找字体:
 +
$ pacman -Ss font
 +
或者也可以只查找{{ic|ttf}}字体:
 +
$ pacman -Ss ttf
  
==4 .Freetype==
+
一些字体(例如Terminus)被安装在{{ic|/usr/share/fonts/local}}中,这个路径默认没有被加入字体搜索路径中。通过在{{ic|~/.xinitrc}}中加入以下命令将可以在X11中使用这些字体:
 +
{{bc|
 +
xset +fp /usr/share/fonts/local
 +
xset fp rehash
 +
}}
  
Freetype库是一个完全免费 ( 开源 ) 的、高质量的且可移植的字体
+
=== 创建字体包 ===
引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT,X11 PCF 等。支持单色位图 (homochromous bitmap) 、反走样位图( anti-alias bitmap )的渲染。 Freetype 是高度模块化设计的程序库。Freetype 提供 libXft/cairo 如何画字的信息,包括处理 anti-aliasing 或 hinting. 因此 freetype 的改变会影响到 libXft/cairo 画出来的字,而 Fontconfig 的改变会影响到 libXft/cario 如何去选字来画。
+
  
==5 .Pango ==
+
如果想让pacman能够管理你自己的字体,可以创建一个Arch软件包。这些包也可以在[[AUR]]中与社区成员分享.  以下是一个怎样创建软件包的基本样例。需要了解更多如何创建软件包的内容,请参考[[PKGBUILD]].
  
Pango 是个开源的整合到GTK+2的渲染国际化文本文件的库,pango 的名字是由 希腊语 "Pan" (Παν; lit. all) + 日语 "Go" (語; lit. language)组合成。也就是All language,Pango负责多国语言文本(如同一个文本文件中由英文,日文,中文等不同的语系组成)的渲染。需要注意的是Pango属于高级的库,不参加画字的过程。
+
{{bc|<nowiki>
 +
pkgname=ttf-fontname
 +
pkgver=1.0
 +
pkgrel=1
 +
depends=('fontconfig' 'xorg-font-utils')
 +
pkgdesc="custom fonts"
 +
arch=('any')
 +
source=(http://someurl.org/$pkgname.tar.bz2)
 +
install=$pkgname.install
  
 +
build()
 +
{
 +
  mkdir -p $pkgdir/usr/share/fonts/TTF
 +
  cp $srcdir/$pkgname/*.ttf $pkgdir/usr/share/fonts/TTF
 +
}
 +
</nowiki>}}
  
 +
这个PKGBUILD推断这些字体是TrueType字体。需要创建一个安装文件({{ic|ttf-fontname.install}})以便更新字体缓存:
  
=二 .基本概念=
+
{{bc|<nowiki>
 +
post_install() {
 +
  echo -n "Updating font cache... "
 +
  fc-cache -fs >/dev/null
 +
  mkfontscale /usr/share/fonts/TTF /usr/share/fonts/Type1
 +
  mkfontdir /usr/share/fonts/TTF /usr/share/fonts/Type1
 +
  echo "done"
 +
}
  
==1. '''点阵字体''' 与 '''矢量字体'''==
+
post_upgrade() {
 +
  post_install
 +
}
  
'''点阵字体'''也叫位图字体,其中每个字形都以一组二维像素 信息表示。由于位图的原故,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下。但对于 12-16px 这样小的汉字,点阵字体常常比其它类型的字体在屏幕上更好的显示效果。常见的点阵字体有 bdf,pcf,fnt,hbf 等格式。
+
post_remove() {
 +
  post_install
 +
}
 +
</nowiki>}}
  
对于常见的计算机操作系统,字体的显示算法需要一些字体的信息来优化屏幕显示效果,英文称为 hinting。汉字由于笔画复杂,所以 hinting 的方式与西文截然不同。使用在汉字字体中嵌入预先制作的点阵位图既可以有效地避免 hinting 算法带来的计算开销,同时屏幕上显示的汉字边缘清晰,易于阅读。
+
=== 手工安装字体 ===
  
 +
要安装不在源中的字体,推荐的方法请参考[[#创建字体包]]。这样使得pacman在以后能够移除或者更新它们。当然字体也可以通过手工方式安装。
  
'''矢量字体'''中每一个字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些数学矢量,然后 进行一定的数学运算来进行渲染。这类字体的好处是字体可以无限放大而不产生变形。矢量字体主要包括 Type1 和 TrueType 等几类。
+
要在系统范围内(对所有用户有效)安装字体,请将文件夹移动到 {{ic|/usr/share/fonts/}}目录。要为单个用户安装字体,请使用 {{ic|~/.fonts/}}。
  
=='''2 .内嵌点阵字的字体''' ==
+
同样你可能需要更新{{ic|/etc/X11/xorg.conf}}或{{ic|/etc/xorg.conf}}来指明新目录。查找字符串{{ic|FontPath}}以便在这些文件中找到正确的位置来插入你的新路径。查看[[#X.Org的字体]]以了解更多信息.
  
由于CJK字体的结构复杂,在小号字体只有使用点阵才能有清晰的显示效果,但是点阵字体很难进行缩,而且线条单一,在大号字体显示时就显得苍白无力。把点阵字体内嵌到矢量字体就能发挥两者的优点,并且也弥补了两者的不足。小号字体时清晰明朗,大号字体时字型饱满,形态丰富。常见的内嵌点阵字的字体有:北京中易电子公司宋体SimSun 、方正宋体(FZSongti)、文鼎PL上海宋(Uming)、Firefly的文鼎PL新宋(AR PL New Sung)等。
+
然后更新fontconfig的字体缓存:
  
==3 . Hinting 与 Autohinter==
+
$ fc-cache -vf
  
Hinting 用来最佳化字型显示的方法。由于屏幕的像素有限,向量字型的缩放需要有更多的考虑, 例如当一条线位在两个像素格子中间时, 该取左边的格子还是右边的格子? 如果这方面的控制没有做好,就常常会出现字型的衬线没有对齐,或是小字歪七扭八的情况。 Hinting 是额外的信息, 它告诉 renderer 该如何处理这些细节的部份,使得向量字在小字的时候能够好看。也因此 Hinting 是非常费时费人力的工作,TrueType 字型很多,但是有良好 Hinting 的字型不多。拙劣的 Hinting 就会让字变得很难看。
+
==== 过老的应用程序 ====
  
为了稍微改善这个问题,freetype 有 autohint 的功能,可以自动为没有 hint 的字型做 hinting 的工作。另外由于 TrueType 的 hinting 是有专利的,不能完全自由地使用, autohint 就不受这个限制。autohint 自然无法做得像人力的 hint 一样好,不过至少比没有 hint 要好些。话虽如此,对于许多笔划复杂的文字 (如中文) 目前 freetype 的 autohint 还做得不甚完美,而因为建立完整的 hinting 的难度,即使是英文字,原本就很高,内建有 hinting 的中文字型就少之又少了。所以常常有人抱怨中文字在屏幕上很难看,就是没有理想 hinting, 或者是使用了 autohinter 所造成的一些反效果。
+
过老而不支持fontconfig的应用程序(例如GTK+ 1.x应用,及{{ic|xfontsel}}),需要在字体目录创建索引:
  
==4 . AA(Anti-aliasing)==
+
$ mkfontscale
 +
$ mkfontdir
  
Antialiasing 是将字体在后台先以数倍的大小来绘画,然后再缩成想要的大小,未满一格的格子用灰阶补点。由于原本 X 所支持的 logic 运算不敷使用,所以才用 XRender 的 extension 来达成目的。
+
或在一条命令中包含多于一个目录:
  
Antialiasing 会给人一种朦胧的感觉,习惯了Windows XP 下清晰,锐利的字体显示时,Antialiasing 会让人不太适应,会让用户觉得Linux下的字体显示不如Windows XP。但是,其实 Antialiasing是一种很先进的显示技术 ,当长时间显示器上阅读的时候,Windows XP 下的锐利的字体显示风格,会让眼睛更加容易疲劳,使用Antialiasing,字体的显示更加柔和,更加适合长时间的在显示器上阅读文档,减少眼睛的疲劳。
+
$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash
  
微软的下一代OS Windows Vista 也将用ClearType 来取代传统的黑白,锐利的英文字体显示和点阵CJK 显示。ClearType的渲染效果和Linux下的 Anti-aliasing 效果很相似。
+
有时候X server可能会不能成功加载字体目录,这时你需要重新扫描{{ic|fonts.dir}}文件:
  
=三 .字体简介=
+
# xset +fp /usr/share/fonts/misc # Inform the X server of new directories
 +
# xset fp rehash                # Forces a new rescan
  
 +
查询字体是否已经生效,可以使用:
  
=='''1 自由(free)的英文字体'''==
+
$ xlsfonts | grep fontname
  
 +
=== Pango警告 ===
 +
当你的系统中安装了[http://www.pango.org/ Pango],它会从[http://www.freedesktop.org/wiki/Software/fontconfig fontconfig]查找字体来源。
  
Bitstream vera fonts,DejaVu fonts,MS True Type core fonts 等.
+
(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='common'
 +
(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'
  
DejaVu fonts[community repo]是在Bitstream vera fonts release 1.10 的基础上进行不断扩充的字体。
+
如果你看到类似的错误,或在应用程序中看到方块而不是文字,这表示你需要添加字体并更新字体缓存。以下示例使用{{Pkg|ttf-liberation}}字体讲解如何解决这个问题。使用root权限运行如下命令可以使字体在系统范围内生效。
  
MS True Type core fonts[ttf-ms-fonts]包含了Arial, Courier New, Times New Roman, Verdana等系列字体的总称。MS True Type core fonts 的licence 是EULA,可以合法的免费使用(感谢微软,嘿嘿!)。
+
# pacman -S ttf-liberation
 +
  -- output abbreviated, assumes installation succeeded --
 +
 +
# fc-cache -vfs
 +
/usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs
 +
/usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs
 +
/usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs
 +
/usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs
 +
/usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs
 +
/var/cache/fontconfig: cleaning cache directory 
 +
fc-cache: succeeded
  
 +
你可以这样测试一个正在设置的默认字体:
  
=='''2 自由中文字体'''==
+
# fc-match
wqy-bitmapfont
+
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
  
wqy-zenhei
+
=== X.Org中的字体 ===
  
ttf-arphic-ukai
+
为了让[[Xorg]]找到并使用你新安装的字体,你必须把字体路径加入到{{ic|/etc/X11/xorg.conf}}(另一个X.Org配置文件可能也可以)。
  
ttf-arphic-uming
+
这个例子演示了必须加入到{{ic|/etc/X11/xorg.conf}}中的代码片断。请根据你的实际需要添加或删除路径。
 +
# 让X.Org知道自定义字体目录
 +
Section "Files"
 +
    FontPath    "/usr/share/fonts/100dpi"
 +
    FontPath    "/usr/share/fonts/75dpi"
 +
    FontPath    "/usr/share/fonts/cantarell"
 +
    FontPath    "/usr/share/fonts/cyrillic"
 +
    FontPath    "/usr/share/fonts/encodings"
 +
    FontPath    "/usr/share/fonts/local"
 +
    FontPath    "/usr/share/fonts/misc"
 +
    FontPath    "/usr/share/fonts/truetype"
 +
    FontPath    "/usr/share/fonts/TTF"
 +
    FontPath    "/usr/share/fonts/util"
 +
EndSection
  
ttf-fireflysung
+
==字体包==
 +
以下是官方源和[[AUR]]中提供的安装包列表以保参考。支持Unicode的字体都标注上了“Unicode”字样。欲知详情请查看具体项目或维基百科。
  
=='''3 不合版权的中文字体'''==
+
===Braille===
 +
*{{Pkg|ttf-ubraille}} - Font containing Unicode symbols for ''braille''
  
 +
===International users===
  
'''LingSong :'''Tahoma+Simsun的“杂交”字体,Tahoma版权属于微软,Simsun字体的版权属于 北京中易电子公司。
+
====Arabic====
 +
*{{AUR|ttf-sil-lateef}} - Unicode Arabic font from SIL ''(AUR)''
 +
*{{AUR|ttf-sil-scheherazade}} - Unicode Arabic font from SIL ''(AUR)''
 +
*{{AUR|ttf-arabeyes-fonts}} - Collection of free Arabic fonts ''(AUR)''
  
'''Vera Sans YuanTi:'''Bitstream Vera+simsun点阵+方正准圆+方正粗圆的“杂交”字体。
+
====Birman====
 +
*{{AUR|ttf-myanmar3}} - Font for Myanmar/Burmese script ''(AUR)''
  
=四 .设置实例=
+
====Chinese, Japanese, Korean, Vietnamese====
  
 +
=====(Mainly) Chinese=====
 +
*{{AUR|ttf-tw}} -(繁體字)國字標準字體(楷書/宋體)母稿——中華民國教育部''(AUR)''.
 +
*{{AUR|wqy-microhei}} - 一种Sans-Serif风格的高质量CJK轮廓字体。"(AUR)''
 +
*{{Pkg|wqy-zenhei}} - 嵌入点阵宋体的黑体风格(sans-serif)中文轮廓字体(也支持部分日文和韩文).
 +
*{{Pkg|ttf-arphic-ukai}} -  楷體 Kaiti (brush stroke) unicode TTFonts  (建议开启抗锯齿)
 +
*{{Pkg|ttf-arphic-uming}} -  明體 Mingti (打印) unicode TTFonts 
 +
*{{Pkg|opendesktop-fonts}} - ''新宋'' 字体, 之前是 ttf-fireflysung 软件包
 +
*{{Pkg|wqy-bitmapfont}} - 中文点阵宋体(serif)
 +
*{{Pkg|ttf-hannom}} - 中文和越南文TrueType字体
  
==1 开启/关闭 AA ,Autohint 与 Hinting==
+
=====Japanese=====
+
*{{AUR|otf-ipafont}} - Formal style Japanese Gothic (sans-serif) and Mincho (serif) fonts set; one of the highest quality open source font. Default of openSUSE-ja. ''(AUR)''
 +
*{{AUR|ttf-vlgothic}} - Japanese Gothic fonts. Default of Debian/Fedora/Vine Linux ''(AUR)''
 +
*{{AUR|ttf-mplus}} - Modern Gothic style Japanese outline fonts. It includes all of Japanese Hiragana/Katakana, Basic Latin, Latin-1 Supplement, Latin Extended-A, IPA Extensions and most of Japanese Kanji, Greek, Cyrillic, Vietnamese with 7 weights (proportional) or 5 weights (monospace).
 +
*{{AUR|ttf-ipa-mona}}, {{AUR|ttf-monapo}} - Japanese fonts to show [http://en.wikipedia.org/wiki/2channel_Shift_JIS_art 2channel Shift JIS art] properly. ''(AUR)''
 +
*{{Pkg|ttf-sazanami}} - Japanese free TrueType font. This is outdated and not maintained any more, but may be defined as a fallback font on several environment.
  
a. 全部的字体使用autohint 和 antialiasing,渲染度为 hintfull ,通常这是一个很好的全局默认设置。也可以根据个人喜好使用渲染度为hintslight。
+
=====Korean=====
 +
*{{Pkg|ttf-baekmuk}} - Collection of Korean TrueType fonts
 +
*{{AUR|ttf-alee}} - Set of free Hangul TrueType fonts (''AUR'')
 +
*{{AUR|ttf-unfonts-core}} - Un fonts (default Baekmuk fonts may be unsatisfactory) (''AUR'')
 +
*{{AUR|ttf-nanum}} - Nanum series TrueType fonts (''AUR'')
 +
*{{AUR|ttf-nanumgothic_coding}} - Nanum series fixed width TrueType fonts (''AUR'')
  
 +
====Cyrillic====
 +
''Also see [[#Monospace]], [[#Sans]] and [[#Serif]]''
 +
*{{AUR|font-arhangai}} - Mongolian Cyrillic (''AUR'')
 +
*{{AUR|ttf-pingwi-typography}} - PingWi Typography (PWT) fonts (''AUR'')
  
<pre>
+
====Greek====
      <match target="font">
+
Almost all Unicode fonts contain the Greek character set (polytonic included). Some additional font packages, which might not contain the complete Unicode set but utilize high quality Greek (and Latin, of course) typefaces are:
                <edit name="autohint">
+
*{{AUR|otf-gfs}} - Selection of OpenType fonts from the Greek Font Society ''(AUR)''
                        <bool>true</bool>
+
*{{AUR|ttf-mgopen}} - Professional TrueType fonts from Magenta ''(AUR)''
                </edit>
+
                <edit name="hintstyle">
+
                        <const>hintfull</const>
+
                </edit>
+
                <edit name="antialias">
+
                        <bool>true</bool>
+
                </edit>
+
        </match>
+
  
</pre>
+
====Hebrew====
 +
*{{AUR|culmus}} - Nice collection of free Hebrew fonts
  
 +
====Indic====
 +
*{{Pkg|ttf-freebanglafont}} - Font for Bangla
 +
*{{Pkg|ttf-indic-otf}} - Indic OpenType Fonts collection (containing ttf-freebanglafont)
 +
:(This one contains a "look of disapproval" that might be more to your liking than the {{Pkg|bdf-unifont}} one mentioned elsewhere in this document)
 +
* {{Pkg|lohit-font}} - Indic TrueType fonts from Fedora Project (containing Oriya Fonts and more) ''(AUR)''
  
b. 小于16号的MS core fonts,关闭Antialiasing 和  Autohint,(使用hinting) 。可以根据个人喜欢调节字号的大小。
+
====Khmer====
 +
*{{Pkg|ttf-khmer}} - Font covering glyphs for Khmer language
 +
*[http://code.google.com/webfonts/family?family=Hanuman&subset=khmer Hanuman] ({{AUR|ttf-google-webfonts-hg}} or {{AUR|ttf-google-webfonts-git}})
  
 +
====Sinhala====
 +
*{{AUR|ttf-lklug}} - Sinhala Unicode font (''AUR'')
  
<pre>
+
====Tamil====
        <match target="font">
+
*{{AUR|ttf-tamil}} - Tamil Unicode fonts (''AUR'')
                <test name="family">
+
                        <string>Andale Mono</string>
+
                        <string>Arial</string>
+
                        <string>Comic Sans MS</string>
+
                        <string>Georgia</string>
+
                        <string>Impact</string>
+
                        <string>Trebuchet MS</string>
+
                        <string>Verdana</string>
+
                        <string>Courier New</string>
+
                        <string>Times New Roman</string>
+
                        <string>Tahoma</string>
+
                        <string>Webdings</string>
+
                        <string>Albany AMT</string>
+
                        <string>Thorndale AMT</string>
+
                        <string>Cumberland AMT</string>
+
                        <string>Andale Sans</string>
+
                        <string>Andy MT</string>
+
                        <string>Bell MT</string>
+
                        <string>Monotype Sorts</string>
+
                </test>
+
<test name="pixelsize" compare="less_eq">
+
<double>16</double>
+
</test>
+
                <edit name="autohint">
+
                        <bool>false</bool>
+
                </edit>
+
                <edit name="antialias">
+
                        <bool>false</bool>
+
                </edit>
+
        </match>
+
</pre>
+
  
==2 英文字和中文字等宽==
+
====Thai====
 +
*{{Pkg|ttf-thai}} - Font covering glyphs for Thai
 +
====Tibetan====
 +
*{{Pkg|ttf-tibetan-machine}} - Tibetan Machine TTFont
  
 +
===Math===
 +
*{{Pkg|font-mathematica}} - Mathematica fonts by Wolfram Research, Inc.
 +
*{{AUR|ttf-mathtype}} - MathType fonts ''(AUR)''
 +
*{{AUR|ttf-computer-modern-fonts}} - ''(AUR)''
  
 +
===Microsoft fonts===
 +
See [[MS Fonts]].
 +
 +
===Apple Mac OS X fonts===
 +
*{{AUR|ttf-mac}} - Mac OS X TrueType fonts. ''(AUR)''
 +
 +
===Monospaced===
 +
Here are some suggestions. Every user has their own favorite, so experiment to find yours.
 +
If you're in a hurry, you read Dan Benjamin's blog post: [http://hivelogic.com/articles/top-10-programming-fonts ''Top 10 Programming Fonts''].
 +
 +
Here's a long list of fonts by Trevor Lowing: http://www.lowing.org/fonts/.
 +
 +
====TrueType====
 +
* [[Wikipedia:Andalé Mono|Andalé Mono]] ({{AUR|ttf-ms-fonts}})
 +
* Anka/Coder ({{AUR|ttf-anka-coder}})
 +
* Anonymous Pro ({{AUR|ttf-anonymous-pro}}, included in {{AUR|ttf-google-webfonts-hg}} and {{AUR|ttf-google-webfonts-git}})
 +
* [[Wikipedia:Bitstream Vera|Bitstream Vera Mono]] ({{Pkg|ttf-bitstream-vera}})
 +
* [[Wikipedia:Consolas|Consolas]] ({{AUR|ttf-vista-fonts}})
 +
* [[Wikipedia:Courier New|Courier New]] ({{AUR|ttf-ms-fonts}})
 +
* Cousine ({{AUR|ttf-google-webfonts-hg}} or {{AUR|ttf-google-webfonts-git}}) - Chrome/Chromium OS replacement for Courier New (metric-compatible)
 +
* [[Wikipedia:DejaVu fonts|DejaVu Sans Mono]] ({{Pkg|ttf-dejavu}}) - Unicode
 +
* [[Wikipedia:Droid (font)|Droid Sans Mono]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-webfonts-hg}} and {{AUR|ttf-google-webfonts-git}})
 +
* Envy Code R ({{AUR|ttf-envy-code-r}})
 +
* [[Wikipedia:GNU FreeFont|FreeMono]] ({{Pkg|ttf-freefont}}) - Unicode
 +
* [[Wikipedia:Inconsolata|Inconsolata]] ({{Pkg|ttf-inconsolata}})
 +
* [[Wikipedia:Inconsolata|Inconsolata-g]] ({{AUR|ttf-inconsolata-g}}) - adds some programmer-friendly modifications
 +
* [[Wikipedia:Liberation fonts|Liberation Mono]] ({{Pkg|ttf-liberation}}) - Alternative to Courier New (metric-compatible)
 +
* [[Wikipedia:Lucida Console|Lucida Console]] ({{AUR|ttf-ms-fonts}})
 +
* [[Wikipedia:Lucida Typewriter|Lucida Typewriter]] (included in package {{Pkg|jre}})
 +
* [[Wikipedia:Monaco (typeface)|Monaco]] ({{Pkg|monaco-linux-font}})
 +
* Monofur ({{AUR|ttf-monofur}})
 +
 +
====Bitmap====
 +
*Default 8x16
 +
*Dina ({{Pkg|dina-font}})
 +
*Lime ({{Pkg|artwiz-fonts}})
 +
*[[Wikipedia:ProFont|ProFont]] ({{Pkg|profont}})
 +
*[[Wikipedia:Proggy Programming Fonts|Proggy Programming Fonts]] ({{AUR|proggyfonts}})
 +
*Proggy opti cyrillic ({{AUR|proggyopticyr-font}})
 +
*Tamsyn ({{AUR|tamsyn-font}})
 +
*[[Wikipedia:Terminus (typeface)|Terminus]] ({{Pkg|terminus-font}})
 +
*Unifont (glyphs like (look of disapproval)) ({{Pkg|bdf-unifont}})
 +
 +
===Sans-serif===
 +
 +
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=andika Andika] ({{AUR|ttf-andika}}, included in {{AUR|ttf-sil-fonts}})
 +
*[[Wikipedia:Arial|Arial]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:Arial Black|Arial Black]] ({{AUR|ttf-ms-fonts}})
 +
*Arimo ({{AUR|ttf-google-webfonts-hg}} or {{AUR|ttf-google-webfonts-git}}) - Chrome/Chromium OS replacement for Arial (metric-compatible)
 +
*[[Wikipedia:Calibri|Calibri]] ({{AUR|ttf-vista-fonts}})
 +
*[[Wikipedia:Candara|Candara]] ({{AUR|ttf-vista-fonts}})
 +
*[[Wikipedia:Constantia (typeface)|Constantia]] ({{AUR|ttf-vista-fonts}})
 +
*[[Wikipedia:Corbel (typeface)|Corbel]] ({{AUR|ttf-vista-fonts}})
 +
*[[Wikipedia:DejaVu fonts|DejaVu Sans]] ({{Pkg|ttf-dejavu}}) - Unicode
 +
*[[Wikipedia:Droid (font)|Droid Sans]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-webfonts-hg}} and {{AUR|ttf-google-webfonts-git}})
 +
*[[Wikipedia:GNU FreeFont|FreeSans]] ({{Pkg|ttf-freefont}}) - Unicode
 +
*[[Wikipedia:Impact (typeface)|Impact]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:Liberation fonts|Liberation Sans]] ({{Pkg|ttf-liberation}}, improved/reworked Cyrillic: {{Pkg|ttf-liberastika}}) - Alternative to Arial  (metric-compatible)
 +
*[[Wikipedia:Liberation fonts|Liberation Sans Narrow]] ({{Pkg|ttf-liberation}}) - Alternative to Arial Narrow (metric-compatible)
 +
*[[Wikipedia:Linux Libertine|Linux Biolinum]] ({{Pkg|ttf-linux-libertine}})
 +
*[[Wikipedia:Lucida Sans|Lucida Sans]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:Microsoft Sans Serif|Microsoft Sans Serif]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:PT Sans|PT Sans]] ({{AUR|ttf-google-webfonts-hg}} or {{AUR|ttf-google-webfonts-git}}) - 3 major variations: normal, narrow, and caption - Unicode: Latin, Cyrillic
 +
*[[Wikipedia:Tahoma (typeface)|Tahoma]] ({{AUR|ttf-tahoma}})
 +
*[[Wikipedia:Trebuchet MS|Trebuchet]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:Ubuntu-Title|Ubuntu-Title]] ({{AUR|ttf-ubuntu-title}})
 +
*[[Wikipedia:Ubuntu Font Family|Ubuntu Font Family]] ({{Pkg|ttf-ubuntu-font-family}})
 +
*[[Wikipedia:Verdana|Verdana]] ({{AUR|ttf-ms-fonts}})
 +
 +
===Script===
 +
 +
*[[Wikipedia:Comic Sans|Comic Sans]] ({{AUR|ttf-ms-fonts}})
 +
 +
===Serif===
 +
*[[Wikipedia:Cambria (typeface)|Cambria]] ({{AUR|ttf-vista-fonts}})
 +
*[[Wikipedia:Charis SIL|Charis]] ({{AUR|ttf-charis}}, included in {{AUR|ttf-sil-fonts}}) - Unicode: Latin, Cyrillic
 +
*[[Wikipedia:DejaVu fonts|DejaVu Serif]] ({{Pkg|ttf-dejavu}}) - Unicode
 +
*[[Wikipedia:Doulos SIL|Doulos]] ({{AUR|doulos-sil}}, included in {{AUR|ttf-sil-fonts}}) - Unicode: Latin, Cyrillic
 +
*[[Wikipedia:Droid (font)|Droid Serif]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-webfonts-hg}} and {{AUR|ttf-google-webfonts-git}})
 +
*[[Wikipedia:GNU FreeFont|FreeSerif]] ({{Pkg|ttf-freefont}}) - Unicode
 +
*[[Wikipedia:Gentium|Gentium]] ({{Pkg|ttf-gentium}}, included in {{AUR|ttf-sil-fonts}}) - Unicode: Latin, Greek, Cyrillic, Phonetic Alphabet
 +
*[[Wikipedia:Georgia (typeface)|Georgia]] ({{AUR|ttf-ms-fonts}})
 +
*[[Wikipedia:Liberation fonts|Liberation Serif]] ({{Pkg|ttf-liberation}}) - Alternative to Times New Roman (metric-compatible)
 +
*[[Wikipedia:Linux Libertine|Linux Libertine]] ({{Pkg|ttf-linux-libertine}}) - Unicode: Latin, Greek, Cyrillic, Hebrew
 +
*[[Wikipedia:Times New Roman|Times New Roman]] ({{AUR|ttf-ms-fonts}})
 +
*Tinos ({{AUR|ttf-google-webfonts-hg}} or {{AUR|ttf-google-webfonts-git}}) - Chrome/Chromium OS replacement for Times New Roman (metric-compatible)
 +
 +
===Unsorted===
 +
<!--This section should be absorbed into the Monospace/Serif/Sans-Serif structure-->
 +
*{{AUR|ttf-google-webfonts-git}} and {{AUR|ttf-google-webfonts-hg}} — a huge collection of free fonts (including ubuntu, inconsolata, droid, etc.) - Note: Your font dialog might get very long as >100 fonts will be added. {{AUR|ttf-google-webfonts-hg}} pulls down the entire Mercurial repository from the upstream Web Fonts project. {{AUR|ttf-google-webfonts-git}} pulls from a much smaller and leaner unofficial repository hosted on GitHub. ''(AUR)''
 +
*{{Pkg|ttf-mph-2b-damase}} — Covers full plane 1 and several scripts
 +
*{{AUR|ttf-symbola}} — Provides emoji and many many other symbols. ''(AUR)''
 +
*{{AUR|ttf-sil-fonts}} — Gentium, Charis, Doulos, Andika and Abyssinica from SIL ''(AUR)''
 +
*{{Pkg|font-bh-ttf}} — X.Org Luxi fonts
 +
*{{Pkg|ttf-cheapskate}} — Font collection from ''dustismo.com''
 +
*{{Pkg|ttf-isabella}} — Calligraphic font based on the ''Isabella Breviary'' of 1497
 +
*{{Pkg|ttf-junicode}} — Junius font containing almost complete medieval latin script glyphs
 +
*arkpandorafonts {{AUR|ttf-arkpandora}} — Alternative to Arial and Times New Roman fonts ''(AUR)''
 +
*{{Pkg|xorg-fonts-type1}} — IBM Courier and Adobe Utopia sets of [[Wikipedia:PostScript fonts|PostScript fonts]]
 +
 +
==控制台字体==
 +
 +
控制台,即没有运行X窗口系统的终端,默认使用ASCII字符集。这种字体和按键映射可以很容易地改变。
 +
 +
控制台字体被限制为256到512个字符。这些字体可以在{{ic|/usr/share/kbd/consolefonts/}}中找到。
 +
 +
''按键映射,''电脑在按下键和得到字符之间的对应关系,可以在{{ic|/usr/share/kbd/keymaps/}}的子目录中找到。
 +
 +
=== 预览和测试 ===
 +
 +
你可以从http://alexandre.deverteuil.net/consolefonts/consolefonts.html看到所有字体的图片预览。
 +
 +
甚至,你还可以使用{{ic|setfont}}命令临时改变字体来考虑要不要使用它作为默认字体。而使用{{ic|showconsolefont}}命令可以以表格形式查看字体中的字母或符号。
 +
 +
如果新换上的字体不适用,可以通过不带任何参数的{{ic|setfont}}命令来回滚到默认字体。即使控制台因字体改变而完全无法阅读,这条命令仍然可以起作用,用户只需要在看不见的情况下输入{{ic|setfont}}。
 +
 +
请注意{{ic|setfont}}只对当前正在运行的命令行起作用。其他命令行无论是否激活都不受影响。
 +
 +
==== 示例 ====
 +
 +
改变字体。这是一个很有代表性的示例:
 +
$ setfont /usr/share/kbd/consolefonts/gr737b-9x16-medieval.psfu.gz
 +
 +
或者使用{{ic|-m}}选项把字体改为有512个符号的字体,并且把键盘映射改为''ISO 8859-5'':
 +
$ setfont /usr/share/kbd/consolefonts/LatArCyrHeb-16.psfu.gz -m 8859-5
 +
 +
然后执行一条能在命令行显示字符的命令,如''manpage'',并且试用''vi''或''nano'',使用命令{{ic|showconsolefont}}查看符号表。
 +
 +
用命令回滚到默认字体:
 +
$ setfont
 +
 +
=== 修改默认字体 ===
 +
 +
要修改默认字体,需要修改{{ic|/etc/vconsole.conf}}中的{{ic|FONT<nowiki>=</nowiki>}}和{{ic|FONT_MAP<nowiki>=</nowiki>}}配置节(如果不存在则需要新建)。再次说明,字体可以在{{ic|/usr/share/kbd/consolefonts/}}目录中找到,键盘映射可以在{{ic|/usr/share/kbd/keymaps/}}的子目录中找到。
 +
 +
==== 示例 ====
 +
为了显示如''Č, ž, đ, š'' or ''Ł, ę, ą, ś''一类的字符,需要使用字体{{ic|lat2-16.psfu.gz}}:
 +
FONT=lat2-16
 +
这意味着ISO/IEC 8859的第二部分字符,并且使用16号字。你可以通过修改字号来改变字体大小,如lat2-08...16。8859规范指定的区域请参考[http://en.wikipedia.org/wiki/ISO/IEC_8859#The_Parts_of_ISO.2FIEC_8859 Wikipedia]。如果你经常在没有X Server的控制台工作,推荐使用Terminus字体。例如ter-216b是一种latin-2字体,16号,黑体。ter-216n是同样的字体但是正常体。Terminus字体最多有32号字。
 +
 +
现在需要设置正确的字符映射。lat2-16应该使用:
 +
FONT_MAP=8859-2
 +
 +
为了在早先的用户空间中使用指定的字体,即在引导过程中使用,可以添加{{ic|consolefont}}钩子到{{ic|/etc/mkinitcpio.conf}}:
 +
HOOKS="base udev autodetect pata scsi sata filesystems '''consolefont''' '''keymap'''"
 +
 +
然后重建Linux映像:
 +
# mkinitcpio -p linux
 +
 +
{{注意|如果安装了多于一个内核,则以上步骤必须为每个内核执行一次。}}
 +
 +
查阅[[Mkinitcpio#HOOKS]]以获得更多信息。
 +
 +
如果字体在引导时仍然没有改变,或只是临时改变了,则最有可能是图形驱动初始化,控制台切换到帧缓存时字体被重置了。为了避免这种情况,需要在更早的阶段加载图形驱动。查阅[[KMS#Early_KMS_start]]或其他方法以便在{{ic|/etc/vconsole.conf}}之前设置帧缓存并应用。
 +
 +
==== 引导错误 ====
 +
 +
如果"加载控制台字体"在引导时失败,这最有可能是你你在安装Arch Linux时没有选择有效的字体。
 +
 +
要避免这个错误,只需要简单地清空{{ic|CONSOLEFONT}}变量,它位于{{ic|/etc/rc.conf}}。这样引导时就会回滚到使用默认字体。
 +
 +
== X11中的字体回滚顺序 ==
 +
Fontconfig 会自动选择一个符合当前场景的字体。也就是说,如果有人正在浏览一个既有英文又有中文的窗口,而默认的字体不支持中文,它会自动切换到另一种字体以便显示中文。
 +
 +
Fontconfig 让每个用户能够通过{{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}}来决定字体使用的顺序。
 +
如果你想要在最喜欢的Serif字体之后使用某个特定的中文字体,你的配置文件看起来会是这样:
 +
<?xml version="1.0"?>
 +
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 +
<fontconfig>
 +
<alias>
 +
    <family>serif</family>
 +
    <prefer>
 +
      <family>Your favorite Latin Serif font name</family>
 +
      <family>Your Chinese font name</family>
 +
    </prefer>
 +
  </alias>
 +
</fontconfig>
 +
 +
当然你也可以为Sans-serif和monospaced字体添加一个配置节。更多信息请参考fontconfig说明。
 +
 +
== 字体别名 ==
 +
在Linux系统中有几种字体别名,它们实际代表着别的字体,这样以达到让应用程序的字体看起来类似。最常见的别名有:{{ic|serif}}代表一种衬线体(关于衬线体与非衬线体概念请参考[http://hanyu.iciba.com/wiki/2198016.shtml  这里]——译注)(例如DejaVu Serif);{{ic|sans-serif}}代表一种非衬线体(例如DejaVu Sans);而{{ic|monospace}} 则代表等宽字体(例如DejaVu Sans Mono)。 然而,这些别名所代表的字体有可能会变化,而且通常KDE和其他桌面环境中的字体管理工具不会显示其内在联系。
 +
 +
如果想通过别名反向查找是哪种字体被展现出来,运行:
 +
$ fc-match monospace
 +
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
 +
 +
在这种情况下Monospace别名展现的是DejaVuSansMono.ttf字体。
 +
 +
==2 英文字和中文字等宽==
 +
{{Merge|Font Configuration (简体中文)|配置方法应该放入字体配置页面.}}
 
TrueType 字体分成两种,一种是可变字距,也就是每个字符宽度不一样,比如 "x" 与 "i",这两个字符就不等宽,它是在每个字符中记录该字符的宽度,大多数的 TrueType 字体都是这种格式。  
 
TrueType 字体分成两种,一种是可变字距,也就是每个字符宽度不一样,比如 "x" 与 "i",这两个字符就不等宽,它是在每个字符中记录该字符的宽度,大多数的 TrueType 字体都是这种格式。  
  
Line 208: Line 503:
  
 
</pre>
 
</pre>
 
 
  
 
b. 把 AR PL ShanHeiSun Uni , AR PL New Sung 字体中12~16号的中文字用 WenQuanYi Bitmap Song 点阵字替换, WenQuanYi Bitmap Song 比  AR PL ShanHeiSun Uni , AR PL New Sung中的内嵌点阵更加完善,美观。
 
b. 把 AR PL ShanHeiSun Uni , AR PL New Sung 字体中12~16号的中文字用 WenQuanYi Bitmap Song 点阵字替换, WenQuanYi Bitmap Song 比  AR PL ShanHeiSun Uni , AR PL New Sung中的内嵌点阵更加完善,美观。

Revision as of 21:43, 7 April 2013

翻译状态: 本文是英文页面 Fonts翻译,最后翻译时间:2012-10-11,点击这里可以查看翻译后英文页面的改动。

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: please use the first argument of the template to provide more detailed indications.
摘要 help replacing me
包含了在 Arch Linux 中安装和使用字体的信息
合法性
某些字体包可能会遇到一些法律限制。
相关页面
Font Configuration (简体中文)
Java Fonts - Sun JRE
MS Fonts

From Wikipedia:

A computer font (or font) is an electronic data file containing a set of glyphs, characters, or symbols such as dingbats.

字体类型

大多数当代电脑使用的不是点阵字体就是矢量字体。

点阵字体
每种字形的每种形式和每种尺寸的图像都由点或者像素组成的矩阵构成。由于位图的原故,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下。但对于 12-16px 这样小的汉字,点阵字体常常比其它类型的字体在屏幕上更好的显示效果。常见的点阵字体有 bdf,pcf,fnt,hbf 等格式。
矢量字体
使用贝塞尔曲线, 绘图指令和数学公式来描述每种字形,使得字体可以适应各种尺寸。

通用类型

  • bdf and bdf.gz – 点阵字体,“b”代表点阵,“d”代表布局,“f”代表形式,用gzip压缩 bdf
  • pcf and pcf.gz – 点阵字体,“p”代表可移植,“c”代表编译 “f”代表字体,用gzip压缩 pcf
  • psfpsfupsf.gz and psfu.gz – 点阵字体,“PC”,“s”代表屏幕,“f”代表字体,“PC”,“s”代表屏幕,“f”代表字体,“U”代表Unicode,用gzip压缩(不适用于X.Org)。
  • pfa and pfb – 矢量字体,“P”代表PostScript,“f”代表字体,“A”代表ASCII。“P”代表PostScript,“f”代表字体,“b”代表二进制。PostScript字体包含内嵌打印令。
  • ttf – outline,“T”rue“T”ype,“f”代表字体。作为PostScript字体的替代。
  • otf – outline,“O”pen“T”ype,“f”代表字体。带有PostScript打印指令的TrueType字体。

在多数情况下,TrueType和OpenType的技术差异可以忽略,一些带有ttf扩展的字体实际上是OpenType字体。

其它类型

排版程序“TeX”和配套的字体软件“Metafont”用它们自己的方法渲染字体。一些用于这两个程序的字体的文件后缀是*pk, *gf, mf and vf

“FontForge”, 一个字体编辑程序,可能用自己的格式来储存字体,例如sfd, “s”代表线条,“f”代表字体,“d”代表数据库。

SVG格式也有自己的字体描述方法

安装

你可以使用多种方法安装字体。

Pacman

有效的源中的字体和字体集可以使用pacman来安装。 可以使用以下方式查找字体:

$ pacman -Ss font

或者也可以只查找ttf字体:

$ pacman -Ss ttf

一些字体(例如Terminus)被安装在/usr/share/fonts/local中,这个路径默认没有被加入字体搜索路径中。通过在~/.xinitrc中加入以下命令将可以在X11中使用这些字体:

xset +fp /usr/share/fonts/local
xset fp rehash

创建字体包

如果想让pacman能够管理你自己的字体,可以创建一个Arch软件包。这些包也可以在AUR中与社区成员分享. 以下是一个怎样创建软件包的基本样例。需要了解更多如何创建软件包的内容,请参考PKGBUILD.

pkgname=ttf-fontname
pkgver=1.0
pkgrel=1
depends=('fontconfig' 'xorg-font-utils')
pkgdesc="custom fonts"
arch=('any')
source=(http://someurl.org/$pkgname.tar.bz2)
install=$pkgname.install

build()
{
  mkdir -p $pkgdir/usr/share/fonts/TTF
  cp $srcdir/$pkgname/*.ttf $pkgdir/usr/share/fonts/TTF
}

这个PKGBUILD推断这些字体是TrueType字体。需要创建一个安装文件(ttf-fontname.install)以便更新字体缓存:

post_install() {
  echo -n "Updating font cache... "
  fc-cache -fs >/dev/null
  mkfontscale /usr/share/fonts/TTF /usr/share/fonts/Type1
  mkfontdir /usr/share/fonts/TTF /usr/share/fonts/Type1
  echo "done"
}

post_upgrade() {
  post_install
}

post_remove() {
  post_install
}

手工安装字体

要安装不在源中的字体,推荐的方法请参考#创建字体包。这样使得pacman在以后能够移除或者更新它们。当然字体也可以通过手工方式安装。

要在系统范围内(对所有用户有效)安装字体,请将文件夹移动到 /usr/share/fonts/目录。要为单个用户安装字体,请使用 ~/.fonts/

同样你可能需要更新/etc/X11/xorg.conf/etc/xorg.conf来指明新目录。查找字符串FontPath以便在这些文件中找到正确的位置来插入你的新路径。查看#X.Org的字体以了解更多信息.

然后更新fontconfig的字体缓存:

$ fc-cache -vf

过老的应用程序

过老而不支持fontconfig的应用程序(例如GTK+ 1.x应用,及xfontsel),需要在字体目录创建索引:

$ mkfontscale
$ mkfontdir

或在一条命令中包含多于一个目录:

$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash

有时候X server可能会不能成功加载字体目录,这时你需要重新扫描fonts.dir文件:

# xset +fp /usr/share/fonts/misc # Inform the X server of new directories
# xset fp rehash                # Forces a new rescan

查询字体是否已经生效,可以使用:

$ xlsfonts | grep fontname

Pango警告

当你的系统中安装了Pango,它会从fontconfig查找字体来源。

(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='common'
(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'

如果你看到类似的错误,或在应用程序中看到方块而不是文字,这表示你需要添加字体并更新字体缓存。以下示例使用ttf-liberation字体讲解如何解决这个问题。使用root权限运行如下命令可以使字体在系统范围内生效。

# pacman -S ttf-liberation
  -- output abbreviated, assumes installation succeeded -- 

# fc-cache -vfs
/usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs
/usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs
/usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs
/usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs
/usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs
/var/cache/fontconfig: cleaning cache directory   
fc-cache: succeeded

你可以这样测试一个正在设置的默认字体:

# fc-match
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"

X.Org中的字体

为了让Xorg找到并使用你新安装的字体,你必须把字体路径加入到/etc/X11/xorg.conf(另一个X.Org配置文件可能也可以)。

这个例子演示了必须加入到/etc/X11/xorg.conf中的代码片断。请根据你的实际需要添加或删除路径。

# 让X.Org知道自定义字体目录
Section "Files"
    FontPath    "/usr/share/fonts/100dpi"
    FontPath    "/usr/share/fonts/75dpi"
    FontPath    "/usr/share/fonts/cantarell"
    FontPath    "/usr/share/fonts/cyrillic"
    FontPath    "/usr/share/fonts/encodings"
    FontPath    "/usr/share/fonts/local"
    FontPath    "/usr/share/fonts/misc"
    FontPath    "/usr/share/fonts/truetype"
    FontPath    "/usr/share/fonts/TTF"
    FontPath    "/usr/share/fonts/util"
EndSection

字体包

以下是官方源和AUR中提供的安装包列表以保参考。支持Unicode的字体都标注上了“Unicode”字样。欲知详情请查看具体项目或维基百科。

Braille

International users

Arabic

Birman

Chinese, Japanese, Korean, Vietnamese

(Mainly) Chinese
  • ttf-twAUR -(繁體字)國字標準字體(楷書/宋體)母稿——中華民國教育部(AUR).
  • wqy-microheiAUR - 一种Sans-Serif风格的高质量CJK轮廓字体。"(AUR)
  • wqy-zenhei - 嵌入点阵宋体的黑体风格(sans-serif)中文轮廓字体(也支持部分日文和韩文).
  • ttf-arphic-ukai - 楷體 Kaiti (brush stroke) unicode TTFonts (建议开启抗锯齿)
  • ttf-arphic-uming - 明體 Mingti (打印) unicode TTFonts
  • opendesktop-fonts - 新宋 字体, 之前是 ttf-fireflysung 软件包
  • wqy-bitmapfont - 中文点阵宋体(serif)
  • ttf-hannom - 中文和越南文TrueType字体
Japanese
  • otf-ipafontAUR - Formal style Japanese Gothic (sans-serif) and Mincho (serif) fonts set; one of the highest quality open source font. Default of openSUSE-ja. (AUR)
  • ttf-vlgothicAUR - Japanese Gothic fonts. Default of Debian/Fedora/Vine Linux (AUR)
  • ttf-mplusAUR - Modern Gothic style Japanese outline fonts. It includes all of Japanese Hiragana/Katakana, Basic Latin, Latin-1 Supplement, Latin Extended-A, IPA Extensions and most of Japanese Kanji, Greek, Cyrillic, Vietnamese with 7 weights (proportional) or 5 weights (monospace).
  • ttf-ipa-monaAUR, ttf-monapoAUR - Japanese fonts to show 2channel Shift JIS art properly. (AUR)
  • ttf-sazanami - Japanese free TrueType font. This is outdated and not maintained any more, but may be defined as a fallback font on several environment.
Korean

Cyrillic

Also see #Monospace, #Sans and #Serif

Greek

Almost all Unicode fonts contain the Greek character set (polytonic included). Some additional font packages, which might not contain the complete Unicode set but utilize high quality Greek (and Latin, of course) typefaces are:

  • otf-gfsAUR - Selection of OpenType fonts from the Greek Font Society (AUR)
  • ttf-mgopenAUR - Professional TrueType fonts from Magenta (AUR)

Hebrew

  • culmusAUR - Nice collection of free Hebrew fonts

Indic

(This one contains a "look of disapproval" that might be more to your liking than the bdf-unifont one mentioned elsewhere in this document)
  • lohit-font - Indic TrueType fonts from Fedora Project (containing Oriya Fonts and more) (AUR)

Khmer

Sinhala

Tamil

Thai

  • ttf-thai - Font covering glyphs for Thai

Tibetan

Math

Microsoft fonts

See MS Fonts.

Apple Mac OS X fonts

  • ttf-macAUR - Mac OS X TrueType fonts. (AUR)

Monospaced

Here are some suggestions. Every user has their own favorite, so experiment to find yours. If you're in a hurry, you read Dan Benjamin's blog post: Top 10 Programming Fonts.

Here's a long list of fonts by Trevor Lowing: http://www.lowing.org/fonts/.

TrueType

Bitmap

Sans-serif

Script

Serif

Unsorted

控制台字体

控制台,即没有运行X窗口系统的终端,默认使用ASCII字符集。这种字体和按键映射可以很容易地改变。

控制台字体被限制为256到512个字符。这些字体可以在/usr/share/kbd/consolefonts/中找到。

按键映射,电脑在按下键和得到字符之间的对应关系,可以在/usr/share/kbd/keymaps/的子目录中找到。

预览和测试

你可以从http://alexandre.deverteuil.net/consolefonts/consolefonts.html看到所有字体的图片预览。

甚至,你还可以使用setfont命令临时改变字体来考虑要不要使用它作为默认字体。而使用showconsolefont命令可以以表格形式查看字体中的字母或符号。

如果新换上的字体不适用,可以通过不带任何参数的setfont命令来回滚到默认字体。即使控制台因字体改变而完全无法阅读,这条命令仍然可以起作用,用户只需要在看不见的情况下输入setfont

请注意setfont只对当前正在运行的命令行起作用。其他命令行无论是否激活都不受影响。

示例

改变字体。这是一个很有代表性的示例:

$ setfont /usr/share/kbd/consolefonts/gr737b-9x16-medieval.psfu.gz

或者使用-m选项把字体改为有512个符号的字体,并且把键盘映射改为ISO 8859-5:

$ setfont /usr/share/kbd/consolefonts/LatArCyrHeb-16.psfu.gz -m 8859-5

然后执行一条能在命令行显示字符的命令,如manpage,并且试用vinano,使用命令showconsolefont查看符号表。

用命令回滚到默认字体:

$ setfont

修改默认字体

要修改默认字体,需要修改/etc/vconsole.conf中的FONT=FONT_MAP=配置节(如果不存在则需要新建)。再次说明,字体可以在/usr/share/kbd/consolefonts/目录中找到,键盘映射可以在/usr/share/kbd/keymaps/的子目录中找到。

示例

为了显示如Č, ž, đ, š or Ł, ę, ą, ś一类的字符,需要使用字体lat2-16.psfu.gz:

FONT=lat2-16

这意味着ISO/IEC 8859的第二部分字符,并且使用16号字。你可以通过修改字号来改变字体大小,如lat2-08...16。8859规范指定的区域请参考Wikipedia。如果你经常在没有X Server的控制台工作,推荐使用Terminus字体。例如ter-216b是一种latin-2字体,16号,黑体。ter-216n是同样的字体但是正常体。Terminus字体最多有32号字。

现在需要设置正确的字符映射。lat2-16应该使用:

FONT_MAP=8859-2

为了在早先的用户空间中使用指定的字体,即在引导过程中使用,可以添加consolefont钩子到/etc/mkinitcpio.conf

HOOKS="base udev autodetect pata scsi sata filesystems consolefont keymap"

然后重建Linux映像:

# mkinitcpio -p linux
注意: 如果安装了多于一个内核,则以上步骤必须为每个内核执行一次。

查阅Mkinitcpio#HOOKS以获得更多信息。

如果字体在引导时仍然没有改变,或只是临时改变了,则最有可能是图形驱动初始化,控制台切换到帧缓存时字体被重置了。为了避免这种情况,需要在更早的阶段加载图形驱动。查阅KMS#Early_KMS_start或其他方法以便在/etc/vconsole.conf之前设置帧缓存并应用。

引导错误

如果"加载控制台字体"在引导时失败,这最有可能是你你在安装Arch Linux时没有选择有效的字体。

要避免这个错误,只需要简单地清空CONSOLEFONT变量,它位于/etc/rc.conf。这样引导时就会回滚到使用默认字体。

X11中的字体回滚顺序

Fontconfig 会自动选择一个符合当前场景的字体。也就是说,如果有人正在浏览一个既有英文又有中文的窗口,而默认的字体不支持中文,它会自动切换到另一种字体以便显示中文。

Fontconfig 让每个用户能够通过$XDG_CONFIG_HOME/fontconfig/fonts.conf来决定字体使用的顺序。 如果你想要在最喜欢的Serif字体之后使用某个特定的中文字体,你的配置文件看起来会是这样:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
   <family>serif</family>
   <prefer>
     <family>Your favorite Latin Serif font name</family>
     <family>Your Chinese font name</family>
   </prefer>
 </alias>
</fontconfig>

当然你也可以为Sans-serif和monospaced字体添加一个配置节。更多信息请参考fontconfig说明。

字体别名

在Linux系统中有几种字体别名,它们实际代表着别的字体,这样以达到让应用程序的字体看起来类似。最常见的别名有:serif代表一种衬线体(关于衬线体与非衬线体概念请参考这里——译注)(例如DejaVu Serif);sans-serif代表一种非衬线体(例如DejaVu Sans);而monospace 则代表等宽字体(例如DejaVu Sans Mono)。 然而,这些别名所代表的字体有可能会变化,而且通常KDE和其他桌面环境中的字体管理工具不会显示其内在联系。

如果想通过别名反向查找是哪种字体被展现出来,运行:

$ fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

在这种情况下Monospace别名展现的是DejaVuSansMono.ttf字体。

2 英文字和中文字等宽

Merge-arrows-2.pngThis article or section is a candidate for merging with Font Configuration (简体中文).Merge-arrows-2.png

Notes: 配置方法应该放入字体配置页面. (Discuss in Talk:Fonts (简体中文)#)

TrueType 字体分成两种,一种是可变字距,也就是每个字符宽度不一样,比如 "x" 与 "i",这两个字符就不等宽,它是在每个字符中记录该字符的宽度,大多数的 TrueType 字体都是这种格式。

另一种就是固定字距。也就是每个字符宽度都一样,这样显示或打印時,用会有对齐效果,比较美观,在英语环境中,不会有任何问题,但是CJK 的等宽字体,包含『半角英数字符』与『全角 CJK 字符』,字体引擎会把全角字宽度套用在半角字上,造成半宽字看起来间距太大。

a. 让字体引擎(FreeType)取消CJK字体的指定宽度

	<match target="font">
                <test target="pattern" name="lang" compare="contains">
                        <string>zh</string>
                        <string>ja</string>
                        <string>ko</string>
                </test>
                <edit name="spacing">
                        <const>proportional</const>
                </edit>
                <edit name="globaladvance">
                		<bool>false</bool>
                </edit>
        </match>

3 字体替换

一些网页编写时候,对使用的字体预先设定,(如英文部分使用了simsun,使得英文显示很不美观)所以可以使用字体替换使得字体显示更美观。

a. 把Simsun , SimSun-18030 , AR PL ShanHeiSun Uni等这个几个中文字体的英文部分,用 Tahoma,Arial 等替换。

	<match target="pattern">
		<test name="family">
			<string>SimSun</string>
			<string>SimSun-18030</string>
			<string>AR PL ShanHeiSun Uni</string>
			<string>AR PL New Sung</string>
			<string>MingLiU</string>
			<string>PMingLiU</string>
		</test>
		<edit binding="strong" mode="prepend" name="family">
			<string>Tahoma</string>
			<string>Arial</string>
			<string>Verdana</string>
			<string>DejaVu Sans</string>
			<string>Bitstream Vera Sans</string>
		</edit>
	</match>

b. 把 AR PL ShanHeiSun Uni , AR PL New Sung 字体中12~16号的中文字用 WenQuanYi Bitmap Song 点阵字替换, WenQuanYi Bitmap Song 比 AR PL ShanHeiSun Uni , AR PL New Sung中的内嵌点阵更加完善,美观。


	<match target="pattern">
		<test name="family" qual="any">
			<string>AR PL ShanHeiSun Uni</string>
			<string>AR PL New Sung</string>
		</test>
		<test compare="more_eq" name="pixelsize" >
			<double>12</double>
		</test>
		<test compare="less_eq" name="pixelsize" >
			<double>16</double>
		</test>
		<edit name="family" mode="prepend" binding="strong">
			<string>WenQuanYi Bitmap Song</string>
		</edit>
	</match>

4 使用内嵌点阵字

a. 当字体有内嵌字体时,优先使用内嵌字体。

	<match target="font">
		<edit name="embeddedbitmap" mode="assign">
			<bool>true</bool>
		</edit>
	</match>

注意:libXft 还没有embeddedbitmap选项的支持。可以到这里得到libXft2.1.8.2的embeddedbitmap patch,通过ABS重新编译安装libXft 。

5 必须使用hinting的字体

a. 有些 CJK 字体要the byte code interpreter (hinting)才能正确的显示,因为这些字体使用了hinting的一些技术制作。常见的MingLiu 就是这类字体。


        <match target="font">
                <test name="family">
                        <string>MingLiU</string>
                        <string>PMingLiU</string>
                </test>
                <edit name="autohint">
                        <bool>false</bool>
                </edit>
                <edit name="hinting">
                        <bool>true</bool>
                </edit>
        </match>