]>
Commit | Line | Data |
---|---|---|
30a68956 JB |
1 | #!/bin/sh |
2 | ||
9a37b768 | 3 | # TODO: |
4 | # Generating Fontmap for TTF fonts: http://docs.scribus.net/index.php?lang=en&page=gsfont | |
5 | ||
8eaa9ee5 TP |
6 | # $Id$ |
7 | ||
30a68956 JB |
8 | # Requires: /bin/sh textutils fileutils |
9 | # optionally: | |
10 | # mkfontdir, mkfontscale (XFree86) (or ttmkfdir - for TTF only) | |
8eaa9ee5 | 11 | # fc-cache (fontconfig or XFree86-fontconfig) |
30a68956 | 12 | # gnome-font-install (gnome-print) |
b8080bad | 13 | # t1libconfig (t1lib) |
30a68956 | 14 | |
c651e524 | 15 | PROGRAM=${0##*/} |
c2ab89c9 | 16 | |
30a68956 JB |
17 | FBASEDIR="/usr/share/fonts" |
18 | ||
4c0d7897 | 19 | MKFONTDIRBIN="/usr/bin/mkfontdir" |
30a68956 | 20 | MKFONTDIR="$MKFONTDIRBIN" |
4c0d7897 AM |
21 | if [ ! -x "$MKFONTDIRBIN" -a -x /usr/X11R6/bin/mkfontdir ]; then |
22 | MKFONTDIR="/usr/X11R6/bin/mkfontdir" | |
23 | fi | |
24 | MKFONTSCALEBIN="/usr/bin/mkfontscale" | |
30a68956 | 25 | MKFONTSCALE="$MKFONTSCALEBIN" |
4c0d7897 AM |
26 | if [ ! -x "$MKFONTSCALEBIN" -a -x /usr/X11R6/bin/mkfontscale ]; then |
27 | MKFONTSCALEBIN="/usr/X11R6/bin/mkfontscale" | |
28 | fi | |
30a68956 JB |
29 | MKTTFFONTSCALEBIN="$MKFONTSCALEBIN" |
30 | MKTTFFONTSCALE="$MKTTFFONTSCALEBIN" | |
b8080bad | 31 | if [ ! -x "$MKFONTSCALEBIN" -a -x /usr/bin/ttmkfdir ]; then |
6c6cfd26 JB |
32 | # fallback for X <= 4.2.x |
33 | MKTTFFONTSCALEBIN="/usr/bin/ttmkfdir" | |
34 | MKTTFFONTSCALE="$MKFONTSCALEBIN -e /usr/share/fonts/encodings/encodings.dir" | |
35 | fi | |
30a68956 | 36 | |
8eaa9ee5 TP |
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 | |
30a68956 JB |
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 | ||
b8080bad AF |
55 | T1LIBCONFIGBIN="/usr/bin/t1libconfig" |
56 | T1LIBCONFIG="$T1LIBCONFIGBIN --force" | |
57 | ||
30a68956 | 58 | if [ -z "$1" ]; then |
c2ab89c9 AM |
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" | |
30a68956 JB |
63 | exit 1 |
64 | fi | |
8eaa9ee5 | 65 | |
2709e8aa JB |
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 | ||
30a68956 JB |
78 | FTYPE="$1" |
79 | if [ -z "$2" ]; then | |
80 | FDIR="$FBASEDIR/$FTYPE" | |
81 | else | |
82 | FDIR="$2" | |
83 | fi | |
84 | ||
85 | umask 022 | |
85ae292a | 86 | cd "$FDIR" || exit 0 |
30a68956 JB |
87 | if [ "`echo fonts.alias.*`" != 'fonts.alias.*' ]; then |
88 | cat fonts.alias.* | LC_ALL=C sort -u > fonts.alias | |
6c6cfd26 JB |
89 | elif [ -f fonts.alias ]; then |
90 | mv -f fonts.alias fonts.alias-save | |
30a68956 | 91 | fi |
2709e8aa | 92 | verb "$PROGRAM: Updating for $FTYPE..." |
30a68956 JB |
93 | case "$FTYPE" in |
94 | OTF|TTF) | |
95 | if [ -x $MKTTFFONTSCALEBIN ]; then | |
2709e8aa | 96 | verb "$PROGRAM: Running $MKTTFFONTSCALEBIN." |
30a68956 JB |
97 | $MKTTFFONTSCALE |
98 | fi | |
99 | if [ -x $MKFONTDIRBIN ]; then | |
2709e8aa | 100 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
30a68956 JB |
101 | $MKFONTDIR |
102 | fi | |
103 | if [ -x $FCCACHEBIN ]; then | |
2709e8aa | 104 | verb "$PROGRAM: Running $FCCACHEBIN." |
30a68956 | 105 | $FCCACHE |
30a68956 JB |
106 | fi |
107 | ;; | |
108 | Type1) | |
109 | rm -f fonts.scale.bak Fontmap.bak | |
89af5b6f | 110 | if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then |
2709e8aa | 111 | verb "$PROGRAM: Merging fonts.scale.* files." |
30a68956 JB |
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 | |
89af5b6f | 116 | elif [ "`echo *.pf[ab]`" != '*.pf[ab]' ]; then |
30a68956 JB |
117 | # no hints - try to generate |
118 | if [ -x $MKFONTSCALEBIN ]; then | |
2709e8aa | 119 | verb "$PROGRAM: Running $MKFONTSCALEBIN." |
30a68956 JB |
120 | $MKFONTSCALE |
121 | fi | |
6c6cfd26 JB |
122 | elif [ -f fonts.scale ]; then |
123 | mv -f fonts.scale fonts.scale-save | |
30a68956 JB |
124 | fi |
125 | if [ -x $MKFONTDIRBIN ]; then | |
2709e8aa | 126 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
30a68956 JB |
127 | $MKFONTDIR |
128 | fi | |
129 | if [ -x $FCCACHEBIN ]; then | |
2709e8aa | 130 | verb "$PROGRAM: Running $FCCACHEBIN." |
30a68956 | 131 | $FCCACHE |
30a68956 | 132 | fi |
89af5b6f | 133 | if [ "`echo Fontmap.*`" != 'Fontmap.*' ]; then |
2709e8aa | 134 | verb "$PROGRAM: Merging Fontmap.* files." |
30a68956 | 135 | cat Fontmap.* > Fontmap |
6c6cfd26 JB |
136 | elif [ -f Fontmap ]; then |
137 | mv -f Fontmap Fontmap-save | |
30a68956 JB |
138 | fi |
139 | if [ -x $GNOMEFONTINSTBIN ]; then | |
2709e8aa | 140 | verb "$PROGRAM: Running $GNOMEFONTINSTBIN." |
30a68956 JB |
141 | $GNOMEFONTINST |
142 | fi | |
b8080bad | 143 | if [ -x $T1LIBCONFIGBIN ]; then |
2709e8aa | 144 | verb "$PROGRAM: Running $T1LIBCONFIGBIN." |
b8080bad AF |
145 | $T1LIBCONFIG |
146 | fi | |
30a68956 | 147 | ;; |
517672d5 | 148 | CID|Speedo) |
89af5b6f | 149 | if [ "`echo fonts.scale.*`" != 'fonts.scale.*' ]; then |
2709e8aa | 150 | verb "$PROGRAM: Merging fonts.scale.* files." |
517672d5 JB |
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 | |
2709e8aa | 159 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
517672d5 JB |
160 | $MKFONTDIR |
161 | fi | |
89af5b6f | 162 | ;; |
30a68956 JB |
163 | misc) |
164 | # special case - fonts needed for X server to start | |
165 | if [ -x $MKFONTDIRBIN ]; then | |
2709e8aa | 166 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
30a68956 JB |
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 | |
8eaa9ee5 | 175 | if [ -x $FCCACHEBIN ]; then |
2709e8aa | 176 | verb "$PROGRAM: Running $FCCACHEBIN." |
8eaa9ee5 TP |
177 | $FCCACHE |
178 | fi | |
30a68956 | 179 | ;; |
9459b6cf | 180 | 100dpi|75dpi|cyrillic|local) |
30a68956 | 181 | if [ -x $MKFONTDIRBIN ]; then |
2709e8aa | 182 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
30a68956 JB |
183 | $MKFONTDIR |
184 | fi | |
8eaa9ee5 | 185 | if [ -x $FCCACHEBIN ]; then |
2709e8aa | 186 | verb "$PROGRAM: Running $FCCACHEBIN." |
8eaa9ee5 TP |
187 | $FCCACHE |
188 | fi | |
30a68956 | 189 | ;; |
517672d5 JB |
190 | PEX) |
191 | ;; | |
30a68956 | 192 | *) |
2709e8aa | 193 | echo >&2 "Warning: \"$FTYPE\": unknown font type!" >&2 |
30a68956 | 194 | if [ -x $MKFONTDIRBIN ]; then |
2709e8aa | 195 | verb "$PROGRAM: Running $MKFONTDIRBIN." |
30a68956 JB |
196 | $MKFONTDIR |
197 | fi | |
198 | esac | |
85ae292a | 199 | exit 0 |