/usr/sbin/update-fonts-scale is in xfonts-utils 1:7.7+4.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | #!/bin/sh
# $Id: update-fonts-scale 189 2005-06-11 00:04:27Z branden $
# This program generates fonts.scale files for X font directories; see
# mkfontdir(1x) for a description of the format of fonts.scale files.
# Copyright 1999-2002, 2004 Branden Robinson.
# Copyright 2006 Steve Langasek.
# Licensed under the GNU General Public License, version 2.  See the file
# /usr/share/common-licenses/GPL or <https://www.gnu.org/copyleft/gpl.txt>.
PROGNAME=${0##*/}
# Query the terminal to establish a default number of columns to use for
# displaying messages to the user.  This is used only as a fallback in the event
# the COLUMNS variable is not set.  ($COLUMNS can react to SIGWINCH while the
# script is running, and this cannot, only being calculated once.)
DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
    DEFCOLUMNS=80
fi
# Display a message, wrapping lines at the terminal width.
message () {
    echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
}
# Display a debugging message.
trace () {
    if [ -n "$DEBUG" ]; then
        message "note: $*" >&2
    fi
}
# Display a warning message.
warn () {
    message "warning: $*" >&2
}
# Display an error message and exit.
die () {
    message "fatal error: $*" >&2
    exit 1
}
# Display a usage message.
usage () {
    if [ -n "$*" ]; then
        message "usage error: $*"
    fi
    cat <<EOF
Usage: $PROGNAME DIRECTORY ...
       $PROGNAME { -h | --help }
This program combines scalable X font information from several packages into a
single file that is placed in each specified X font directory DIRECTORY.  This
utility is primarily useful to Debian package maintainer scripts.  See
update-fonts-scale(8) for more information.
Options:
    -h, --help                        display this usage message and exit
EOF
}
X11R7_LAYOUT=
# Validate arguments.
case "$1" in
    -h|--help)
        usage
        exit 0
        ;;
    -7|--x11r7-layout)
        X11R7_LAYOUT=true
        shift
        ;;
esac
case "$1" in
    -*)
        usage "unrecognized option" >&2
        exit 2
        ;;
esac
if [ $# -eq 0 ]; then
    usage "one or more font directories must be specified" >&2
    exit 2
fi
while [ -n "$1" ]; do
    # Try to be clever about the argument; were we given an absolute path?
    if expr "$1" : "/.*" >/dev/null 2>&1; then
        # Yes; an absolute path to an X font directory was provided.
        X11R7DIR=$1
        ETCDIR=/etc/X11/fonts/${X11R7DIR##*/}
        ETC7DIR=/etc/X11/fonts/X11R7/${X11R7DIR##*/}
        if [ "$X11R7DIR" = "$ETCDIR" ] || [ "$X11R7DIR" = "$ETC7DIR" ]; then
            # We were given an /etc directory as an argument.
            die "path to X font directory must be used"
        else
            warn "absolute path $X11R7DIR was provided"
        fi
    else
        # No; a relative path was provided -- assume we were given just the
        # basename.
        X11R7DIR=/usr/share/fonts/X11/$1
        ETCDIR=/etc/X11/fonts/$1
        ETC7DIR=/etc/X11/fonts/X11R7/$1
    fi
    shift
    # Confirm that the directories to be operated on exist.
    VALIDSRC=
    if [ -d "$ETCDIR" ]; then
        VALIDSRC=yes
    else
        warn "$ETCDIR does not exist or is not a directory"
    fi
    if [ -d "$ETC7DIR" ]; then
        VALIDSRC=yes
    else
        if [ -n "$X11R7_LAYOUT" ]; then
            warn "$ETC7DIR does not exist or is not a directory"
        fi
    fi
    VALIDDEST=
    if [ -d "$X11R7DIR" ]; then
        VALIDDEST=yes
    else
        warn "$X11R7DIR does not exist or is not a directory"
    fi
    if [ -z "$VALIDSRC" ] || [ -z "$VALIDDEST" ]; then
        continue
    fi
    # Are there any files to process?
    if [ "$(echo "$ETCDIR"/*.scale "$ETC7DIR"/*.scale)" != "$ETCDIR/*.scale $ETC7DIR/*.scale" ]
    then
        if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
            for SCALEFILE in "$ETCDIR"/*.scale "$ETC7DIR"/*.scale; do
                [ -e "$SCALEFILE" ] || continue
                # Only write fonts to the .scale file that actually exist, so
                # that removed-but-not-purged scalable font packages do not
                # register nonexistent fonts; this has the desirable side effect
                # that the count at the top of the file is also omitted.
                #
                # XXX: This technique will be tricked into yielding false
                # negatives if the font filename has whitespace in it.
                while read FONTFILE FONTNAME; do
                    if [ -f "$X11R7DIR/$FONTFILE" ]; then
                        echo "$FONTFILE $FONTNAME" \
                          >>"$X11R7DIR/fonts.scale.update-tmp"
                    else
                        trace "$SCALEFILE references nonexistent font file" \
                          "$FONTFILE; skipping"
                    fi
                done <"$SCALEFILE"
            done
            if [ -e "$X11R7DIR/fonts.scale.update-tmp" ]; then
                # Write the new scale file to a temporary location in case we
                # are interrupted.  Write the new count to the top of file.  Use
                # cat and pipe to wc so wc doesn't report the filename.
                cat "$X11R7DIR/fonts.scale.update-tmp" \
                  | wc -l | tr -d '[:blank:]' \
                  >"$X11R7DIR/fonts.scale.update-new"
                cat "$X11R7DIR/fonts.scale.update-tmp" \
                  >>"$X11R7DIR/fonts.scale.update-new"
                mv "$X11R7DIR/fonts.scale.update-new" "$X11R7DIR/fonts.scale"
                rm "$X11R7DIR/fonts.scale.update-tmp"
            else
                # No font in the processed *.scale files was in the current
                # directory, so remove fonts.scale.
                rm -f "$X11R7DIR/fonts.scale"
            fi
        fi
    else
        if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
            # No files to process; remove any fonts.scale file already in the
            # font directory.
            rm -f "$X11R7DIR/fonts.scale"
            # Remove the font directory if it is empty.
            rmdir "$X11R7DIR" >/dev/null 2>&1 || true
        fi
    fi
done
exit 0
# vim:set ai et sts=4 sw=4 tw=80:
 |