The Neume Notation Project

Louis W. G. Barton

§ Neumatic Notation on Computer: Technical Documentation




Creating a Font File

10 May 1995

This paper outlines the procedures for creating a font of neume characters for display on the computer screen and for printing, either as a score or as a cut-and-paste into a word processing document. The following topics are covered: scanning a raw image; converting scanned images into characters; building a character font.

Note: These instructions were written for Windows 3.1 and Fontographer ver. 3.5; you might have to adapt the instructions somewhat if you are using newer software.

  1. TOOLS USED:
    • PC-compatible '486 computer; 16MB RAM; VGA display; 1GB hard disk; mouse; tape backup; HP LaserJet 4 printer with PostScript SIMMS and 10Mb RAM; Microsoft Windows, version 3.1.
    • Envisions ENV 8100 scanner (color 1200 dpi, max.); Envisions DynaScan Twain scanner driver for Windows
    • ImageFolio software for Windows (for image editing, cropping, cleanup)
    • Fontographer software for Windows, version 3.5 (trace, scale, and place characters; build TrueType .TTF and PostScript .FOT fonts)
    • Personal Composer for Windows, version 1.0; Finale for Windows, version 3.0.
    • WordPerfect, version 5.0; word processor (for cut-and-paste experiment).


  2. TO SCAN A RAW IMAGE:
    1. Choose a book or other original with clear printing; the Graduale Romanum works well. Note that books printed on poor-quality paper will have tiny ink smudges and lack crispness in the characters. Try to find an original printed on fine paper. Choose a page having as many needed characters on it as possible.


    2. Turn the scanner on before booting. Start ImageFolio from Windows. Choose File/Acquire. Experiment with positioning of the original on scanner glass. Weight original down with a heavy book to prevent unwanted movement and to insure good contact with glass. Scan at low resolution initially (about 300 dpi, black-and-white) for speed of experimenting. Print a sample from WordPerfect as a figure with border to verify correct twist of original on scanner glass. Once correct positioning of book is found, leave it alone until all scanning from that page is finished.


    3. Begin scanning for characters. Preview the image first, and mark an area for scanning that is large enough to capture a few desired characters; really large areas make for extremely slow processing at every step. You will perform the final crop in the scanned image. Make the following settings:
      1. Scan mode = Lineart, B/W
      2. Original = Reflective
      3. Destination = Monitor display
      4. Resolution = 600 dpi
      5. Auto Adj. selected [x]

    4. Once scanned in ImageFolio, select View/Zoom Out/ 1:2, or 1:3 for a wider view of what has been scanned. Move around the image to find the character you want. Outline the character, roughly, with the Rectangle Selector tool (dotted rectangle in upper left of tool window).
      1. With the area selected, do not attempt to move the dotted box around.
      2. If you need to redraw the selection box, simply start over again. Notice that you cannot start a new box within the existing box; it is sometimes necessary to make a temporary box outside the intended area just to be able to access again the point at which you wanted to start.
      With the character outlined in a dashed box, select /Edit/Crop. This will isolate the area you selected on a fresh screen. Select View/Zoom In/ x3 or x2 to enlarge the image. The image should be larger than the viewing area; you can increase the viewing area somewhat by dragging the edges of the window outward.


    5. Use the editing tools to clean up the image. The best tools are Eraser, Line tool, and Paintbrush. By double clicking on the tool, one has access to the control panel for that tool and can change the size and shape of the tool.
      1. Hack away large areas of black, such as unwanted staff lines, using the eraser. Large areas that need to be erased can best be done with a large eraser, perhaps size 11 (eleven). A large eraser gives the most accurate cuts of material away from a desired line, rather than numerous cuts with a smaller eraser, because it maintains a straight edge. A small eraser, even size 1 (one), is useful for getting into crevices.
      2. The line draw, at pen size 1 (one), is usually the most effective way to fill small areas with black in a figure. Diagonal lines can be approximated by positioning the ends of the line and letting the program interpolate; this is the easiest way to achieve smooth stair-stepping between two points.
      3. The Paintbrush is hard to control, but can be useful for filling in larger areas.
      4. After editing, View/Zoom Out/ 1:2 to get a "bird's eye view"of the character. Irregularities in the shape may be more apparent when a character is viewed in this reduced size. Sometimes a 1:2 view gives a slightly different 'take' and reveals other imperfections.
      5. The Edit/Undo feature will, subject to restrictions, revert to the earlier appearance of the window you're editing. This can be useful for backing out of a blunder, for instance, if you hack away more than intended. Remember to Undo immediately; your next move will obviate the previous Undo.

    6. When editing is done, the image may be re-cropped if necessary. Save the final image by choosing File/Save As. The directories path should be set to your \NEUMES directory. In the List Files of Type box scroll up to BMP Files (*.BMP); click on it, and the File Name window will display a list of all your BMP files in the \NEUMES directory.
      1. Use this list to see what files you have already.
      2. A handy trick: you can go through the motions of saving a file, but not really do so; this is useful to see what characters are already done.
      Click in the File Name box and type the name of the file to save. The system will warn you before it overwrites an existing file of the same name. Different versions of the same character can be designated with a 1, 2, 3, etc., as part of the filename. These numbers can also be used to indicate the musical interval that a ligated neume spans.


    7. Close the current image. To start the next character, File/Acquire a new image. It works better to re-scan the original for the next character, rather than saving and recalling a general scanned image.


    8. Back up the work files periodically to tape or other medium!


  3. TO GENERATE A NEW CHARACTER IN FONTOGRAPHER--GENERAL:
    1. Beware: Fontographer sometimes clobbers font files. Fontographer tech support attributes this problem to the complexity of musical symbol fonts, and they offer no general solution. Scrupulously keep generations of files, so that at any point you can be sure to be able to get back to a working version. Perhaps more perniciously, Fontographer, at least on my computer system, frequently causes lost allocation units on the disk. Periodically, and certainly after creating a new font file, exit Windows completely; from the DOS prompt run CHKDSK or SCANDISK; if there are lost allocation units, run Norton Utilities Disk Doctor or another disk repair program.
      1. Keep a write-protected (read-only) copy of the original PCVIENNA, SONATA, or PETRUCCI font in the \NEUMES directory. Keep a spare copy of this file, just in case, under a different name such as PCVIENNA.SAV. It is necessary to open the original font file and copy your work into it from the work file; Fontographer will not correctly build a font from your work file due to some quirk of the program.
      2. The basic recovery technique is to start afresh with a fresh database constructed from the original font file. Do a /File/Open font on the original font file; Fontographer will build a new database. Open also your latest work file. Size and position the windows of the two open files so that you can see three rows of characters in each window. Copy ranges of characters from the work file into the clean database of the original font, including all characters that you have ever modified in the original font. Close the work file. Use File/Save as to save the new database file (i.e., the original font plus copied-in characters) to a different filename, such as WORK01.FOG. [It is wise to number files from 0 to 9 as 00 through 09; that way, filenames will be listed lexocographically in the correct order beyond 9. Otherwise, 10 will list before 2, and so on.]
      3. Build a font from the new database file, using File/Generate fonts. De-select the PostScript option if you do not need PostScript output, and enable the TrueType option. Click OK. Fontographer will build a font file on disk corresponding to the name of the database file, e.g., WORK01.TTF.

    2. Note that all work on characters is done on the Fontographer database files, whose filenames end in .FOG; the database file must be saved after any new work, and then rebuilt into .TTF or .FOT files.
      1. Save work frequently to new filenames, such as WORK1.FOG, WORK2.FOG, etc.

    3. Print a key map by selecting /File/Print; under Sample type scroll down to Key map. Click OK and OK again.
      1. On the key map printout, hand write the .BMP filename for each cell that has been loaded. This is necessary to keep straight similar characters at different intervals and different scanned versions of the same character. It also is a handy reference.

    4. To test your work, go into the Windows Main, Desktop, Fonts area and delete the work font (PCVIENNA.TTF). It's just as well to leave the Fonts area window open, since it will be needed frequently. Next, copy the work file, such as PCVIENNA.TTF, into the \WINDOWS\SYSTEM directory. Then go back to the Fonts area window and Add the work font.


    5. There is a characteristic group of Sample characters that is displayed when a font is added or selected from the Fonts window. Knowing what the characteristic characters are you can tell immediately whether your work file is in good shape, or whether Fontographer has clobbered it. When things are alright, a tenor clef (g-clef, octave down) is displayed as the left most sample. Fontographer's problem is that it offsets the characters by one character position in the key map. This problem is immediately visible at the Sample display. If things prove to be wrong, go back to Fontographer, revert to your previous known-good work copy, and attempt to copy your new or revised characters from the botched copy to the last-known-good copy.
      1. Do not delete all your old copies of Fontographer database files (.FOG). At some later, unexpected time you may decide to revert to an earlier version of some character. You can easily copy a character from an old database to your current work database, by simply opening both files at once.
      2. It is possible to open two font windows at once for this purpose; it is possible also to copy a range of character cells from one font to another. Engage in lots of supplication at this point; Fontographer can get very mean.

    6. To test your revised font in Personal Composer, it is necessary to exit Personal Composer and re-enter it. Apparently Personal Composer keeps its character table in a buffer, and so changes to the character set on disk are not seen until the application is restarted.


    7. Fontographer will let you /Edit/Undo a number of steps. It keeps a'stack' of your operations; you can back out of them one by one.


  4. SPECIFIC TECHNIQUES FOR FONTOGRAPHER--CREATING NEW CHARACTERS:
    1. Open Fontographer from Windows. Select File/Open font; the default directory is \FOG352\NEUMES. If starting Fontographer constitutes a "session," set the working directory for the session to \NEUMES by clicking on the root directory and then scrolling down to the \NEUMES directory; double click to select it. [You could set the working directory to FOG352\NEUMES, but \NEUMES is easier to remember when it comes to copying a .TTF file to the \WINDOWS\SYSTEM directory.] Scroll down through the contents of the \NEUMES directory and double click on the last work file, such as WORK08.FOG. This opens a window displaying part of the master character map.


    2. Note that a character can be moved or copied from one cell to another by clicking once on the cell (its background turns black), select Edit/Copy or Edit/Cut, then click on the destination cell once and select /Edit/Paste. Cut will delete the original character.


    3. Double click on a character cell that you want to work on from the character map. A character editing window opens for that character.
      1. To erase the current contents of a character cell, click once on the cell to highlight it in the character map, and press the key. Alternatively, you can open a character by double clicking, go to the foreground plane, click on Edit/All to select all points in the character; and press the key to delete the existing character from the cell.
      2. There are three planes in the character window; they are controlled by the top box of the character tools (left edge of character window). Clicking on this box changes from an F with solid lines (foreground plane), to a B with dotted lines (background plane), to a grid of lines (guidelines plane).
      3. When Fontographer imports a character, it automatically goes into the background plane.

    4. Import one of your scanned characters by selecting File/Import/Import BMP; the default directory should be set to \NEUMES, or wherever you have your raw images stored. A list of .BMP files will appear; double click to select the one you want. A grey image of your scanned character will appear in the character cell window.
      1. It may be helpful to open another, similar character and arrange the two character windows side by side. This gives a good initial estimate for the correct size of a character.
      2. Resize each character window so that both character windows fit on the screen; line up the bottom of one window with the other. Remember that the character window with dark blue bar at the top is the one currently being edited.
      3. It is sometimes useful to place the cursor at the top of the reference character, note the y position, then move to the work character and compare the y position at its top; or you can place the cursor at the top and bottom of the reference character to estimate its total height, then compare the target character in the same way. The vertical coordinate (v) of the current cursor position displays at the top of the character window. These techniques give more exact comparison of size than is possible by eye.

    5. Next, trace the grey, background character by selecting /Path/Trace background. Ordinarily one wishes to use the normal setting for curve fit, rather than tight or loose. A tight fit uses considerably more memory. Click OK.
      1. Delete the background image, since it consumes memory: Select the background plane (indicated by a dotted-line letter B in the control panel); press to select all points (or use /Edit/Select all); press the key.
      2. Select the foreground plane (indicated by a solid-line letter F in the control panel). Resize the image to its approximate size by successive applications of the /Special/Scale tool; when doing so, select Uniform scaling and type in the percentage of the current image, e.g., 80%; and then click OK. Note that the scaling percentage is relative to the current size of the character, not to its original size. It is best to size down somewhat gradually to an image somewhat larger than the desired size. Do fine adjustments after.

    6. Adjust the position of the character.
      1. To move a character, press to select all points (or use /Edit/Select all). Use your arrow keys to move the image left, right, up, or down. You can also move the image by dragging the edge, and this works well.
      2. Positioning of characters can only be done on a trial-and-error basis (the same can be said to some extent about scaling as well). One must print the character in context from Personal Composer to make an exact determination of the correct position.

    7. Make fine adjustments to the character's size and shape: Be sure the pointer tool (arrow) is highlighted; if it isn't, click on it. It is not necessary to Select all points to do scaling.
      1. To do fine scaling you can use the technique explained in _b. Again, scaling is relative to the current size; if you have already reduced the image, to make it larger you need to scale it by a number over 100, e.g., 120%. You can also use two other techniques to do scaling. One is to use /Special/Scale tool, but select Other scaling; click on the horizontal and vertical boxes and enter the percentage in each dimension. This way you can elongate or shorten a character and retain its thickness, etc. The other technique is to scale the image manually by selecting the background layer and dragging on one of its corners to enlarge or reduce the image; this technique does not preserve uniform scaling, and so it is generally preferred.
      2. You can make adjustments to the shape of the final character by moving to the foreground plane, clicking on a point and dragging it. Points are divided into vertices and Bezier nodes. Moving a Bezier node changes the curvature of a connecting line; moving a vertex changes the endpoint of the attached Bezier curves.

    8. Close the character window to save the character: double click the upper left box of the character window.


  5. SPECIFIC TECHNIQUES FOR FONTOGRAPHER--REVISING EXISTING CHARACTERS:
    1. The only way to get an accurate assessment of the look of characters is to print them in context with Personal Composer. Fine adjustments can be made to an existing character using the same techniques explained above in sections D.6 through D.8. Simply double click on a character cell to open it up for modification.


    2. Remember to save successive versions of your work files. Remember too that new or modified characters can cause a corrupted file. It is best to always use the technique of opening a copy of the original font file, then copying all your custom characters from the work file to a copy of the original file. This is explained above in sections C.1.a through c.


  6. SAVING A FONT--GENERATING FONT FILES:
    1. Save the database file under a new name, such as WORK08.FOG, by selecting File/Save as.


    2. Generate the font by selecting File/Generate fonts. In the Generate Fonts window click Windows TrueType [x], and click off PostScript Type I [ ]. Click OK.


    3. Switch to the Program Manager window by pressing . Double click on Main. Double click Control Panel. Double click Fonts. Under Installed Fonts scroll down to Personal Vienna; click once to highlight it. Click on Remove. Click Yes to All. Click Close. With the Control Panel window still open, double click either the File Manager icon or the MS-DOS Prompt icon. According to which tool you have chosen, copy your latest work font into the place of the Personal Vienna font; for example,

      copy\NEUMES\WORK08.TTF\WINDOWS\SYSTEM\PCVIENNA.TTF

      Click once on the Control Panel window to bring it to the foreground. Double click again on Fonts. Click Add. Under Directories double click on \WINDOWS\SYSTEM. Wait a moment for Windows to generate a list of font files in that directory. Scroll down to Personal Vienna and double click.
      1. If the first character in the Sample window is not a tenor clef (g-clef, octave down), then the font file is messed up. There is no point in continuing. Go back to the Fontographer window and clean up the mess; follow the directions given above in sections C.1.a through c.
Miscellaneous Notes::
  • Unique PostScript ID: "Type 1 fonts use this ID number .... This ID is used for caching the bitmaps in your printer, thereby, decreasing printing time. Font IDs for new fonts are automatically generated in the range of 4,000,000 to 4,999,998. If you are a commercial font developer, you should contact Adobe Systems, Inc. for an allocated font ID." [Fontographer; User's Guide, p. 13-5]. For PS ID: Adobe Systems, Inc.; Mountain View, CA.
  • TrueType fonts: .TTF (outline)
  • Adobe PostScript Type 1 fonts: .PFB (outline); for use with Adobe Type Manager (ATM) under Windows (also available in UNIX format for Sun or NeXt workstations).
  • Windows Bitmap fonts: .FON




Homepage emailE-mail GlossaryGlossary MIDIAudio


Revision: 24 June 2001
Copyright © 1995, 2001, Louis W. G. Barton