[bit.listserv.i-amiga] An old trick...

MARKV@UKANVAX.BITNET (NAME) (02/01/90)

I recently revived an old trick from my floppy based system days...

In designing a Database with Superbase Prof I am using several 'Display'
sized (30+) fonts which take up a lot of space and fill a directly.  My
Workbench partition really doesn't have enough room for these, so...

Make sure your normal fonts: directory (if it is in SYS:) is not called fonts.
Then Have a few floppies all named FONTS: with the fonts you want.  Then
do an ASSIGN FONTS: to clear the assign.  Now when you reference fonts, DOS
will pop up a requester saying "Please Insert volume FONTS:" so just pop in
the appropriate floppy and Viola.  This trick works best with a program
that allows you to force reloading the list of fonts (most do).  I also helps
keep your normal fonts list down (nice for DPaint II owners) and your
workbench down to size.  Once the font is loaded from a disk it is in memory
so you can load a different font from a different disk.

Stephan Vermulen (spelling?) sent me a little utility a long time ago (long
since lost) that allows the slightly more elegant solution of allowing
the foo.font files to point to the actual bitmaps (files like 8, 9, and 12 etc)
on different disks which is useful too.  His solution is nice for a permanant
setup (especially for a floppy only system).  Mine is nice for the occasional
quick fix, one of a time situation.

Now if only the Amiga had *real* resources so we could bind fonts to an
application (although Apple is trying to kill this particular use of
resources).

Well, for now,

Mark Gooderum
MARKV@UKANVAX

HIRBY_S%AMOS@LAWRENCE.BITNET (Steve Hirby) (02/06/90)

>Stephan Vermulen (spelling?) sent me a little utility a long time ago (long
>since lost) that allows the slightly more elegant solution of allowing
>the foo.font files to point to the actual bitmaps (files like 8, 9, and 12 etc)
>on different disks which is useful too.

     The program is called REN; available on Fish disks somewhere.  I got an
executable copy from PLINK's Amiga section; source code was in Transactor for
the Amiga. Really a very simple program -- could be written in AmigaBASIC.
Has the advantage (over the scheme suggested in this message) that you don't
have to remember which of your disks named FONTS: contains the particular font
you're looking for.  Explicit disk volume label goes in the foo.font file --
which file must be on your Workbench disk (or partitition)., and the system
requester will ask you for the disk by name.  (Of course, then you must be
sure not to relabel the disk containing the font bitmaps.)  C-A has indicated
that this scheme, which makes use of a unimplemented feature of .font file
structures, will not be broken by future font versions.

SH

svermeulen@JANUS.MTROYAL.AB.CA (02/07/90)

Here is REN in all it's glory...

/*****************************************************
  ren.c

  This program allows one to rename the directory
  which contains the font data files.

  syntax:

     ren thisfont.font path
******************************************************/

#include <stdio.h>

char newname[256], oldname[256];

main(argc, argv)
int argc;
char *argv[];
{
  FILE *font;
  long j, pos;
  short i, n;

  if (argc != 3)
  {
    printf("ren filename.font newpath\n");
    printf("Copyright 1988 By Stephen Vermeulen   (403) 282-7990\n");
    printf("PO Box 3295, Station B, Calgary, Alta., CANADA, T2M 4L8\n");
    printf("May be distributed without charge, so long as the Copyright\n");
    printf("notice and credits remain unmodified.\n");
  }
  else
  {
    font = fopen(argv[1], "r+");
    if (font)
    {
      /********************************************
        now determine how many sizes this font has
      *********************************************/

      fread(&n, 2, 1, font);  /** throw away **/
      fread(&n, 2, 1, font);  /** number of sizes **/
      printf("Font %s has %d sizes\n", argv[1], n);
      for (i = 0; i < n; ++i)
      {
        /** for each size we rename it...
         **/

        fseek(font, 4L + 260L * i, 0);
        fread(oldname, 256, 1, font);
        printf("name was: %s ", oldname);
        for (j = 255; j > 0; --j)
          if (oldname[j] == '/') break;
        strcpy(newname, argv[2]);
        strcat(newname, oldname + j);
        fseek(font, 4L + 260L * i, 0);
        printf("now is: %s\n", newname);
        fwrite(newname, 256, 1, font);
      }
      fclose(font);
    }
  }
}
--------------------------------------------------------------
Regards,
Stephen Vermeulen                                             PO Box 3295
Author: Express Paint, Spritz and Fusion Paint                Station B
Newsletter Editor of AMUC (the AMiga Users of Calgary)        Calgary, Alberta
SVermeulen % Janus.MtRoyal.AB.CA @ UncaNet.BITnet ...or...    CANADA
SVermeulen % Janus.MRC.AdhocNet.CA @ UncaEdu.BITnet           T2M 4L8