Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Apache
: 172.26.7.228 | : 52.14.219.203
Cant Read [ /etc/named.conf ]
5.6.40-24+ubuntu18.04.1+deb.sury.org+1
www-data
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
2to3-2.7
96
B
-rwxr-xr-x
NF
963
B
-rwxr-xr-x
VGAuthService
126.22
KB
-rwxr-xr-x
[
50.18
KB
-rwxr-xr-x
a2ping
99.98
KB
-rwxr-xr-x
a5toa4
1.07
KB
-rwxr-xr-x
aa-enabled
22.16
KB
-rwxr-xr-x
aa-exec
22.16
KB
-rwxr-xr-x
ab
54.18
KB
-rwxr-xr-x
aclocal
35.93
KB
-rwxr-xr-x
aclocal-1.15
35.93
KB
-rwxr-xr-x
acpi_listen
14.27
KB
-rwxr-xr-x
acyclic
10
KB
-rwxr-xr-x
add-apt-repository
7.24
KB
-rwxr-xr-x
addpart
22.08
KB
-rwxr-xr-x
addr2line
30.55
KB
-rwxr-xr-x
adhocfilelist
8.41
KB
-rwxr-xr-x
afm2afm
12.7
KB
-rwxr-xr-x
afm2pl
34.34
KB
-rwxr-xr-x
afm2tfm
48.73
KB
-rwxr-xr-x
aleph
527.5
KB
-rwxr-xr-x
allcm
3.4
KB
-rwxr-xr-x
allec
3.4
KB
-rwxr-xr-x
allneeded
903
B
-rwxr-xr-x
apport-bug
2.5
KB
-rwxr-xr-x
apport-cli
13.05
KB
-rwxr-xr-x
apport-collect
2.5
KB
-rwxr-xr-x
apport-unpack
1.81
KB
-rwxr-xr-x
apropos
46.98
KB
-rwxr-xr-x
apt
14.09
KB
-rwxr-xr-x
apt-add-repository
7.24
KB
-rwxr-xr-x
apt-cache
78.16
KB
-rwxr-xr-x
apt-cdrom
22.16
KB
-rwxr-xr-x
apt-config
22.09
KB
-rwxr-xr-x
apt-extracttemplates
22.16
KB
-rwxr-xr-x
apt-ftparchive
234.16
KB
-rwxr-xr-x
apt-get
42.16
KB
-rwxr-xr-x
apt-key
26.75
KB
-rwxr-xr-x
apt-mark
42.16
KB
-rwxr-xr-x
apt-sortpkgs
42.09
KB
-rwxr-xr-x
ar
58.24
KB
-rwxr-xr-x
arara
108
B
-rwxr-xr-x
arch
34.21
KB
-rwxr-xr-x
arlatex
9.74
KB
-rwxr-xr-x
as
895.98
KB
-rwxr-xr-x
at
50.26
KB
-rwsr-sr-x
atq
50.26
KB
-rwsr-sr-x
atrm
50.26
KB
-rwsr-sr-x
authorindex
19.98
KB
-rwxr-xr-x
autoconf
14.42
KB
-rwxr-xr-x
autoheader
8.34
KB
-rwxr-xr-x
autoinst
80.49
KB
-rwxr-xr-x
autom4te
31.91
KB
-rwxr-xr-x
automake
247.38
KB
-rwxr-xr-x
automake-1.15
247.38
KB
-rwxr-xr-x
automat-visualize3
402
B
-rwxr-xr-x
autopoint
25.97
KB
-rwxr-xr-x
autoreconf
20.67
KB
-rwxr-xr-x
autoscan
16.73
KB
-rwxr-xr-x
autosp
38.13
KB
-rwxr-xr-x
autoupdate
33.08
KB
-rwxr-xr-x
awk
642.65
KB
-rwxr-xr-x
aws
815
B
-rwxr-xr-x
aws_completer
1.11
KB
-rwxr-xr-x
b2sum
54.21
KB
-rwxr-xr-x
base32
38.18
KB
-rwxr-xr-x
base64
38.18
KB
-rwxr-xr-x
basename
34.18
KB
-rwxr-xr-x
bashbug
6.95
KB
-rwxr-xr-x
batch
152
B
-rwxr-xr-x
bc
90.7
KB
-rwxr-xr-x
bcomps
14.04
KB
-rwxr-xr-x
bibtex
118.08
KB
-rwxr-xr-x
bibtex.original
118.08
KB
-rwxr-xr-x
bibtex8
142.63
KB
-rwxr-xr-x
bibtexu
146.6
KB
-rwxr-xr-x
bootctl
34.13
KB
-rwxr-xr-x
browse
24.65
KB
-rwxr-xr-x
bsd-from
9.99
KB
-rwxr-xr-x
bsd-write
13.99
KB
-rwxr-sr-x
bundledoc
28.58
KB
-rwxr-xr-x
busctl
66.09
KB
-rwxr-xr-x
byobu
8.07
KB
-rwxr-xr-x
byobu-config
996
B
-rwxr-xr-x
byobu-ctrl-a
4.66
KB
-rwxr-xr-x
byobu-disable
1.26
KB
-rwxr-xr-x
byobu-disable-prompt
1.28
KB
-rwxr-xr-x
byobu-enable
1.15
KB
-rwxr-xr-x
byobu-enable-prompt
1.42
KB
-rwxr-xr-x
byobu-export
1.23
KB
-rwxr-xr-x
byobu-janitor
5.82
KB
-rwxr-xr-x
byobu-keybindings
1.47
KB
-rwxr-xr-x
byobu-launch
3.21
KB
-rwxr-xr-x
byobu-launcher
1.87
KB
-rwxr-xr-x
byobu-launcher-install
2.4
KB
-rwxr-xr-x
byobu-launcher-uninstall
1.52
KB
-rwxr-xr-x
byobu-layout
3.27
KB
-rwxr-xr-x
byobu-prompt
1.13
KB
-rwxr-xr-x
byobu-quiet
1.38
KB
-rwxr-xr-x
byobu-reconnect-sockets
3.22
KB
-rwxr-xr-x
byobu-screen
8.07
KB
-rwxr-xr-x
byobu-select-backend
1.42
KB
-rwxr-xr-x
byobu-select-profile
6.14
KB
-rwxr-xr-x
byobu-select-session
1012
B
-rwxr-xr-x
byobu-shell
1.56
KB
-rwxr-xr-x
byobu-silent
1.28
KB
-rwxr-xr-x
byobu-status
5.87
KB
-rwxr-xr-x
byobu-status-detail
1.18
KB
-rwxr-xr-x
byobu-tmux
8.07
KB
-rwxr-xr-x
byobu-ugraph
4.56
KB
-rwxr-xr-x
byobu-ulevel
11.71
KB
-rwxr-xr-x
c++
1022.94
KB
-rwxr-xr-x
c++filt
26.12
KB
-rwxr-xr-x
c89
428
B
-rwxr-xr-x
c89-gcc
428
B
-rwxr-xr-x
c99
454
B
-rwxr-xr-x
c99-gcc
454
B
-rwxr-xr-x
c_rehash
6.65
KB
-rwxr-xr-x
cachepic
7.79
KB
-rwxr-xr-x
cal
28.79
KB
-rwxr-xr-x
calendar
30.48
KB
-rwxr-xr-x
captoinfo
82.11
KB
-rwxr-xr-x
catchsegv
3.25
KB
-rwxr-xr-x
catman
38.46
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
cc
1022.94
KB
-rwxr-xr-x
ccomps
22.04
KB
-rwxr-xr-x
certbot
385
B
-rwxr-xr-x
cftp3
380
B
-rwxr-xr-x
chacl
13.99
KB
-rwxr-xr-x
chage
70.13
KB
-rwxr-sr-x
chardet3
389
B
-rwxr-xr-x
chardetect3
389
B
-rwxr-xr-x
chattr
14
KB
-rwxr-xr-x
chcon
62.18
KB
-rwxr-xr-x
check-language-support
2.71
KB
-rwxr-xr-x
checkgid
5.99
KB
-rwxr-xr-x
checklistings
10.94
KB
-rwxr-xr-x
chfn
74.7
KB
-rwsr-xr-x
chrpath
18.26
KB
-rwxr-xr-x
chrt
30.08
KB
-rwxr-xr-x
chsh
43.48
KB
-rwsr-xr-x
circo
9.99
KB
-rwxr-xr-x
ckbcomp
146.33
KB
-rwxr-xr-x
ckeygen3
386
B
-rwxr-xr-x
cksum
34.18
KB
-rwxr-xr-x
clear
10
KB
-rwxr-xr-x
clear_console
10.07
KB
-rwxr-xr-x
cloud-id
396
B
-rwxr-xr-x
cloud-init
400
B
-rwxr-xr-x
cloud-init-per
2.06
KB
-rwxr-xr-x
cluster
555.3
KB
-rwxr-xr-x
cmp
46.09
KB
-rwxr-xr-x
codepage
13.99
KB
-rwxr-xr-x
col
9.99
KB
-rwxr-xr-x
col1
963
B
-rwxr-xr-x
col2
963
B
-rwxr-xr-x
col3
963
B
-rwxr-xr-x
col4
963
B
-rwxr-xr-x
col5
963
B
-rwxr-xr-x
col6
963
B
-rwxr-xr-x
col7
963
B
-rwxr-xr-x
col8
963
B
-rwxr-xr-x
col9
963
B
-rwxr-xr-x
colcrt
10
KB
-rwxr-xr-x
colrm
9.99
KB
-rwxr-xr-x
column
14.01
KB
-rwxr-xr-x
combinediff
46.58
KB
-rwxr-xr-x
comm
38.21
KB
-rwxr-xr-x
compose
17.74
KB
-rwxr-xr-x
composer
1.54
KB
-rwxr-xr-x
conch3
382
B
-rwxr-xr-x
corelist
12.53
KB
-rwxr-xr-x
cpan
7.96
KB
-rwxr-xr-x
cpan5.26-x86_64-linux-gnu
7.99
KB
-rwxr-xr-x
cpp
1022.94
KB
-rwxr-xr-x
cpp-7
1022.94
KB
-rwxr-xr-x
crc32
1.04
KB
-rwxr-xr-x
crontab
38.43
KB
-rwxr-sr-x
csplit
50.21
KB
-rwxr-xr-x
ctail
958
B
-rwxr-xr-x
ctan-o-mat
19.22
KB
-rwxr-xr-x
ctangle
46.38
KB
-rwxr-xr-x
ctanify
23.76
KB
-rwxr-xr-x
ctanupload
16.4
KB
-rwxr-xr-x
ctie
18.09
KB
-rwxr-xr-x
ctstat
22.35
KB
-rwxr-xr-x
curl
218.07
KB
-rwxr-xr-x
curl-config
5.94
KB
-rwxr-xr-x
cut
42.21
KB
-rwxr-xr-x
cweave
82.41
KB
-rwxr-xr-x
dbus-cleanup-sockets
9.98
KB
-rwxr-xr-x
dbus-daemon
231.04
KB
-rwxr-xr-x
dbus-monitor
21.99
KB
-rwxr-xr-x
dbus-run-session
9.98
KB
-rwxr-xr-x
dbus-send
25.98
KB
-rwxr-xr-x
dbus-update-activation-environ...
13.98
KB
-rwxr-xr-x
dbus-uuidgen
9.98
KB
-rwxr-xr-x
de-macro
33.35
KB
-rwxr-xr-x
deallocvt
10.07
KB
-rwxr-xr-x
deb-systemd-helper
19.67
KB
-rwxr-xr-x
deb-systemd-invoke
4.33
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-gettextize
15.97
KB
-rwxr-xr-x
debconf-set-selections
2.87
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debconf-updatepo
4.46
KB
-rwxr-xr-x
dehtmldiff
1.32
KB
-rwxr-xr-x
delpart
22.08
KB
-rwxr-xr-x
delv
40.86
KB
-rwxr-xr-x
depythontex
801
B
-rwxr-xr-x
depythontex3
275
B
-rwxr-xr-x
derb
22.57
KB
-rwxr-xr-x
detex
54
KB
-rwxr-xr-x
devnag
44.15
KB
-rwxr-xr-x
dh
28.43
KB
-rwxr-xr-x
dh-exec
14.27
KB
-rwxr-xr-x
dh_auto_build
1.35
KB
-rwxr-xr-x
dh_auto_clean
1.49
KB
-rwxr-xr-x
dh_auto_configure
1.6
KB
-rwxr-xr-x
dh_auto_install
2.77
KB
-rwxr-xr-x
dh_auto_test
1.63
KB
-rwxr-xr-x
dh_autoreconf
5.94
KB
-rwxr-xr-x
dh_autoreconf_clean
2.1
KB
-rwxr-xr-x
dh_autotools-dev_restoreconfig
1.79
KB
-rwxr-xr-x
dh_autotools-dev_updateconfig
1.81
KB
-rwxr-xr-x
dh_bash-completion
2.49
KB
-rwxr-xr-x
dh_bugfiles
3.57
KB
-rwxr-xr-x
dh_builddeb
4.96
KB
-rwxr-xr-x
dh_clean
4.89
KB
-rwxr-xr-x
dh_compress
7.05
KB
-rwxr-xr-x
dh_doxygen
4.13
KB
-rwxr-xr-x
dh_dwz
2.9
KB
-rwxr-xr-x
dh_fixperms
5.25
KB
-rwxr-xr-x
dh_gconf
2.62
KB
-rwxr-xr-x
dh_gencontrol
5.85
KB
-rwxr-xr-x
dh_icons
2.03
KB
-rwxr-xr-x
dh_install
11.22
KB
-rwxr-xr-x
dh_installcatalogs
3.23
KB
-rwxr-xr-x
dh_installchangelogs
6.08
KB
-rwxr-xr-x
dh_installcron
1.58
KB
-rwxr-xr-x
dh_installdeb
7.63
KB
-rwxr-xr-x
dh_installdebconf
3.2
KB
-rwxr-xr-x
dh_installdirs
1.95
KB
-rwxr-xr-x
dh_installdocs
14.66
KB
-rwxr-xr-x
dh_installemacsen
3.69
KB
-rwxr-xr-x
dh_installexamples
5.3
KB
-rwxr-xr-x
dh_installgsettings
2.18
KB
-rwxr-xr-x
dh_installifupdown
1.45
KB
-rwxr-xr-x
dh_installinfo
2.85
KB
-rwxr-xr-x
dh_installinit
13.3
KB
-rwxr-xr-x
dh_installlogcheck
1.92
KB
-rwxr-xr-x
dh_installlogrotate
1.12
KB
-rwxr-xr-x
dh_installman
11.04
KB
-rwxr-xr-x
dh_installmanpages
4.89
KB
-rwxr-xr-x
dh_installmenu
2.14
KB
-rwxr-xr-x
dh_installmime
1.29
KB
-rwxr-xr-x
dh_installmodules
2.62
KB
-rwxr-xr-x
dh_installpam
1.12
KB
-rwxr-xr-x
dh_installppp
1.37
KB
-rwxr-xr-x
dh_installsystemd
12.74
KB
-rwxr-xr-x
dh_installtex
17.97
KB
-rwxr-xr-x
dh_installudev
2.04
KB
-rwxr-xr-x
dh_installwm
3.05
KB
-rwxr-xr-x
dh_installxfonts
2.9
KB
-rwxr-xr-x
dh_installxmlcatalogs
9.22
KB
-rwxr-xr-x
dh_kubuntu_l10n_clean
959
B
-rwxr-xr-x
dh_kubuntu_l10n_generate
1.85
KB
-rwxr-xr-x
dh_link
4.23
KB
-rwxr-xr-x
dh_lintian
1.28
KB
-rwxr-xr-x
dh_listpackages
756
B
-rwxr-xr-x
dh_makeshlibs
9.01
KB
-rwxr-xr-x
dh_md5sums
2.99
KB
-rwxr-xr-x
dh_missing
5.99
KB
-rwxr-xr-x
dh_movefiles
4.69
KB
-rwxr-xr-x
dh_movelibkdeinit
4.46
KB
-rwxr-xr-x
dh_nodejs
943
B
-rwxr-xr-x
dh_perl
4.23
KB
-rwxr-xr-x
dh_perl_openssl
1.36
KB
-rwxr-xr-x
dh_prep
1.87
KB
-rwxr-xr-x
dh_python2
1.03
KB
-rwxr-xr-x
dh_qmlcdeps
3.22
KB
-rwxr-xr-x
dh_sameversiondep
17.95
KB
-rwxr-xr-x
dh_shlibdeps
6.13
KB
-rwxr-xr-x
dh_sodeps
3.38
KB
-rwxr-xr-x
dh_strip
13.94
KB
-rwxr-xr-x
dh_strip_nondeterminism
2.67
KB
-rwxr-xr-x
dh_systemd_enable
8.97
KB
-rwxr-xr-x
dh_systemd_start
8.31
KB
-rwxr-xr-x
dh_testdir
1.3
KB
-rwxr-xr-x
dh_testroot
1.91
KB
-rwxr-xr-x
dh_ucf
2.27
KB
-rwxr-xr-x
dh_update_autotools_config
1.84
KB
-rwxr-xr-x
dh_usrlocal
3.68
KB
-rwxr-xr-x
diff
142.34
KB
-rwxr-xr-x
diff3
62.21
KB
-rwxr-xr-x
diffimg
9.99
KB
-rwxr-xr-x
diffstat
42.11
KB
-rwxr-xr-x
dig
146.51
KB
-rwxr-xr-x
dijkstra
14.1
KB
-rwxr-xr-x
dircolors
46.19
KB
-rwxr-xr-x
dirmngr
533.55
KB
-rwxr-xr-x
dirmngr-client
106.76
KB
-rwxr-xr-x
dirname
30.18
KB
-rwxr-xr-x
disdvi
18.01
KB
-rwxr-xr-x
do-release-upgrade
6.77
KB
-rwxr-xr-x
dosepsbin
11.8
KB
-rwxr-xr-x
dot
9.99
KB
-rwxr-xr-x
dot2gxl
34.26
KB
-rwxr-xr-x
dot_builtins
10.1
KB
-rwxr-xr-x
dotty
2.04
KB
-rwxr-xr-x
doxygen
14.23
MB
-rwxr-xr-x
doxyindexer
622.23
KB
-rwxr-xr-x
doxysearch.cgi
46.16
KB
-rwxr-xr-x
dpkg
290.5
KB
-rwxr-xr-x
dpkg-architecture
12.55
KB
-rwxr-xr-x
dpkg-buildflags
7.39
KB
-rwxr-xr-x
dpkg-buildpackage
29.1
KB
-rwxr-xr-x
dpkg-checkbuilddeps
7.33
KB
-rwxr-xr-x
dpkg-deb
150.34
KB
-rwxr-xr-x
dpkg-distaddfile
2.72
KB
-rwxr-xr-x
dpkg-divert
138.41
KB
-rwxr-xr-x
dpkg-genbuildinfo
16.38
KB
-rwxr-xr-x
dpkg-genchanges
17.21
KB
-rwxr-xr-x
dpkg-gencontrol
13.73
KB
-rwxr-xr-x
dpkg-gensymbols
10.38
KB
-rwxr-xr-x
dpkg-maintscript-helper
18.58
KB
-rwxr-xr-x
dpkg-mergechangelogs
8.39
KB
-rwxr-xr-x
dpkg-name
6.63
KB
-rwxr-xr-x
dpkg-parsechangelog
4.33
KB
-rwxr-xr-x
dpkg-query
146.4
KB
-rwxr-xr-x
dpkg-scanpackages
8.23
KB
-rwxr-xr-x
dpkg-scansources
8.95
KB
-rwxr-xr-x
dpkg-shlibdeps
30.63
KB
-rwxr-xr-x
dpkg-source
22.75
KB
-rwxr-xr-x
dpkg-split
118.34
KB
-rwxr-xr-x
dpkg-statoverride
70.25
KB
-rwxr-xr-x
dpkg-trigger
66.26
KB
-rwxr-xr-x
dpkg-vendor
3.19
KB
-rwxr-xr-x
dt2dv
40.3
KB
-rwxr-xr-x
dtxgen
13.41
KB
-rwxr-xr-x
du
98.21
KB
-rwxr-xr-x
dumpkeys
166.52
KB
-rwxr-xr-x
dv2dt
19.54
KB
-rwxr-xr-x
dvi2fax
1.07
KB
-rwxr-xr-x
dvi2tty
58.59
KB
-rwxr-xr-x
dviasm
40.63
KB
-rwxr-xr-x
dvibook
26.69
KB
-rwxr-xr-x
dviconcat
26.78
KB
-rwxr-xr-x
dvicopy
62.09
KB
-rwxr-xr-x
dvihp
4.38
KB
-rwxr-xr-x
dviinfox
9.59
KB
-rwxr-xr-x
dvilj
54.51
KB
-rwxr-xr-x
dvilj2p
54.51
KB
-rwxr-xr-x
dvilj4
62.52
KB
-rwxr-xr-x
dvilj4l
62.52
KB
-rwxr-xr-x
dvilj6
62.52
KB
-rwxr-xr-x
dvilualatex
6.07
MB
-rwxr-xr-x
dviluatex
6.07
MB
-rwxr-xr-x
dvipdf
1023
B
-rwxr-xr-x
dvipdfm
751.77
KB
-rwxr-xr-x
dvipdfmx
751.77
KB
-rwxr-xr-x
dvipdft
2.63
KB
-rwxr-xr-x
dvipos
46.48
KB
-rwxr-xr-x
dvips
219.91
KB
-rwxr-xr-x
dvired
3.01
KB
-rwxr-xr-x
dviselect
26.69
KB
-rwxr-xr-x
dvisvgm
4.4
MB
-rwxr-xr-x
dvitodvi
30.72
KB
-rwxr-xr-x
dvitomp
787.71
KB
-rwxr-xr-x
dvitype
46.12
KB
-rwxr-xr-x
dwp
2.75
MB
-rwxr-xr-x
e2pall
2.66
KB
-rwxr-xr-x
eatmydata
2.74
KB
-rwxr-xr-x
ebb
751.77
KB
-rwxr-xr-x
ec2metadata
7.13
KB
-rwxr-xr-x
edgepaint
419.22
KB
-rwxr-xr-x
edit
17.74
KB
-rwxr-xr-x
editdiff
2.01
KB
-rwxr-xr-x
editor
240.11
KB
-rwxr-xr-x
eject
30.69
KB
-rwxr-xr-x
elfedit
30.45
KB
-rwxr-xr-x
enable-ec2-spot-hibernation
237
B
-rwxr-xr-x
enc2xs
41.17
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
env
34.18
KB
-rwxr-xr-x
envsubst
34.08
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
epspdf
79.25
KB
-rwxr-xr-x
epspdftk
28.65
KB
-rwxr-xr-x
epstopdf
33.3
KB
-rwxr-xr-x
eptex
483.88
KB
-rwxr-xr-x
eqn
193.19
KB
-rwxr-xr-x
etex
806.43
KB
-rwxr-xr-x
euptex
490.24
KB
-rwxr-xr-x
ex
2.55
MB
-rwxr-xr-x
exceltex
18.53
KB
-rwxr-xr-x
expand
38.21
KB
-rwxr-xr-x
expiry
22.27
KB
-rwxr-sr-x
expr
46.18
KB
-rwxr-xr-x
extractbb
751.77
KB
-rwxr-xr-x
factor
74.21
KB
-rwxr-xr-x
fail2ban-client
1.39
KB
-rwxr-xr-x
fail2ban-python
4.32
MB
-rwxr-xr-x
fail2ban-regex
1.25
KB
-rwxr-xr-x
fail2ban-server
1.39
KB
-rwxr-xr-x
fail2ban-testcases
2.23
KB
-rwxr-xr-x
faillog
18.29
KB
-rwxr-xr-x
faked-sysv
26.11
KB
-rwxr-xr-x
faked-tcp
30.1
KB
-rwxr-xr-x
fakeroot
3.76
KB
-rwxr-xr-x
fakeroot-sysv
3.76
KB
-rwxr-xr-x
fakeroot-tcp
3.76
KB
-rwxr-xr-x
fallocate
26.08
KB
-rwxr-xr-x
fc-cache
14.07
KB
-rwxr-xr-x
fc-cat
14.07
KB
-rwxr-xr-x
fc-list
10.07
KB
-rwxr-xr-x
fc-match
10.07
KB
-rwxr-xr-x
fc-pattern
10.07
KB
-rwxr-xr-x
fc-query
10.07
KB
-rwxr-xr-x
fc-scan
10.07
KB
-rwxr-xr-x
fc-validate
10.07
KB
-rwxr-xr-x
fcgistarter
9.99
KB
-rwxr-xr-x
fdp
9.99
KB
-rwxr-xr-x
fftw-wisdom
39.94
KB
-rwxr-xr-x
fftw-wisdom-to-conf
2.23
KB
-rwxr-xr-x
fftwf-wisdom
39.94
KB
-rwxr-xr-x
fftwl-wisdom
39.94
KB
-rwxr-xr-x
fftwq-wisdom
39.94
KB
-rwxr-xr-x
fig4latex
4.52
KB
-rwxr-xr-x
file
22.26
KB
-rwxr-xr-x
filterdiff
47.15
KB
-rwxr-xr-x
find
232.5
KB
-rwxr-xr-x
findhyph
9.71
KB
-rwxr-xr-x
fixcvsdiff
1.83
KB
-rwxr-xr-x
flipdiff
46.58
KB
-rwxr-xr-x
flock
30.16
KB
-rwxr-xr-x
fmt
42.18
KB
-rwxr-xr-x
fmtutil
47.48
KB
-rwxr-xr-x
fmtutil-sys
929
B
-rwxr-xr-x
fmtutil-user
876
B
-rwxr-xr-x
fold
34.18
KB
-rwxr-xr-x
fontinst
552
B
-rwxr-xr-x
free
18.08
KB
-rwxr-xr-x
freetype-config
4.62
KB
-rwxr-xr-x
from
9.99
KB
-rwxr-xr-x
ftp
98.7
KB
-rwxr-xr-x
funzip
21.99
KB
-rwxr-xr-x
futurize
384
B
-rwxr-xr-x
g++
1022.94
KB
-rwxr-xr-x
g++-7
1022.94
KB
-rwxr-xr-x
gapplication
18.07
KB
-rwxr-xr-x
gawk
642.65
KB
-rwxr-xr-x
gc
14.04
KB
-rwxr-xr-x
gcc
1022.94
KB
-rwxr-xr-x
gcc-7
1022.94
KB
-rwxr-xr-x
gcc-ar
30.47
KB
-rwxr-xr-x
gcc-ar-7
30.47
KB
-rwxr-xr-x
gcc-nm
30.47
KB
-rwxr-xr-x
gcc-nm-7
30.47
KB
-rwxr-xr-x
gcc-ranlib
30.47
KB
-rwxr-xr-x
gcc-ranlib-7
30.47
KB
-rwxr-xr-x
gcov
616.09
KB
-rwxr-xr-x
gcov-7
616.09
KB
-rwxr-xr-x
gcov-dump
499.93
KB
-rwxr-xr-x
gcov-dump-7
499.93
KB
-rwxr-xr-x
gcov-tool
535.99
KB
-rwxr-xr-x
gcov-tool-7
535.99
KB
-rwxr-xr-x
gdbus
42.08
KB
-rwxr-xr-x
gdbus-codegen
2
KB
-rwxr-xr-x
gdk-pixbuf-csource
10.01
KB
-rwxr-xr-x
gdk-pixbuf-pixdata
9.99
KB
-rwxr-xr-x
gdk-pixbuf-query-loaders
13.99
KB
-rwxr-xr-x
genbrk
14.48
KB
-rwxr-xr-x
gencat
22.22
KB
-rwxr-xr-x
gencfu
10.43
KB
-rwxr-xr-x
gencnval
22.32
KB
-rwxr-xr-x
gendict
22.55
KB
-rwxr-xr-x
genrb
147.64
KB
-rwxr-xr-x
geqn
193.19
KB
-rwxr-xr-x
getconf
30.13
KB
-rwxr-xr-x
getent
30.49
KB
-rwxr-xr-x
getfacl
22.62
KB
-rwxr-xr-x
getkeycodes
10.07
KB
-rwxr-xr-x
getmapdl
21.37
KB
-rwxr-xr-x
getopt
14.07
KB
-rwxr-xr-x
gettext
34.08
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
gettextize
42.73
KB
-rwxr-xr-x
gftodvi
50.09
KB
-rwxr-xr-x
gftopk
26.08
KB
-rwxr-xr-x
gftype
26.09
KB
-rwxr-xr-x
ghostscript
9.99
KB
-rwxr-xr-x
ginstall-info
43.09
KB
-rwxr-xr-x
gio
78.09
KB
-rwxr-xr-x
gio-querymodules
9.99
KB
-rwxr-xr-x
git
2.27
MB
-rwxr-xr-x
git-receive-pack
2.27
MB
-rwxr-xr-x
git-shell
1.26
MB
-rwxr-xr-x
git-upload-archive
2.27
MB
-rwxr-xr-x
git-upload-pack
1.27
MB
-rwxr-xr-x
glib-compile-resources
38.07
KB
-rwxr-xr-x
glib-compile-schemas
42.07
KB
-rwxr-xr-x
glib-genmarshal
39.97
KB
-rwxr-xr-x
glib-gettextize
5.25
KB
-rwxr-xr-x
glib-mkenums
27.15
KB
-rwxr-xr-x
gml2gv
38.27
KB
-rwxr-xr-x
gobject-query
10
KB
-rwxr-xr-x
gold
2.97
MB
-rwxr-xr-x
gpasswd
74.05
KB
-rwsr-xr-x
gpg
997.6
KB
-rwxr-xr-x
gpg-agent
392.7
KB
-rwxr-xr-x
gpg-connect-agent
154.85
KB
-rwxr-xr-x
gpg-wks-server
187.02
KB
-rwxr-xr-x
gpg-zip
3.36
KB
-rwxr-xr-x
gpgconf
166.32
KB
-rwxr-xr-x
gpgparsemail
26.07
KB
-rwxr-xr-x
gpgsm
491.09
KB
-rwxr-xr-x
gpgsplit
78.45
KB
-rwxr-xr-x
gpgv
427.02
KB
-rwxr-xr-x
gpic
204.03
KB
-rwxr-xr-x
gprof
99.73
KB
-rwxr-xr-x
graphml2gv
18.08
KB
-rwxr-xr-x
gregorio
614.55
KB
-rwxr-xr-x
grepdiff
47.15
KB
-rwxr-xr-x
gresource
17.99
KB
-rwxr-xr-x
groff
105.31
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
165.72
KB
-rwxr-xr-x
grotty
121.34
KB
-rwxr-xr-x
groups
34.18
KB
-rwxr-xr-x
growpart
21.37
KB
-rwxr-xr-x
grub-editenv
239.93
KB
-rwxr-xr-x
grub-file
659.79
KB
-rwxr-xr-x
grub-fstest
789.65
KB
-rwxr-xr-x
grub-glue-efi
235.77
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
216.04
KB
-rwxr-xr-x
grub-mkfont
264.34
KB
-rwxr-xr-x
grub-mkimage
328.84
KB
-rwxr-xr-x
grub-mklayout
240.09
KB
-rwxr-xr-x
grub-mknetdir
373.41
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
244.12
KB
-rwxr-xr-x
grub-mkrelpath
235.49
KB
-rwxr-xr-x
grub-mkrescue
822.23
KB
-rwxr-xr-x
grub-mkstandalone
449.74
KB
-rwxr-xr-x
grub-mount
608.21
KB
-rwxr-xr-x
grub-ntldr-img
38.16
KB
-rwxr-xr-x
grub-render-label
676.16
KB
-rwxr-xr-x
grub-script-check
259.62
KB
-rwxr-xr-x
grub-syslinux2cfg
624.68
KB
-rwxr-xr-x
gs
9.99
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
26.07
KB
-rwxr-xr-x
gsftopk
30.19
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gtbl
126.2
KB
-rwxr-xr-x
gtester
22.01
KB
-rwxr-xr-x
gtester-report
18.39
KB
-rwxr-xr-x
gtk-update-icon-cache
30.47
KB
-rwxr-xr-x
gv2gml
18.04
KB
-rwxr-xr-x
gv2gxl
34.26
KB
-rwxr-xr-x
gvcolor
44.26
KB
-rwxr-xr-x
gvgen
22
KB
-rwxr-xr-x
gvmap
559.3
KB
-rwxr-xr-x
gvmap.sh
2.13
KB
-rwxr-xr-x
gvpack
22.23
KB
-rwxr-xr-x
gvpr
5.99
KB
-rwxr-xr-x
gxl2dot
34.26
KB
-rwxr-xr-x
gxl2gv
34.26
KB
-rwxr-xr-x
gyp
276
B
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hd
26.1
KB
-rwxr-xr-x
head
42.21
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
26.1
KB
-rwxr-xr-x
hibagent
21.65
KB
-rwxr-xr-x
host
126.66
KB
-rwxr-xr-x
hostid
30.18
KB
-rwxr-xr-x
hostnamectl
18.07
KB
-rwxr-xr-x
htcacheclean
30
KB
-rwxr-xr-x
htdbm
21.99
KB
-rwxr-xr-x
htdigest
13.99
KB
-rwxr-xr-x
htop
180.68
KB
-rwxr-xr-x
htpasswd
17.99
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
18.34
KB
-rwxr-xr-x
iconv
62.25
KB
-rwxr-xr-x
icuinfo
10.32
KB
-rwxr-xr-x
id
42.21
KB
-rwxr-xr-x
ifnames
4.03
KB
-rwxr-xr-x
igawk
3.11
KB
-rwxr-xr-x
info
245.72
KB
-rwxr-xr-x
infobrowser
245.72
KB
-rwxr-xr-x
infocmp
58.07
KB
-rwxr-xr-x
infotocap
82.11
KB
-rwxr-xr-x
inimf
319.62
KB
-rwxr-xr-x
initex
355.66
KB
-rwxr-xr-x
install
142.25
KB
-rwxr-xr-x
install-info
43.09
KB
-rwxr-xr-x
installfont-tl
18.39
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
interdiff
46.58
KB
-rwxr-xr-x
ionice
26.08
KB
-rwxr-xr-x
ipcmk
26.14
KB
-rwxr-xr-x
ipcrm
26.08
KB
-rwxr-xr-x
ipcs
50.08
KB
-rwxr-xr-x
iptables-xml
92.74
KB
-rwxr-xr-x
ischroot
10.04
KB
-rwxr-xr-x
iscsiadm
381.95
KB
-rwxr-xr-x
join
46.21
KB
-rwxr-xr-x
js
17.52
MB
-rwxr-xr-x
json_pp
3.87
KB
-rwxr-xr-x
jsondiff
1018
B
-rwxr-xr-x
jsonlint-php
2.61
KB
-rwxr-xr-x
jsonpatch
3.58
KB
-rwxr-xr-x
jsonpointer
1.31
KB
-rwxr-xr-x
jsonschema
398
B
-rwxr-xr-x
kbdinfo
14.07
KB
-rwxr-xr-x
kbxutil
158.69
KB
-rwxr-xr-x
keep-one-running
3.51
KB
-rwxr-xr-x
kernel-install
4.4
KB
-rwxr-xr-x
killall
23.15
KB
-rwxr-xr-x
kpseaccess
9.99
KB
-rwxr-xr-x
kpsepath
3.38
KB
-rwxr-xr-x
kpsereadlink
9.99
KB
-rwxr-xr-x
kpsestat
9.99
KB
-rwxr-xr-x
kpsetool
3.38
KB
-rwxr-xr-x
kpsewhere
1.41
KB
-rwxr-xr-x
kpsewhich
22.87
KB
-rwxr-xr-x
kpsexpand
3.38
KB
-rwxr-xr-x
landscape-sysinfo
624
B
-rwxr-xr-x
last
42.08
KB
-rwxr-xr-x
lastb
42.08
KB
-rwxr-xr-x
lastlog
18.07
KB
-rwxr-xr-x
latex
806.43
KB
-rwxr-xr-x
latex-git-log
11.11
KB
-rwxr-xr-x
latex-papersize
9.74
KB
-rwxr-xr-x
latex-wordcount
3.1
KB
-rwxr-xr-x
latex2man
54.37
KB
-rwxr-xr-x
latex2nemeth
131
B
-rwxr-xr-x
latexdef
31.71
KB
-rwxr-xr-x
latexfileversion
3.1
KB
-rwxr-xr-x
latexindent
2.64
KB
-rwxr-xr-x
latexpand
11.31
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ld
1.7
MB
-rwxr-xr-x
ld.bfd
1.7
MB
-rwxr-xr-x
ld.gold
2.97
MB
-rwxr-xr-x
ldd
5.29
KB
-rwxr-xr-x
lefty
293.57
KB
-rwxr-xr-x
less
166.76
KB
-rwxr-xr-x
lessecho
10.02
KB
-rwxr-xr-x
lessfile
8.36
KB
-rwxr-xr-x
lesskey
19.39
KB
-rwxr-xr-x
lesspipe
8.36
KB
-rwxr-xr-x
letsencrypt
385
B
-rwxr-xr-x
lexgrog
90.57
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libpng-config
2.41
KB
-rwxr-xr-x
libpng16-config
2.41
KB
-rwxr-xr-x
libtool
363.59
KB
-rwxr-xr-x
libtoolize
126.16
KB
-rwxr-xr-x
libwmf-config
2.3
KB
-rwxr-xr-x
link
30.18
KB
-rwxr-xr-x
lintian
10.59
KB
-rwxr-xr-x
lintian-info
10.59
KB
-rwxr-xr-x
lintian-lab-tool
10.59
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
18.34
KB
-rwxr-xr-x
linux64
18.34
KB
-rwxr-xr-x
listings-ext
12.08
KB
-rwxr-xr-x
lneato
1.51
KB
-rwxr-xr-x
lnstat
22.35
KB
-rwxr-xr-x
loadkeys
206.57
KB
-rwxr-xr-x
loadunimap
26.13
KB
-rwxr-xr-x
locale
49.41
KB
-rwxr-xr-x
locale-check
10
KB
-rwxr-xr-x
localectl
22.07
KB
-rwxr-xr-x
localedef
330.8
KB
-rwxr-xr-x
locate
42.08
KB
-rwxr-sr-x
logger
46.67
KB
-rwxr-xr-x
logname
30.18
KB
-rwxr-xr-x
logresolve
10
KB
-rwxr-xr-x
look
10.23
KB
-rwxr-xr-x
lorder
2.82
KB
-rwxr-xr-x
lsattr
10
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
70.08
KB
-rwxr-xr-x
lsdiff
47.15
KB
-rwxr-xr-x
lshw
670.95
KB
-rwxr-xr-x
lsinitramfs
625
B
-rwxr-xr-x
lsipc
70.08
KB
-rwxr-xr-x
lslocks
34.41
KB
-rwxr-xr-x
lslogins
62.08
KB
-rwxr-xr-x
lsmem
42.08
KB
-rwxr-xr-x
lsns
38.08
KB
-rwxr-xr-x
lsof
159.4
KB
-rwxr-xr-x
lspci
79.67
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
114.43
KB
-rwxr-xr-x
ltrace
325.21
KB
-rwxr-xr-x
ltxfileinfo
13.46
KB
-rwxr-xr-x
ltximg
33.89
KB
-rwxr-xr-x
luajittex
5.97
MB
-rwxr-xr-x
lualatex
6.07
MB
-rwxr-xr-x
luatex
6.07
MB
-rwxr-xr-x
lwarpmk
15.93
KB
-rwxr-xr-x
lxc
9.8
MB
-rwxr-xr-x
lxcfs
18.07
KB
-rwxr-xr-x
lxd
105
B
-rwxr-xr-x
lzcat
74.36
KB
-rwxr-xr-x
lzcmp
6.48
KB
-rwxr-xr-x
lzdiff
6.48
KB
-rwxr-xr-x
lzegrep
5.76
KB
-rwxr-xr-x
lzfgrep
5.76
KB
-rwxr-xr-x
lzgrep
5.76
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
74.36
KB
-rwxr-xr-x
lzmainfo
10.07
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m4
154.3
KB
-rwxr-xr-x
mag
10
KB
-rwxr-xr-x
make
217.57
KB
-rwxr-xr-x
make-first-existing-target
4.79
KB
-rwxr-xr-x
make4ht
1.99
KB
-rwxr-xr-x
makeconv
46.8
KB
-rwxr-xr-x
makedtx
24.53
KB
-rwxr-xr-x
makeglossaries
41.96
KB
-rwxr-xr-x
makeglossaries-lite
11.11
KB
-rwxr-xr-x
makeindex
80.29
KB
-rwxr-xr-x
makejvf
34
KB
-rwxr-xr-x
man
104.5
KB
-rwxr-xr-x
mandb
126.72
KB
-rwxr-xr-x
manifest
1.9
KB
-rwxr-xr-x
manpath
30.47
KB
-rwxr-xr-x
mapscrn
22.13
KB
-rwxr-xr-x
match_parens
6.59
KB
-rwxr-xr-x
mathspic
125.53
KB
-rwxr-xr-x
mawk
122.48
KB
-rwxr-xr-x
mcookie
30.14
KB
-rwxr-xr-x
md5sum
42.21
KB
-rwxr-xr-x
md5sum.textutils
42.21
KB
-rwxr-xr-x
mdig
42.13
KB
-rwxr-xr-x
mendex
112.83
KB
-rwxr-xr-x
mesg
10.07
KB
-rwxr-xr-x
mf
319.62
KB
-rwxr-xr-x
mf-nowin
311.25
KB
-rwxr-xr-x
mf2pt1
37.23
KB
-rwxr-xr-x
mflua
375.62
KB
-rwxr-xr-x
mflua-nowin
375.62
KB
-rwxr-xr-x
mfluajit
375.62
KB
-rwxr-xr-x
mfluajit-nowin
375.62
KB
-rwxr-xr-x
mfplain
787.71
KB
-rwxr-xr-x
mft
46.11
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.14
KB
-rwxr-xr-x
mingle
419.45
KB
-rwxr-xr-x
miniterm
34.28
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkfifo
62.18
KB
-rwxr-xr-x
mkindex
947
B
-rwxr-xr-x
mkjobtexmf
23.61
KB
-rwxr-xr-x
mkocp
171
B
-rwxr-xr-x
mkofm
85
B
-rwxr-xr-x
mkpasswd
18.07
KB
-rwxr-xr-x
mkpic
25.11
KB
-rwxr-xr-x
mksquashfs
184.99
KB
-rwxr-xr-x
mkt1font
33.44
KB
-rwxr-xr-x
mktexfmt
47.48
KB
-rwxr-xr-x
mktexlsr
7.59
KB
-rwxr-xr-x
mktexmf
3.87
KB
-rwxr-xr-x
mktexpk
9.59
KB
-rwxr-xr-x
mktextfm
4.93
KB
-rwxr-xr-x
mlocate
42.08
KB
-rwxr-sr-x
mm2gv
94.19
KB
-rwxr-xr-x
mpost
787.71
KB
-rwxr-xr-x
mptopdf
4.05
KB
-rwxr-xr-x
msgattrib
22.07
KB
-rwxr-xr-x
msgcat
22.07
KB
-rwxr-xr-x
msgcmp
22.08
KB
-rwxr-xr-x
msgcomm
22.07
KB
-rwxr-xr-x
msgconv
18.07
KB
-rwxr-xr-x
msgen
18.07
KB
-rwxr-xr-x
msgexec
14.07
KB
-rwxr-xr-x
msgfilter
26.07
KB
-rwxr-xr-x
msgfmt
78.27
KB
-rwxr-xr-x
msggrep
34.19
KB
-rwxr-xr-x
msginit
62.41
KB
-rwxr-xr-x
msgmerge
66.45
KB
-rwxr-xr-x
msgunfmt
30.09
KB
-rwxr-xr-x
msguniq
18.07
KB
-rwxr-xr-x
msxlint
14.02
KB
-rwxr-xr-x
mtr
71.94
KB
-rwxr-xr-x
mtr-packet
25.99
KB
-rwxr-xr-x
mtrace
6.34
KB
-rwxr-xr-x
myisam_ftdump
3.75
MB
-rwxr-xr-x
mysql
3.81
MB
-rwxr-xr-x
mysql_config_editor
3.46
MB
-rwxr-xr-x
mysql_embedded
21.17
MB
-rwxr-xr-x
mysqladmin
3.71
MB
-rwxr-xr-x
mysqlanalyze
3.73
MB
-rwxr-xr-x
mysqlcheck
3.73
MB
-rwxr-xr-x
mysqldump
3.78
MB
-rwxr-xr-x
mysqldumpslow
7.66
KB
-rwxr-xr-x
mysqlimport
3.7
MB
-rwxr-xr-x
mysqloptimize
3.73
MB
-rwxr-xr-x
mysqlpump
4.17
MB
-rwxr-xr-x
mysqlrepair
3.73
MB
-rwxr-xr-x
mysqlreport
38.1
KB
-rwxr-xr-x
mysqlshow
3.7
MB
-rwxr-xr-x
mysqlslap
3.71
MB
-rwxr-xr-x
namei
26.08
KB
-rwxr-xr-x
nawk
642.65
KB
-rwxr-xr-x
ncal
28.79
KB
-rwxr-xr-x
neato
9.99
KB
-rwxr-xr-x
neqn
908
B
-rwxr-xr-x
netkit-ftp
98.7
KB
-rwxr-xr-x
networkd-dispatcher
19.53
KB
-rwxr-xr-x
newgidmap
36.27
KB
-rwsr-xr-x
newgrp
39.4
KB
-rwsr-xr-x
newuidmap
36.27
KB
-rwsr-xr-x
ngettext
34.08
KB
-rwxr-xr-x
nice
34.18
KB
-rwxr-xr-x
nl
42.27
KB
-rwxr-xr-x
nm
43.27
KB
-rwxr-xr-x
node
17.52
MB
-rwxr-xr-x
node-gyp
3.51
KB
-rwxr-xr-x
nodejs
17.52
MB
-rwxr-xr-x
nohup
34.18
KB
-rwxr-xr-x
nop
10.04
KB
-rwxr-xr-x
npm
1.95
KB
-rwxr-xr-x
nproc
34.18
KB
-rwxr-xr-x
nroff
3.25
KB
-rwxr-xr-x
nsenter
30.28
KB
-rwxr-xr-x
nslookup
130.51
KB
-rwxr-xr-x
nstat
26.07
KB
-rwxr-xr-x
nsupdate
66.02
KB
-rwxr-xr-x
ntfsdecrypt
46.12
KB
-rwxr-xr-x
numfmt
62.24
KB
-rwxr-xr-x
objcopy
230.2
KB
-rwxr-xr-x
objdump
404.55
KB
-rwxr-xr-x
od
66.21
KB
-rwxr-xr-x
odvicopy
66.09
KB
-rwxr-xr-x
odvitype
46.12
KB
-rwxr-xr-x
ofm2opl
124.7
KB
-rwxr-xr-x
omfonts
124.7
KB
-rwxr-xr-x
on_ac_power
2.16
KB
-rwxr-xr-x
openssl
706.98
KB
-rwxr-xr-x
opl2ofm
124.7
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
osage
9.99
KB
-rwxr-xr-x
ot2kpx
24.65
KB
-rwxr-xr-x
otangle
42.09
KB
-rwxr-xr-x
otp2ocp
34
KB
-rwxr-xr-x
outocp
14.3
KB
-rwxr-xr-x
ovf2ovp
124.7
KB
-rwxr-xr-x
ovp2ovf
124.7
KB
-rwxr-xr-x
pager
166.76
KB
-rwxr-xr-x
pango-view
50.27
KB
-rwxr-xr-x
paperconf
9.99
KB
-rwxr-xr-x
parsechangelog
8.63
KB
-rwxr-xr-x
partx
86.08
KB
-rwxr-xr-x
passwd
58.24
KB
-rwsr-xr-x
paste
34.21
KB
-rwxr-xr-x
pastebinit
16.25
KB
-rwxr-xr-x
pasteurize
388
B
-rwxr-xr-x
patch
178.37
KB
-rwxr-xr-x
patchwork
9.99
KB
-rwxr-xr-x
patgen
38.07
KB
-rwxr-xr-x
pathchk
34.18
KB
-rwxr-xr-x
pbget
2.51
KB
-rwxr-xr-x
pbibtex
122.09
KB
-rwxr-xr-x
pbput
2.51
KB
-rwxr-xr-x
pbputs
2.51
KB
-rwxr-xr-x
pbr
152
B
-rwxr-xr-x
pcimodules
14.13
KB
-rwxr-xr-x
pcre-config
2.29
KB
-rwxr-xr-x
pdb
45.02
KB
-rwxr-xr-x
pdb2.7
45.02
KB
-rwxr-xr-x
pdb3
59.87
KB
-rwxr-xr-x
pdb3.6
59.87
KB
-rwxr-xr-x
pdf180
256
B
-rwxr-xr-x
pdf270
279
B
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdf90
275
B
-rwxr-xr-x
pdfannotextractor
11.5
KB
-rwxr-xr-x
pdfatfi
6.29
KB
-rwxr-xr-x
pdfbook
1.04
KB
-rwxr-xr-x
pdfbook2
10.52
KB
-rwxr-xr-x
pdfclose
13.99
KB
-rwxr-xr-x
pdfcrop
37.62
KB
-rwxr-xr-x
pdfetex
806.43
KB
-rwxr-xr-x
pdfflip
265
B
-rwxr-xr-x
pdfjam
39.19
KB
-rwxr-xr-x
pdfjam-pocketmod
1.53
KB
-rwxr-xr-x
pdfjam-slides3up
858
B
-rwxr-xr-x
pdfjam-slides6up
813
B
-rwxr-xr-x
pdfjoin
759
B
-rwxr-xr-x
pdflatex
806.43
KB
-rwxr-xr-x
pdflatexpicscale
7.27
KB
-rwxr-xr-x
pdfnup
924
B
-rwxr-xr-x
pdfopen
22.07
KB
-rwxr-xr-x
pdfpun
1.55
KB
-rwxr-xr-x
pdftex
806.43
KB
-rwxr-xr-x
pdftosrc
14.1
KB
-rwxr-xr-x
pdfxup
26.57
KB
-rwxr-xr-x
pdvitomp
795.76
KB
-rwxr-xr-x
pdvitype
54.13
KB
-rwxr-xr-x
peekfd
10.2
KB
-rwxr-xr-x
perl
2
MB
-rwxr-xr-x
perl5.26-x86_64-linux-gnu
9.98
KB
-rwxr-xr-x
perl5.26.1
2
MB
-rwxr-xr-x
perlbug
44.78
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perltex
14.57
KB
-rwxr-xr-x
perlthanks
44.78
KB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfarrei
4.88
KB
-rwxr-xr-x
pfb2pfa
9.99
KB
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pftp
98.7
KB
-rwxr-xr-x
pgrep
26.09
KB
-rwxr-xr-x
phar
14.48
KB
-rwxr-xr-x
phar.phar
14.48
KB
-rwxr-xr-x
phar.phar5.6
14.48
KB
-rwxr-xr-x
phar5.6
14.48
KB
-rwxr-xr-x
php
4.29
MB
-rwxr-xr-x
php-cgi
4.26
MB
-rwxr-xr-x
php-cgi5.6
4.26
MB
-rwxr-xr-x
php5.6
4.29
MB
-rwxr-xr-x
pic
204.03
KB
-rwxr-xr-x
pico
240.11
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pinentry
62.49
KB
-rwxr-xr-x
pinentry-curses
62.49
KB
-rwxr-xr-x
pinky
38.21
KB
-rwxr-xr-x
pk2bm
13.99
KB
-rwxr-xr-x
pkaction
13.99
KB
-rwxr-xr-x
pkcheck
18.07
KB
-rwxr-xr-x
pkexec
21.99
KB
-rwsr-xr-x
pkfix
26.76
KB
-rwxr-xr-x
pkfix-helper
55.29
KB
-rwxr-xr-x
pkg-config
50.09
KB
-rwxr-xr-x
pkgdata
47.26
KB
-rwxr-xr-x
pkgkde-debs2symbols
4.39
KB
-rwxr-xr-x
pkgkde-gensymbols
2.11
KB
-rwxr-xr-x
pkgkde-getbuildlogs
10.41
KB
-rwxr-xr-x
pkgkde-git
5.73
KB
-rwxr-xr-x
pkgkde-mark-private-symbols
2.84
KB
-rwxr-xr-x
pkgkde-mark-qt5-private-symbol...
3.13
KB
-rwxr-xr-x
pkgkde-override-sc-dev-latest
10.5
KB
-rwxr-xr-x
pkgkde-symbolshelper
21.42
KB
-rwxr-xr-x
pkgkde-vcs
5.73
KB
-rwxr-xr-x
pkill
26.09
KB
-rwxr-xr-x
pktogf
26.08
KB
-rwxr-xr-x
pkttyagent
13.99
KB
-rwxr-xr-x
pktype
18.07
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
14.22
KB
-rwxr-xr-x
pltotf
50.08
KB
-rwxr-xr-x
pmap
30.09
KB
-rwxr-xr-x
pmpost
795.76
KB
-rwxr-xr-x
pmxab
542.37
KB
-rwxr-xr-x
pn2pdf
4.14
KB
-rwxr-xr-x
po2debconf
8.47
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.73
KB
-rwxr-xr-x
pod2text
10.72
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podebconf-display-po
12.67
KB
-rwxr-xr-x
podebconf-report-po
31.76
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
pollinate
8.54
KB
-rwxr-xr-x
pooltype
14.06
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
ppltotf
62.09
KB
-rwxr-xr-x
pr
70.27
KB
-rwxr-xr-x
preconv
46.2
KB
-rwxr-xr-x
prepmx
135.32
KB
-rwxr-xr-x
print
17.74
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
30.18
KB
-rwxr-xr-x
printerbanner
22
KB
-rwxr-xr-x
printf
50.18
KB
-rwxr-xr-x
prlimit
34.59
KB
-rwxr-xr-x
prove
13.27
KB
-rwxr-xr-x
prtstat
14.07
KB
-rwxr-xr-x
prune
14.04
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
2.69
KB
-rwxr-xr-x
ps2frag
229
B
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.07
KB
-rwxr-xr-x
ps2pk
145.47
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
17.99
KB
-rwxr-xr-x
psfgettable
17.99
KB
-rwxr-xr-x
psfstriptable
17.99
KB
-rwxr-xr-x
psfxtable
17.99
KB
-rwxr-xr-x
pslatex
1.41
KB
-rwxr-xr-x
pslog
9.99
KB
-rwxr-xr-x
pstree
26.95
KB
-rwxr-xr-x
pstree.x11
26.95
KB
-rwxr-xr-x
ptar
3.47
KB
-rwxr-xr-x
ptardiff
2.57
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptex
403.81
KB
-rwxr-xr-x
ptftopl
50.12
KB
-rwxr-xr-x
ptx
70.24
KB
-rwxr-xr-x
purge-old-kernels
1.12
KB
-rwxr-xr-x
pwdx
10.07
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
11.83
KB
-rwxr-xr-x
py3rsa-decrypt
382
B
-rwxr-xr-x
py3rsa-decrypt-bigfile
398
B
-rwxr-xr-x
py3rsa-encrypt
382
B
-rwxr-xr-x
py3rsa-encrypt-bigfile
398
B
-rwxr-xr-x
py3rsa-keygen
380
B
-rwxr-xr-x
py3rsa-priv2pub
384
B
-rwxr-xr-x
py3rsa-sign
376
B
-rwxr-xr-x
py3rsa-verify
380
B
-rwxr-xr-x
py3versions
11.44
KB
-rwxr-xr-x
pyclean
4.03
KB
-rwxr-xr-x
pycompile
11.62
KB
-rwxr-xr-x
pydoc
79
B
-rwxr-xr-x
pydoc2.7
79
B
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.6
79
B
-rwxr-xr-x
pygettext
21.56
KB
-rwxr-xr-x
pygettext2.7
21.56
KB
-rwxr-xr-x
pygettext3
21.04
KB
-rwxr-xr-x
pygettext3.6
21.04
KB
-rwxr-xr-x
pygmentex
16.07
KB
-rwxr-xr-x
pyhtmlizer3
392
B
-rwxr-xr-x
pyjwt3
372
B
-rwxr-xr-x
python
3.47
MB
-rwxr-xr-x
python2
3.47
MB
-rwxr-xr-x
python2.7
3.47
MB
-rwxr-xr-x
python3
4.32
MB
-rwxr-xr-x
python3-futurize
384
B
-rwxr-xr-x
python3-jsondiff
1018
B
-rwxr-xr-x
python3-jsonpatch
3.58
KB
-rwxr-xr-x
python3-jsonpointer
1.31
KB
-rwxr-xr-x
python3-jsonschema
398
B
-rwxr-xr-x
python3-pasteurize
388
B
-rwxr-xr-x
python3-pbr
152
B
-rwxr-xr-x
python3.6
4.32
MB
-rwxr-xr-x
python3.6m
4.32
MB
-rwxr-xr-x
python3m
4.32
MB
-rwxr-xr-x
pythontex
2.95
KB
-rwxr-xr-x
pythontex3
306
B
-rwxr-xr-x
pyversions
14.75
KB
-rwxr-xr-x
ranlib
58.27
KB
-rwxr-xr-x
rcp
98.14
KB
-rwxr-xr-x
rdma
26.07
KB
-rwxr-xr-x
readelf
582.46
KB
-rwxr-xr-x
realpath
46.21
KB
-rwxr-xr-x
recode-sr-latin
14.07
KB
-rwxr-xr-x
recountdiff
3.36
KB
-rwxr-xr-x
rediff
34.11
KB
-rwxr-xr-x
rename.ul
14.07
KB
-rwxr-xr-x
renice
14.07
KB
-rwxr-xr-x
repstopdf
33.3
KB
-rwxr-xr-x
reset
22
KB
-rwxr-xr-x
resizecons
18.13
KB
-rwxr-xr-x
resizepart
38.08
KB
-rwxr-xr-x
rev
10.07
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rimraf
1.17
KB
-rwxr-xr-x
rlogin
710.79
KB
-rwxr-xr-x
rotatelogs
18.07
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpcgen
98.53
KB
-rwxr-xr-x
rpdfcrop
37.62
KB
-rwxr-xr-x
rsh
710.79
KB
-rwxr-xr-x
rst-buildhtml
9.73
KB
-rwxr-xr-x
rst2html
594
B
-rwxr-xr-x
rst2html4
714
B
-rwxr-xr-x
rst2html5
1.11
KB
-rwxr-xr-x
rst2latex
791
B
-rwxr-xr-x
rst2man
600
B
-rwxr-xr-x
rst2odt
764
B
-rwxr-xr-x
rst2odt_prepstyles
2.26
KB
-rwxr-xr-x
rst2pseudoxml
601
B
-rwxr-xr-x
rst2s5
637
B
-rwxr-xr-x
rst2xetex
871
B
-rwxr-xr-x
rst2xml
602
B
-rwxr-xr-x
rstpep2html
670
B
-rwxr-xr-x
rsvg-convert
17.99
KB
-rwxr-xr-x
rsvg-view-3
25.99
KB
-rwxr-xr-x
rsync
496.43
KB
-rwxr-xr-x
rtstat
22.35
KB
-rwxr-xr-x
run-mailcap
17.74
KB
-rwxr-xr-x
run-one
3.51
KB
-rwxr-xr-x
run-one-constantly
3.51
KB
-rwxr-xr-x
run-one-until-failure
3.51
KB
-rwxr-xr-x
run-one-until-success
3.51
KB
-rwxr-xr-x
run-this-one
3.51
KB
-rwxr-xr-x
runcon
34.18
KB
-rwxr-xr-x
rview
2.55
MB
-rwxr-xr-x
rvim
2.55
MB
-rwxr-xr-x
s3fs
522.27
KB
-rwxr-xr-x
savelog
10.22
KB
-rwxr-xr-x
sccmap
14.04
KB
-rwxr-xr-x
scor2prt
88.72
KB
-rwxr-xr-x
scp
98.14
KB
-rwxr-xr-x
screen
455.01
KB
-rwxr-xr-x
screendump
9.99
KB
-rwxr-xr-x
script
30.07
KB
-rwxr-xr-x
scriptreplay
26.08
KB
-rwxr-xr-x
sdiff
50.09
KB
-rwxr-xr-x
see
17.74
KB
-rwxr-xr-x
select-editor
2.38
KB
-rwxr-xr-x
semver
4
KB
-rwxr-xr-x
sensible-browser
1.18
KB
-rwxr-xr-x
sensible-editor
1.08
KB
-rwxr-xr-x
sensible-pager
433
B
-rwxr-xr-x
seq
46.18
KB
-rwxr-xr-x
setarch
18.34
KB
-rwxr-xr-x
setfacl
34.68
KB
-rwxr-xr-x
setkeycodes
10.07
KB
-rwxr-xr-x
setleds
14.05
KB
-rwxr-xr-x
setlogcons
10.07
KB
-rwxr-xr-x
setmetamode
10.1
KB
-rwxr-xr-x
setpci
22.08
KB
-rwxr-xr-x
setsid
10.07
KB
-rwxr-xr-x
setterm
42.08
KB
-rwxr-xr-x
sfdp
9.99
KB
-rwxr-xr-x
sftp
150.35
KB
-rwxr-xr-x
sg
39.4
KB
-rwsr-xr-x
sha1sum
46.21
KB
-rwxr-xr-x
sha224sum
54.21
KB
-rwxr-xr-x
sha256sum
54.21
KB
-rwxr-xr-x
sha384sum
58.21
KB
-rwxr-xr-x
sha512sum
58.21
KB
-rwxr-xr-x
shasum
9.15
KB
-rwxr-xr-x
showconsolefont
18.07
KB
-rwxr-xr-x
showkey
14.07
KB
-rwxr-xr-x
shred
58.21
KB
-rwxr-xr-x
shuf
54.18
KB
-rwxr-xr-x
simpdftex
20.9
KB
-rwxr-xr-x
size
30.3
KB
-rwxr-xr-x
skill
26.08
KB
-rwxr-xr-x
slabtop
18.08
KB
-rwxr-xr-x
slogin
710.79
KB
-rwxr-xr-x
snap
23.88
MB
-rwxr-xr-x
snapctl
8.42
MB
-rwxr-xr-x
snapfuse
38.13
KB
-rwxr-xr-x
snice
26.08
KB
-rwxr-xr-x
soelim
30.2
KB
-rwxr-xr-x
sort
110.47
KB
-rwxr-xr-x
sos
596
B
-rwxr-xr-x
sos-collector
1.04
KB
-rwxr-xr-x
sosreport
1.03
KB
-rwxr-xr-x
sotruss
4.21
KB
-rwxr-xr-x
spellintian
10.59
KB
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
54.63
KB
-rwxr-xr-x
splitdiff
3.38
KB
-rwxr-xr-x
splitfont
9.99
KB
-rwxr-xr-x
splitindex
6.2
KB
-rwxr-xr-x
sprof
26.21
KB
-rwxr-xr-x
srcredact
11.78
KB
-rwxr-xr-x
ssh
710.79
KB
-rwxr-xr-x
ssh-add
338.13
KB
-rwxr-xr-x
ssh-agent
354.14
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
10.41
KB
-rwxr-xr-x
ssh-import-id
1.73
KB
-rwxr-xr-x
ssh-import-id-gh
782
B
-rwxr-xr-x
ssh-import-id-lp
782
B
-rwxr-xr-x
ssh-keygen
410.16
KB
-rwxr-xr-x
ssh-keyscan
410.16
KB
-rwxr-xr-x
stat
78.21
KB
-rwxr-xr-x
stdbuf
46.18
KB
-rwxr-xr-x
strace
1.31
MB
-rwxr-xr-x
strace-log-merge
2.58
KB
-rwxr-xr-x
strings
30.5
KB
-rwxr-xr-x
strip
230.2
KB
-rwxr-xr-x
sty2dtx
29.88
KB
-rwxr-xr-x
sudo
145.59
KB
-rwsr-xr-x
sudoedit
145.59
KB
-rwsr-xr-x
sudoreplay
54.81
KB
-rwxr-xr-x
sum
38.19
KB
-rwxr-xr-x
svn-multi
10.72
KB
-rwxr-xr-x
symcryptrun
110.73
KB
-rwxr-xr-x
synctex
29.99
KB
-rwxr-xr-x
systemd-analyze
1.49
MB
-rwxr-xr-x
systemd-cat
10.07
KB
-rwxr-xr-x
systemd-cgls
14.07
KB
-rwxr-xr-x
systemd-cgtop
30.09
KB
-rwxr-xr-x
systemd-delta
22.07
KB
-rwxr-xr-x
systemd-detect-virt
10.06
KB
-rwxr-xr-x
systemd-mount
42.09
KB
-rwxr-xr-x
systemd-path
10.06
KB
-rwxr-xr-x
systemd-resolve
86.07
KB
-rwxr-xr-x
systemd-run
42.07
KB
-rwxr-xr-x
systemd-socket-activate
18.07
KB
-rwxr-xr-x
systemd-stdio-bridge
14.07
KB
-rwxr-xr-x
systemd-umount
42.09
KB
-rwxr-xr-x
t1ascii
38.23
KB
-rwxr-xr-x
t1asm
43.27
KB
-rwxr-xr-x
t1binary
38.2
KB
-rwxr-xr-x
t1disasm
42.16
KB
-rwxr-xr-x
t1mac
46.3
KB
-rwxr-xr-x
t1unmac
42.37
KB
-rwxr-xr-x
t4ht
30.08
KB
-rwxr-xr-x
tabs
13.99
KB
-rwxr-xr-x
tac
38.18
KB
-rwxr-xr-x
tail
66.24
KB
-rwxr-xr-x
tangle
46.16
KB
-rwxr-xr-x
taskset
30.08
KB
-rwxr-xr-x
tbl
126.2
KB
-rwxr-xr-x
teckit_compile
1.88
MB
-rwxr-xr-x
tee
34.21
KB
-rwxr-xr-x
telnet
108.42
KB
-rwxr-xr-x
telnet.netkit
108.42
KB
-rwxr-xr-x
test
46.18
KB
-rwxr-xr-x
tex
355.66
KB
-rwxr-xr-x
tex4ebook
4.46
KB
-rwxr-xr-x
tex4ht
98.13
KB
-rwxr-xr-x
texcount
132.42
KB
-rwxr-xr-x
texdef
31.71
KB
-rwxr-xr-x
texdiff
18.85
KB
-rwxr-xr-x
texdirflatten
10.77
KB
-rwxr-xr-x
texdoc
202
B
-rwxr-xr-x
texdoctk
60.25
KB
-rwxr-xr-x
texfot
13.64
KB
-rwxr-xr-x
texhash
7.59
KB
-rwxr-xr-x
texliveonfly
16.92
KB
-rwxr-xr-x
texloganalyser
10.92
KB
-rwxr-xr-x
texlua
6.07
MB
-rwxr-xr-x
texluac
6.07
MB
-rwxr-xr-x
texluajit
5.97
MB
-rwxr-xr-x
texluajitc
5.97
MB
-rwxr-xr-x
texosquery
284
B
-rwxr-xr-x
texosquery-jre5
294
B
-rwxr-xr-x
texosquery-jre8
327
B
-rwxr-xr-x
tftopl
42.1
KB
-rwxr-xr-x
thumbpdf
41.72
KB
-rwxr-xr-x
tic
82.11
KB
-rwxr-xr-x
tie
14
KB
-rwxr-xr-x
time
14.38
KB
-rwxr-xr-x
timedatectl
22.07
KB
-rwxr-xr-x
timeout
38.63
KB
-rwxr-xr-x
tkconch3
386
B
-rwxr-xr-x
tl-paper
4.31
KB
-rwxr-xr-x
tlmgr
308.4
KB
-rwxr-xr-x
tload
14.09
KB
-rwxr-xr-x
tmux
563.56
KB
-rwxr-xr-x
toe
13.99
KB
-rwxr-xr-x
top
105.77
KB
-rwxr-xr-x
touch
86.21
KB
-rwxr-xr-x
tpic2pdftex
12.29
KB
-rwxr-xr-x
tput
18.02
KB
-rwxr-xr-x
tr
46.18
KB
-rwxr-xr-x
tracepath
14.01
KB
-rwxr-xr-x
traceroute6
18.02
KB
-rwsr-xr-x
traceroute6.iputils
18.02
KB
-rwsr-xr-x
tred
14.04
KB
-rwxr-xr-x
tree
75.57
KB
-rwxr-xr-x
trial3
382
B
-rwxr-xr-x
troff
719.34
KB
-rwxr-xr-x
truncate
38.18
KB
-rwxr-xr-x
tset
22
KB
-rwxr-xr-x
tsort
34.18
KB
-rwxr-xr-x
ttf2afm
40.09
KB
-rwxr-xr-x
ttf2pk
106.56
KB
-rwxr-xr-x
ttf2tfm
136.89
KB
-rwxr-xr-x
ttfdump
103.2
KB
-rwxr-xr-x
tty
30.18
KB
-rwxr-xr-x
twist3
382
B
-rwxr-xr-x
twistd3
384
B
-rwxr-xr-x
twopi
9.99
KB
-rwxr-xr-x
typeoutfileinfo
2.13
KB
-rwxr-xr-x
tzselect
15.04
KB
-rwxr-xr-x
ua
4.49
KB
-rwxr-xr-x
ubuntu-advantage
4.49
KB
-rwxr-xr-x
ubuntu-bug
2.5
KB
-rwxr-xr-x
ubuntu-core-launcher
127.21
KB
-rwsr-xr-x
ubuntu-support-status
7.84
KB
-rwxr-xr-x
ucf
39.73
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
uconv
50.6
KB
-rwxr-xr-x
ul
14.01
KB
-rwxr-xr-x
unattended-upgrade
75.38
KB
-rwxr-xr-x
unattended-upgrades
75.38
KB
-rwxr-xr-x
unexpand
38.21
KB
-rwxr-xr-x
unflatten
14.04
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
42.21
KB
-rwxr-xr-x
unlink
30.18
KB
-rwxr-xr-x
unlzma
74.36
KB
-rwxr-xr-x
unmkinitramfs
2.79
KB
-rwxr-xr-x
unshare
18.27
KB
-rwxr-xr-x
unsquashfs
99.71
KB
-rwxr-xr-x
unwrapdiff
5.8
KB
-rwxr-xr-x
unxz
74.36
KB
-rwxr-xr-x
unzip
174.13
KB
-rwxr-xr-x
unzipsfx
78.12
KB
-rwxr-xr-x
upbibtex
124.48
KB
-rwxr-xr-x
update-alternatives
46.01
KB
-rwxr-xr-x
update-mime-database
50.19
KB
-rwxr-xr-x
update-perl-sax-parsers
6.03
KB
-rwxr-xr-x
updatedb
46.08
KB
-rwxr-xr-x
updatedb.mlocate
46.08
KB
-rwxr-xr-x
updmap
85.27
KB
-rwxr-xr-x
updmap-sys
925
B
-rwxr-xr-x
updmap-user
873
B
-rwxr-xr-x
updvitomp
795.76
KB
-rwxr-xr-x
updvitype
56.51
KB
-rwxr-xr-x
upmendex
134.89
KB
-rwxr-xr-x
upmpost
795.76
KB
-rwxr-xr-x
uppltotf
64.48
KB
-rwxr-xr-x
uptex
414.18
KB
-rwxr-xr-x
uptftopl
52.51
KB
-rwxr-xr-x
uptime
10.07
KB
-rwxr-xr-x
usb-devices
4.12
KB
-rwxr-xr-x
usbhid-dump
22.08
KB
-rwxr-xr-x
users
34.18
KB
-rwxr-xr-x
utmpdump
22.07
KB
-rwxr-xr-x
uuidgen
14.07
KB
-rwxr-xr-x
uuidparse
34.08
KB
-rwxr-xr-x
validate-json
6.63
KB
-rwxr-xr-x
vcs-run
6.75
KB
-rwxr-xr-x
vftovp
54.11
KB
-rwxr-xr-x
vi
2.55
MB
-rwxr-xr-x
view
2.55
MB
-rwxr-xr-x
vigpg
2.58
KB
-rwxr-xr-x
vim
2.55
MB
-rwxr-xr-x
vim.basic
2.55
MB
-rwxr-xr-x
vim.tiny
1.06
MB
-rwxr-xr-x
vimdiff
2.55
MB
-rwxr-xr-x
vimdot
1.06
KB
-rwxr-xr-x
vimtutor
2.05
KB
-rwxr-xr-x
vlna
18.12
KB
-rwxr-xr-x
vmhgfs-fuse
50.48
KB
-rwxr-xr-x
vmstat
34.09
KB
-rwxr-xr-x
vmtoolsd
54.25
KB
-rwxr-xr-x
vmware-checkvm
10.07
KB
-rwxr-xr-x
vmware-hgfsclient
10.07
KB
-rwxr-xr-x
vmware-namespace-cmd
17.99
KB
-rwxr-xr-x
vmware-rpctool
17.99
KB
-rwxr-xr-x
vmware-toolbox-cmd
38.28
KB
-rwxr-xr-x
vmware-vgauth-cmd
13.99
KB
-rwxr-xr-x
vmware-vgauth-smoketest
18.01
KB
-rwxr-xr-x
vmware-vmblock-fuse
18.41
KB
-rwxr-xr-x
vmware-xferlogs
10.07
KB
-rwxr-xr-x
volname
9.99
KB
-rwxr-xr-x
vpe
9.4
KB
-rwxr-xr-x
vpl2ovp
40.05
KB
-rwxr-xr-x
vpl2vpl
37.07
KB
-rwxr-xr-x
vptovf
66.09
KB
-rwxr-xr-x
w
18.07
KB
-rwxr-xr-x
w.procps
18.07
KB
-rwxr-xr-x
wall
30.08
KB
-rwxr-sr-x
watch
22.41
KB
-rwxr-xr-x
watchgnupg
13.99
KB
-rwxr-xr-x
wc
42.19
KB
-rwxr-xr-x
weave
66.09
KB
-rwxr-xr-x
wget
487.56
KB
-rwxr-xr-x
whatis
46.98
KB
-rwxr-xr-x
whereis
26.51
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
who
50.21
KB
-rwxr-xr-x
whoami
30.18
KB
-rwxr-xr-x
whois
148.54
KB
-rwxr-xr-x
wifi-status
2.06
KB
-rwxr-xr-x
wofm2opl
58.1
KB
-rwxr-xr-x
wopl2ofm
118.08
KB
-rwxr-xr-x
wovf2ovp
74.11
KB
-rwxr-xr-x
wovp2ovf
138.09
KB
-rwxr-xr-x
write
13.99
KB
-rwxr-sr-x
x86_64
18.34
KB
-rwxr-xr-x
x86_64-linux-gnu-addr2line
30.55
KB
-rwxr-xr-x
x86_64-linux-gnu-ar
58.24
KB
-rwxr-xr-x
x86_64-linux-gnu-as
895.98
KB
-rwxr-xr-x
x86_64-linux-gnu-c++filt
26.12
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-7
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-dwp
2.75
MB
-rwxr-xr-x
x86_64-linux-gnu-elfedit
30.45
KB
-rwxr-xr-x
x86_64-linux-gnu-g++
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-g++-7
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-7
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-7
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-7
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-7
30.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov
616.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-7
616.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump
499.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-7
499.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool
535.99
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-7
535.99
KB
-rwxr-xr-x
x86_64-linux-gnu-gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-gprof
99.73
KB
-rwxr-xr-x
x86_64-linux-gnu-ld
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.bfd
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-nm
43.27
KB
-rwxr-xr-x
x86_64-linux-gnu-objcopy
230.2
KB
-rwxr-xr-x
x86_64-linux-gnu-objdump
404.55
KB
-rwxr-xr-x
x86_64-linux-gnu-pkg-config
2.06
KB
-rwxr-xr-x
x86_64-linux-gnu-ranlib
58.27
KB
-rwxr-xr-x
x86_64-linux-gnu-readelf
582.46
KB
-rwxr-xr-x
x86_64-linux-gnu-size
30.3
KB
-rwxr-xr-x
x86_64-linux-gnu-strings
30.5
KB
-rwxr-xr-x
x86_64-linux-gnu-strip
230.2
KB
-rwxr-xr-x
x86_64-pc-linux-gnu-pkg-config
50.09
KB
-rwxr-xr-x
xargs
70.21
KB
-rwxr-xr-x
xauth
50.81
KB
-rwxr-xr-x
xdelta3
150.3
KB
-rwxr-xr-x
xdg-desktop-icon
20.09
KB
-rwxr-xr-x
xdg-desktop-menu
42.2
KB
-rwxr-xr-x
xdg-email
27.27
KB
-rwxr-xr-x
xdg-icon-resource
29.26
KB
-rwxr-xr-x
xdg-mime
41
KB
-rwxr-xr-x
xdg-open
24.65
KB
-rwxr-xr-x
xdg-screensaver
36.79
KB
-rwxr-xr-x
xdg-settings
36.85
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
18.07
KB
-rwxr-xr-x
xdvi
2.96
KB
-rwxr-xr-x
xdvi-xaw
746.3
KB
-rwxr-xr-x
xdvi.bin
746.3
KB
-rwxr-xr-x
xdvipdfmx
751.77
KB
-rwxr-xr-x
xetex
791.99
KB
-rwxr-xr-x
xgettext
260.64
KB
-rwxr-xr-x
xml2-config
1.77
KB
-rwxr-xr-x
xmlcatalog
17.99
KB
-rwxr-xr-x
xmllint
66.82
KB
-rwxr-xr-x
xsltproc
26.08
KB
-rwxr-xr-x
xsubpp
5.04
KB
-rwxr-xr-x
xxd
18.12
KB
-rwxr-xr-x
xz
74.36
KB
-rwxr-xr-x
xzcat
74.36
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yes
30.18
KB
-rwxr-xr-x
yplan
10.75
KB
-rwxr-xr-x
zdump
18.05
KB
-rwxr-xr-x
zip
211.19
KB
-rwxr-xr-x
zipcloak
91.62
KB
-rwxr-xr-x
zipdetails
47.36
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
174.13
KB
-rwxr-xr-x
zipnote
87.39
KB
-rwxr-xr-x
zipsplit
91.39
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : pkfix-helper
#! /usr/bin/env perl ############################################# # Help pkfix decipher fonts in a PostScript # # file produced by an ancient dvips # # # # By Scott Pakin <scott+pkfh@pakin.org> # ############################################# use File::Spec; use File::Temp qw (tempfile); use File::Basename; use Getopt::Long; use Pod::Usage; use warnings; use strict; # Define some global variables. my $progname = basename $0; # Name of this program our $VERSION = "1.4"; # Version number of this program my %name2chars; # Map from a font name to a character list my $GS = $ENV{"GS"} || "gs"; # Name of the Ghostscript interpreter my $TFTOPL = $ENV{"TFTOPL"} || "tftopl"; # Name of the TFM to PL converter my $dpi = 300; # Number of dots per inch used to generate bitmapped characters my @tfmlist; # List of TFM files to use my %fontmatch; # Map from a font name to its best match my $xinc = 36; # Width of font name in PostScript points my $yinc = 24; # Height of font in PostScript points my $init_yinc = 36; # Space after title my %tfmfontwidth; # Map from font name to character number to character width my %tfm2size; # Map from font name to design size my %tfmmissing; # Set of TFM files we looked for but didn't find my ($dvips_xscale, $dvips_yscale); # Scaling factors from Dvips's PostScript CTM my $discard_output = $^O eq "MSWin32" ? "> NUL:" : "> /dev/null 2>&1"; # Command suffix to discard all output # Define the global variables that the user can modify from the command line. my $wanthelp = 0; # 1=user wants to see the program's documentation my $wantversion = 0; # 1=user wants to see the program's version number my $verbose = 1; # 0=quiet; 1=verbose output; 2=more verbose output my @forced_fonts; # Font mappings the user asserts are correct my @exclude_res; # Regexps for fonts to exclude my @extra_tfms; # Extra TFM files to use my %retained_t3s; # Type 3 fonts to retain as is my $sample_file_ps; # Name of a PostScript file of font samples to write my $sample_file_tex; # Name of a TeX file of font samples to write my $single_font_use = 0; # 1=one use per font; 0=allow repetitions my $samples_per_page = 25; # Number of font samples to print per page my $tfm_cache_file; # Name of a file in which to cache font metrics my $any_scale = 0; # 0=1X, 1.1X, 1.2X, ...; 1=any scale is allowed ########################################################################### # Read %tfm2size, %tfmfontwidth, and %tfmmissing from a file named by # $tfm_cache_file. sub read_tfm_cache_file { open(CACHEFILE, "<", $tfm_cache_file) || do { print STDERR "Ignoring TFM cache file $tfm_cache_file ($!).\n" if $verbose; return; }; print STDERR "Reading TFM data from $tfm_cache_file ... " if $verbose; my $numlines = 0; while (my $oneline = <CACHEFILE>) { chomp $oneline; my @fields = split " ", $oneline; die "${progname}: Internal error" if $#fields == -1; my $tfm = shift @fields; if ($#fields == -1) { # No metrics -- TFM file must not have been found. $tfmmissing{$tfm} = 1; } else { # Parse and store the TFM data. $tfm2size{$tfm} = shift @fields; my %widths = @fields; $tfmfontwidth{$tfm} = \%widths; } $numlines++; } close CACHEFILE; print STDERR "done ($numlines entries).\n" if $verbose; } # Write %tfm2size, %tfmfontwidth, and %tfmmissing to a file named by # $tfm_cache_file. sub write_tfm_cache_file { my $numlines = 0; print STDERR "Writing TFM data to $tfm_cache_file ... " if $verbose; open(CACHEFILE, ">", $tfm_cache_file) || die "${progname}: Failed to create $tfm_cache_file ($!)\n"; while (my ($tfm, $size) = each %tfm2size) { my @widths = %{$tfmfontwidth{$tfm}}; print CACHEFILE "$tfm $size @widths\n"; $numlines++; } foreach my $tfm (keys %tfmmissing) { print CACHEFILE "$tfm\n"; $numlines++; } close CACHEFILE; print STDERR "done ($numlines entries).\n" if $verbose; } # Given the base name of a .tfm file, process the file and return the # font's design size and a mapping from character number to character # width. sub tfm2widths ($) { my $tfmname = $_[0]; # Name of the TFM file my $designsize; # Design size of the font my %num2width; # Resultant mapping my $plname; # Name of PL file; some tftopl programs can't write to stdout. my $plfile; # Filehandle corresponding to $plname # First see if the information is already cached. if (defined $tfm2size{$tfmname}) { print STDERR " Processing $tfmname ... cached.\n" if $verbose >= 2; return [$tfm2size{$tfmname}, %{$tfmfontwidth{$tfmname}}]; } if (defined $tfmmissing{$tfmname}) { print STDERR " Processing $tfmname ... cached as not found.\n" if $verbose >= 2; return [$designsize, %num2width]; } # The information is not cached -- read it from a file. ($plfile, $plname) = tempfile (DIR => File::Spec->tmpdir(), SUFFIX => ".pl"); close $plfile; if (!system "$TFTOPL $tfmname $plname $discard_output") { print STDERR " Processing $tfmname ... " if $verbose >= 2; open (PLFILE, "<$plname") || die "${progname}: Unable to open $tfmname ($!)\n"; my $charnum; # Current character number while (my $oneline = <PLFILE>) { # Store the current character width. $oneline =~ /\(CHARWD R (\S+)\)/ && do { $num2width{$charnum} = $1 * $designsize; next; }; # Store the current character number. $oneline =~ /\(CHARACTER (\S) (\S+)/ && do { if ($1 eq "O") { # Octal character number $charnum = oct $2; } elsif ($1 eq "C") { # ASCII character number $charnum = ord $2; } else { die "${progname}: Unknown TFM character type \"$1\"\n"; } next; }; # Store the font design size. $oneline =~ /\(DESIGNSIZE R (\S+)\)/ && do { $designsize = $1 + 0.0; next; }; } close PLFILE; print STDERR "done.\n" if $verbose >= 2; } else { print STDERR " Discarding $tfmname (not found).\n" if $verbose >= 3; } unlink $plname; return [$designsize, %num2width]; } # Given two character maps, one for a document font and one for a TFM # file, return the optimal scale factor for the TFM file to best match # the document font. sub optimal_scale ($$) { my %docmap = %{$_[0]}; # Map for a document font my %tfmmap = %{$_[1]}; # Map for a TFM font my $doc_dot_tfm = 0.0; # Sum of $docmap{$c}*$tfmmap{$c} for all $c my $tfm_dot_tfm = 0.0; # Sum of $tfmmap{$c}**2 for all $c while (my ($char, $docwidth) = each %docmap) { my $tfmwidth = $tfmmap{$char}; return undef if !defined $tfmwidth; # Match is impossible. $doc_dot_tfm += $docwidth * $tfmwidth; $tfm_dot_tfm += $tfmwidth**2; } return 1.0 if $tfm_dot_tfm == 0.0; # Handle TFM characters that all have zero width. my $optscale = $doc_dot_tfm / $tfm_dot_tfm; unless ($any_scale) { # Allow only values >= 1.0 and only multiples of 0.1. return 1.0 if $optscale < 1.0; $optscale = int($optscale*10 + 0.5) / 10; } return $optscale; } # Compare two character maps and return their mismatch (smaller is # better). The third, optional, argument is a scale factor for the # TFM file. sub compare_maps ($$;$) { my %docmap = %{$_[0]}; # Map for a document font my %tfmmap = %{$_[1]}; # Map for a TFM font my $scale = $_[2] || 1.0; # Scale for each TFM width my $sqdiff = 0; # Sum of squares of differences while (my ($char, $docwidth) = each %docmap) { my $tfmwidth = $tfmmap{$char}; return 10**9 if !defined $tfmwidth; # Match is impossible. $sqdiff += ($docwidth - $tfmwidth*$scale) ** 2; } return $sqdiff; } # Given a Type 3 font definition, surround it with DVIPSBitmapFont comments. sub write_comments ($$) { my ($fontname, $fontdef) = @_; return $fontdef if !defined $fontmatch{$fontname}; # Font should not be substituted my $tfm = $fontmatch{$fontname}->{"tfm"}; my $scale = $fontmatch{$fontname}->{"scale"}; my $origsize = $tfm2size{$tfm}; my $begincomment = sprintf '%%DVIPSBitmapFont: %s %s %.5g %d', $fontname, $tfm, $origsize*$scale, 1+$#{$name2chars{$fontname}}; my $endcomment = '%EndDVIPSBitmapFont'; return "\n" . $begincomment . "\n" . $fontdef . "\n" . $endcomment . "\n"; } # Escape an array of characters for PostScript's benefit. sub psify (@) { my @ps_chars; foreach my $onechar (@_) { my $charnum = ord $onechar; if ($onechar =~ /[\\()]/) { push @ps_chars, "\\" . $onechar; } elsif ($charnum >= 32 && $charnum <= 126) { push @ps_chars, $onechar; } else { push @ps_chars, sprintf "\\%03o", $charnum; } } return @ps_chars; } # Escape an array of characters for TeX's benefit. sub texify (@) { my @texchars; foreach my $onechar (@_) { if ($onechar =~ m|[\000-\037\\{}\177-\377]|) { push @texchars, sprintf '\char"%02X{}', ord $onechar; } else { push @texchars, $onechar; } } return join "", @texchars; } # Parse a font specification into a list of hashes of information. sub parse_font_spec ($) { my $spec = $_[0]; my $parse_error = "${progname}: Unable to parse font specification \"$spec\"\n"; if ($spec =~ /^\s*([-\w\*]+)(.*)$/o) { my $tfm = $1; # Name of tfm file (e.g., "cmr10") my $scale_info = $2; # Concatenation of scale type and scale factor my $scale_type; # "X"=multiply, "@"=assign my $scale_amount; # How much to scale the TFM file, "*"=automatic # Parse the different scale types. if ($scale_info =~ /^\s*$/o) { # Empty $scale_type = 'X'; $scale_amount = 1.0; } elsif ($scale_info =~ /^\s*\@\s*([\d.]+)\s*X\s*$/io) { # "@ <number> X" $scale_type = 'X'; $scale_amount = $1 + 0.0; } elsif ($scale_info =~ /^\s*\@\s*([\d.]+)\s*(pt|bp)\s*$/io) { # "@ <number> pt" or "@ <number> bp" $scale_type = '@'; $scale_amount = $1; $scale_amount *= 72.0/72.27 if $2 eq "bp"; # Convert to TeX points } elsif ($scale_info =~ /^\s*\@\s*\*\s*$/o) { # "@ *" $scale_type = 'X'; $scale_amount = "*" } else { die $parse_error; } # If the tfm file contains a "*", replace the "*" with a # variety of font sizes. my @fontlist; if ($tfm =~ /\*/) { foreach my $fsize (5..17) { my $full_tfm = $tfm; $full_tfm =~ s/\*/$fsize/g; push @fontlist, {"tfm" => $full_tfm, "scale_type" => $scale_type, "scale" => $scale_amount}; } } else { push @fontlist, {"tfm" => $tfm, "scale_type" => $scale_type, "scale" => $scale_amount}; } return \@fontlist; } die $parse_error; } # Return all of the unique items in a given list. sub unique_items (@) { my %item_hash; foreach my $item (@_) { $item_hash{$item} = 1; } return keys %item_hash; } ########################################################################### # Parse the command line. Getopt::Long::Configure ("bundling"); GetOptions ("h|help" => \$wanthelp, "v|verbose+" => \$verbose, "V|version" => \$wantversion, "q|quiet" => sub {$verbose = 0}, "f|force=s" => \@forced_fonts, "i|include=s" => \@extra_tfms, "x|exclude=s" => \@exclude_res, "k|keep=s" => sub {$retained_t3s{$_[1]} = 1}, "t|tex=s" => \$sample_file_tex, "p|ps=s" => \$sample_file_ps, "s|spp=i" => \$samples_per_page, "C|cache=s" => \$tfm_cache_file, "a|any-scale!" => \$any_scale, "1|no-repeats" => \$single_font_use) || pod2usage(2); if ($wantversion) { print "pkfix-helper $VERSION\n"; exit 0; } if ($wanthelp) { pod2usage (-verbose => $verbose, -exitval => "NOEXIT"); print "Report bugs to scott+pkfh\@pakin.org.\n" if $verbose == 1; exit 0; } my $infilename = $#ARGV>=0 ? $ARGV[0] : "-"; my $outfilename = $#ARGV>=1 ? $ARGV[1] : "-"; die "${progname}: Samples per page must be at least 1 ($samples_per_page was specified)\n" if $samples_per_page < 1; # Convert any user-specified TFMs to the appropriate internal format. foreach my $tfm (@extra_tfms) { my $font_spec = parse_font_spec $tfm; push @tfmlist, @$font_spec; } # Parse the list of forced font mappings. foreach my $mapstr (@forced_fonts) { $mapstr =~ /^(\w+)\s*=\s*(.*)$/ || die "${progname}: Unable to parse font specification \"$mapstr\"\n"; my $parsed_font_spec = parse_font_spec $2; if (defined $fontmatch{$1}) { # Append to an existing font match. $fontmatch{$1} = [@{$fontmatch{$1}}, @$parsed_font_spec]; } else { # Define a new font match, $fontmatch{$1} = $parsed_font_spec; } } # Construct a list of (possibly nonexistent) TFM files to try. These # should be in order of decreasing likelihood. Each entry in the list # is of the form {full name, scale factor}. @exclude_res = ('^\s*$') if $#exclude_res == -1; foreach my $size_scale ([10, 1.0], [12, 1.0], [10, 1.1], [17, 1.0], [ 9, 1.0], [ 8, 1.0], [ 7, 1.0], [ 6, 1.0], [ 5, 1.0], [10, 1.2], # The following are common cmbx12 section headings. [12, 14.40/12], [12, 17.28/12], [12, 20.74/12], [12, 24.88/12]) { my ($pointsize, $scale) = @$size_scale; FONTLOOP: foreach my $basefont (qw (cmr cmb cmtt cmbsy cmbx cmbxsl cmbxti cmcsc cmex cmitt cmmi cmmib cmsl cmsltt cmss cmssbx cmssi cmsy cmti lasy lasyb msam msbm cmssdc cmtcsc)) { my $friendly_name = sprintf "%s%d \@ %.5gX", $basefont, $pointsize, $scale; foreach my $regexp (@exclude_res) { next FONTLOOP if $friendly_name =~ $regexp; } push @tfmlist, {"tfm" => $basefont . $pointsize, "scale_type" => "X", "scale" => $scale}; } } # Read the entire input file. $| = 1; if ($verbose) { printf STDERR "Reading %s ... ", $infilename eq "-" ? "standard input" : $infilename; } my $entirefile; { local $/ = undef; open (INFILE, "<$infilename") || die "open(\"$infilename\"): $!\n"; binmode INFILE; $entirefile = <INFILE>; close INFILE; } print STDERR "done.\n" if $verbose; # Rename the fonts in each subdocument (figure). my @fontrenames; my $fignum = 1; my $numrenamed = 0; while ($entirefile =~ /(\%\%BeginDocument: (.*?)\n.*?\%\%EndDocument)/gs) { my $figure = $1; my $newfigure = $1; my $figname = $2; if ($verbose >= 2) { if ($fignum == 1) { print STDERR "Renaming all fonts encountered in included documents:\n"; } print STDERR " $figname\n"; } while ($figure =~ m|/(\S+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) { my $fontname = $1; # Name of current font (e.g., "Fa") $newfigure =~ s,(?<=/)$fontname\b,${fontname}_$fignum,gs; $newfigure =~ s,\b$fontname(?=\(),${fontname}_$fignum,gs; $numrenamed++; if ($verbose >= 2) { printf STDERR " %s --> %s_%d\n", $fontname, $fontname, $fignum; } } if ($figure ne $newfigure) { # Remove the font-defining dictionary from the the subdocument # as it may confuse pkfix. Store it so we can later reinsert # it into the main document's font-defining dictionary. my $texdict = ""; if ($newfigure =~ s/TeXDict begin \d+ \d+ \d+ \d+ \d+ \(.*?\)\s+\@start(.*?)end//gs) { $texdict = $1; } else { warn "${progname}: Failed to extract a font-defining TeXDict from $figname\n"; } push @fontrenames, [$figure, $newfigure, $texdict]; } $fignum++; } if ($verbose && $entirefile =~ /\%\%BeginDocument:/s) { print STDERR "Number of Type 3 fonts encountered in included documents: $numrenamed\n"; } foreach my $ren (@fontrenames) { my ($before, $after, $notused) = @$ren; $entirefile =~ s/\Q$before\E/$after/gs; } # If the document contains a subdocument with (now renamed) font # definitions, hoist those definitions adjacent to the main document's # font definitions so pkfix can find them. if (@fontrenames) { if ($entirefile =~ /(TeXDict begin (\d+) (\d+) (\d+) (\d+) (\d+) \(.*?\)\s+\@start.*?)(?=end)/s) { my $fontdict = $1; my $morefonts = ""; foreach my $ren (@fontrenames) { $morefonts .= $ren->[2]; } $entirefile =~ s/(\Q$fontdict\E)/$1$morefonts/s; } else { warn "${progname}: Failed to find a font-defining TeXDict\n"; } } # Construct a mapping from each document font name to a list of valid # characters in that font. while ($entirefile =~ m|/(\S+)\s+\d+\s+\d+\s+df(.*?>[^<>]*?[DI])\s+E|gs) { my $fontname = $1; # Name of current font (e.g., "Fa") my $fontbody = $2; # List of character definitions as hexadecimal strings my $charnum = 0; # Current character number my @charlist = (); # List of valid characters in PostScript-friendly format while ($fontbody =~ /<[0-9A-F\s]+>(.*?[DI])/gs) { # Put the current character number in $charnum then append the # corresponding character to @charlist. my @chardef = split " ", $1; if ($chardef[$#chardef] eq "I") { $charnum++; } else { $charnum = $chardef[$#chardef-1]; } push @charlist, chr $charnum; } $name2chars{$fontname} = \@charlist; } my @sortedfontnames = sort {$#{$name2chars{$b}} <=> $#{$name2chars{$a}} || $a cmp $b} keys %name2chars; if ($verbose) { printf STDERR "Total number of Type 3 fonts encountered: %d\n", 1+$#sortedfontnames; if ($verbose >= 2) { foreach my $fontname (@sortedfontnames) { printf STDERR " %-5.5s -- %3d character(s)\n", $fontname, 1+$#{$name2chars{$fontname}}; } } } die "${progname}: No Type 3 fonts were encountered in the input file\n" if $#sortedfontnames==-1; # Determine the number of dots per inch used to generate the bitmaps. if ($entirefile =~ /dpi=(\d+)/i || $entirefile =~ /Resolution (\d+)dpi/i) { $dpi = $1 + 0; printf STDERR "Bitmapped fonts are typeset at $dpi DPI.\n" if $verbose; } else { warn "${progname}: Could not determine the target printer resolution; assuming $dpi DPI\n"; } # Insert some helper code after the tex.pro ProcSet. my $output_width_ps = $entirefile; # PostScript code to output character widths my $showfontnamecode = <<"SHOWFONTNAME"; \%\%BeginProcSet: $progname.pro TeXDict begin % char0 char1 PRINT-WIDTH - % % Output the name of the current font (font-name-string), its character % number (char0), and the character's width in PostScript points. /print-width { pop (FONT: ) print font-name-string print ( CHAR: ) print 8 string cvs print ( XPOS: ) print currentpoint pop 80 string cvs print (\\n) print } bind def % font-name sample-string PRINT-CHAR-WIDTHS - % % Store the name of font-name in the string font-name-string. Then, select % font-name and, for each character of test-string, call print-width % to output its width. /print-char-widths { /sample-string exch def /font-name exch def font-name 8 string cvs /font-name-string exch def font-name cvx exec {print-width} sample-string kshow } bind def end \%\%EndProcSet SHOWFONTNAME ;#' if ($output_width_ps !~ s/\%\%BeginProcSet: tex\w*\.pro.*?\%\%EndProcSet/$&\n$showfontnamecode/s) { print STDERR "No tex.pro ProcSet was found. We have to guess where to inject PostScript code.\n" if $verbose >= 3; die "${progname}: Unable to inject prologue code\n" if $output_width_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop/\n$showfontnamecode\n$&/s; } # Define some code to display the width of every valid character in # every bitmapped font. Fonts are displayed in decreasing order of # the number of characters used. my $displaycode = "\%\%Page: 1 1\nTeXDict begin\n1 0 bop\n"; foreach my $fontnum (0 .. $#sortedfontnames) { # Duplicate the last character of the sample string so kshow can # process the final character delta. my $fontname = $sortedfontnames[$fontnum]; my @charlist = psify @{$name2chars{$fontname}}; my $samplestring = join("", @charlist) . $charlist[$#charlist]; # Typeset the string starting at horizontal offset 0. $displaycode .= sprintf "0 0 moveto\n"; $displaycode .= "/$fontname ($samplestring) print-char-widths\n"; } # Dvips scales the page. Determine the scaling it uses. $displaycode .= <<'ENDDISPLAYCODE'; (CURRENTMATRIX: ) print matrix currentmatrix == (\n) print eop end ENDDISPLAYCODE ; # Replace the bulk of the PostScript file with the display code. if ($output_width_ps !~ s/\%\%Page:.*(\%\%Trailer)/$displaycode$1/s) { print STDERR 'No %%Page and/or %%Trailer comments were found. We have to guess where to inject PostScript code.', "\n" if $verbose >= 3; die "${progname}: Unable to inject display code\n" if $output_width_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop.*eop\s+end/\n$displaycode\n/s; } # Output the modified PostScript code to a temporary file, run # Ghostscript on the temporary file, and process Ghostscript's output. my ($psfile, $psfilename) = tempfile ("pkfix-helper-XXXXXX", DIR => File::Spec->tmpdir(), SUFFIX => ".ps"); binmode $psfile; print $psfile $output_width_ps; close $psfile; undef $output_width_ps; my %fontwidth; # Map from font name to character number to character width my @previnfo = ("", 0.0); # Previous font name and final character position my $gscmd = "$GS -q -dNOPAUSE -dBATCH -dNODISPLAY $psfilename"; print STDERR "Finding character widths ... " if $verbose >= 1; print STDERR "\n Invoking: $gscmd\n" if $verbose >= 2; print STDERR "done.\n" if $verbose >= 1; open (GSCMD, "$gscmd|") || die "${progname}: failed to fork ($!)\n"; while (my $oneline = <GSCMD>) { if ($oneline =~ /FONT: (\S+)\s*CHAR: (\d+)\s*XPOS: (\S+)/o) { my ($fontname, $charnum, $xpos) = ($1, $2, $3); my $width = $xpos + 0.0; $width -= $previnfo[1] if $fontname eq $previnfo[0]; $fontwidth{$fontname}->{$charnum} = $width * 72.27 / $dpi; @previnfo = ($fontname, $xpos); } elsif ($oneline =~ /CURRENTMATRIX: \[\s*([-\d.]+)\s+[-\d.]+\s+[-\d.]+\s+([-\d.]+)\s+[-\d.]+\s+[-\d.]+\s*\]/o) { $dvips_xscale = $1 * 1.0; $dvips_yscale = $2 * -1.0; } } close GSCMD || die "${progname}: failed to run $GS ($!)\n"; unlink $psfilename; die "${progname}: No character-width information was found\n" if !%fontwidth; # Read TFM font metrics from a cache file if specified. read_tfm_cache_file() if defined $tfm_cache_file; # Read each TFM file and store its design size and character widths. print STDERR "Reading TFM files ... " if $verbose; print STDERR "\n" if $verbose >= 2; foreach my $tfm (sort {$a cmp $b} unique_items map {$_->{"tfm"}} (@tfmlist, map {@$_} values %fontmatch)) { my ($designsize, %num2widths) = @{tfm2widths $tfm}; if (%num2widths) { $tfmfontwidth{$tfm} = \%num2widths; $tfm2size{$tfm} = $designsize * 1.0; } else { $tfmmissing{$tfm} = 1; } } # Remove nonexistent fonts from @tfmlist and replace all absolute # ("@") scaling with relative ("X") scaling. my @goodtfmlist; foreach my $tfminfo (@tfmlist) { my $tfm = $tfminfo->{"tfm"}; next if !defined ($tfmfontwidth{$tfm}); $tfminfo->{"designsize"} = $tfm2size{$tfm}; if ($tfminfo->{"scale_type"} eq "@") { # Convert absolute to relative sizes. $tfminfo->{"scale_type"} = "X"; $tfminfo->{"scale"} /= $tfminfo->{"designsize"}; } push @goodtfmlist, $tfminfo; } @tfmlist = @goodtfmlist; undef @goodtfmlist; # Do the same for all user-specified font mappings but abort if none # of the specified possibilities represent a valid TFM file. while (my ($fontname, $tfmlist) = each %fontmatch) { my $anyvalid = 0; foreach my $tfminfo (@$tfmlist) { my $tfm = $tfminfo->{"tfm"}; next if !defined ($tfmfontwidth{$tfm}); $tfminfo->{"designsize"} = $tfm2size{$tfm}; if ($tfminfo->{"scale_type"} eq "@") { # Convert absolute to relative sizes. $tfminfo->{"scale_type"} = "X"; $tfminfo->{"scale"} /= $tfminfo->{"designsize"}; } $anyvalid = 1; } if (!$anyvalid) { print STDERR "failed.\n" if $verbose; die "${progname}: Unable to utilize any of the TFM files specified for font $fontname\n"; } } # Report the number of fonts in our repertoire. my $numtfms = keys %tfm2size; my $numfonts = 1 + $#tfmlist; print STDERR "done ($numtfms TFMs in $numfonts scaling variations).\n" if $verbose; die "${progname}: No TFM files were processed successfully\n" if !$numtfms; # Write the TFM font metrics to a a cache file if specified. write_tfm_cache_file() if defined $tfm_cache_file; # Compare every document font (ordered by decreasing number of # characters utilized) to every TFM file (in increasing order of # obscurity). print STDERR "Matching fonts:\n" if $verbose; foreach my $fontname (@sortedfontnames) { my @besttfms; # Best matching TFM file(s), sizes, and scales my $bestmatch = 10**9; # Best matching value # Don't substitute the font if we were told not to. if (defined $retained_t3s{$fontname}) { print STDERR " Retaining $fontname as a bitmapped font.\n" if $verbose == 1; next; } # Determine the list of eligible fonts to compare against. my @eligible_tfms; foreach my $tfminfo ($fontmatch{$fontname} ? @{$fontmatch{$fontname}} : @tfmlist) { if ($tfminfo->{"scale"} eq "*") { # Replace "*" with the best scaling factor we can find. next if !defined $tfmfontwidth{$tfminfo->{"tfm"}}; my $newscale = optimal_scale $fontwidth{$fontname}, $tfmfontwidth{$tfminfo->{"tfm"}}; if (defined $newscale) { # Replace the "*" with the optimal multiplier. my %newtfminfo = %$tfminfo; $newtfminfo{"scale"} = $newscale; push @eligible_tfms, \%newtfminfo; } else { # Fonts are incomparable. my $tfm = $tfminfo->{"tfm"}; print STDERR " Not scaling $tfm; ${fontname}'s character set is not a subset of ${tfm}'s.\n" if $verbose >= 2; } } else { # The desired scaling factor is specified explicitly. push @eligible_tfms, $tfminfo; } } die "${progname}: No fonts are eligible to match $fontname\n" if !@eligible_tfms; # Try each TFM file in increasing order of obscurity. print STDERR " Processing $fontname ... " if $verbose == 1; foreach my $tfminfo (@eligible_tfms) { my $tfm = $tfminfo->{"tfm"}; next if !defined $tfmfontwidth{$tfm}; my $scale = $tfminfo->{"scale"}; printf STDERR " Comparing %s and %s \@ %.5gX ... ", $fontname, $tfm, $scale if $verbose >= 2; my $match = compare_maps $fontwidth{$fontname}, $tfmfontwidth{$tfm}, $scale; if ($bestmatch > $match) { # We found a closer match than what we had before. $bestmatch = $match; @besttfms = ($tfminfo); } elsif ($bestmatch == $match) { # We found an equal match to what we had before. push @besttfms, $tfminfo; } printf STDERR "done (mismatch=%.5f).\n", $match if $verbose >= 2; } # Select the first of the best matches. $fontmatch{$fontname} = $besttfms[0]; my $besttfminfo = $fontmatch{$fontname}; my $besttfm = $besttfminfo->{"tfm"}; my $bestscale = $besttfminfo->{"scale"}; if ($verbose >= 2) { if ($#besttfms == 0) { # Single winner printf STDERR " Best match for %s is %s \@ %.5gX with mismatch=%.5f.\n\n", $fontname, $besttfm, $bestscale, $bestmatch; } else { # Tie for first place printf STDERR " Best match for %s is %s \@ %.5gX (tied among %s) with mismatch=%.5f.\n\n", $fontname, $besttfm, $bestscale, join("/", map {sprintf "%s\@%.5gX", $_->{"tfm"}, $_->{"scale"}} @besttfms), $bestmatch; } } elsif ($verbose == 1) { printf STDERR "done (%s \@ %.5gX, mismatch=%.5f).\n", $besttfm, $bestscale, $bestmatch; } warn "${progname}: Best match for $fontname is rather poor\n" if $bestmatch>=1.0; # Optionally remove the font from @goodtfmlist. if ($single_font_use) { @tfmlist = grep {$_->{"tfm"} ne $besttfm || $_->{"scale"} != $bestscale} @tfmlist; } } # Insert %DVIPSBitmapFont comments around every Type 3 font definition. my $commented_ps = $entirefile; my $infilename_ps = $infilename; # PostScript version of $infilename $infilename_ps =~ s/([\(\)\\])/\\$1/g; $commented_ps =~ s|^\%(End)?DVIPSBitmapFont.*$||gm; # Remove existing comments (if any) $commented_ps =~ s|/(\S+)\s+\d+\s+\d+\s+df.*?>[^<]*?[DI]\s+E|write_comments($1, $&)|gse; if ($commented_ps !~ /\%\%EndProlog/) { # pkfix fails silently if it doesn't see an %%EndProlog. print STDERR "No %%EndProlog comment was found. Adding one.\n" if $verbose >= 3; $commented_ps =~ s|TeXDict begin\s+\d+\s+\d+\s+bop|\%\%EndProlog\n$&|s; } # Help pkfix handle ancient versions of dvips by artificially making # dvips look newer. $commented_ps =~ s|(\%\%Creator: dvips\S*) \S+|$1 5.62|; # pkfix rejects dvips <= 5.58 if ($commented_ps =~ s|(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+\@start|$1 $2 $3 $4 $5 ($infilename_ps) \@start|gx) { # pkfix expects *six* arguments to @start, not five as in old # versions of dvips. $commented_ps =~ s|/\@start\s*\{|$& pop |; } if ($commented_ps !~ /^%DVIPSParameters:.*dpi=([\dx]+)/) { # Tell pkfix what resolution to use. my $dvips_params = "\%DVIPSParameters: dpi=$dpi"; if ($commented_ps !~ s|^\%\%EndComments.*$|$&\n$dvips_params|m) { # Comments must have been stripped. $commented_ps =~ s|\n|\n$dvips_params\n|; } } # Write the modified PostScript code to the specified file. open (OUTFILE, ">$outfilename") || die "${progname}: Unable to open $outfilename ($!)\n"; print OUTFILE $commented_ps; close OUTFILE; undef $commented_ps; # If the user requested a PostScript font sample, produce that. if (defined $sample_file_ps) { # Insert some helper code at an appropriate place in the file. my $sample_ps = $entirefile; my $showfontnamecode = <<"SHOWFONTNAME"; \%\%BeginProcSet: $progname.pro TeXDict begin % font-name sample-string PRINT-FONT-SAMPLE - % % Store the name of font-name in the string font-name-string. Then, % output font-name-string in Times Bold in case the user wants to view % the font samples. Next, select font-name and output the sample % string. Finally, move the cursor to the next line in preparation for % the next invocation of print-font-sample. /print-font-sample { /sample-string exch def /font-name exch def font-name 8 string cvs /font-name-string exch def gsave /Times-Bold 12 selectfont font-name-string show (:) show grestore gsave 42 0 rmoveto font-name cvx exec currentfont bitmap-font-transform makefont setfont sample-string show grestore 0 -24 rmoveto } def \% Define a transformation matrix for dvips bitmapped fonts. We _could_ \% do this dynamically but there seems to be a bug in GhostView (v3.6.1) \% or GhostScript (ESP v7.07.1) that causes the page layout to change \% with rescaling. To avoid problems we simply hardwire the scaling \% factor. /bitmap-font-transform [$dvips_xscale 0.0 0.0 $dvips_yscale 0 0] def end \%\%EndProcSet SHOWFONTNAME ; if ($sample_ps !~ s/\%\%BeginProcSet: tex\w*\.pro.*\%\%EndProcSet/$&\n$showfontnamecode/s) { print STDERR "No tex.pro ProcSet was found. We have to guess where to inject PostScript code.\n" if $verbose >= 3; die "${progname}: Unable to inject prologue code\n" if $sample_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop/\n$showfontnamecode\n$&/s; } # Generate code to output a sample of each font in turn. my $displaycode = <<"PAGEHEADER"; \%\%Page: 1 1 TeXDict begin 1 0 bop \% Display a page title. 0 0 moveto initmatrix gsave /Helvetica 18 selectfont (Fonts used by $infilename_ps) show grestore 0 -$init_yinc rmoveto \% Display samples of each document font in decreasing order of the number \% of characters utilized from the font. PAGEHEADER ; my $pageno = 1; foreach my $fontnum (0 .. $#sortedfontnames) { my $fontname = $sortedfontnames[$fontnum]; my $samplestring = join("", psify @{$name2chars{$fontname}}); $displaycode .= "/$fontname ($samplestring) print-font-sample\n"; if ($fontnum % $samples_per_page == $samples_per_page-1 && $fontnum != $#sortedfontnames) { # Insert a page break after every $samples_per_page font samples. $pageno++; $displaycode .= <<"PAGETRANSITION"; eop end \%\%Page: $pageno $pageno TeXDict begin $pageno @{[$pageno-1]} bop 0 0 moveto initmatrix PAGETRANSITION ; } } $displaycode .= "eop\nend\n"; if ($sample_ps !~ s/\%\%Page:.*(\%\%Trailer)/$displaycode$1/s) { print STDERR 'No %%Page and/or %%Trailer comments were found. We have to guess where to inject PostScript code.', "\n" if $verbose >= 3; die "${progname}: Unable to inject display code\n" if $sample_ps !~ s/TeXDict begin\s+\d+\s+\d+\s+bop.*eop\s+end/\n$displaycode\n/s; } # Write the PostScript file. open (SAMPLE_PS, ">$sample_file_ps") || die "${progname}: Unable to open $sample_file_ps ($!)\n"; binmode SAMPLE_PS; print SAMPLE_PS $sample_ps; close SAMPLE_PS; undef $sample_ps; } # If the user requested a TeX font sample, produce that. if (defined $sample_file_tex) { my $oneline; # One line to write to the TeX file. open (SAMPLE_TEX, ">$sample_file_tex") || die "${progname}: Unable to open $sample_file_tex ($!)\n"; select (SAMPLE_TEX); $| = 1; select (STDOUT); format SAMPLE_TEX = % ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~ $oneline . $oneline = <<"TEX_HEADER"; This file was generated by $0. DO NOT EDIT. Edit $progname instead. Note that this is a Plain TeX document. Compile it with tex, *not* latex. TEX_HEADER ; write SAMPLE_TEX; print SAMPLE_TEX <<'TEX_BOILERPLATE'; % Make printable all special characters between % \makeprintable...\endmakeprintable except for "\", "{", and "}". \def\makeprintable{% \begingroup \def\do##1{\catcode`##1=12}% \dospecials \catcode`\\=0\relax \catcode`\{=1\relax \catcode`\}=2\relax } \let\endmakeprintable=\endgroup % Put a piece of text at specific PostScript coordinates. \newdimen\xofs \newdimen\yofs \def\put(#1,#2)#{% \leavevmode \begingroup \makeprintable \xofs=#1bp \yofs=#2bp \afterassignment\puthelper \toks0=% } \def\puthelper{% \lower\yofs \rlap{\hskip\xofs\the\toks0}% \endmakeprintable \endgroup } % We use Times Bold at 12 point for font names. \font\timesbXII=ptmb at 12bp % Don't add extra space to paragraphs. \parindent=0pt \parskip=0pt % Output the document's title. \font\somefont=phvr at 18bp TEX_BOILERPLATE ; # Output the document's title. my $infilename_tex = texify split "", $infilename; print SAMPLE_TEX '\put(0, 0){\somefont New fonts to use for ', "$infilename_tex}\n"; # Output samples of each font in turn. print SAMPLE_TEX "\n\% Output font samples.\n"; my $firstfontnum = 0; foreach my $fontnum (0 .. $#sortedfontnames) { # Output a single font sample. my $fontname = $sortedfontnames[$fontnum]; my $samplestring = texify @{$name2chars{$fontname}}; my $yoffset = ($fontnum-$firstfontnum)*$yinc + $init_yinc; printf SAMPLE_TEX "\\put(0, %d){\\timesbXII %s:}%%\n", $yoffset, $fontname; my $tfm = $fontmatch{$fontname}->{"tfm"}; my $scale = $fontmatch{$fontname}->{"scale"}; my $size = $tfm2size{$tfm}; printf SAMPLE_TEX "\\font\\somefont=%s%s\\somefont\n", $tfm, $scale==1.0 ? "" : sprintf(" at %.5gbp", $scale*$size); printf SAMPLE_TEX "\\put(%d, %d){%s}%%\n", $xinc, $yoffset, $samplestring; if ($fontnum % $samples_per_page == $samples_per_page-1) { # Insert a page break after every $samples_per_page font samples. print SAMPLE_TEX "\\vskip 0pt plus 1fill\\eject\n"; $firstfontnum = $fontnum; } } # Complete the TeX file. print SAMPLE_TEX "\n\\bye\n"; close SAMPLE_TEX; } ########################################################################### __END__ =head1 NAME pkfix-helper - preprocess dvips-produced PostScript documents before passing them to pkfix =head1 SYNOPSIS pkfix-helper [B<--help>] [B<--verbose>] [B<--force>=I<name>=I<fontspec>] [B<--ps>=I<filename.ps>] [B<--tex>=I<filename.tex>] [B<--cache>=I<filename>] [B<--include>=I<fontspec>] [B<--exclude>=I<regexp>] [B<--keep>=I<fontspec>] [B<--quiet>] [B<--no-repeats>] [B<--spp>=I<number>] [I<input.ps> [I<output.ps>]] =head1 DESCRIPTION =head2 Motivation PostScript documents created with old versions of B<dvips> almost invariably utilize bitmapped (PostScript S<Type 3>) fonts. The problem with bitmapped fonts is that they target a specific device resolution; a PostScript file produced using S<300 DPI> fonts will look grainy on a S<600 DPI> printer. Even worse, I<all> bitmapped fonts look grainy when zoomed in on screen. The solution is to use vector (PostScript S<Type 1>) fonts, which are resolution-independent and appear crisp at any size or scale. While it is no longer difficult to configure B<dvips> to use vector fonts, it is not always possible to rerun B<dvips> on an old F<.dvi> file. The F<.dvi> file and document source may have been lost; or, the source may no longer compile because packages it depends upon may no longer be available. Heiko Oberdiek's B<pkfix> script replaces bitmapped fonts in B<dvips>-produced PostScript files with the corresponding vector fonts. It works by parsing the PostScript comments with which B<dvips> surrounds bitmapped-font definitions. For example, a font definition beginning with the comment C<%DVIPSBitmapFont: Fi cmss10 11 28> and ending with a matching C<%EndDVIPSBitmapFont> is known to define font C<Fi> as C<cmss10> (Computer Modern Sans Serif at a design size of S<10 points>) scaled to S<C<11> points>. Only the C<28> characters actually used by the document are defined. B<pkfix> then replaces the font definition with one that defines C<Fi> using the same set of characters but taken from the F<cmss10.pfb> vector font file. Unfortunately, B<pkfix> works only with versions of B<dvips> newer than v5.58 S<(ca. 1996)>. Naturally, the older a PostScript document, the less likely its sources still exist and can still be recompiled. Older versions of B<dvips> lack C<%DVIPSBitmapFont> comments and various other PostScript comments on which B<pkfix> relies. Without PostScript comments to guide it, B<pkfix> is unable to determine which vector fonts correspond with which bitmapped fonts. =head2 Overview The B<pkfix-helper> script is a preprocessor for B<pkfix> that attempts to determine the association between each document-font name S<(e.g., C<Fi>)> in a PostScript file and the original font S<(e.g., C<cmss10>)> and fonts size (e.g., S<C<11> points>). It then fabricates the PostScript comments that B<pkfix> expects to see so that B<pkfix> can do its job. B<pkfix-helper> works by comparing every document font against every F<.tfm> font file it knows about (assuming that each such font has a corresponding F<.pfb> vector version) and selecting the best matching F<.tfm> file for every document font. B<pkfix-helper> has access only to the widths of characters and only to those characters actually used in the document. Also, the program recognizes only a limited set of the most popular F<.tfm> files and scaling factors. Consequently, the comparison is imperfect and B<pkfix-helper> may attribute an incorrect font to a given name. Fonts comprising only one or two characters actually used in a document are particularly problematic for B<pkfix-helper> because many fonts may be near-enough matches to fool the problem. B<pkfix-helper> is designed so that a user can guide the font-selection process by manually designating matching fonts. With a modicum of diligence and patience a user can correct any mismatched fonts and help the program provide proper input to B<pkfix>. =head1 OPTIONS B<pkfix-helper> accepts on the command line the filename of a PostScript document to process (with the default being the standard input device) and the filename of a modified PostScript document to create (with the default being the standard output device). The program also accepts the following command-line options: =head2 Frequently Used Options =over 4 =item B<-h>, B<--help> Display usage information and exit. The B<--verbose> and B<--quiet> options can be used to increase and decrease the amount of information presented. =item B<-v>, B<--verbose> Increase the amount of status information that B<pkfix-helper> displays as it runs. Additional instances of B<--verbose> on the command line further increase the program's verbosity. By default, only major operations are displayed. A single B<--verbose> additionally displays information about individual font comparisons. A second B<--verbose> additionally displays details about some of the program's internal operations. =item B<-f> I<name>=I<fontspec>, B<--force>=I<name>=I<fontspec> Force B<pkfix-helper> to associate a specific font with a given font name appearing the document. I<name> is a two-character B<dvips> font name such as C<Fa>. I<fontspec> is a font specification such as C<cmmi8> or S<C<cmsy10 @ 1.1X>>. An asterisk used in the name of the base font S<(e.g., C<cmti*>)> will automatically try all integral test font sizes from 5 to 17 points (C<cmti5>, S<C<cmti6>, ...,> C<cmti17>). An asterisk used as a scale value S<(e.g., C<cmsy10 @ *>)> will be replaced by the scale value that gives the best match to the original font's metrics. The B<--force> option can be specified repeatedly on the command line. =item B<-p> I<filename.ps>, B<--ps>=I<filename.ps> Create a PostScript file called I<filename.ps> that shows the B<dvips> name and a font sample of every font used by the input document. =item B<-t> I<filename.tex>, B<--tex>=I<filename.tex> Create a Plain TeX file called I<filename.tex> that shows the B<dvips> name and a font sample of every font that B<pkfix-helper> used in the output document. =back =head2 Infrequently Used Options =over 4 =item B<-C> I<filename>, B<--cache>=I<filename> Speed up TFM file processing by caching character metrics into file I<filename>. On some systems it takes a long time to read a TFM file, spawn F<tftopl> to convert it to PL format, and extract from the PL data the metrics for each character. The first time B<--cache> is specified, B<pkfix-helper> proceeds as normal then writes all of the extracted character metrics to I<filename>. On subsequent runs in which B<--cache>=I<filename> is specified, B<pkfix-helper> reads the previously extracted metrics from I<filename>, going through the F<tftopl>-based process only for TFM files that were not previously encountered. =item B<-q>, B<--quiet> Instruct B<pkfix-helper> to produce no output during its run except for fatal error messages. =item B<-1>, B<--no-repeats> Prevent B<pkfix-helper> from associating the same I<fontspec> with more than one B<dvips> font name. =item B<-i> I<fontspec>, B<--include>=I<fontspec> Add I<fontspec> to the list of font specifications against which B<pkfix-helper> compares I<every> document font. (In contrast, B<--force> designates a font specification to use only for a I<specific> document font.) The B<--include> option can be specified repeatedly on the command line. =item B<-x> I<regexp>, B<--exclude>=I<regexp> Remove all font specifications matching regular expression I<regexp> from B<pkfix-helper>'s list of known fonts. The B<--exclude> option can be specified repeatedly on the command line. =item B<-k> I<fontspec>, B<--keep>=I<fontspec> Do not substitute a vector font for bitmapped font I<fontspec> (C<Fa>, C<Fb>, etc.). This is useful when converting documents that use obscure bitmapped fonts for which there is no vector equivalent. For example, it was somewhat common in the past to include graphics such as university or corporate logos into a document by converting the bitmapped image into a single-character font and using that font in LaTeX. B<--keep> prevents such fonts from being replaced. The B<--keep> option can be specified repeatedly on the command line. =item B<-a>, B<--any-scale> Allow any value to be used to scale a font when "C<*>" is specified as the scale factor. Normally, B<pkfix-helper> considers only integer multiples of 0.1 that are greater than or equal to 1.0 (i.e., I<fontname>C<@1X>, C<@1.1X>, C<@1.2X>, C<@1.3X>, etc.). =item B<-s>, B<--spp> Specify the number of font samples per page to print to the files indicated using the B<--ps> and B<--tex> options. The default S<value, 25,> should work well in most circumstances. =back =head1 DIAGNOSTICS =over 4 =item C<Best match for I<name> is rather poor> The best font B<pkfix-helper> found for B<dvips> font name I<name> has a mismatch value greater than or equal S<to 1.0>. (The mismatch value is the sum of the squares of the difference between the character widths of a document font and a potential replacement font.) Use the B<--force> option to designate an alternative replacement font or scaling amount. =back =head1 EXAMPLES For the purpose of the following examples, assume that F<oldfile.ps> is the name of a PostScript file produced by an old version of B<dvips> and utilizing at least one bitmapped font. It's always worth verifying that B<pkfix> can't convert the file on its own: $ pkfix oldfile.ps newfile.ps PKFIX 1.3, 2005/02/25 - Copyright (c) 2001, 2005 by Heiko Oberdiek. ==> no fonts converted (Alternatively B<pkfix> may issue an error message such as C<!!! Error: Parse error (@start parameters)!>.) Only when B<pkfix> can't replace bitmapped fonts with vector fonts is B<pkfix-helper> needed. In its simplest form, B<pkfix-helper> takes the name of an input file (F<oldfile.ps> in this example) and the name of an output file (F<pkfix-oldfile.ps>), which will have the same contents as the input file but serve as suitable input for B<pkfix>: $ pkfix-helper oldfile.ps pkfix-oldfile.ps Reading oldfile.ps ... done. Number of Type 3 fonts encountered: 10 Bitmapped fonts are typeset at 600 DPI. Finding character widths ... done. Reading TFM files ... done (103 TFMs in 193 scaling variations). Matching fonts: Processing Fi ... done (cmr10 @ 1X, mismatch=0.11683). Processing Fa ... done (cmti10 @ 1X, mismatch=0.08892). Processing Fb ... done (cmr8 @ 1X, mismatch=0.07133). Processing Ff ... done (cmbx12 @ 1.2X, mismatch=0.02948). Processing Fh ... done (cmtt10 @ 1X, mismatch=0.06895). Processing Fd ... done (cmmi10 @ 1X, mismatch=0.03966). Processing Fj ... done (cmbx12 @ 1X, mismatch=0.03972). Processing Fe ... done (cmbx10 @ 1X, mismatch=0.00762). Processing Fg ... done (cmsy10 @ 1X, mismatch=0.00875). Processing Fc ... done (cmr6 @ 1X, mismatch=0.00284). $ pkfix pkfix-oldfile.ps newfile.ps PKFIX 1.3, 2005/02/25 - Copyright (c) 2001, 2005 by Heiko Oberdiek. *** Font conversion: `cmti10' -> `CMTI10'. *** Font conversion: `cmr8' -> `CMR8'. *** Font conversion: `cmr6' -> `CMR6'. *** Font conversion: `cmmi10' -> `CMMI10'. *** Font conversion: `cmbx10' -> `CMBX10'. *** Font conversion: `cmbx12' -> `CMBX12'. *** Font conversion: `cmsy10' -> `CMSY10'. *** Font conversion: `cmtt10' -> `CMTT10'. *** Font conversion: `cmr10' -> `CMR10'. *** Font conversion: `cmbx12' -> `CMBX12'. *** Merging font `CMBX12' (2). ==> 10 converted fonts. ==> 1 merged font. Although B<pkfix-helper> tries to automate as much as possible the font-detection process, some fonts will invariably be incorrectly identified. The program outputs a warning message if it I<knows> a match is bad but the lack of a warning message does not necessarily indicate that B<pkfix-helper> did a good job. It is therefore strongly recommended that the user produce "before" and "after" font sheets: $ pkfix-helper -q oldfile.ps pkfix-oldfile.ps \ --ps=oldfonts.ps --tex=newfonts.tex $ tex newfonts.tex This is TeX, Version 3.14159 (Web2C 7.4.5) (./newfonts.tex [1] ) Output written on newfonts.dvi (1 page, 1292 bytes). Transcript written on newfonts.log. $ dvips newfonts.dvi -o newfonts.ps This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com) ' TeX output 2006.06.11:1636' -> newfonts.ps <texc.pro><8r.enc><texps.pro>. <cmr6.pfb><cmsy10.pfb><cmbx10.pfb><cmbx12.pfb> <cmmi10.pfb><cmtt10.pfb><cmr8.pfb><cmti10.pfb><cmr10.pfb>[1] After running the preceding commands, F<oldfonts.ps> shows samples of the fonts in F<oldfile.ps> and F<newfonts.ps> shows samples of the replacement fonts that B<pkfix-helper> used to produce F<pkfix-oldfile.ps>. Print F<oldfonts.ps> and F<newfonts.ps> and compare them carefully for incorrect fonts and sizes. Suppose that the choice of C<cmbx12 @ 1.2X> for font C<Ff> looks wrong; say the characters look taller in F<oldfonts.ps> than in F<newfonts.ps>. This is where the trial-and-error stage begins. Let's hypothesize that C<cmb12> is a better match than C<cmbx12> but we don't know how much to scale the font. Fortunately, B<pkfix-helper> allows C<*> to be used as a scaling factor to tell the program to automatically detect an optimal scaling factor, even if doing so means choosing a nonstandard font size: $ pkfix-helper oldfile.ps pkfix-oldfile.ps --force="Ff=cmb12 @ *" Reading oldfile.ps ... done. Number of Type 3 fonts encountered: 10 Bitmapped fonts are typeset at 600 DPI. Finding character widths ... done. Reading TFM files ... failed. pkfix-helper: Unable to process user-specified TFM file "cmb12" Oops, it looks like we don't have a F<cmb12.tfm> file on our system. Let's try scaling up F<cmb10.tfm> instead: $ pkfix-helper oldfile.ps pkfix-oldfile.ps --force="Ff=cmb10 @ *" Reading oldfile.ps ... done. Number of Type 3 fonts encountered: 10 Bitmapped fonts are typeset at 600 DPI. Finding character widths ... done. Reading TFM files ... done (103 TFMs in 193 scaling variations). Matching fonts: Processing Fi ... done (cmr10 @ 1X, mismatch=0.11683). Processing Fa ... done (cmti10 @ 1X, mismatch=0.08892). Processing Fb ... done (cmr8 @ 1X, mismatch=0.07133). Processing Ff ... done (cmb10 @ 1.5X, mismatch=0.00035). Processing Fh ... done (cmtt10 @ 1X, mismatch=0.06895). Processing Fd ... done (cmmi10 @ 1X, mismatch=0.03966). Processing Fj ... done (cmbx12 @ 1X, mismatch=0.03972). Processing Fe ... done (cmbx10 @ 1X, mismatch=0.00762). Processing Fg ... done (cmsy10 @ 1X, mismatch=0.00875). Processing Fc ... done (cmr6 @ 1X, mismatch=0.00284). The match has definitely improved, although S<15 pt.> is certainly an odd size for a font. Then again, many documents I<do> use nonstandard sizes so this may in fact be correct. The best way to verify is once again to produce, print, and compare a pair of font samples and iterate until all of the fonts look correct. Use one instance of B<--force> for each font you want to alter. =head1 ENVIRONMENT B<pkfix-helper> honors the following environment variables: =over 8 =item GS The name of the Ghostscript interpreter (default: F<gs>) =item TFTOPL The name of a utility for converting F<.tfm> files to F<.pl> files (default: F<tftopl>) =back =head1 BUGS Even when B<pkfix-helper> finds a perfect match S<(i.e., the> correct font in the correct size) the mismatch value is still typically nonzero. The same error is probably what causes B<pkfix-helper> sometimes to consider the wrong font as being a better match than the correct font. Suggestions for fixing these bugs are welcome. =head1 RESTRICTIONS B<pkfix-helper> works only with PostScript files produced by B<dvips>, not with arbitrary PostScript files. The program has not been tested with output from versions of B<dvips> older than v5.490 S<(ca. 1992)>; output from older versions may or may not work. Only bitmapped fonts loaded by B<dvips> can be analyzed, not bitmapped fonts loaded by embedded graphics. B<pkfix-helper> works by comparing character widths, not the actual glyphs. Consequently, it is misled by sets of fonts with similar character widths (at least for those characters used by a given document). As an extreme example, all Computer Modern Teletype fonts of a given design size (e.g., C<cmtt10>, C<cmsltt10>, and C<cmitt10>) use exactly the same widths for all characters. Human assistance is generally needed to guide B<pkfix-helper>'s font-matching procedures. =head1 NOTES Files produced using the B<--tex> option are Plain TeX files and therefore must be compiled with F<tex> (or a variation such as F<pdftex>, F<luatex>, etc.), I<not> with F<latex>. =head1 SEE ALSO pkfix(1), dvips(1), tex(1), gs(1) PostScript Language Reference, Third Edition. Published by Addison-Wesley, ISBN 0-201-37922-8, L<http://www.adobe.com/products/postscript/pdfs/PLRM.pdf>. =head1 AUTHOR Scott Pakin, I<scott+pkfh@pakin.org> =head1 COPYRIGHT AND LICENSE Copyright (C) 2011, Scott Pakin This file may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in L<http://www.latex-project.org/lppl.txt> and version 1.3c or later is part of all distributions of LaTeX version 2006/05/20 or later.
Close