]> git.pld-linux.org Git - packages/fontpostinst.git/blob - fontpostinst
- rel 16
[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 PROGRAM=${0##*/}
16
17 FBASEDIR="/usr/share/fonts"
18
19 MKFONTDIRBIN="/usr/bin/mkfontdir"
20 MKFONTDIR="$MKFONTDIRBIN"
21 if [ ! -x "$MKFONTDIRBIN" -a -x /usr/X11R6/bin/mkfontdir ]; then
22         MKFONTDIR="/usr/X11R6/bin/mkfontdir"
23 fi
24 MKFONTSCALEBIN="/usr/bin/mkfontscale"
25 MKFONTSCALE="$MKFONTSCALEBIN"
26 if [ ! -x "$MKFONTSCALEBIN" -a -x /usr/X11R6/bin/mkfontscale ]; then
27         MKFONTSCALEBIN="/usr/X11R6/bin/mkfontscale"
28 fi
29 MKTTFFONTSCALEBIN="$MKFONTSCALEBIN"
30 MKTTFFONTSCALE="$MKTTFFONTSCALEBIN"
31 if [ ! -x "$MKFONTSCALEBIN" -a -x /usr/bin/ttmkfdir ]; then
32         # fallback for X <= 4.2.x
33         MKTTFFONTSCALEBIN="/usr/bin/ttmkfdir"
34         MKTTFFONTSCALE="$MKFONTSCALEBIN -e /usr/share/fonts/encodings/encodings.dir"
35 fi
36
37 FCCACHEBIN="/usr/bin/fc-cache"
38 if [ ! -x $FCCACHEBIN -a -x /usr/X11R6/bin/fc-cache ]; then
39         # use XFree86-fontconfig
40         FCCACHEBIN="/usr/X11R6/bin/fc-cache"
41 fi
42 if [ ! -x $FCCACHEBIN -a -x /usr/X11R6/bin/xftcache ]; then
43         # fallback for XFree86 4.[0-2]
44         FCCACHEBIN="/usr/X11R6/bin/xftcache"
45 fi
46 FCCACHE="$FCCACHEBIN ."
47
48 GNOMEFONTINSTBIN="/usr/bin/gnome-font-install"
49 if [ ! -x $GNOMEFONTINSTBIN -a -x /usr/X11R6/bin/gnome-font-install ]; then
50         # fallback for Ra
51         GNOMEFONTINSTBIN="/usr/X11R6/bin/gnome-font-install"
52 fi
53 GNOMEFONTINST="$GNOMEFONTINSTBIN --target $FBASEDIR/fontmap"
54
55 T1LIBCONFIGBIN="/usr/bin/t1libconfig"
56 T1LIBCONFIG="$T1LIBCONFIGBIN --force"
57
58 if [ -z "$1" ]; then
59         echo >&2 "Usage: $PROGRAM TYPE [DIR]"
60         echo >&2 "  TYPE is one of:"
61         echo >&2 "    OTF, TTF, Type1, misc, 100dpi, 75dpi, cyrillic, local, CID, Speedo, PEX"
62         echo >&2 "  default DIR is $FBASEDIR/TYPE"
63         exit 1
64 fi
65
66 VERBOSE=0
67 if [ "$1" = "-v" ]; then
68         VERBOSE=1
69         shift
70 fi
71
72 verb() {
73         if [ "$VERBOSE" = "1" ]; then
74                 echo >&2 "$1"
75         fi
76 }
77
78 FTYPE="$1"
79 if [ -z "$2" ]; then
80         FDIR="$FBASEDIR/$FTYPE"
81 else
82         FDIR="$2"
83 fi
84
85 umask 022
86 cd "$FDIR" || exit 0
87 if [ "`echo fonts.alias.*`" != 'fonts.alias.*' ]; then
88         cat fonts.alias.* | LC_ALL=C sort -u > fonts.alias
89 elif [ -f fonts.alias ]; then
90         mv -f fonts.alias fonts.alias-save
91 fi
92 verb "$PROGRAM: Updating for $FTYPE..."
93 case "$FTYPE" in
94     OTF|TTF)
95         if [ -x $MKTTFFONTSCALEBIN ]; then
96                 verb "$PROGRAM: Running $MKTTFFONTSCALEBIN."
97                 $MKTTFFONTSCALE
98         fi
99         if [ -x $MKFONTDIRBIN ]; then
100                 verb "$PROGRAM: Running $MKFONTDIRBIN."
101                 $MKFONTDIR
102         fi
103         if [ -x $FCCACHEBIN ]; then
104                 verb "$PROGRAM: Running $FCCACHEBIN."
105                 $FCCACHE
106         fi
107         ;;
108     Type1)
109         rm -f fonts.scale.bak Fontmap.bak
110         if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then
111                 verb "$PROGRAM: Merging fonts.scale.* files."
112                 cat fonts.scale.* 2>/dev/null | LC_ALL=C sort -u > fonts.scale.tmp
113                 cat fonts.scale.tmp | wc -l | tr -d ' ' > fonts.scale
114                 cat fonts.scale.tmp >> fonts.scale
115                 rm -f fonts.scale.tmp
116         elif [ "`echo *.pf[ab]`" != '*.pf[ab]' ]; then
117                 # no hints - try to generate
118                 if [ -x $MKFONTSCALEBIN ]; then
119                         verb "$PROGRAM: Running $MKFONTSCALEBIN."
120                         $MKFONTSCALE
121                 fi
122         elif [ -f fonts.scale ]; then
123                 mv -f fonts.scale fonts.scale-save
124         fi
125         if [ -x $MKFONTDIRBIN ]; then
126                 verb "$PROGRAM: Running $MKFONTDIRBIN."
127                 $MKFONTDIR
128         fi
129         if [ -x $FCCACHEBIN ]; then
130                 verb "$PROGRAM: Running $FCCACHEBIN."
131                 $FCCACHE
132         fi
133         if [ "`echo Fontmap.*`" != 'Fontmap.*' ]; then
134                 verb "$PROGRAM: Merging Fontmap.* files."
135                 cat Fontmap.* > Fontmap
136         elif [ -f Fontmap ]; then
137                 mv -f Fontmap Fontmap-save
138         fi
139         if [ -x $GNOMEFONTINSTBIN ]; then
140                 verb "$PROGRAM: Running $GNOMEFONTINSTBIN."
141                 $GNOMEFONTINST
142         fi
143         if [ -x $T1LIBCONFIGBIN ]; then
144                 verb "$PROGRAM: Running $T1LIBCONFIGBIN."
145                 $T1LIBCONFIG
146         fi
147         ;;
148     CID|Speedo)
149         if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then
150                 verb "$PROGRAM: Merging fonts.scale.* files."
151                 cat fonts.scale.* 2>/dev/null | LC_ALL=C sort -u > fonts.scale.tmp
152                 cat fonts.scale.tmp | wc -l | tr -d ' ' > fonts.scale
153                 cat fonts.scale.tmp >> fonts.scale
154                 rm -f fonts.scale.tmp
155         elif [ -f fonts.scale ]; then
156                 mv -f fonts.scale fonts.scale-save
157         fi
158         if [ -x $MKFONTDIRBIN ]; then
159                 verb "$PROGRAM: Running $MKFONTDIRBIN."
160                 $MKFONTDIR
161         fi
162         ;;
163     misc)
164         # special case - fonts needed for X server to start
165         if [ -x $MKFONTDIRBIN ]; then
166                 verb "$PROGRAM: Running $MKFONTDIRBIN."
167                 $MKFONTDIR
168         elif [ -f 6x13-ISO8859-1.pcf.gz -a -f cursor.pcf.gz ]; then
169                 cat > fonts.dir <<EOF
170 2
171 6x13-ISO8859-1.pcf.gz -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
172 cursor.pcf.gz cursor
173 EOF
174         fi
175         if [ -x $FCCACHEBIN ]; then
176                 verb "$PROGRAM: Running $FCCACHEBIN."
177                 $FCCACHE
178         fi
179         ;;
180     100dpi|75dpi|cyrillic|local)
181         if [ -x $MKFONTDIRBIN ]; then
182                 verb "$PROGRAM: Running $MKFONTDIRBIN."
183                 $MKFONTDIR
184         fi
185         if [ -x $FCCACHEBIN ]; then
186                 verb "$PROGRAM: Running $FCCACHEBIN."
187                 $FCCACHE
188         fi
189         ;;
190     PEX)
191         ;;
192     *)
193         echo >&2 "Warning: \"$FTYPE\": unknown font type!" >&2
194         if [ -x $MKFONTDIRBIN ]; then
195                 verb "$PROGRAM: Running $MKFONTDIRBIN."
196                 $MKFONTDIR
197         fi
198 esac
199 exit 0
This page took 0.044677 seconds and 3 git commands to generate.