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

From ArchWiki
Jump to: navigation, search
(Sync to latest English version.)
m (updated AUR package names)
(14 intermediate revisions by 3 users not shown)
Line 6: Line 6:
 
[[es:Fonts]]
 
[[es:Fonts]]
 
[[it:Fonts]]
 
[[it:Fonts]]
 +
[[ja:Fonts]]
 
[[ru:Fonts]]
 
[[ru:Fonts]]
 
[[tr:Yazıtipleri]]
 
[[tr:Yazıtipleri]]
Line 47: Line 48:
 
[http://www.w3.org/TR/SVG/fonts.html SVG]格式也有自己的字体描述方法
 
[http://www.w3.org/TR/SVG/fonts.html SVG]格式也有自己的字体描述方法
  
== Installation ==
+
== 安装 ==
  
There are various methods for installing fonts.
+
你可以使用多种方法安装字体。
  
 
=== Pacman ===
 
=== Pacman ===
  
Fonts and font collections in the enabled repositories can be installed using [[Pacman|pacman]]. Available fonts may be found by using:
+
有效的源中的字体和字体集可以使用[[Pacman|pacman]]来安装。 可以使用以下方式查找字体:
 
  $ pacman -Ss font
 
  $ pacman -Ss font
Or to search for {{ic|ttf}} fonts only:
+
或者也可以只查找{{ic|ttf}}字体:
 
  $ pacman -Ss ttf
 
  $ pacman -Ss ttf
  
Some fonts like terminus are installed in {{ic|/usr/share/fonts/local}}, which is not added to the font path by default. By adding the following lines to {{ic|~/.xinitrc}} the fonts can be used in X11:
+
一些字体(例如Terminus)被安装在{{ic|/usr/share/fonts/local}}中,这个路径默认没有被加入字体搜索路径中。通过在{{ic|~/.xinitrc}}中加入以下命令将可以在X11中使用这些字体:
 
{{bc|
 
{{bc|
 
xset +fp /usr/share/fonts/local
 
xset +fp /usr/share/fonts/local
Line 64: Line 65:
 
}}
 
}}
  
=== Creating a package ===
+
=== 创建字体包 ===
  
If you want to give pacman the ability to manage your fonts, you can create an Arch package.  These can also be shared with the community in the [[AUR]].  Here is an example of how to create a basic package.  To learn more about building packages, read [[PKGBUILD]].
+
如果想让pacman能够管理你自己的字体,可以创建一个Arch软件包。这些包也可以在[[AUR]]中与社区成员分享以下是一个怎样创建软件包的基本样例。需要了解更多如何创建软件包的内容,请参考[[PKGBUILD]].
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 85: Line 86:
 
</nowiki>}}
 
</nowiki>}}
  
This PKGBUILD assumes the fonts are TrueType.  An install file ({{ic|ttf-fontname.install}}) will also need to be created to update the font cache:
+
这个PKGBUILD推断这些字体是TrueType字体。需要创建一个安装文件({{ic|ttf-fontname.install}})以便更新字体缓存:
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 105: Line 106:
 
</nowiki>}}
 
</nowiki>}}
  
=== Manual installation ===
+
=== 手工安装字体 ===
  
The recommended way of adding fonts that are not in the repositories to your system is described in [[#Creating a package]].  This gives pacman the ability to remove or update them at a later time.  Fonts can alternately be installed manually as well.
+
要安装不在源中的字体,推荐的方法请参考[[#创建字体包]]。这样使得pacman在以后能够移除或者更新它们。当然字体也可以通过手工方式安装。
  
To install fonts system-wide (available for all users), move the folder to the {{ic|/usr/share/fonts/}} directory.  To install fonts for only a single user, use {{ic|~/.fonts/}} instead.
+
要在系统范围内(对所有用户有效)安装字体,请将文件夹移动到 {{ic|/usr/share/fonts/}}目录。要为单个用户安装字体,请使用 {{ic|~/.fonts/}}
  
Also you may need to update {{ic|/etc/X11/xorg.conf}} or {{ic|/etc/xorg.conf}} with the new directory. Search for {{ic|FontPath}} to find the correct location within the file to add your new path. See [[#Fonts with X.Org]] for more detail.
+
同样你可能需要更新{{ic|/etc/X11/xorg.conf}}{{ic|/etc/xorg.conf}}来指明新目录。查找字符串{{ic|FontPath}}以便在这些文件中找到正确的位置来插入你的新路径。查看[[#X.Org的字体]]以了解更多信息.
  
Then update the fontconfig font cache:
+
然后更新fontconfig的字体缓存:
  
 
  $ fc-cache -vf
 
  $ fc-cache -vf
  
==== Older applications ====
+
==== 过老的应用程序 ====
  
With older applications that do not support fontconfig (e.g. GTK+ 1.x applications, and {{ic|xfontsel}}) the index will need to be created in the font directory:
+
过老而不支持fontconfig的应用程序(例如GTK+ 1.x应用,及{{ic|xfontsel}}),需要在字体目录创建索引:
  
 
  $ mkfontscale
 
  $ mkfontscale
 
  $ mkfontdir
 
  $ mkfontdir
  
Or to include more than one folder with one command:
+
或在一条命令中包含多于一个目录:
  
 
  $ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash
 
  $ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash
  
At times the X server may fail to load the fonts directory and you will need to rescan all the {{ic|fonts.dir}} files:
+
有时候X server可能会不能成功加载字体目录,这时你需要重新扫描{{ic|fonts.dir}}文件:
  
 
  # xset +fp /usr/share/fonts/misc # Inform the X server of new directories
 
  # xset +fp /usr/share/fonts/misc # Inform the X server of new directories
 
  # xset fp rehash                # Forces a new rescan
 
  # xset fp rehash                # Forces a new rescan
  
To check that the font(s) is included:
+
查询字体是否已经生效,可以使用:
  
 
  $ xlsfonts | grep fontname
 
  $ xlsfonts | grep fontname
  
=== Pango Warnings ===
+
=== Pango警告 ===
When [http://www.pango.org/ Pango] is in use on your system it will read from [http://www.freedesktop.org/wiki/Software/fontconfig fontconfig] to sort out where to source fonts.
+
当你的系统中安装了[http://www.pango.org/ Pango],它会从[http://www.freedesktop.org/wiki/Software/fontconfig 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='common'
 
  (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'
 
  (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'
  
If you are seeing errors similar to this and/or seeing blocks instead of characters in your application then you need to add fonts and update the font cache.  This example uses the {{Pkg|ttf-liberation}} fonts to illustrate the solution and runs as root to enable them system-wide.
+
如果你看到类似的错误,或在应用程序中看到方块而不是文字,这表示你需要添加字体并更新字体缓存。以下示例使用{{Pkg|ttf-liberation}}字体讲解如何解决这个问题。使用root权限运行如下命令可以使字体在系统范围内生效。
  
 
  # pacman -S ttf-liberation
 
  # pacman -S ttf-liberation
Line 157: Line 158:
 
  fc-cache: succeeded
 
  fc-cache: succeeded
  
You can test for a default font being set like so:
+
你可以这样测试一个正在设置的默认字体:
  
 
  # fc-match
 
  # fc-match
 
  LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
 
  LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
  
=== Fonts with X.Org ===
+
=== X.Org中的字体 ===
  
In order for [[Xorg]] to find and use your newly installed fonts, you must add the font paths to {{ic|/etc/X11/xorg.conf}} (another X.Org configuration file may work too).
+
为了让[[Xorg]]找到并使用你新安装的字体,你必须把字体路径加入到{{ic|/etc/X11/xorg.conf}}(另一个X.Org配置文件可能也可以)。
  
Here is an example of the section that must be added to {{ic|/etc/X11/xorg.conf}}. Add or remove paths based on your particular font requirements.
+
这个例子演示了必须加入到{{ic|/etc/X11/xorg.conf}}中的代码片断。请根据你的实际需要添加或删除路径。
  # Let X.Org know about the custom font directories
+
  # 让X.Org知道自定义字体目录
 
  Section "Files"
 
  Section "Files"
 
     FontPath    "/usr/share/fonts/100dpi"
 
     FontPath    "/usr/share/fonts/100dpi"
Line 181: Line 182:
 
  EndSection
 
  EndSection
  
==Font packages==
+
==字体包==
This is a selective list that includes many font packages from the [[AUR]] along with those in the official repositories. Fonts are tagged "Unicode" if they have wide Unicode support, see the project or Wikipedia pages for detail.
+
以下是官方源和[[AUR]]中提供的安装包列表以保参考。支持Unicode的字体都标注上了“Unicode”字样。欲知详情请查看具体项目或维基百科。
  
 
===Braille===
 
===Braille===
Line 244: Line 245:
 
====Khmer====
 
====Khmer====
 
*{{Pkg|ttf-khmer}} - Font covering glyphs for Khmer language
 
*{{Pkg|ttf-khmer}} - Font covering glyphs for Khmer language
*[http://code.google.com/webfonts/family?family=Hanuman&subset=khmer Hanuman] ({{AUR|ttf-google-webfonts}})
+
*[http://code.google.com/webfonts/family?family=Hanuman&subset=khmer Hanuman] ({{AUR|ttf-google-fonts-hg}} or {{AUR|ttf-google-fonts-git}})
  
 
====Sinhala====
 
====Sinhala====
Line 277: Line 278:
 
* [[Wikipedia:Andalé Mono|Andalé Mono]] ({{AUR|ttf-ms-fonts}})
 
* [[Wikipedia:Andalé Mono|Andalé Mono]] ({{AUR|ttf-ms-fonts}})
 
* Anka/Coder ({{AUR|ttf-anka-coder}})
 
* Anka/Coder ({{AUR|ttf-anka-coder}})
* Anonymous Pro ({{AUR|ttf-anonymous-pro}}, included in {{AUR|ttf-google-webfonts}})
+
* Anonymous Pro ({{AUR|ttf-anonymous-pro}}, included in {{AUR|ttf-google-fonts-hg}} and {{AUR|ttf-google-fonts-git}})
 
* [[Wikipedia:Bitstream Vera|Bitstream Vera Mono]] ({{Pkg|ttf-bitstream-vera}})
 
* [[Wikipedia:Bitstream Vera|Bitstream Vera Mono]] ({{Pkg|ttf-bitstream-vera}})
 
* [[Wikipedia:Consolas|Consolas]] ({{AUR|ttf-vista-fonts}})
 
* [[Wikipedia:Consolas|Consolas]] ({{AUR|ttf-vista-fonts}})
 
* [[Wikipedia:Courier New|Courier New]] ({{AUR|ttf-ms-fonts}})
 
* [[Wikipedia:Courier New|Courier New]] ({{AUR|ttf-ms-fonts}})
* Cousine ({{AUR|ttf-google-webfonts}}) - Chrome/Chromium OS replacement for Courier New (metric-compatible)
+
* Cousine ({{AUR|ttf-google-fonts-hg}} or {{AUR|ttf-google-fonts-git}}) - Chrome/Chromium OS replacement for Courier New (metric-compatible)
 
* [[Wikipedia:DejaVu fonts|DejaVu Sans Mono]] ({{Pkg|ttf-dejavu}}) - Unicode
 
* [[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}})
+
* [[Wikipedia:Droid (font)|Droid Sans Mono]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-fonts-hg}} and {{AUR|ttf-google-fonts-git}})
 
* Envy Code R ({{AUR|ttf-envy-code-r}})
 
* Envy Code R ({{AUR|ttf-envy-code-r}})
 
* [[Wikipedia:GNU FreeFont|FreeMono]] ({{Pkg|ttf-freefont}}) - Unicode
 
* [[Wikipedia:GNU FreeFont|FreeMono]] ({{Pkg|ttf-freefont}}) - Unicode
Line 310: Line 311:
 
*[[Wikipedia:Arial|Arial]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Arial|Arial]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Arial Black|Arial Black]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Arial Black|Arial Black]] ({{AUR|ttf-ms-fonts}})
*Arimo ({{AUR|ttf-google-webfonts}}) - Chrome/Chromium OS replacement for Arial (metric-compatible)
+
*Arimo ({{AUR|ttf-google-fonts-hg}} or {{AUR|ttf-google-fonts-git}}) - Chrome/Chromium OS replacement for Arial (metric-compatible)
 
*[[Wikipedia:Calibri|Calibri]] ({{AUR|ttf-vista-fonts}})
 
*[[Wikipedia:Calibri|Calibri]] ({{AUR|ttf-vista-fonts}})
 
*[[Wikipedia:Candara|Candara]] ({{AUR|ttf-vista-fonts}})
 
*[[Wikipedia:Candara|Candara]] ({{AUR|ttf-vista-fonts}})
Line 316: Line 317:
 
*[[Wikipedia:Corbel (typeface)|Corbel]] ({{AUR|ttf-vista-fonts}})
 
*[[Wikipedia:Corbel (typeface)|Corbel]] ({{AUR|ttf-vista-fonts}})
 
*[[Wikipedia:DejaVu fonts|DejaVu Sans]] ({{Pkg|ttf-dejavu}}) - Unicode
 
*[[Wikipedia:DejaVu fonts|DejaVu Sans]] ({{Pkg|ttf-dejavu}}) - Unicode
*[[Wikipedia:Droid (font)|Droid Sans]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-webfonts}})
+
*[[Wikipedia:Droid (font)|Droid Sans]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-fonts-hg}} and {{AUR|ttf-google-fonts-git}})
 
*[[Wikipedia:GNU FreeFont|FreeSans]] ({{Pkg|ttf-freefont}}) - Unicode
 
*[[Wikipedia:GNU FreeFont|FreeSans]] ({{Pkg|ttf-freefont}}) - Unicode
 
*[[Wikipedia:Impact (typeface)|Impact]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Impact (typeface)|Impact]] ({{AUR|ttf-ms-fonts}})
Line 324: Line 325:
 
*[[Wikipedia:Lucida Sans|Lucida Sans]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Lucida Sans|Lucida Sans]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Microsoft Sans Serif|Microsoft Sans Serif]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Microsoft Sans Serif|Microsoft Sans Serif]] ({{AUR|ttf-ms-fonts}})
*[[Wikipedia:PT Sans|PT Sans]] ({{AUR|ttf-google-webfonts}}) - 3 major variations: normal, narrow, and caption - Unicode: Latin, Cyrillic
+
*[[Wikipedia:PT Sans|PT Sans]] ({{AUR|ttf-google-fonts-hg}} or {{AUR|ttf-google-fonts-git}}) - 3 major variations: normal, narrow, and caption - Unicode: Latin, Cyrillic
 
*[[Wikipedia:Tahoma (typeface)|Tahoma]] ({{AUR|ttf-tahoma}})
 
*[[Wikipedia:Tahoma (typeface)|Tahoma]] ({{AUR|ttf-tahoma}})
 
*[[Wikipedia:Trebuchet MS|Trebuchet]] ({{AUR|ttf-ms-fonts}})
 
*[[Wikipedia:Trebuchet MS|Trebuchet]] ({{AUR|ttf-ms-fonts}})
Line 340: Line 341:
 
*[[Wikipedia:DejaVu fonts|DejaVu Serif]] ({{Pkg|ttf-dejavu}}) - Unicode
 
*[[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: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}})
+
*[[Wikipedia:Droid (font)|Droid Serif]] ({{Pkg|ttf-droid}}, included in {{AUR|ttf-google-fonts-hg}} and {{AUR|ttf-google-fonts-git}})
 
*[[Wikipedia:GNU FreeFont|FreeSerif]] ({{Pkg|ttf-freefont}}) - Unicode
 
*[[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:Gentium|Gentium]] ({{Pkg|ttf-gentium}}, included in {{AUR|ttf-sil-fonts}}) - Unicode: Latin, Greek, Cyrillic, Phonetic Alphabet
Line 347: Line 348:
 
*[[Wikipedia:Linux Libertine|Linux Libertine]] ({{Pkg|ttf-linux-libertine}}) - Unicode: Latin, Greek, Cyrillic, Hebrew
 
*[[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}})
 
*[[Wikipedia:Times New Roman|Times New Roman]] ({{AUR|ttf-ms-fonts}})
*Tinos ({{AUR|ttf-google-webfonts}}) - Chrome/Chromium OS replacement for Times New Roman (metric-compatible)
+
*Tinos ({{AUR|ttf-google-fonts-hg}} or {{AUR|ttf-google-fonts-git}}) - Chrome/Chromium OS replacement for Times New Roman (metric-compatible)
  
 
===Unsorted===
 
===Unsorted===
 
<!--This section should be absorbed into the Monospace/Serif/Sans-Serif structure-->
 
<!--This section should be absorbed into the Monospace/Serif/Sans-Serif structure-->
*{{AUR|ttf-google-webfonts}} 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)''
+
*{{AUR|ttf-google-fonts-git}} and {{AUR|ttf-google-fonts-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-fonts-hg}} pulls down the entire Mercurial repository from the upstream Web Fonts project. {{AUR|ttf-google-fonts-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
 
*{{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-symbola}} — Provides emoji and many many other symbols. ''(AUR)''
Line 362: Line 363:
 
*{{Pkg|xorg-fonts-type1}} — IBM Courier and Adobe Utopia sets of [[Wikipedia:PostScript fonts|PostScript fonts]]
 
*{{Pkg|xorg-fonts-type1}} — IBM Courier and Adobe Utopia sets of [[Wikipedia:PostScript fonts|PostScript fonts]]
  
==Console fonts==
+
==控制台字体==
  
The console, meaning a terminal running with no ''X'' Window System, uses the ASCII character set as the default. This font and the keymap used are easily changed.
+
控制台,即没有运行X窗口系统的终端,默认使用ASCII字符集。这种字体和按键映射可以很容易地改变。
  
A console font is limited to either 256 or 512 characters. The fonts are found in {{ic|/usr/share/kbd/consolefonts/}}.
+
控制台字体被限制为256到512个字符。这些字体可以在{{ic|/usr/share/kbd/consolefonts/}}中找到。
  
''Keymaps, ''the connection between the key pressed and the character used by the computer, are found in the subdirectories of {{ic|/usr/share/kbd/keymaps/}}.
+
''按键映射,''电脑在按下键和得到字符之间的对应关系,可以在{{ic|/usr/share/kbd/keymaps/}}的子目录中找到。
  
=== Previewing and testing ===
+
=== 预览和测试 ===
  
An organized library of images for previewing is available at http://alexandre.deverteuil.net/consolefonts/consolefonts.html.
+
你可以从http://alexandre.deverteuil.net/consolefonts/consolefonts.html看到所有字体的图片预览。
  
Moreover, the user can use {{ic|setfont}} to temporarily change the font and be able to consider its use as the default. The available ''glyphs ''or letters in the font can also be viewed as a table with the command {{ic|showconsolefont}}.
+
甚至,你还可以使用{{ic|setfont}}命令临时改变字体来考虑要不要使用它作为默认字体。而使用{{ic|showconsolefont}}命令可以以表格形式查看字体中的字母或符号。
  
If the newly changed font is not suitable, a return to the default font is done by issuing the command {{ic|setfont}} without any arguments. If the console display is totally unreadable, this command will still work—the user just types in {{ic|setfont}} while "working blind."
+
如果新换上的字体不适用,可以通过不带任何参数的{{ic|setfont}}命令来回滚到默认字体。即使控制台因字体改变而完全无法阅读,这条命令仍然可以起作用,用户只需要在看不见的情况下输入{{ic|setfont}}
  
Note that {{ic|setfont}} only works on the console currently being used. Any other consoles, active or inactive, remain unaffected.
+
请注意{{ic|setfont}}只对当前正在运行的命令行起作用。其他命令行无论是否激活都不受影响。
  
==== Examples ====
+
==== 示例 ====
  
Change the font. This example is distinctive:
+
改变字体。这是一个很有代表性的示例:
 
  $ setfont /usr/share/kbd/consolefonts/gr737b-9x16-medieval.psfu.gz
 
  $ setfont /usr/share/kbd/consolefonts/gr737b-9x16-medieval.psfu.gz
  
Or change the font to one with 512 glyphs and set the keymap to ''ISO 8859-5'' using the {{ic|-m}} option:
+
或者使用{{ic|-m}}选项把字体改为有512个符号的字体,并且把键盘映射改为''ISO 8859-5'':
 
  $ setfont /usr/share/kbd/consolefonts/LatArCyrHeb-16.psfu.gz -m 8859-5
 
  $ setfont /usr/share/kbd/consolefonts/LatArCyrHeb-16.psfu.gz -m 8859-5
  
Then issue commands that send text to the display, perhaps view a ''manpage'' and try ''vi'' or ''nano'', and view the table of glyphs with the command, {{ic|showconsolefont}}.
+
然后执行一条能在命令行显示字符的命令,如''manpage'',并且试用''vi''''nano'',使用命令{{ic|showconsolefont}}查看符号表。
  
Return to the default font with:
+
用命令回滚到默认字体:
 
  $ setfont
 
  $ setfont
  
=== Changing the default font ===
+
=== 修改默认字体 ===
  
To change the default font, the {{ic|FONT<nowiki>=</nowiki>}} and {{ic|FONT_MAP<nowiki>=</nowiki>}} settings in {{ic|/etc/vconsole.conf}} (this file may need to be created) must be altered. Again, the fonts can be found in {{ic|/usr/share/kbd/consolefonts/}} directory and keymaps can be found in the subdirectories of {{ic|/usr/share/kbd/keymaps/}}.
+
要修改默认字体,需要修改{{ic|/etc/vconsole.conf}}中的{{ic|FONT<nowiki>=</nowiki>}}{{ic|FONT_MAP<nowiki>=</nowiki>}}配置节(如果不存在则需要新建)。再次说明,字体可以在{{ic|/usr/share/kbd/consolefonts/}}目录中找到,键盘映射可以在{{ic|/usr/share/kbd/keymaps/}}的子目录中找到。
  
==== Examples ====
+
==== 示例 ====
For displaying characters such as ''Č, ž, đ, š'' or ''Ł, ę, ą, ś'' using the font {{ic|lat2-16.psfu.gz}}:
+
为了显示如''Č, ž, đ, š'' or ''Ł, ę, ą, ś''一类的字符,需要使用字体{{ic|lat2-16.psfu.gz}}:
 
  FONT=lat2-16
 
  FONT=lat2-16
It means that second part of ISO/IEC 8859 characters are used with size 16. You can change font size using other values like lat2-08...16. For the regions determined by 8859 specification, look at the [http://en.wikipedia.org/wiki/ISO/IEC_8859#The_Parts_of_ISO.2FIEC_8859 Wikipedia]. You can use a Terminus font which is recommended if you work a lot in console without X server. ter-216b for example is latin-2 part, size 16, bold. ter-216n is the same but normal weight. Terminus fonts have sizes up to 32.
+
这意味着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号字。
  
Now, set the proper keymap, for lat2-16 it will be:
+
现在需要设置正确的字符映射。lat2-16应该使用:
 
  FONT_MAP=8859-2
 
  FONT_MAP=8859-2
  
To use the specified font in early userspace, that is, early in the bootup process, add the {{ic|consolefont}} hook to {{ic|/etc/mkinitcpio.conf}}:
+
为了在早先的用户空间中使用指定的字体,即在引导过程中使用,可以添加{{ic|consolefont}}钩子到{{ic|/etc/mkinitcpio.conf}}
 
  HOOKS="base udev autodetect pata scsi sata filesystems '''consolefont''' '''keymap'''"
 
  HOOKS="base udev autodetect pata scsi sata filesystems '''consolefont''' '''keymap'''"
  
Then rebuild the image:
+
然后重建Linux映像:
 
  # mkinitcpio -p linux
 
  # mkinitcpio -p linux
  
{{Note|The above steps must be repeated for each kernel if more than one kernel package is installed.}}
+
{{注意|如果安装了多于一个内核,则以上步骤必须为每个内核执行一次。}}
  
See [[Mkinitcpio#HOOKS]] for more information.
+
查阅[[Mkinitcpio#HOOKS]]以获得更多信息。
  
If the fonts seems to not change on boot, or change only temporarily, it is most likely that they got reset when graphics driver was initialized and console was switched to framebuffer. To avoid this, load your graphics driver earlier. See for example [[KMS#Early_KMS_start]] or other ways to setup your framebuffer before {{ic|/etc/vconsole.conf}} gets applied.
+
如果字体在引导时仍然没有改变,或只是临时改变了,则最有可能是图形驱动初始化,控制台切换到帧缓存时字体被重置了。为了避免这种情况,需要在更早的阶段加载图形驱动。查阅[[KMS#Early_KMS_start]]或其他方法以便在{{ic|/etc/vconsole.conf}}之前设置帧缓存并应用。
  
==== Boot Error ====
+
==== 引导错误 ====
  
If "Loading Console Font" fails at boot time, this is probably because you didn't choose a valid font during your Arch Linux install.
+
如果"加载控制台字体"在引导时失败,这最有可能是你你在安装Arch Linux时没有选择有效的字体。
  
To get rid of this message, simply empty the {{ic|CONSOLEFONT}} variable in {{ic|/etc/rc.conf}}. It will fallback on default font at boot.
+
要避免这个错误,只需要简单地清空{{ic|CONSOLEFONT}}变量,它位于{{ic|/etc/rc.conf}}。这样引导时就会回滚到使用默认字体。
  
== Fallback font order with X11 ==
+
== X11中的字体回滚顺序 ==
Fontconfig automatically chooses a font that matches the current requirement. That is to say, if one is looking at a window containing English and Chinese for example, it will switch to another font for the Chinese text if the default one doesn't support it.
+
Fontconfig 会自动选择一个符合当前场景的字体。也就是说,如果有人正在浏览一个既有英文又有中文的窗口,而默认的字体不支持中文,它会自动切换到另一种字体以便显示中文。
  
Fontconfig lets every user configure the order they want via {{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}}.
+
Fontconfig 让每个用户能够通过{{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}}来决定字体使用的顺序。
If you want a particular Chinese font to be selected after your favorite Serif font, your file would look like this:
+
如果你想要在最喜欢的Serif字体之后使用某个特定的中文字体,你的配置文件看起来会是这样:
 
  <?xml version="1.0"?>
 
  <?xml version="1.0"?>
 
  <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 
  <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
Line 440: Line 441:
 
  </fontconfig>
 
  </fontconfig>
  
You can add a section for Sans-serif and monospaced as well. For more informations, have a look at the fontconfig manual.
+
当然你也可以为Sans-serif和monospaced字体添加一个配置节。更多信息请参考fontconfig说明。
  
== Font alias ==
+
== 字体别名 ==
In Linux there are several font aliases which represent other fonts in order that applications may use similar fonts. The most common aliases are: {{ic|serif}} for a font of the serif type (e.g. DejaVu Serif); {{ic|sans-serif}} for a font of the sans-serif type (e.g. DejaVu Sans); and {{ic|monospace}} for a monospaced font (e.g. DejaVu Sans Mono). However, the fonts which these aliases represent may vary and the relationship is often not shown in font management tools such as those found in KDE and other desktop environments.
+
在Linux系统中有几种字体别名,它们实际代表着别的字体,这样以达到让应用程序的字体看起来类似。最常见的别名有:{{ic|serif}}代表一种衬线体(关于衬线体与非衬线体概念请参考[http://hanyu.iciba.com/wiki/2198016.shtml  这里]——译注)(例如DejaVu Serif);{{ic|sans-serif}}代表一种非衬线体(例如DejaVu Sans);而{{ic|monospace}} 则代表等宽字体(例如DejaVu Sans Mono)。 然而,这些别名所代表的字体有可能会变化,而且通常KDE和其他桌面环境中的字体管理工具不会显示其内在联系。
  
To reverse an alias and find which font it is representing, run:
+
如果想通过别名反向查找是哪种字体被展现出来,运行:
 
  $ fc-match monospace
 
  $ fc-match monospace
 
  DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
 
  DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
  
In this case DejaVuSansMono.ttf is the font represented by the monospace alias.
+
在这种情况下Monospace别名展现的是DejaVuSansMono.ttf字体。
  
 
==2 英文字和中文字等宽==
 
==2 英文字和中文字等宽==

Revision as of 21:07, 27 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>