Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ttfm.sh(1)		     General Commands Manual		      ttfm.sh(1)

NAME
     ttfm.sh - TrueType Font Manager

SYNOPSIS
     ttfm.sh command [ module ] [ font1 font2 ...  ]

DESCRIPTION
     TTFM  (TrueType  Font Manager) consists of a TrueType font parser, and sev-
     eral modules that help managing TrueType  fonts  in  various  applications.
     Users can then use ttfm.sh (which will call those modules), to execute sim-
     ple 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  argu-
	 ment is allowed.

     --setdefault_kai
	 Set the following font as default font(Kai).  Only one font argument is
	 allowed.

AVAIABLE MODULES
     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 True-
	 Type 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.

EXAMPLES
     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 mod-
	 ule.

     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 mod-
	 ule.

     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  ghost-
	 script6 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  compatibil-
	 ity.	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.

HOW TO WRITE A TTFM MODULE
     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.

SEE ALSO
     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, sup-
	 plements, 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.

TODO
     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 Win-
	 dows, 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 True-
	 Type 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  lo-
	 calized to suite users' needs.

NOTES
     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.  Some-
	 times	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-nor-
	 mal--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.

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

								      ttfm.sh(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ttfm.sh&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help