]> git.pld-linux.org Git - packages/fontpostinst.git/blob - fontpostinst
22addd20aea33313a2ecc3bd42394be47b46215b
[packages/fontpostinst.git] / fontpostinst
1 #!/bin/sh
2
3 # TODO:
4 # Generating Fontmap for TTF fonts: http://docs.scribus.net/index.php?lang=en&page=gsfont
5
6 # $Id$
7
8 # Requires: /bin/sh textutils fileutils
9 # optionally:
10 #       mkfontdir, mkfontscale (XFree86)  (or ttmkfdir - for TTF only)
11 #       fc-cache (fontconfig or XFree86-fontconfig)
12 #       gnome-font-install (gnome-print)
13 #       t1libconfig (t1lib)
14
15 FBASEDIR="/usr/share/fonts"
16
17 MKFONTDIRBIN="/usr/X11R6/bin/mkfontdir"
18 MKFONTDIR="$MKFONTDIRBIN"
19 MKFONTSCALEBIN="/usr/X11R6/bin/mkfontscale"
20 MKFONTSCALE="$MKFONTSCALEBIN"
21
22 MKTTFFONTSCALEBIN="$MKFONTSCALEBIN"
23 MKTTFFONTSCALE="$MKTTFFONTSCALEBIN"
24 if [ ! -x "$MKFONTSCALEBIN" -a -x /usr/bin/ttmkfdir ]; then
25         # fallback for X <= 4.2.x
26         MKTTFFONTSCALEBIN="/usr/bin/ttmkfdir"
27         MKTTFFONTSCALE="$MKFONTSCALEBIN -e /usr/share/fonts/encodings/encodings.dir"
28 fi
29
30 FCCACHEBIN="/usr/bin/fc-cache"
31 if [ ! -x $FCCACHEBIN -a -x /usr/X11R6/bin/fc-cache ]; then
32         # use XFree86-fontconfig
33         FCCACHEBIN="/usr/X11R6/bin/fc-cache"
34 fi
35 if [ ! -x $FCCACHEBIN -a -x /usr/X11R6/bin/xftcache ]; then
36         # fallback for XFree86 4.[0-2]
37         FCCACHEBIN="/usr/X11R6/bin/xftcache"
38 fi
39 FCCACHE="$FCCACHEBIN ."
40
41 GNOMEFONTINSTBIN="/usr/bin/gnome-font-install"
42 if [ ! -x $GNOMEFONTINSTBIN -a -x /usr/X11R6/bin/gnome-font-install ]; then
43         # fallback for Ra
44         GNOMEFONTINSTBIN="/usr/X11R6/bin/gnome-font-install"
45 fi
46 GNOMEFONTINST="$GNOMEFONTINSTBIN --target $FBASEDIR/fontmap"
47
48 T1LIBCONFIGBIN="/usr/bin/t1libconfig"
49 T1LIBCONFIG="$T1LIBCONFIGBIN --force"
50
51 if [ -z "$1" ]; then
52         echo "Usage: fontpostinst TYPE [DIR]"
53         echo "  TYPE is one of:"
54         echo "    OTF, TTF, Type1, misc, 100dpi, 75dpi, cyrillic, local, CID, Speedo, PEX"
55         echo "  default DIR is $FBASEDIR/TYPE"
56         exit 1
57 fi
58
59 FTYPE="$1"
60 if [ -z "$2" ]; then
61         FDIR="$FBASEDIR/$FTYPE"
62 else
63         FDIR="$2"
64 fi
65
66 umask 022
67 cd "$FDIR" || exit 0
68 if [ "`echo fonts.alias.*`" != 'fonts.alias.*' ]; then
69         cat fonts.alias.* | LC_ALL=C sort -u > fonts.alias
70 elif [ -f fonts.alias ]; then
71         mv -f fonts.alias fonts.alias-save
72 fi
73 case "$FTYPE" in
74     OTF|TTF)
75         if [ -x $MKTTFFONTSCALEBIN ]; then
76                 $MKTTFFONTSCALE
77         fi
78         if [ -x $MKFONTDIRBIN ]; then
79                 $MKFONTDIR
80         fi
81         if [ -x $FCCACHEBIN ]; then
82                 $FCCACHE
83         fi
84         ;;
85     Type1)
86         rm -f fonts.scale.bak Fontmap.bak
87         if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then
88                 cat fonts.scale.* 2>/dev/null | LC_ALL=C sort -u > fonts.scale.tmp
89                 cat fonts.scale.tmp | wc -l | tr -d ' ' > fonts.scale
90                 cat fonts.scale.tmp >> fonts.scale
91                 rm -f fonts.scale.tmp
92         elif [ "`echo *.pf[ab]`" != '*.pf[ab]' ]; then
93                 # no hints - try to generate
94                 if [ -x $MKFONTSCALEBIN ]; then
95                         $MKFONTSCALE
96                 fi
97         elif [ -f fonts.scale ]; then
98                 mv -f fonts.scale fonts.scale-save
99         fi
100         if [ -x $MKFONTDIRBIN ]; then
101                 $MKFONTDIR
102         fi
103         if [ -x $FCCACHEBIN ]; then
104                 $FCCACHE
105         fi
106         if [ "`echo Fontmap.*`" != 'Fontmap.*' ]; then
107                 cat Fontmap.* > Fontmap
108         elif [ -f Fontmap ]; then
109                 mv -f Fontmap Fontmap-save
110         fi
111         if [ -x $GNOMEFONTINSTBIN ]; then
112                 $GNOMEFONTINST
113         fi
114         if [ -x $T1LIBCONFIGBIN ]; then
115                 $T1LIBCONFIG
116         fi
117         ;;
118     CID|Speedo)
119         if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then
120                 cat fonts.scale.* 2>/dev/null | LC_ALL=C sort -u > fonts.scale.tmp
121                 cat fonts.scale.tmp | wc -l | tr -d ' ' > fonts.scale
122                 cat fonts.scale.tmp >> fonts.scale
123                 rm -f fonts.scale.tmp
124         elif [ -f fonts.scale ]; then
125                 mv -f fonts.scale fonts.scale-save
126         fi
127         if [ -x $MKFONTDIRBIN ]; then
128                 $MKFONTDIR
129         fi
130         ;;
131     misc)
132         # special case - fonts needed for X server to start
133         if [ -x $MKFONTDIRBIN ]; then
134                 $MKFONTDIR
135         elif [ -f 6x13-ISO8859-1.pcf.gz -a -f cursor.pcf.gz ]; then
136                 cat > fonts.dir <<EOF
137 2
138 6x13-ISO8859-1.pcf.gz -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
139 cursor.pcf.gz cursor
140 EOF
141         fi
142         if [ -x $FCCACHEBIN ]; then
143                 $FCCACHE
144         fi
145         ;;
146     100dpi|75dpi|cyrillic|local|util)
147         if [ -x $MKFONTDIRBIN ]; then
148                 $MKFONTDIR
149         fi
150         if [ -x $FCCACHEBIN ]; then
151                 $FCCACHE
152         fi
153         ;;
154     PEX)
155         ;;
156     *)
157         echo "Warning: \"$FTYPE\": unknown font type!" >&2
158         if [ -x $MKFONTDIRBIN ]; then
159                 $MKFONTDIR
160         fi
161 esac
162 exit 0
This page took 0.045085 seconds and 2 git commands to generate.