The last command needs to be executed as root. The
README
of
ttf2pt1
has some better descriptions of these.
2.1. TrueType to Type1 Conversion
The following steps describe converting TrueType Bijoy fonts to
Type1, suitable for PDF creation:
-
Instead of creating a Type1 font directly from
sutom___.ttf
(TrueType font file of SutonnyMJ
font), create an interim file
sutonnymj.t1a
:
$
ttf2pt1 sutom___.ttf sutonnymj
|
-
Perform some correction to
sutonnymj.t1a
using
forceiso
, a
PERL
script supplied with the
ttf2pt1
package, and create
sutonnymj2.t1a
:
$
cat sutonnymj.t1a | /usr/local/share/ttf2pt1/scripts/forceiso \
"U00%x" > sutonnymj2.t1a
|
This correction is needed because some glyphs of Bijoy fonts
have no name.
forceiso
solves this problem by
assigning proper names to those otherwise nameless glyphs.
-
Finally, create the Type1 version of SutonnyMJ from
sutonnymj2.t1a
using
t1asm
,
another program supplied with the
ttf2pt1
package:
$
cat sutonnymj2.t1a | /usr/local/libexec/ttf2pt1/t1asm \
> sutonnymj.pfa
|
The last two steps can also be done in one go:
$
cat sutonnymj.t1a | /usr/local/share/ttf2pt1/scripts/forceiso \
"U00%x" | /usr/local/libexec/ttf2pt1/t1asm > sutonnymj.pfa
|
The final product, in this case
sutonnymj.pfa
,
is the actual Type1 font file. The first step also produces
sutonnymj.afm
which can be ignored through the rest of the text.
2.2. Font Installation
There are some programs that automate font installation, such as
type1inst
for Type1,
ttmkfdir
for TrueType, KDE's own font installer for both types and some others. When
these are used, the font encoding can be wrong and needs hand-editing of the
fonts.scale
file.
If any of the font installing programs were used,
mkfontdir
must be executed after editing
font.scale
by hand. For Type1 fonts, the encoding is
"adobe-fontspecific"
and not
"iso8859-1."
For TrueType fonts, the encoding is
"apple-roman"
and not
"iso8859-1"
. Besides,
anti-aliasing must be stopped for these TrueType fonts to show up.
Alternatively, the next three sections can be considered to
install fonts manually. This is a bit cumbersome but when things go
wrong, it is easier to debug, as the user has a clear idea about the
whole thing.
2.2.1. Type1 Font Installation
The following steps describe manual installation of Type1
fonts:
-
Create a new directory,
/usr/local/share/fonts/type1/bijoy/
, and copy the Type1 font there:
$
mkdir -p /usr/local/share/fonts/type1/bijoy/
$
cp sutonnymj.pfa /usr/local/share/fonts/type1/bijoy/
|
-
Create the file
fonts.scale
and place it inside
/usr/local/share/fonts/type1/bijoy/
. The
fonts.scale's
creation process will be described later in
Section 2.2.2
.
-
Create another file
fonts.dir
using
mkfontdir
:
$
cd /usr/local/share/fonts/type1/bijoy/
$
mkfontdir
|
If the
fonts.scale
was created correctly then
fonts.dir
will be created, otherwise some error messages will appear
after executing
mkfontdir
.
-
Open
XF86Config
and add
/usr/local/share/fonts/type1/bijoy/
as a new fontpath in the
"Files"
section:
FontPath "/usr/local/share/fonts/type1/bijoy/"
The
XF86Config
file is generally found inside
/etc/X11/
.
If it's not present there then use
find
to get the path:
$
find / -name XF86Config
|
-
Restart X server by pressing
Ctrl
+
Alt
+
Bksp
.
The font will be installed.
-
Check whether the font has really been installed by using
xlsfonts
. This program shows the
XLFD
of every font that is available to the X server.
grep
can be used to find the desired font from
xlsfonts'
output:
$
xlsfonts | grep sutonnymj
|
If
"sutonnymj"
is unavailable to X then grep will give no output. Otherwise the output will be the
XLFD
of
"sutonnymj"
:
-altsys-sutonnymj-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
|
If more than one font were installed then
grep altsys
will show them all (if present in xlsfonts' output).
2.2.2. Creating
fonts.scale
The
fonts.scale
file contains various information about the fonts in a directory
where that
fonts.scale
itself is placed. This means every directory which has any font
file can have its own
fonts.scale
(non-scalable fonts like Bitmap fonts do not need a
fonts.scale
file).
The
information that every line of a
fonts.scale
contains
(preceded by the name of the font file itself) is called
XLFD
(X Logical Font Definition). An example line from a
fonts.scale
file is:
sutonny.pfa -altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
The only difference is the very first line of
fonts.scale
, which has only a
number instead of the usual font-file name followed by the
corresponding
XLFD
. This number is the total
number of XLFDs listed in that
fonts.scale
file.
The structure of a
fonts.scale
is like this:
Line 1: Total number of XLFD
Line 2: FontFileName1 XLFD
Line 3: FontFileName2 XLFD
....
....
....
|
The following is a suitable XLFD for Type1 Bijoy fonts:
-altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
Please note that in the above string,
"SutonnyMJ"
is the actual fontname. This name needs to be changed accordingly for
other fonts.
An example
fonts.scale
file for two Type1 Bijoy fonts can be like this (Where
sutonnymj.pfa and rinkymj.pfa are the actual Type1 font files for
the fonts Sutonnymj and Rinkymj respectively):
2
sutonnymj.pfa -altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
rinkymj.pfa -altsys-RinkyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
|
It's better not to press
Return
after writing the
XLFD in the last line. This sometimes create problem with the total
number of XLFD lines and the file is taken as having bad structure by
mkfontdir
. If
fonts.scale
is not created properly, the
mkfontdir
command will give error message. Otherwise
fonts.dir
will be created.
The
"adobe-fontspecific"
substring found at the end of every XLFD for Type1 Bijoy fonts is the encoding of that font. If
"iso8859-1"
encoding is required, this can be done too by creating another file
fonts.alias
. Every line of
fonts.alias
contains two XLFDs. The first XLFD is the alias and the second one is the original. Unlike
fonts.scale
and
fonts.dir
, there is no number at the first line of
fonts.alias
. An example
fonts.alias's
structure
looks like this:
Line 1: -altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-iso8859-1
-altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
Line 2: -altsys-RinkyMJ-medium-r-normal--0-0-0-0-p-0-iso8859-1
-altsys-RinkyMJ-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific
|
Generally, some subdirectories under
/usr/X11R6/lib/X11/fonts/
contain many font files and some
fonts.scale
files,
fonts.dir
and
fonts.alias
as well. A browse through these files can make it easier to create new ones. One thing to notice is that the content of both
fonts.scale
and
fonts.dir
are same but both are still needed.
2.2.3. TrueType Font Installation
The Bijoy font's TrueType installation method is quite similar
to that of Type1. Just keep a separate directory for the fonts, like,
/usr/local/share/fonts/ttfonts/bijoy/
and change the XLFD to:
-altsys-SutonnyMJ-medium-r-normal--0-0-0-0-p-0-apple-roman
In the example, the font encoding is
"apple-roman"
instead of
"adobe-fontspecific."
Also to use these fonts
anti-aliasing must be stopped, and this is where
"Xft"
comes into business.In your
$HOME
directory, create a hidden file
~/.xftconfig
and write the following lines in it ( the file may be
already present, in that case just add these lines):
dir "/usr/local/share/fonts/ttfonts/bijoy/"
match any family == "sutonnymj"
edit antialias = false; encoding = "apple-roman";
|
The
match any family == "sutonnymj"
and the next line
prevents anti-aliasing for sutonnymj only. If there are other Bijoy
fonts in use, more similar lines must be added.
The presence of only
~/.xftconfig
is enough to make a TrueType font available to KWord. There is no
need to create
fonts.scale
and
fonts.dir
. Even the fontpath needs not be added
in
XF86Config
. So these steps can be skipped if
wished.
Newer systems(like RH 8.0) use Xft 2.0 instead of Xft 1.0 .
Xft 2.0 doesn't use
~/xftconfig
. Instead it uses
~/.fonts
. This file can be modified by
fontconfig
. Here also,
"antialias"
must be
stopped and
"encoding"
remains
"apple-roman"
.
2.3. On Using TrueType
KWord
can't create PDFs perfectly using TrueType fonts, so there is no
reason to use TrueType fonts for creating PDFs. But TrueType is useful
for creating PDFs from files written in
MS Word
(i.e. *.doc files). Even then these PDFs are defective (due to the use
of Type3 fonts inside the PDFs) and so are not transferable to other
computers; they can be used for printing only. So the only suggested
use of TrueType is to create PDFs from
MS Word
files for printing. Again, these PDFs are of low quality, so if it
is not urgently needed, TrueType should be avoided completely for
PDF creation.
To open an
MS Word
file in
KWord
, the encoding of the relevant font(s) should be changed from
"apple-roman"
to
"iso8859-1"
in the
~/.xftconfig
, for example:
match any family == "sutonnymj"
edit antialias = false; encoding = "apple-roman";
|
will become:
match any family == "sutonnymj"
edit antialias = false; encoding = "iso8859-1";
|
Type1 and TrueType versions of a font should not be used
together. To stop using TrueType fonts, the corresponding FontPath must
be commented out from the
"Files"
section of
XF68Config
. The relevant entries for the font in
~/.xftconfig
must also be commented out. In both cases,
a
"#"
as the first character on any line comments out the whole
line. Given below is an example
~/.xftconfig
,
where entry for a font has been commented out:
# dir "/usr/local/share/fonts/ttfonts/"
# match any family == "sutonnymj"
# edit antialias = false; encoding = "apple-roman";
|