Wouldn't it be a good idea if *all* programs which read
tfm files would use the mktextfm mechanism ? vftovp is an
example of a program which doesn't with web2c 7.2. The
patch below corrects this.



--- web2c/common.defines        Sun Aug  9 23:31:38 1998
+++ web2c/common.defines2       Sun Aug  9 23:32:45 1998
@@ -81,6 +81,7 @@
@define const VFTOVPHELP;
@define const VPTOVFHELP;
@define const WEAVEHELP;
+@define const MAKETEXTFMBYDEFAULT;      { added for vftovp }

@define function abs ();
@define function addressof ();
@@ -133,6 +134,7 @@
@define function xrealloc ();
@define function xstrdup ();
@define function XTALLOC ();
+@define const kpsesrccompile;   { added for vftovp }

@define procedure aclose ();
@define procedure BIBXRETALLOC (); {For BibTeX.}
@@ -167,6 +169,7 @@
@define procedure writeln ();
@define procedure xfclose ();
@define procedure xfseek ();
+@define procedure kpsesetprogramenabled ();  { added for vftovp }

@define type boolean = 0..1;
@define type cinttype;
--- cpascal.h   Mon Aug 10 00:23:57 1998
+++ cpascal.h.new       Mon Aug 10 00:23:42 1998
@@ -254,4 +254,13 @@
/* version.c */
extern string versionstring;

+#ifdef VFTOVP
+#include <kpathsea/tex-file.h>
+#include <c-auto.h>
+#define kpsesetprogramenabled kpse_set_program_enabled
+#define kpsesrccompile kpse_src_compile
+#define kpsemaketexoption kpse_maketex_option
+#define MAKETEXTFMBYDEFAULT MAKE_TEX_TFM_BY_DEFAULT
+#endif /* VFTOVP */
+
#endif /* not CPASCAL_H */
--- vftovp.ch   Sun Aug  9 23:34:01 1998
+++ vftovp.ch.new       Mon Aug 10 00:15:23 1998
@@ -22,6 +22,8 @@
    kpse_set_progname (argv[0]);
    kpse_init_prog ('VFTOVP', 0, nil, nil);
    parse_arguments;
+    kpse_set_program_enabled (kpse_tfm_format, MAKE_TEX_TFM_BY_DEFAULT,
+                              kpse_src_compile);
@z

% [4] No name_length.
@@ -460,7 +462,7 @@

@<Define |parse_arguments|@> =
procedure parse_arguments;
-const n_options = 4; {Pascal won't count array lengths for us.}
+const n_options = 6; {Pascal won't count array lengths for us.}
var @!long_options: array[0..n_options] of getopt_struct;
    @!getopt_return_val: integer;
    @!option_index: c_int_type;
@@ -490,6 +492,12 @@
      else
        write_ln (stderr, 'Bad character code format', optarg, '.');

+    end else if argument_is ('mktex') then begin
+      kpse_maketex_option (optarg, true);
+
+    end else if argument_is ('no-mktex') then begin
+      kpse_maketex_option (optarg, false);
+
    end; {Else it was a flag; |getopt| has already done the assignment.}
  until getopt_return_val = -1;

@@ -539,6 +547,24 @@
long_options[current_option].has_arg := 0;
long_options[current_option].flag := address_of (verbose);
long_options[current_option].val := 1;
+incr (current_option);
+
+@ Enable mktextfm?
+
+@<Define the option...@> =
+long_options[current_option].name := 'mktex';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ Disable mktextfm?
+
+@<Define the option...@> =
+long_options[current_option].name := 'no-mktex';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
incr (current_option);

@ The global variable |verbose| determines whether or not we print
--- help.h      Mon Aug 10 00:22:06 1998
+++ help.h.new  Mon Aug 10 00:21:22 1998
@@ -527,7 +527,8 @@
-charcode-format=TYPE  output character codes according to TYPE,\n\
                       either `octal' or `ascii'; default is ascii for\n\
                        letters and digits, octal for all else\n\
--help                   display this help and exit\n\
+[-no]-mktex=FMT        disable/enable mktexFMT generation (FMT=tfm)\n\
+-help                  display this help and exit\n\
-verbose               display progress reports\n\
-version               output version information and exit\n"
#endif /* VFTOVP */