|
|
| |
ttfm.sh(1) |
FreeBSD General Commands Manual |
ttfm.sh(1) |
ttfm.sh - TrueType Font Manager
ttfm.sh command [ module ] [ font1 font2 ... ]
TTFM (TrueType Font Manager) consists of a TrueType font parser, and several
modules that help managing TrueType fonts in various applications. Users can
then use ttfm.sh (which will call those modules), to execute simple commands
like font adding, removing, list, and so on.
command can be one of the followings:
- --add
- Add fonts. The command accepts multiple fonts specied by the font's
filename.
- --initm
- Initial selected modules. (Deprecated)
- --list
- List installed fonts. No font arguments are needed.
- --modules
- List all avaiable modules. No font arguments are needed.
- --remove
- Remove installed fonts. Accepts multiple fonts.
- --setdefault
- Set the following font as the default font(Ming). Only one font argument
is allowed.
- --setdefault_kai
- Set the following font as default font(Kai). Only one font argument is
allowed.
Currently these modules are available:
- abiword
- For AbiWord 0.7.12 and above. It depends on modules of both XFree86 and
Ghostscript.
- chitex
- For ChiTeX, a TeX/LaTeX environment that can handle both BIG5 and GB
encodings. Broken in FreeBSD.
- ghostscript6
- For Aladdin Ghostscript 6.50. It can manage TrueType fonts and CID
fonts(limited functionalities). Ghostscript must be patched to use
TrueType fonts. See the following for more details.
- ttf2pk
- Generate pk (packed raster) and tfm (TeX font metrics) files from TrueType
fonts. These files can then be used in the CJK LaTeX environment. Broken
under FreeBSD.
- xfreetype
- For XFree86's freetype backend, which is Xfsft in 3.x, and freetype module
in 4.x.
- xttfm-tcl
- For XFree86 3.3.x X-TrueType server. Written in TCL.
- xttfm
- For XFree86 X-TrueType server, both 3.3.x or 4.x. Bourne shell
script.
- ttfm.sh --modules
- List all available modules in system.
- ttfm.sh --add xttfm <path>/*.[TtTtCcFf]
- Install all TrueType fonts in <path>, using xttfm module.
- ttfm.sh --setdefault xttfm <path>/good_ming.ttf
- Set <path>/good_ming.ttf as xttfm module's default font(Ming).
- ttfm.sh --setdefault_kai xttfm <path>/good_kai.ttf
- Set <path>/good_kai.ttf as xttfm module's default font(Kai).
- ttfm.sh --list xttfm
- List all fonts installed by xttfm.ttfm module.
- ttfm.sh --remove xttfm.ttfm bkai00mp.ttf
- Remove bkai00mp.ttf(from the above list), installed by xttfm.ttfm.
- ttfm.sh --add ghostscript6 /somewhere/bsmi00lp.ttf
- Install /somewhere/bsmi00lp.ttf in Ghostscript, using ghostscript6
module.
- ttfm.sh --remove ghostscript6 bsmi00lp.ttf
- Remove bsmi00lp.ttf, using ghostscript6 module.
- ttfm.sh --remove ghostscript6 ArphicMingB5-Regular
- Remove ArphicMingB5-Regular(which is equivalent to bsmi00lp.ttf above,
obtained from "ttfm.sh --list ghostscript6"), using ghostscript6
module.
- ttfm.sh --add abiword /WIN98/FONTS/MINGLIU.TTC
- Install Windows 98's MINGLIU.TTC high quality font for AbiWord. This has
the chain effect that MINGLIU.TTC will be also installed by xttfm and
ghostscript6 modules, since a fully CJK functioning AbiWord needs both
XFree86 and Ghostscript support. See the following for additional
details.
- ttfm.sh --setdefault abiword /WIN98/FONTS/MINGLIU.TTC
- Set MINGLIU.TTC as AbiWord's default font(Ming). This also has the chain
effect that MINGLIU.TTC will be also set as xttfm and ghostscript6
modules' default fonts(Ming). See the following for additional
details.
- ttfm.sh --add <path>/*.ttf
- Install <path>/*.ttf, using every module. However, usages like
"--add *.ttf" and "--remove *.ttf" are reserved only
for backward compatibility. Since the dependency between modules will
become more complex, whether "--add *.ttf" has chain effects
totally depends on individual applications. It's strongly suggested that
users specify which module to invoke explicitly, rather than doing a
global installation/removal.
It's straightforward to make a new TTFM module. A TTFM module can be in any
format, ie. it could be a shell or Perl or Python script, a C program, or even
an Assembly if you like. Any program is a TTFM module as long as it accepts
the following arguments:
- --add [font ...]
--list
--remove [font ...]
--setdefault [font]
--setdefault_kai [font]
The meanings should be clear by their names, and the above
"DESCRIPTION" section. The ttfm.sh will call a TTFM module in only
one of these forms.
Note that there's no font format involved in this requirement,
meaning that a TTFM module can have nothing to do with TrueType at all. For
example, an independent VFGhostscript's bdf manager can be used as a TTFM
module, once it accepts the above arguments(maybe as it own arguments'
subset).
If a TTFM module tries to get information from a TrueType font,
then ttfinfo(1) should be used. Although it lacks some advanced
features, like CJK entries, it's far better than most programs.
- AbiWord's CJK support:
- http://www.hj.webprovider.com/develope/index.html, and
http://www.abisource.com/mailinglists/abiword-dev/00/October/0398.html
- Adobe Technical Notes:
- http://partners.adobe.com/asn/developer/technotes.html.
This page contains many excellent technical notes, specifications,
supplements, and errata for Adobe's font technology.
- ChiTeX
- http://www.math.ncu.edu.tw/yih/
- cwTeX
- http://ceiba.cc.ntu.edu.tw/tmwu/index.htm
- Ghostscript 6's TrueType patch:
- http://www.aihara.co.jp/~taiji/tops/
- VFlib:
- http://TypeHack.aial.hiroshima-u.ac.jp/VFlib/
- X-TrueType(For XFree86 3.3.x):
- http://X-TT.dsl.gr.jp
- Xatm(For CID fonts used in X 3.3.x):
- http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/Xatm/xatm_e.html
- XFree86 4.x:
- See xc/programs/Xserver/hw/xfree86/doc/README.fonts.
It contains comprehensive instructions on how to install TrueType fonts for
X-TT & X-FreeType backend, and CID fonts under XFree86 4.x.
About modules(in the order of precedence):
- vfghostscript55.ttfm
- For VFlib + Ghostscript 5.5.
- Fix chitex.ttfm and ttf2pk.ttfm under FreeBSD.
- It means making a FreeBSD port of ChiTeX, and modifying existing CJK port.
It's also possible that ChiTeX, CJK, cwTeX can all co-exist.
- cwtex.ttfm
- For cwTeX, a BIG5 TeX/LaTeX system of ultra-high quality.
- xcid.ttfm
- Handling CID fonts under XFree86, which is Xatm in 3.3.x, built-in in
4.x.
- Clearer relationship between modules
- With more and more modules, dependencies between modules will become a
problem. For example, which actions have chain effects (like AbiWord)
should be clarified.
About ttfinfo(also in the order of precedence):
- Use FreeType 2.
- It supports more font types like OpenType or CID.
- Support CJK font entries
- Although TrueType fonts can have CJK fontname entries, like in MS Windows,
TTFM cannot use this feature currently. Since many individual CJK TrueType
fonts have bogus English vendor and face entries(like -misc-unknown- in
XLFD), users can be easily confused with which font to use, if proper CJK
font names are not given.
- GUI interface
- It's simple to write a X client to have basic functions, since all the
dirty work are done by ttfm.sh or modules. However, it would not be
trivial to manage CJK fonts simultaneously in a single session.
- Support CID
- When TTFM supports FreeType 2, support for CID fonts would be trivial.
However, all CID fonts available now as free are released by Adobe, so
this functionality probably won't be widely tested.
- L10N font face names
- Currently, TTFM sets both Ming and Kai regardless the encoding of TrueType
fonts. But usually each country has its own face name convention, eg.
"Ming" in Taiwan, "Song" in China, "Mincho"
in Japan, and "Munhwa" in Korea. TTFM's "--setdefault"
and "--setdefault_kai" should be localized to suite users'
needs.
TODOs or BUGs that are not related to TTFM.
- BIG5-encoded TrueType fonts
- Many applications can only handle modern Unicode-encoded TrueType fonts,
eg. XFree86 (both 3.x and 4.x) has problems with certain types of BIG5
TTFs, and Alladdin Ghostscript 6 can't read them at all. Sometimes the
problem may be just a wrong encoding ID, and others are due to the lack of
BIG5 tables.
The same may happen to other legacy fonts, but the author has
only BIG5 TTFs at hand. If users encounter the same problem, either
switch to newer TTFs, or contact the author would be fine.
- CJK XLFD fields
- XLFD (X Logical Font Description) is the standard X Window uses to
identify fonts, eg.
-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1. The standard
says that each field allows ISO 8859-1 characters(except the '-'
character, which is used as field separater), so it's possible to use CJK
characters in the face field, just like in MS Windows. But it seems that X
protocol converts byte orders, maybe using the htonl() family, when
handling fonts. It will be a great challenge to modify X libraries to
support multibyte XLFD.
- Yuan-Chung Cheng <platin@linux.org.tw>
- Main program, ttf2pk.ttfm, and xttfm-tcl.ttfm.
- Chih-Wei Huang <cwhuang@linux.org.tw>
- ttfm.sh, chitex.ttfm, ttf2pk.ttfm, and xttfm-tcl.ttfm. CLE
maintainer.
- Jing-Tang Keith Jang <keith@FreeBSD.org>
- abiword.ttfm, ghostscript6.ttfm, xfreetype.ttfm, and xttfm.ttfm. FreeBSD
maintainer.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |