diff --git a/en_US.ISO8859-1/articles/explaining-bsd/article.sgml b/en_US.ISO8859-1/articles/explaining-bsd/article.sgml
index 4a2f3da4de..aa399c7f06 100644
--- a/en_US.ISO8859-1/articles/explaining-bsd/article.sgml
+++ b/en_US.ISO8859-1/articles/explaining-bsd/article.sgml
@@ -1,586 +1,586 @@
%articles.ent;
]>
Explaining BSD
Greg
Lehey
grog@FreeBSD.org
&tm-attrib.freebsd;
&tm-attrib.amd;
&tm-attrib.apple;
&tm-attrib.linux;
&tm-attrib.opengroup;
&tm-attrib.sun;
&tm-attrib.xfree86;
&tm-attrib.general;
In the open source world, the word Linux
is almost
synonymous with Operating System
, but it is not the only
open source &unix; operating system. According
to the Internet
Operating System Counter, as of April 1999 31.3% of the
world's network connected machines run Linux. 14.6% run BSD &unix;.
Some of the world's largest web operations, such as Yahoo!, run BSD. The world's
busiest FTP server of 1999 (now defunct), ftp.cdrom.com, used BSD to
transfer 1.4 TB of data a day. Clearly this is not a niche
market: BSD is a well-kept secret.
So what is the secret? Why is BSD not better known? This white
paper addresses these and other questions.
Throughout this paper, differences between BSD and Linux will be
noted like this.
-
+
What is BSD?
BSD stands for Berkeley Software Distribution
. It is
the name of distributions of source code from the University of
California, Berkeley, which were originally extensions to AT&T's
Research &unix; operating system. Several open source operating system
projects are based on a release of this source code known as
4.4BSD-Lite. In addition, they comprise a number of packages from other
Open Source projects, including notably the GNU project. The overall
operating system comprises:
The BSD kernel, which handles process scheduling, memory
management, symmetric multi-processing (SMP), device drivers,
etc.
Unlike the Linux kernel, there are several different
BSD kernels with differing capabilities.
The C library, the base API for the system.
The BSD C library is based on code from Berkeley, not
the GNU project.
Utilities such as shells, file utilities, compilers and
linkers.
Some of the utilities are derived from the GNU
project, others are not.
The X Window system, which handles graphical display.
The X Window system used in most versions of BSD is maintained
by one of two separate projects, either the
&xfree86; project or the
X.Org project.
This is the same code as Linux uses. BSD does not normally
specify a graphical desktop
such as GNOME or KDE,
though these are available.
Many other programs and utilities.
-
+
What, a real &unix;?
The BSD operating systems are not clones, but open source
derivatives of AT&T's Research &unix; operating system, which is also
the ancestor of the modern &unix; System V. This may surprise you. How
could that happen when AT&T has never released its code as open
source?
It is true that AT&T &unix; is not open source, and in a copyright
sense BSD is very definitely not &unix;, but on the
other hand, AT&T has imported sources from other projects,
noticeably the Computer Sciences Research Group of the University of
California in Berkeley, CA. Starting in 1976, the CSRG started
releasing tapes of their software, calling them Berkeley
Software Distribution or BSD.
Initial BSD releases consisted mainly of user programs, but that
changed dramatically when the CSRG landed a contract with the Defense
Advanced Projects Research Agency (DARPA) to upgrade the communications
protocols on their network, ARPANET. The new protocols were known as
the Internet Protocols, later
TCP/IP after the most important protocols. The
first widely distributed implementation was part of 4.2BSD, in
1982.
In the course of the 1980s, a number of new workstation companies
sprang up. Many preferred to license &unix; rather than developing
operating systems for themselves. In particular, Sun Microsystems
licensed &unix; and implemented a version of 4.2BSD, which they called
&sunos;. When AT&T themselves were allowed to sell &unix; commercially,
they started with a somewhat bare-bones implementation called System
III, to be quickly followed by System V. The System V code base did not
include networking, so all implementations included additional software
from the BSD, including the TCP/IP software, but also utilities such as
the csh shell and the vi
editor. Collectively, these enhancements were known as the
Berkeley Extensions.
The BSD tapes contained AT&T source code and thus required a
&unix; source license. By 1990, the CSRG's funding was running out, and
it faced closure. Some members of the group decided to release the BSD
code, which was Open Source, without the AT&T proprietary code.
This finally happened with the Networking Tape 2,
usually known as Net/2. Net/2 was not a complete
operating system: about 20% of the kernel code was missing. One of the
CSRG members, William F. Jolitz, wrote the remaining code and released
it in early 1992 as 386BSD. At the same time,
another group of ex-CSRG members formed a commercial company called
Berkeley Software Design Inc.
and released a beta version of an operating system called
BSD/386, which was based on
the same sources. The name of the operating system was later changed
to BSD/OS.
386BSD never became a stable operating system. Instead, two other
projects split off from it in 1993:
NetBSD and
FreeBSD. The two projects
originally diverged due to differences in patience waiting for
improvements to 386BSD: the NetBSD people started early in the year,
and the first version of FreeBSD was not ready until the end of the
year. In the meantime, the code base had diverged sufficiently to
make it difficult to merge. In addition, the projects had different
aims, as we will see below. In 1996,
OpenBSD split off from
NetBSD, and in 2003,
DragonFlyBSD split
off from FreeBSD.
-
+
Why is BSD not better known?
For a number of reasons, BSD is relatively unknown:
The BSD developers are often more interested in polishing their
code than marketing it.
Much of Linux's popularity is due to factors external to the
Linux projects, such as the press, and to companies formed to
provide Linux services. Until recently, the open source BSDs had no
such proponents.
BSD developers tend to be more experienced than Linux
developers, and have less interest in making the system easy to use.
Newcomers tend to feel more comfortable with Linux.
In 1992, AT&T sued
BSDI,
the vendor of BSD/386, alleging that the product contained
AT&T-copyrighted code. The case was settled out of court in
1994, but the spectre of the litigation continues to haunt people.
As recently as March 2000 an article published on the web claimed
that the court case had been recently settled
.
One detail that the lawsuit did clarify is the naming: in the
1980s, BSD was known as BSD &unix;
. With the
elimination of the last vestige of AT&T code from BSD, it
also lost the right to the name &unix;. Thus you will see
references in book titles to the 4.3BSD &unix; operating
system
and the 4.4BSD operating
system
.
There is a perception that the BSD projects are fragmented and
belligerent. The
Wall Street
Journal spoke of balkanization
of the
BSD projects. Like the law suit, this perception bases mainly
on ancient history.
-
+
Comparing BSD and Linux
So what is really the difference between, say, Debian Linux and
FreeBSD? For the average user, the difference is surprisingly small:
Both are &unix; like operating systems. Both are developed by
non-commercial projects (this does not apply to many other Linux
distributions, of course). In the following section, we will look at BSD
and compare it to Linux. The description applies most closely to
FreeBSD, which accounts for an estimated 80% of the BSD installations,
but the differences from NetBSD, OpenBSD and DragonFlyBSD are small.
Who owns BSD?
No one person or corporation owns BSD. It is created and
distributed by a community of highly technical and committed
contributors all over the world. Some of the components of BSD are
Open Source projects in their own right and managed by different
project maintainers.
How is BSD developed and updated?
The BSD kernels are developed and updated following the Open
Source development model. Each project maintains a publicly
accessible source tree under the
Concurrent Versions
System (CVS), which contains all source files for the
project, including documentation and other incidental files. CVS
allows users to check out
(in other words, to
extract a copy of) any desired version of the system.
A large number of developers worldwide contribute to improvements
to BSD. They are divided into three kinds:
Contributors write code or documentation.
They are not permitted to commit (add code) directly to the source
tree. In order for their code to be included in the system, it
must be reviewed and checked in by a registered developer, known
as a committer.
Committers are developers with write
access to the source tree. In order to become a committer, an
individual must show ability in the area in which he is
active.
It is at the individual committer's discretion whether he should
obtain authority before committing changes to the source tree. In
general, an experienced committer may make changes which are
obviously correct without obtaining consensus. For example, a
documentation project committer may correct typographical or
grammatical errors without review. On the other hand, developers
making far-reaching or complicated changes are expected to submit
their changes for review before committing them. In extreme
cases, a core team member with a function such as Principal
Architect may order that changes be removed from the tree, a
process known as backing out. All committers
receive mail describing each individual commit, so it is not
possible to commit secretly.
The Core team. FreeBSD and
NetBSD each have a core team which manages the project. The
core teams developed in the course of the projects, and their role
is not always well-defined. It is not necessary to be a developer
in order to be a core team member, though it is normal. The rules
for the core team vary from one project to the other, but in
general they have more say in the direction of the project than
non-core team members have.
This arrangement differs from Linux in a number of ways:
No one person controls the content of the system. In
practice, this difference is overrated, since the Principal Architect
can require that code be backed out, and even in the Linux project
several people are permitted to make changes.
On the other hand, there is a central
repository, a single place where you can find the entire operating
system sources, including all older versions.
BSD projects maintain the entire Operating
System
, not only the kernel. This distinction is only
marginally useful: neither BSD nor Linux is useful without
applications. The applications used under BSD are frequently the
same as the applications used under Linux.
As a result of the formalized maintenance of a single CVS
source tree, BSD development is clear, and it is possible to
access any version of the system by release number or by date.
CVS also allows incremental updates to the system: for example,
the FreeBSD repository is updated about 100 times a day. Most of
these changes are small.
BSD releases
FreeBSD, NetBSD and OpenBSD provide the system in three different
releases
. As with Linux, releases are assigned a
number such as 1.4.1 or 3.5. In addition, the version number has a
suffix indicating its purpose:
The development version of the system is called
CURRENT. FreeBSD assigns a number to
CURRENT, for example FreeBSD 5.0-CURRENT. NetBSD uses a slightly
different naming scheme and appends a single-letter suffix which
indicates changes in the internal interfaces, for example NetBSD
1.4.3G. OpenBSD does not assign a number ("OpenBSD-current").
All new development on the system goes into this branch.
At regular intervals, between two and four times a year, the
projects bring out a RELEASE version of the
system, which is available on CD-ROM and for free download from
FTP sites, for example OpenBSD 2.6-RELEASE or NetBSD 1.4-RELEASE.
The RELEASE version is intended for end users and is the normal
version of the system. NetBSD also provides patch
releases with a third digit, for example NetBSD
1.4.2.
As bugs are found in a RELEASE version, they are fixed, and
the fixes are added to the CVS tree. In FreeBSD, the resultant
version is called the STABLE version, while in NetBSD and OpenBSD
it continues to be called the RELEASE version. Smaller new
features can also be added to this branch after a period of test
in the CURRENT branch.
By contrast, Linux maintains two separate code trees:
the stable version and the development version. Stable versions
have an even minor version number, such as 2.0, 2.2 or 2.4.
Development versions have an odd minor version number, such as 2.1,
2.3 or 2.5. In each case, the number is followed by a further
number designating the exact release. In addition, each vendor adds
their own userland programs and utilities, so the name of the
distribution is also important. Each distribution vendor also
assigns version numbers to the distribution, so a complete
description might be something like TurboLinux 6.0 with kernel
2.2.14
What versions of BSD are available?
In contrast to the numerous Linux distributions, there are only
four major open source BSDs. Each BSD project maintains its own source
tree and its own kernel. In practice, though, there appear to be
fewer divergences between the userland code of the projects than there
is in Linux.
It is difficult to categorize the goals of each project: the
differences are very subjective. Basically,
FreeBSD aims for high performance and ease of use by
end users, and is a favourite of web content providers. It runs
on a number of platforms, including i386 based systems (PCs
),
systems based on the AMD 64-bit processors, &ultrasparc; based systems,
systems based on Compaq's Alpha processors and systems based around
the NEC PC-98 specification. The FreeBSD project has
significantly more users than the other projects.
NetBSD aims for maximum portability: of course it runs
NetBSD
. It runs on machines from palmtops to large
servers, and has even been used on NASA space missions. It is a
particularly good choice for running on old non-Intel
hardware.
OpenBSD aims for security and code purity: it uses a
combination of the open source concept and rigorous code reviews
to create a system which is demonstrably correct, making it the
choice of security-conscious organizations such as banks, stock
exchanges and US Government departments. Like NetBSD, it runs on
a number of platforms.
DragonFlyBSD aims for high performance and scalability under
everything from a single-node UP system to a massively clustered system.
DragonFlyBSD has several long-range technical goals, but focus lies on
providing a SMP-capable infrastructure that is easy to understand,
maintain and develop for.
There are also two additional BSD &unix; operating systems which are not
open source, BSD/OS and Apple's &macos; X:
BSD/OS was the oldest of the 4.4BSD derivatives. It
was not open source, though source code licenses were
available at relatively low cost. It resembled FreeBSD in
many ways. Two years after the acquisition of BSDi by
Wind River Systems, BSD/OS failed to survive as an
independent product. Support and source code may still
be available from Wind River, but all new development is
focused on the VxWorks embedded operating system.
&macos;
X is the latest version of the operating system for
Apple Computer Inc.'s
&macintosh; line. The BSD core of this operating
system, Darwin,
is available as a fully functional open source operating
system for x86 and PPC computers. The Aqua/Quartz
graphics system and many other proprietary aspects of
&macos; X remain closed-source, however. Several Darwin
developers are also FreeBSD committers, and
vice-versa.
How does the BSD license differ from the GNU Public
license?
Linux is available under the
GNU General Public
License (GPL), which is designed to eliminate closed
source software. In particular, any derivative work of a product
released under the GPL must also be supplied with source code if
requested. By contrast, the
BSD
license is less restrictive: binary-only distributions are
allowed. This is particularly attractive for embedded
applications.
What else should I know?
Since fewer applications are available for BSD than Linux, the BSD
developers created a Linux compatibility package, which allows Linux
programs to run under BSD. The package includes both kernel
modifications, in order to correctly perform Linux system calls, and
Linux compatibility files such as the C library. There is no
noticeable difference in execution speed between a Linux application
running on a Linux machine and a Linux application running on a BSD
machine of the same speed.
The all from one supplier
nature of BSD means that
upgrades are much easier to handle than is frequently the case with
Linux. BSD handles library version upgrades by providing
compatibility modules for earlier library versions, so it is possible
to run binaries which are several years old with no problems.
Which should I use, BSD or Linux?
What does this all mean in practice? Who should use BSD, who
should use Linux?
This is a very difficult question to answer. Here are some
guidelines:
If it ain't broke, don't fix it
: If you already
use an open source operating system, and you are happy with it,
there is probably no good reason to change.
BSD systems, in particular FreeBSD, can have notably higher
performance than Linux. But this is not across the board. In many
cases, there is little or no difference in performance. In some
cases, Linux may perform better than FreeBSD.
In general, BSD systems have a better reputation for
reliability, mainly as a result of the more mature code
base.
The BSD license may be more attractive than the GPL.
BSD can execute most Linux binaries, while Linux can not execute BSD
binaries. Many BSD implementations can also execute binaries
from other &unix; like systems. As a result, BSD may present an
easier migration route from other systems than
Linux would.
Who provides support, service, and training for BSD?
BSDi / FreeBSD
Mall, Inc. have been providing support contracts for
FreeBSD for nearly a decade.
In addition, each of the projects has a list of consultants for
hire:
FreeBSD,
NetBSD,
and OpenBSD.
diff --git a/en_US.ISO8859-1/articles/fonts/article.sgml b/en_US.ISO8859-1/articles/fonts/article.sgml
index a59bf3c7e5..5e60d9eee0 100644
--- a/en_US.ISO8859-1/articles/fonts/article.sgml
+++ b/en_US.ISO8859-1/articles/fonts/article.sgml
@@ -1,958 +1,958 @@
%articles.ent;
]>
Fonts and FreeBSD
A Tutorial
Dave
Bodenstab
imdave@synet.net
Wed Aug 7, 1996
&tm-attrib.freebsd;
&tm-attrib.adobe;
&tm-attrib.apple;
&tm-attrib.linux;
&tm-attrib.microsoft;
&tm-attrib.opengroup;
&tm-attrib.general;
This document contains a description of the various font
files that may be used with FreeBSD and the syscons driver,
X11, Ghostscript
and Groff. Cookbook examples are provided
for switching the syscons display to 80x60 mode, and for using
type 1 fonts with the above application programs.
-
+
Introduction
There are many sources of fonts available, and one might ask
how they might be used with FreeBSD. The answer can be found by
carefully searching the documentation for the component that one
would like to use. This is very time consuming, so this
tutorial is an attempt to provide a shortcut for others who
might be interested.
-
+
Basic terminology
There are many different font formats and associated font
file suffixes. A few that will be addressed here are:
.pfa, .pfb
&postscript; type 1 fonts. The
.pfa is the
Ascii form and
.pfb the Binary
form.
.afm
The font metrics associated with a type 1 font.
.pfm
The printer font metrics associated with a type 1
font.
.ttf
A &truetype; font
.fot
An indirect reference to a TrueType font (not an
actual font)
.fon, .fnt
Bitmapped screen fonts
The .fot file is used by &windows; as
sort of a symbolic link to the actual &truetype; font
(.ttf) file. The .fon
font files are also used by Windows. I know of no way to use
this font format with FreeBSD.
-
+
What font formats can I use?
Which font file format is useful depends on the application
being used. FreeBSD by itself uses no fonts. Application
programs and/or drivers may make use of the font files. Here is
a small cross reference of application/driver to the font type
suffixes:
Driver
syscons
.fnt
Application
Ghostscript
.pfa,
.pfb,
.ttf
X11
.pfa,
.pfb
Groff
.pfa,
.afm
Povray
.ttf
The .fnt suffix is used quite
frequently. I suspect that whenever someone wanted to create a
specialized font file for their application, more often than not
they chose this suffix. Therefore, it is likely that files with
this suffix are not all the same format; specifically, the
.fnt files used by syscons under FreeBSD
may not be the same format as a .fnt file
one encounters in the &ms-dos;/&windows; environment. I have not
made any attempt at using other .fnt files
other than those provided with FreeBSD.
-
+
Setting a virtual console to 80x60 line mode
First, an 8x8 font must be loaded. To do this,
/etc/rc.conf should contain the
line (change the font name to an appropriate one for
your locale):
font8x8="iso-8x8" # font 8x8 from /usr/share/syscons/fonts/* (or NO).
The command to actually switch the mode is
&man.vidcontrol.1;:
&prompt.user; vidcontrol VGA_80x60
Various screen-oriented programs, such as &man.vi.1;, must
be able to determine the current screen dimensions. As this is
achieved this through ioctl calls to the console
driver (such as &man.syscons.4;) they will correctly determine the new
screen dimensions.
To make this more seamless, one can embed these commands in
the startup scripts so it takes place when the system boots.
To do this is add this line to /etc/rc.conf
allscreens_flags="VGA_80x60" # Set this vidcontrol mode for all virtual screens
References: &man.rc.conf.5;, &man.vidcontrol.1;.
-
+
Using type 1 fonts with X11
X11 can use either the .pfa or the
.pfb format fonts. The X11 fonts are
located in various subdirectories under
/usr/X11R6/lib/X11/fonts. Each font file
is cross referenced to its X11 name by the contents of the
fonts.dir file in each directory.
There is already a directory named Type1. The
most straight forward way to add a new font is to put it into
this directory. A better way is to keep all new fonts in a
separate directory and use a symbolic link to the additional
font. This allows one to more easily keep track of ones fonts
without confusing them with the fonts that were originally
provided. For example:
Create a directory to contain the font files
&prompt.user; mkdir -p /usr/local/share/fonts/type1
&prompt.user; cd /usr/local/share/fonts/type1
Place the .pfa, .pfb and .afm files here
One might want to keep readme files, and other documentation
for the fonts here also
&prompt.user; cp /cdrom/fonts/atm/showboat/showboat.pfb .
&prompt.user; cp /cdrom/fonts/atm/showboat/showboat.afm .
Maintain an index to cross reference the fonts
&prompt.user; echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX
Now, to use a new font with X11, one must make the font file
available and update the font name files. The X11 font names
look like:
-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1
| | | | | | | | | | | | \ \
| | | | | \ \ \ \ \ \ \ +----+- character set
| | | | \ \ \ \ \ \ \ +- average width
| | | | \ \ \ \ \ \ +- spacing
| | | \ \ \ \ \ \ +- vertical res.
| | | \ \ \ \ \ +- horizontal res.
| | | \ \ \ \ +- points
| | | \ \ \ +- pixels
| | | \ \ \
foundry family weight slant width additional style
A new name needs to be created for each new font. If you
have some information from the documentation that accompanied
the font, then it could serve as the basis for creating the
name. If there is no information, then you can get some idea by
using &man.strings.1; on the font file. For example:
&prompt.user; strings showboat.pfb | more
%!FontType1-1.0: Showboat 001.001
%%CreationDate: 1/15/91 5:16:03 PM
%%VMusage: 1024 45747
% Generated by Fontographer 3.1
% Showboat
1991 by David Rakowski. Alle Rechte Vorbehalten.
FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup
/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
12 dict begin
/FontInfo 9 dict dup begin
/version (001.001) readonly def
/FullName (Showboat) readonly def
/FamilyName (Showboat) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -106 def
/UnderlineThickness 16 def
/Notice (Showboat
1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def
end readonly def
/FontName /Showboat def
--stdin--
Using this information, a possible name might be:
-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
The components of our name are:
Foundry
Lets just name all the new fonts
type1.
Family
The name of the font.
Weight
Normal, bold, medium, semibold, etc. From the
&man.strings.1;
output above, it appears that this font has a weight of
medium.
Slant
roman, italic, oblique, etc. Since the
ItalicAngle is zero,
roman will be used.
Width
Normal, wide, condensed, extended, etc. Until it can
be examined, the assumption will be
normal.
Additional style
Usually omitted, but this will indicate that the font
contains decorative capital letters.
Spacing
proportional or monospaced.
Proportional is used since
isFixedPitch is false.
All of these names are arbitrary, but one should strive to
be compatible with the existing conventions. A font is
referenced by name with possible wild cards by an X11 program,
so the name chosen should make some sense. One might begin by
simply using
…-normal-r-normal-…-p-…
as the name, and then use
&man.xfontsel.1;
to examine it and adjust the name based on the appearance of the
font.
So, to complete our example:
Make the font accessible to X11
&prompt.user; cd /usr/X11R6/lib/X11/fonts/Type1
&prompt.user; ln -s /usr/local/share/fonts/type1/showboat.pfb .
Edit fonts.dir and fonts.scale, adding the line describing the font
and incrementing the number of fonts which is found on the first line.
&prompt.user; ex fonts.dir
:1p
25
:1c
26
.
:$a
showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
.
:wq
fonts.scale seems to be identical to fonts.dir…
&prompt.user; cp fonts.dir fonts.scale
Tell X11 that things have changed
&prompt.user; xset fp rehash
Examine the new font
&prompt.user; xfontsel -pattern -type1-*
References: &man.xfontsel.1;, &man.xset.1;, The X
Windows System in a Nutshell, O'Reilly &
Associates.
-
+
Using type 1 fonts with Ghostscript
Ghostscript references a font via its Fontmap
file. This must be modified in a similar way to the X11
fonts.dir file. Ghostscript can use either
the .pfa or the .pfb
format fonts. Using the font from the previous example, here is
how to use it with Ghostscript:
Put the font in Ghostscript's font directory
&prompt.user; cd /usr/local/share/ghostscript/fonts
&prompt.user; ln -s /usr/local/share/fonts/type1/showboat.pfb .
Edit Fontmap so Ghostscript knows about the font
&prompt.user; cd /usr/local/share/ghostscript/4.01
&prompt.user; ex Fontmap
:$a
/Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat
.
:wq
Use Ghostscript to examine the font
&prompt.user; gs prfont.ps
Aladdin Ghostscript 4.01 (1996-7-10)
Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights
reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb...
/1899520 581354 1300084 13826 0 done.
GS>Showboat DoFont
Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb...
1939688 565415 1300084 16901 0 done.
>>showpage, press <return> to continue<<
>>showpage, press <return> to continue<<
>>showpage, press <return> to continue<<
GS>quit
References: fonts.txt in the
Ghostscript 4.01 distribution
-
+
Using type 1 fonts with Groff
Now that the new font can be used by both X11 and
Ghostscript, how can one use the new font
with groff? First of
all, since we are dealing with type 1 &postscript; fonts, the
groff device that is applicable is the ps
device. A font file must be created for each font that groff
can use. A groff font name is just a file in
/usr/share/groff_font/devps. With our
example, the font file could be
/usr/share/groff_font/devps/SHOWBOAT. The
file must be created using tools provided by groff.
The first tool is afmtodit. This is not
normally installed, so it must be retrieved from the source
distribution. I found I had to change the first line of the
file, so I did:
&prompt.user; cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp
&prompt.user; ex /tmp/afmtodit.pl
:1c
#!/usr/bin/perl -P-
.
:wq
This tool will create the groff font file from the metrics
file (.afm suffix.) Continuing with our
example:
Many .afm files are in Mac format… ^M delimited lines
We need to convert them to &unix; style ^J delimited lines
&prompt.user; cd /tmp
&prompt.user; cat /usr/local/share/fonts/type1/showboat.afm |
tr '\015' '\012' >showboat.afm
Now create the groff font file
&prompt.user; cd /usr/share/groff_font/devps
&prompt.user; /tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT
The font can now be referenced with the name
SHOWBOAT.
If Ghostscript is used to drive the printers on the system,
then nothing more needs to be done. However, if true &postscript;
printers are used, then the font must be down loaded to the
printer in order for the font to be used (unless the printer
happens to have the showboat font built in or on an accessible
font disk.) The final step is to create a down loadable font.
The pfbtops tool is used to create the
.pfa format of the font, and the
download file is modified to reference the new
font. The download file must reference the
internal name of the font. This can easily be determined from
the groff font file as illustrated:
Create the .pfa font file
&prompt.user; pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa
Of course, if the .pfa file is already
available, just use a symbolic link to reference it.
Get the internal font name
&prompt.user; fgrep internalname SHOWBOAT
internalname Showboat
Tell groff that the font must be down loaded
&prompt.user; ex download
:$a
Showboat showboat.pfa
.
:wq
To test the font:
&prompt.user; cd /tmp
&prompt.user; cat >example.t <<EOF
.sp 5
.ps 16
This is an example of the Showboat font:
.br
.ps 48
.vs (\n(.s+2)p
.sp
.ft SHOWBOAT
ABCDEFGHI
.br
JKLMNOPQR
.br
STUVWXYZ
.sp
.ps 16
.vs (\n(.s+2)p
.fp 5 SHOWBOAT
.ft R
To use it for the first letter of a paragraph, it will look like:
.sp 50p
\s(48\f5H\s0\fRere is the first sentence of a paragraph that uses the
showboat font as its first letter.
Additional vertical space must be used to allow room for the larger
letter.
EOF
&prompt.user; groff -Tps example.t >example.ps
To use ghostscript/ghostview
&prompt.user; ghostview example.ps
To print it
&prompt.user; lpr -Ppostscript example.ps
References:
/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man,
&man.groff.font.5;, &man.groff.char.7;, &man.pfbtops.1;.
-
+
Converting TrueType fonts to a groff/PostScript format for
groff
This potentially requires a bit of work, simply because it
depends on some utilities that are not installed as part of the
base system. They are:
ttf2pf
TrueType to PostScript conversion utilities. This
allows conversion of a TrueType font to an ascii font
metric (.afm) file.
Currently available at .
Note: These files are PostScript programs and must be
downloaded to disk by holding down the
Shift key when clicking on the link.
Otherwise, your browser may try to launch
ghostview to view them.
The files of interest are:
GS_TTF.PS
PF2AFM.PS
ttf2pf.ps
The funny upper/lower case is due to their being
intended also for DOS shells.
ttf2pf.ps makes use of the others as
upper case, so any renaming must be consistent with this.
(Actually, GS_TTF.PS and
PFS2AFM.PS are supposedly part of the
Ghostscript distribution, but it is just as easy to use
these as an isolated utility. FreeBSD does not seem to
include the latter.) You also may want to have these
installed to
/usr/local/share/groff_font/devps(?).
afmtodit
Creates font files for use with groff from ascii font
metrics file. This usually resides in the directory,
/usr/src/contrib/groff/afmtodit, and
requires some work to get going.
If you are paranoid about working in the
/usr/src tree, simply copy the
contents of the above directory to a work
location.
In the work area, you will need to make the utility.
Just type:
# make -f Makefile.sub afmtodit
You may also need to copy
/usr/contrib/groff/devps/generate/textmap
to
/usr/share/groff_font/devps/generate
if it does not already exist.
Once all these utilities are in place, you are ready to
commence:
Create the .afm file by
typing:
% gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name
Where, TTF_name is your
TrueType font file, PS_font_name
is the file name for the .pfa file,
AFM_name is the name you wish for
the .afm file. If you do not specify
output file names for the .pfa or
.afm files, then default names will be
generated from the TrueType font file name.
This also produces a .pfa file, the
ascii PostScript font metrics file
(.pfb is for the binary form). This
will not be needed, but could (I think) be useful for a
fontserver.
For example, to convert the 30f9 Barcode font using the
default file names, use the following command:
% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf
Aladdin Ghostscript 5.10 (1997-11-23)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Converting 3of9.ttf to 3of9.pfa and 3of9.afm.
If you want the converted fonts to be stored in
A.pfa and B.afm,
then use this command:
% gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B
Aladdin Ghostscript 5.10 (1997-11-23)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Converting 3of9.ttf to A.pfa and B.afm.
Create the groff PostScript file:
Change directories to
/usr/share/groff_font/devps so as to
make the following command easier to execute. You will
probably need root privileges for this. (Or, if you are
paranoid about working there, make sure you reference the
files DESC,
text.enc and
generate/textmap as being in this
directory.)
% afmtodit -d DESC -e text.enc file.afm \
generate/textmap PS_font_name
Where, file.afm is the
AFM_name created by
ttf2pf.ps above, and
PS_font_name is the font name
used from that command, as well as the name that
&man.groff.1; will use for references to this font. For
example, assuming you used the first
tiff2pf.ps command above, then the 3of9
Barcode font can be created using the command:
% afmtodit -d DESC -e text.enc 3of9.afm \
generate/textmap 3of9
Ensure that the resulting
PS_font_name file (e.g.,
3of9 in the example above) is located
in the directory
/usr/share/groff_font/devps by copying
or moving it there.
Note that if ttf2pf.ps assigns a
font name using the one it finds in the TrueType font file
and you want to use a different name, you must edit the
.afm file prior to running
afmtodit. This name must also match the
one used in the Fontmap file if you wish to pipe
&man.groff.1; into &man.gs.1;.
-
+
Can TrueType fonts be used with other programs?
The TrueType font format is used by Windows, Windows 95, and
Mac's. It is quite popular and there are a great number of
fonts available in this format.
Unfortunately, there are few applications that I am aware of
that can use this format: Ghostscript
and Povray come to mind.
Ghostscript's support, according to the documentation, is
rudimentary and the results are likely to be inferior to type 1
fonts. Povray version 3 also has the ability to use TrueType
fonts, but I rather doubt many people will be creating documents
as a series of raytraced pages :-).
This rather dismal situation may soon change. The FreeType Project is
currently developing a useful set of FreeType tools:
The freetype module is included with XFree86 4.x. For
more information please see the FreeBSD
Handbook or the XFree86 4.0.2
Fonts page.
The xfsft font server for X11 can
serve TrueType fonts in addition to regular fonts. Though
currently in beta, it is said to be quite usable. See
Juliusz
Chroboczek's page for further information.
Porting instructions for FreeBSD can be found at Stephen
Montgomery's software page.
xfstt is another font server for
X11,
available under .
A program called ttf2bdf can produce
BDF files suitable for use in an X environment from TrueType
files. Linux binaries are said to be available from .
and others …
-
+
Where can additional fonts be obtained?
Many fonts are available on the Internet. They are either
entirely free, or are share-ware. In addition, there are many
inexpensive CDROMs available that contain many fonts. Some
Internet locations (as of August 1996) are:
Checkout the fonts that come with the Ports Collection in
x11-fonts/
-
+
Additional questions
What use are the .pfm files?
Can one generate the .afm file from
a .pfa or
.pfb?
How to generate the groff character mapping files for
PostScript fonts with non-standard character names?
Can xditview and devX?? devices be set up to access all
the new fonts?
It would be good to have examples of using TrueType
fonts with Povray and Ghostscript.
diff --git a/en_US.ISO8859-1/articles/laptop/article.sgml b/en_US.ISO8859-1/articles/laptop/article.sgml
index e2e09addd7..f1a1b4b982 100644
--- a/en_US.ISO8859-1/articles/laptop/article.sgml
+++ b/en_US.ISO8859-1/articles/laptop/article.sgml
@@ -1,300 +1,300 @@
%articles.ent;
]>
FreeBSD on Laptops
$FreeBSD$
FreeBSD works fine on most laptops, with a few caveats.
Some issues specific to running FreeBSD on laptops, relating
to different hardware requirements from desktops, are
discussed below.
&tm-attrib.freebsd;
&tm-attrib.linux;
&tm-attrib.microsoft;
&tm-attrib.general;
FreeBSD is often thought of as a server operating system, but
it works just fine on the desktop, and if you want to use it on
your laptop you can enjoy all the usual benefits: systematic
layout, easy administration and upgrading, the ports/packages
system for adding software, and so on. (Its other benefits,
such as stability, network performance, and performance under
a heavy load, may not be obvious on a laptop, of course.)
However, installing it on laptops often involves problems which
are not encountered on desktop machines and are not commonly
discussed (laptops, even more than desktops, are fine-tuned for
µsoft.windows;). This article aims to discuss some of these
issues. Several people have also documented their experiences
with &os; on specific laptop models on webpages which are not
part of the &os; documentation. You might very well find some
information if you type the name of your laptop model and the
word &os;
into a search engine of your
choice. Additionally there is a &os;-specific online database
which aims to give information on hardware issues with laptops,
The &os;
Laptop Compatibility List.
If you want to communicate with other &os; laptop users,
check out the &a.mobile.name; list. You can also get additional
information about using Laptops on &os; at
.
-
+
&xorg;
Recent versions of &xorg; work with most display adapters
available on laptops these days. Acceleration may not be
supported, but a generic SVGA configuration should work.
Check your laptop documentation for which card you have,
and check in the &xorg; documentation
to see whether it is specifically supported. If it is not, use
a generic device (do not go for a name which just looks
similar). You can try your luck
with the command Xorg -configure
which auto-detects a lot of configurations.
The problem often is configuring the monitor. Common
resources for &xorg; focus on CRT monitors; getting a
suitable modeline for an LCD display may be tricky. You may
be lucky and not need to specify a modeline, or just need to
specify suitable HorizSync and VertRefresh ranges. If that
does not work, the best option is to check web resources
devoted to configuring X on laptops (these are often
Linux oriented sites but it does not matter because both systems
use &xorg;) and copy a modeline posted by someone for similar
hardware.
Most laptops come with two buttons on their pointing
devices, which is rather problematic in X (since the middle
button is commonly used to paste text); you can map a
simultaneous left-right click in your X configuration to
a middle button click with the line
Option "Emulate3Buttons"
in the xorg.conf file in the InputDevice
section.
-
+
Modems
Laptops usually come with internal (on-board) modems.
Unfortunately, this almost always means they are
winmodems
whose
functionality is implemented in software, for which only &windows;
drivers are normally available (though a few drivers are beginning
to show up for other operating systems; for example, if your modem has a Lucent LT chipset it might be supported by the comms/ltmdm port). If that is the case, you
need to buy an external modem: the most compact option is
probably a PC Card (PCMCIA) modem, discussed below, but
serial or USB modems may be cheaper. Generally, regular
modems (non-winmodems) should work fine.
-
+
PCMCIA (PC Card) devices
Most laptops come with PCMCIA (also called PC Card)
slots; these are supported fine under FreeBSD. Look through
your boot-up messages (using &man.dmesg.8;) and see whether these were
detected correctly (they should appear as
pccard0,
pccard1 etc on devices like
pcic0).
&os; 4.X supports 16-bit PCMCIA cards, and
&os; 5.X supports both 16-bit and
32-bit (CardBus
) cards. A database of supported
cards is in the file /etc/defaults/pccard.conf.
Look through it, and preferably buy cards listed there. Cards not
listed may also work as generic
devices: in
particular most modems (16-bit) should work fine, provided they
are not winmodems (these do exist even as PC Cards, so watch out).
If your card is recognised as a generic modem, note that the
default pccard.conf file specifies a delay time of 10 seconds
(to avoid freezes on certain modems); this may well be
over-cautious for your modem, so you may want to play with it,
reducing it or removing it totally.
Some parts of pccard.conf may need
editing. Check the irq line, and be sure to remove any number
already being used: in particular, if you have an on board sound
card, remove irq 5 (otherwise you may experience hangs when you
insert a card). Check also the available memory slots; if your
card is not being detected, try changing it to one of the other
allowed values (listed in the manual page &man.pccardc.8;).
If it is not running already, start the &man.pccardd.8; daemon.
(To enable it at boot time, add
pccard_enable="YES" to
/etc/rc.conf.) Now your cards should be
detected when you insert and remove them, and you should get
log messages about new devices being enabled.
There have been major changes to the pccard code
(including ISA routing of interrupts, for machines where
&os; is not able to use the PCI BIOS) before the &os; 4.4
release. If you have problems, try upgrading your system.
-
+
Power management
Unfortunately, this is not very reliably supported under
FreeBSD. If you are lucky, some functions may work reliably;
or they may not work at all.
To make things a little more complex, there are two existing
standards for power management: APM and ACPI, the latter
superseding the former and including more features, but also
introducing more problems.
Some laptops support both APM and ACPI (to a certain
degree), others just support one of them, so chances are that
you have to experiment with both of them to have reliable power
management on your laptop.
You cannot have APM and ACPI enabled at the same time,
even if your laptop has support for both of them.
APM
The APM (Advanced Power Management) BIOS provides support
for various power management features like standby, suspend,
hibernation, CPU clock slow down etc. and is available
under &os; 4.X and &os; 5.X.
To enable APM support, you can compile a kernel with power
management support (device apm0 on
&os; 4.X and device apm on
&os; 5.X). A kernel module for APM is available under
&os; 5.X, to simply load the APM kernel module at boot
add the line apm_load="YES" to
/boot/loader.conf.
On &os; 5.X, you also have to set
hint.apm.0.disabled="0" in
/boot/device.hints.
You can start APM at boot time by having
apm_enable="YES" in
/etc/rc.conf. You may also want start
the &man.apmd.8; daemon by adding
apmd_enable="YES" to
/etc/rc.conf, which takes care of
various APM events that are posted to the BIOS, so you can
have your laptop suspend/resume by pressing some function
key on the keyboard or by closing/opening the lid.
The APM commands are listed in the &man.apm.8; manual page.
For instance, apm -b gives you battery
status (or 255 if not supported), apm -Z
puts the laptop on standby, apm -z (or
zzz) suspends it. To shutdown and power
off the machine, use shutdown -p. Again,
some or all of these functions may not work very well or at
all.
You may find that laptop suspension/standby works in
console mode but not under X (that is, the screen does not
come on again); if you are running &os; 5.X, one solution
for this might be to put options
SC_NO_SUSPEND_VTYSWITCH
in your kernel configuration file and recompile your kernel.
Another workaround is to switch to a virtual console (using
CtrlAltF1
or another function key) and then execute &man.apm.8;.
You can automate this with &man.vidcontrol.1;, if you are
running &man.apmd.8;. Simply edit
/etc/apmd.conf and change it to
this:
apm_event SUSPENDREQ {
exec "vidcontrol -s 1 < /dev/console";
exec "/etc/rc.suspend";
}
apm_event USERSUSPENDREQ {
exec "vidcontrol -s 1 < /dev/console";
exec "sync && sync && sync";
exec "sleep 1";
exec "apm -z";
}
apm_event NORMRESUME, STANDBYRESUME {
exec "/etc/rc.resume";
exec "vidcontrol -s 9 < /dev/console";
}
ACPI
ACPI (Advanced Configuration and Power Management
Interface) provides not only power management but also
platform hardware discovery (superseding PnP and PCI BIOS).
ACPI is only available under &os; 5.X and is enabled by
default, so you do not have to do anything special to get it
running. You can control ACPI behaviour with
&man.acpiconf.8;.
Unfortunately, vendors often ship their laptops with
broken ACPI implementations, thus having ACPI enabled
sometimes causes more problems than being useful, up to the
point that you cannot even boot &os; on some machines with
ACPI enabled.
If ACPI is causing problems, you might check if your
laptop vendor has released a new BIOS version that fixes some
bugs. Since the &os; ACPI implementation is still very
evolving code, you might also want to upgrade your system;
chances are that your problems are fixed.
If you want to disable ACPI simply add
hint.acpi.0.disabled="1" to
/boot/device.hints. You can disable
ACPI temporarily at the boot loader prompt by issueing
unset acpi_load if you are having problems
booting an ACPI enabled machine. &os; 5.1-RELEASE and
later come with a boot-time menu that controls how &os; is
booted. One of the proposed options is to turn off ACPI. So
to disable ACPI just select 2. Boot &os; with ACPI
disabled in the menu.
Display Power Management
The X window system (&xorg;) also includes display power
management (look at the &man.xset.1; manual page, and search for
dpms
there). You may want to investigate this. However, this,
too, works inconsistently on laptops: it
often turns off the display but does not turn off the
backlight.