Difference between revisions of "Fonts"

From ArchWiki
Jump to: navigation, search
(TrueType)
m (Updated Java Fonts link in 'Related')
Line 10: Line 10:
 
{{Article summary heading|Related}}
 
{{Article summary heading|Related}}
 
{{Article summary wiki|Font Configuration}}: Font setup and beautification
 
{{Article summary wiki|Font Configuration}}: Font setup and beautification
{{Article summary wiki|Java Fonts - Sun JRE}}: Fonts specific to Sun's Java machine
+
{{Article summary wiki|Java Runtime Environment Fonts}}: Fonts specific to Sun's Java machine
 
{{Article summary wiki|MS Fonts}}: Adding Microsoft fonts and mimicking Windows' font settings
 
{{Article summary wiki|MS Fonts}}: Adding Microsoft fonts and mimicking Windows' font settings
 
{{Article summary end}}
 
{{Article summary end}}

Revision as of 23:10, 18 September 2011


Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Fonts#)

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Summary help replacing me
Covers the selection and installation of fonts on Arch Linux
Legal
Certain font licenses may impose some legal limitations
Related
Font Configuration: Font setup and beautification
Java Runtime Environment Fonts: Fonts specific to Sun's Java machine
MS Fonts: Adding Microsoft fonts and mimicking Windows' font settings

Font formats

Most computer fonts used today are in either bitmap or outline data formats. Bitmap fonts store fixed images for each glyph in each typeface and point size. Outline or vector fonts store characters as instructions for drawing each glyph's lines and curves. Outline fonts scale smoothly in size over a wide range.

Common font filename extensions include:

For most purposes, the technical differences between TrueType and OpenType can be ignored, some fonts with a Template:Codeline extension are actually OpenType fonts.

Other formats

The typesetting application, TeX, and its companion font software, Metafont, render characters using their own methods. Some of the file extensions used for fonts by these two programs are Template:Codeline, Template:Codeline, Template:Codeline and Template:Codeline.

FontForge, a font editing application, can store fonts in its native text-based format, Template:Codeline, spline font database.

Installation

Various methods of installing fonts.

Pacman

Fonts and font collections in the enabled repositories can be installed using pacman. Available fonts may be found by using:

$ pacman -Ss font

Or to search for Template:Codeline fonts only:

$ pacman -Ss ttf

Some fonts like terminus are installed in Template:Filename, which is not added to the font path by default. By adding the following lines to Template:Filename

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

the fonts can be used in X11.

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.

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
}

This PKGBUILD assumes the fonts are TrueType. An install file (Template:Filename) will also need to be created to update the font cache:

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
}

Manual installation

The recommended way of adding fonts to your system that are not in the repositories is described in #Creating a package. This gives pacman the ability to be able to remove or update them at a later time. Fonts can alternately be installed manually as well.

To install fonts system-wide (available for all users), move the folder to the Template:Filename directory. To install fonts for only a single user, use Template:Filename instead.

Also you may need to update Template:Filename or Template:Filename with the new directory. Search for Template:Codeline to find the correct location within the file to add your new path. See #Fonts with Xorg for more detail.

Then update the fontconfig font cache:

$ fc-cache -vf

Older applications

With older applications that do not support fontconfig (e.g. GTK1 applications, and Template:Codeline) the index will need to be created in the font directory:

$ mkfontscale
$ 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

At times the X server may fail to load the fonts directory and you will need to rescan all the Template:Filename files:

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

To check that the font(s) is included:

$ xlsfonts | grep fontname

Pango Warnings

When Pango is in use on your system it will read from fontconfig to sort out where to source 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'

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 Template:Package Official fonts to illustrate the solution and runs as root to enable them system-wide.

# 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


You can test for a default font being set like so:

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

Fonts with Xorg

In order for Xorg to find and use your newly installed fonts, you must add the font paths to Template:Filename (another Xorg configuration file may work too).

Here is an example of the section that must be added to Template:Filename. Add or remove paths based on your particular font requirements.

# Let Xorg know about the custom font directories
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/OTF"
    FontPath    "/usr/share/fonts/TTF"
    FontPath    "/usr/share/fonts/util"
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.

Braille

International users

Arabic

Chinese, Japanese, Korean, Vietnamese

(Mainly) Chinese
Japanese
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 be contain the complete Unicode set but utilize high quality Greek (and Latin, of course) typefaces are:

Hebrew

Indic

Khmer

Sinhala

Tamil

Thai

Math

Microsoft fonts

See MS Fonts.

Monospaced

Here are some suggestions. Every user has their own preference, experiment to find one that suits you. If you won't like to try one by one, there's an opinion from Dan Benjamin on his blog: Top 10 Programming Fonts.

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

TrueType

Bitmap

Sans-serif

Script

Serif

Unsorted

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.

A console font is limited to either 256 or 512 characters. The fonts are found in Template:Filename.

Keymaps, the connection between the key pressed and the character used by the computer, are found in the subdirectories of Template:Filename.

Previewing and testing

Unfortunately, no organized library of images is available to preview console fonts. The user can, however, use Template:Codeline 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 Template:Codeline.

If the newly changed font is not suitable, a return to the default font is done by issuing the command Template:Codeline without any arguments. If the console display is totally unreadable, this command will still work—the user just types in Template:Codeline while "working blind."

Note that Template:Codeline only works on the console currently being used. Any other consoles, active or inactive, remain unaffected.

Examples

Change the font. This example is distinctive:

$ 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 Template:Codeline option:

$ 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, Template:Codeline.

Return to the default font with:

$ setfont

Changing the default font

To change the default font, the Template:Codeline and Template:Codeline settings in Template:Filename must be altered. Again, the fonts can be found in Template:Filename directory and keymaps can be found in the subdirectories of Template:Filename.

Examples

For displaying characters such as Č, ž, đ, š or Ł, ę, ą, ś using the font Template:Filename:

CONSOLEFONT="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 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.


Now, set the proper keymap, for lat2-16 it will be:

CONSOLEMAP="8859-2"

To use the specified font in early userspace, that is, early in the bootup process, add the Template:Codeline hook to Template:Filename:

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

Then rebuild the image:

# 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.