Copyright: Copyright © 1997 by Microsoft Corporation.  All Rights Reserved.
Citation: Copyright © 1997 by Microsoft Corporation.


Introduction

The Beta 1 version of the Microsoft Minidriver Development Tool for Windows NT 5.0 is designed to:

1.	Help you easily convert existing Windows 95 or Windows 3.1 minidrivers to Windows NT 5.0.

2.	Allow you to modify and enhance your converted minidriver to take advantage of NT 5.0 features.

The tool provides the following capabilities:

•	Minidriver Workspace

•	Minidriver Conversion Wizard

•	Glyph Translation Table (GTT) Editor

•	UniDriver Font Metrics (UFM) Editor

•	Generic Printer Description (GPD) Editor

The Minidriver Development Tool provides the following advantages over UniTool, which was provided for use with Windows NT 4.0:

•	You can work on several items at once, including multiple minidrivers.

•	The font editors help you to specify font descriptions without the need to know the underlying font file formats. Additionally, if the same value is required in more than one data structure, the font editors require you to specify the value only once.

•	Newer user interface features, such as context menus, tree views, list views, and tool tips, are used extensively.

•	You can easily position tool bars and windows to suit your working style.


Minidriver Workspace

While a single printer model needs only a single GPD file, it is common to place the font resources (UFM files, GTT files, string table entries, etc.) in a resource DLL that is used by several models. A minidriver workspace is based upon the RC file used to create the resource DLL. The workspace also contains a list of the GPD files associated with the printer.

Within a minidriver workspace, you can easily start an editor for any of these files. The workspace also enforces consistency rules to prevent you from creating an invalid resource file. In the final version, this enforcement will also be extended to your GPD file.

For more information, see What is a minidriver workspace? .


Minidriver Conversion Wizard

Producing minidrivers for Windows NT has always been done by converting minidrivers designed for Windows 3.1 and Windows 95.  The conversion process has been labor-intensive, involving command line tools, use of the UniTool and NTGPCEdt tools, copying and editing RC files, and more.

The Minidriver Conversion Wizard automates most of these steps.  It is capable of creating all the minidriver source files for all of the previous versions of Windows NT, as well as for Windows NT 5.0.  Capabilities include:

•	Automatic conversion of PFM and CTT files to the IFI and RLE formats used for earlier versions of Windows NT, and to the UFM and GTT formats used for Windows NT 5.0.

•	Automatic generation of RC Files with the correct file names and resource IDs for each operating system.

•	Automatic conversion of GPC files to GPD files for NT 5.0.

•	Automatic creation of a minidriver workspace, which allows you to easily edit al of these files.

•	Using built-in code page information to convert minidrivers for any locale on any machine. It is no longer necessary to use a machine set up for the locale in which the minidriver is to be run, to obtain correct Unicode conversions.

For more information, see Converting an Existing Minidriver .


Glyph Translation Table (GTT) Editor

The GTT editor consists of three property sheet tabs. The primary tab lists all the code points in the glyph translation table, along with each code point's selection string and code page. You can sort the table by any of these fields in any precedence and order, by clicking on the list's column headers.

The remaining tabs allow you to add secondary code pages to the table (for printers with multiple code pages in a single font), and to select and view the predefined GTT files built into UniDriver 5.0.

For more information about the GTT editor, see Glyph Translation Tables and the GTT Editor .


UniDriver Font Metrics (UFM) Editor

The UFM editor is an eight-tab property sheet, designed to keep the amount of font information you need to enter to a minimum. The editor fills in the UFM file structures, many of which contain redundant information, for you.

The editor's property sheet tabs are:

1.	General Information – lists the name strings that identify the font to the user and to GDI, along with generic flags, such as whether the font is fixed or variable pitch , and whether it is scalable, italic, underlined, and so on.

2.	General Information (2) – describes the associated GTT file, the font location (resident in the printer, in a cartridge, etc.) and scalable technology (if relevant), as well as some edit controls for some little-used adjustments.

3.	General Metrics – contains the font height, weight, family, character set, break and default characters, as well as a set of controls with an associated animation that allow you to specify and visualize a set of more detailed metrics.

4.	Selection and Flags – lets you specify the font selection and de-selection strings, as well as several global flags relating to simulation and font usage.

5.	Simulations – lets you specify weight, width, and italic angle for device-supported bold, italic, or bold italic versions of the font, relative to the non-italic, non-bold font. This reduces the number of fonts you must define.

6.	Scalability Metrics – for a scalable font, lets you define a maximum and minimum font size, and lets you relate the nominal font units to master units. Also specifies portrait and landscape orientations.

7.	Character Widths – for variable pitch fonts, lets you specify the width of each code point.

8.	Kerning Pairs – for variable pitch fonts, lets you define kerning pairs. You can sort the list by first character, second character, or the kern amount.

Not all of the tabs have meaning for each UFM file. For example, if the font is fixed pitch, the character width and kerning tabs are not used, and if the font is not scalable, the scalability metrics tab is not used.

For more information, see UFM files and the UFM editor


Generic Printer Description (GPD) Editor

The GPD editor is a simple text editor. Comments are colored green. Warnings and error messages issued by the GPD converter in the conversion wizard are colored brown and red, respectively. A toolbar button allows you to syntax check the GPD file. You can browse backward and forward through the error list (and be placed on the correct source line, while source line information is intact) with F4/Shift-F4 or a special dialog bar at the base of the window.

Error information is cached if you are editing a GPD file from the driver workspace. This allows you to save the error log as a to-do list between sessions.  You may check items off the list as you see fit.

For additional information, see Editing a GPD file


Master Units

Master units are the least common multiple of the various resolutions your printer supports.  Typically, they represent the highest resolution you provide.


Fixed and variable pitch

In a fixed pitch font, all of the characters are the same width.  An exception to this rule is found in DBCS fonts, where double-byte characters are twice the width of single-byte characters, but both sizes are fixed.

In a variable pitch font, each character can have a different width.  In DBCS fonts, only the single-byte characters can be of a variable width.


About Box

The About dialog box describes the program version, and gives you some information about the your system.

Installed Code Pages is a list of code pages currently available on your computer.  Supported Code Pages is a list of all of the code pages your operating system (Windows 95 or Windows NT) supports.

You might notice that a code page is unnamed. This is because a definition of the code page's purpose was not available when the Minidriver Development Tool was written.


Tip of the day feature

The Tip of the Day dialog box presents a series of useful tips for using the Minidriver Development Tool and working with minidriver source files.  The tips are stored in a file named tips.txt, in the directory in which the program files reside.  Each tip is a line in the file. If others in your organization will be using this program, you might want to add your own tips to the file.


Converting an Existing Minidriver

The following topics will help you to convert an existing minidriver for Windows 95 or Windows 3.1 to any version of Windows NT:

1.	Conversion: Getting started

2.	Conversion: Invoking the Wizard

3.	Conversion: Selecting a conversion method

4.	Conversion: Specifying the source file location .

5.	Conversion: Specifying the target directory or directories

6.	Custom Conversion:  Targeting earlier NT versions

7.	Custom Conversion:  UniTool

8.	Custom Conversion:  Selecting code pages for Unicode mapping of CTT files

9.	Custom Conversion:  Converting files

10.	Custom Conversion:  Creating an NT.GPC file


Conversion: Getting Started

To convert an existing minidriver, you must begin with the source files for a 16-bit minidriver, built with UniTool.  The UniTool program is included in the DDK, and has its own help file.

You need the following files, generated by Unitool:

•	The RC file, edited if necessary.

•	The GPC data file.

Both of these files must reside in the same directory.

In addition, if your printer provides device fonts, PFM and CTT files must be in the locations specified in your RC file.


Conversion: Invoking the Wizard

To start the conversion wizard, you can do any of the following:

•	Select New from the File menu.

•	Type Ctrl+N.

•	Click the New button on the toolbar.


Conversion: Selecting a conversion method

On the first page of the conversion wizard, choose one of two conversion methods:

•	Standard Conversion – This is the recommended method, and will work for the vast majority of minidrivers.  A standard conversion assumes the following:

1.	You want to generate minidriver files for Windows NT 5.0 only.

2.	You will use the current ANSI code page to convert the byte codes in your CTT files to Unicode.  This setting has no effect if you used a predefined CTT ID.

•	Custom Conversion – A custom conversion allows you to generate source files for earlier versions of Windows NT, and to specify a code page for each CTT file (OEM or ANSI, for all locales for which the tool has code pages). If you create files for earlier versions of Windows NT, the conversion wizard also lets you run UniTool and the Windows NT GPC file creation tool (the latter must be run to build these minidrivers).

First page of the Minidriver Conversion Wizard.  Click on a button for additional help.

Once you have selected a conversion method, press the “Next” key.  If you change your mind before the wizard is done, you can back up to this step, and select the other method.


Standard Conversion

This is a default conversion with the most common options.  It will:

•	Create Windows NT version 5.0 source files (RC, GPD, GTT, and UFM), but no other Windows NT version.

•	Use the current ANSI code page for converting CTT files to GTT files, unless you are in a DBCS locale, in which case the US English ANSI code page 1252 will be used (Windows 95 and Windows 3.1 minidrivers do not use DBCS encoding in CTT files).

•	Convert GPD files by using the bin names from Common.RC, and by collecting paper size names from the spooler.

•	Use the base name of the RC file name as the unique base name for all UFM files.


Custom conversion

Use the custom conversion if:

1.	You want to generate minidriver source files for the earlier versions of Windows NT (3.x and 4.0).

2.	You want to use a base name for UFM files that is different from the RC file's base name. (You can also change UFM file names later.)

3.	You know that the code page used in the Win16 minidriver is different from the ANSI code page for the locale of your version of Windows NT. (For instance, the Win16 minidriver is for a different country than your own).

4.	You wish to view or modify your existing minidriver files with UniTool before you convert them. If errors are encountered during a standard conversion, you may need to do this.


Conversion: Specifying the source file location

After you click Next on the Conversion Wizard's Begin dialog, you will be presented with a File Open dialog.  You can select a file with either an RC extension, which is the normal resource compiler script extension, or a W31 extension, which is a common extension for RC files from earlier versions of the Windows NT DDK.

If your RC file has neither of these extensions, you must rename it.

Once you have selected the file, press Open to proceed.


Conversion: Specifying the target directory or directories

In this step of the Wizard, you can specify a target directory for each Windows NT version you have selected.  By default, the Conversion Wizard creates sub-directories under the directory containing the RC or W31 file.

You can type in a new directory name for each targeted version, if needed.

Destination selection page of the minidriver conversion wizard.  Press any control for details.

If an entry is not correct, you will receive a message box stating that the target directory could not be created.

In addition to the directory or directories you name, separate sub-directories are used in each version for font (UFM or IFI) and character translation (GTT or RLE) files.

If you are doing a standard conversion, this is the final step of the Wizard.  Press Finish, and the conversion will take place.  If the conversion fails, you will be returned to this step.


Destination directory

The directory name you enter in any of these controls will be created, if the rest of the path already exists. Under the specified directory path, the Conversion Wizard creates additional sub-directories. For Windows NT 5.0, UFM and GTT sub-directories are created. For other versions of Windows NT, IF and RLE sub-directories will be created.


Custom Conversion: Targeting earlier NT versions

If you select custom conversion, the next step after identifying your source files is to identify which Windows NT versions you want to create source files for. You will always create Windows NT 5.0 source files, but you have the option of generating files for Windows NT 4.0 and for Windows NT 3.x.

You can also specify a driver unique name. The name is used in converting font files to create a (hopefully) unique name for each font in GDI’s name space. Thus, while your printer model and a competitor’s model may both have fonts named Roman, each will also have a unique name (e.g., My Roman, Their Roman) to GDI.

You can change the driver unique name here.  You can also change the font unique names later, if you need to, using the UFM editor.

Optional target selection page of the minidriver conversion wizard.  Press any control for further information.

Once you have completed your entries, you may proceed to select the destination directories with the Next button, or go back and start from different source files with the Back button.


Windows NT version 4.0 minidrivers

Selecting this option will:

•	Copy the original GPC file.

•	Convert PFM files to IFI files.

•	Convert CTT files to RLE files.

•	Generate an Windows NT GPC file.

•	Generate an RC file containing the correct file names and resource ID information for these files.

Additional RC information, such as a version resource, is carried into the new RC file as well.

The difference between a Windows NT 4.0 and a Windows NT 3.x driver is primarily in the SOURCES file used for the BUILD program.  This version of Minidriver Development Tool does not generate this file for you.


Windows NT version 3.x minidrivers

Selecting this option will:

•	Copy the original GPC file.

•	Convert PFM files to IFI format.

•	Convert CTT files to RLE format.

•	Generate an NT.GPC file.

•	Generate an RC file containing the correct file names and resource ID information for these files.

Additional RC information, such as a version resource, is carried into the new RC file as well.

The difference between a Windows NT 4.0 and a Windows NT 3.x driver is primarily in the SOURCES file used for the BUILD program.  This version of Minidriver Development Tool does not yet generate this file for you.


Driver Unique name

This name is used as a prefix to the names for all of your device fonts.  In this example, a device font named Bodoni will be given a unique name of Dec3200 Bodoni. The prefix defaults to the base name of your original RC file.

Font names can also be edited in the UFM editor.


Custom Conversion: UniTool

Running Unitool is sometimes necessary when converting older minidrivers.

UniTool is the tool used to create and maintain the RC, GPC, CTT, and PFM files for Windows 9x and Windows 3.1 minidrivers.  If you experience problems during the conversion, or wish to make some late adjustments, this dialog provides you an opportunity to do so.

Click the button to run UniTool, or Next/Back to move about the other steps in the Wizard.

Minidriver conversion wizard optional UniTool page.  Press any button for further details.

When you exit the dialog with the “Next” button, the RC File from UniTool will be loaded and interpreted, and the Conversion Wizard will begin creating Windows NT files.

Please note the following:

•	The version of UniTool used in the Conversion Wizard does not accept command lines.

•	When UniTool starts, its current path will be the directory containing the RC and other files. You must open the files yourself.

UniTool includes a help file.


Run UniTool button

Press this button to run UniTool.  You will not be able to use other features of the Minidriver Development Tool while running UniTool, unless you start another copy of the Minidriver Development Tool. For more information about Unitool, see the run the program and select Help.


Custom Conversion: Selecting code pages for Unicode mapping of CTT files

In this step, you can change the code page used for MBCS-to-Uniicode conversion of each CTT file. The code page used for each CTT file is also used to translate name strings for the font files that use that CTT File.

The list box shows you the code page that will be used to translate each CTT file listed in the original RC file. This defaults to the current ANSI code page for the operating system you are running. To find out which code page this is, select the About option from the Help menu.

Code Page Selection Page of the minidriver conversion wizard.  Press any control for details.

To change the code page for a CTT file, select the CTT file in the list box, and press the Change Page… button to bring up the Code Page Selection Dialog.

Proceed by pressing the Next button.


CTT-to-code page assignments

This list box shows each of the CTT files in the original minidriver, and the code page assigned to each for conversion purposes.  If the code page's name and purpose are identified in an SDK, they are listed after the page number.  Otherwise, only the number is listed.

To change an assignment, select the CTT file from this list, and click on the Change Page button.  The Code Page Selection dialog will be displayed for this CTT file.

Hint:  You will need to change code pages if your printer uses an OEM character set, or is for a different country than your own.  If you choose an incorrect page, you can make corrections using the GTT editor, unless you are building minidrivers for earlier versions of Windows NT.

CTT files are SBCS-encoded, so DBCS code pages are rarely used in this step.


Change Page button

Press this button to change the code page for the CTT file selected in the list box.


Custom Conversion: Converting files

Before completing the conversion process, you can change the display name conversion method by selecting one of the conversion options.

When you click on the Convert Files button, the CTT, PFM, and GPC files will be converted into GTT or RLE files, UFM or IFI files, and multiple GPD files, respectively. After the conversion is complete, errors and warning messages can be viewed in the resulting minidriver workspace.

Click on any button on this picture for more detail on what it does.

After the files have been converted, the Next or Finish button is enabled so you can continue. If conversion fails, you will probably have to go back to a previous step to correct the problem.


Custom Conversion: Creating an NT.GPC file

If you are creating a minidriver for earlier versions of Windows NT, then you will need to create a Windows NT GPC file.  This file contains information related to system halftoning, and it is described in the DDKs for the earlier Windows NT versions.

Press the button to run the editor.  After you have saved your results, the Windows NT GPC file will be duplicated, if needed, and placed in each necessary target directory.  You can then press Finish.

This is the final step in the Conversion Wizard.


Start GPC Editor button

Press this button to start the Windows NT GPC file editor, then select your RC file from the list presented by the editor.

Remember to save the GPC file before you exit from the GPC file editor. The Conversion Wizard should not let you proceed if you have not saved the file, but a bug allows you to do so.


Write Strings into GPD File

The display names of paper sizes and of input bins will be written directly into the GPD file.  This is the simplest conversion option, but the resulting GPD file is not localizable.


Use Standard Macro Names

The Microsoft-supplied file, stdnames.gpd, is used to provide value macros for the display names of the supported paper sizes and input bins.

You do not need to include stdnames.gpd in your INF file. However, all users will see names displayed in the language specified by the print server's locale.

If you select this option, you must copy stdnames.gpd into the directory that you specified as the output directory for Windows NT 5.0 files. The stdnames.gpd file is supplied with the DDK.


Use Predefined String table IDs

The common.rc file is included in the resource DLL. It provides standard paper and bin names using a standard set of resource IDs. These resource IDs are used in your GPD file in *rcNameID entries. The Conversion Wizard automatically updates your RC File to support this option.


Predefined Bin Names, Paper Names from Spooler

Bin names are mapped to resource IDs provided by the resource file, common.rc, but paper names are retrieved from the spooler’s Forms database. This is the default option for GPD conversion.


Convert Files

Press this button to begin the conversion process.  The GPC file and font files you provided will be converted into the desired formats.


Back button

Press this button to move back one step in the Wizard.


Next Button

Press this button to move on to the next step of the Wizard.


Cancel button

Press this button to cancel the current operation.


Help button

Press this button to display this help page.


Code Page

A code page is a mapping from an ANSI or OEM character set (typically single or double-byte) to Unicode.  The code page information used in the Minidriver Development Tool is derived from the code pages used by the various operating systems.  Unlike the operating systems, however, this tool the converts on a one-to-one basis, to facilitate correctly tracking the value of the code point for each character as code pages are changed in the editors.


Creating a minidriver from scratch

To create a Windows NT minidriver using MDT, you must use the Conversion Wizard to convert a Win16 minidriver. If a Win16 minidriver does not exist for your printer, you can start with any Win16 minidriver contained in the Windows 95 DDK and use the following steps:

1.	Delete all of the models except one.

2.	For every GTT file you will need, create a CTT file. You will need a GTT file for each device font that uses a unique set of character encoding commands. You do not need to place accurate encoding information in the CTT files.

3.	Foe every device font, create a PFM file. For each PFM file, enter the correct CTT identifier (this value cannot be changed after running the Conversion Wizard). Do not make the font variable pitch. You do not need to specify font metrics in the PFM file, because you can use the UFM editor after the conversion has occurred.

4.	Use the Conversion Wizard to convert the minidriver.

5.	Edit the GTT and UFM files as necessary.

6.	Edit the GPD files created by the Conversion Wizard, and import additional files if needed.


Building the minidriver

After you have run the Conversion Wizard, the Windows NT 5.0 target directory will contain an RC file that lists the GTT and UFM files needed to build a resource DLL.  You can find templates for the other files you will need in the DDK samples.  To build, you must:

•	Create a SOURCES file specifying the files to be built.  The only required file for the resource DLL is the RC file, since Win32 DLLs do not need initialization code.

•	You might need to modify the list of the header files included in the RC file.  This list will initially be the same as that used for the Win16 minidriver, except that common.rc is added if needed, and mindrvrc.h is replaced by unirc.h.

•	You will need to modify the version resource, if you used one, using Visual Studio or similar tools.

No build steps are needed for GPD files.  If you are supplying an OEM DLL, build it with the standard NT tool set.


What is a minidriver workspace?

A minidriver workspace contains all of the files associated with a set of minidrivers that use a single resource DLL. A workspace maintains the following information:

•	The list of files used to create a minidriver resource DLL, along with their resource IDs.  These files include the RC file and all GTT and UFM files.

•	The GPD files that use the resource DLL.

•	Error logs for all of the GPD files associated with the workspace.  These logs are maintained within the workspace file.

Workspace information is stored in a .mdw file.

GPD files can be added to and deleted from a workspace. A workspace should include all the GPD files associated with a resource DLL, so the workspace can access all information necessary to resolve identifiers for fonts and other resources.


The Workspace Editor Window

The workspace editor is based on a single treeview control.

The top-level node of the tree contains the workspace name. The workspace initially has the same name as your RC file, but you can change the name using its context menu.

Expanding the workspace tree node reveals nodes for device fonts (UFM files), the glyph translations (GTT files), and the model information (GPD files). The number of items the node contains is a part of each node’s label.

Additional nodes represent each UFM, GTT, and GPD file associated with the workspace. You can rename these nodes. (Renaming a node does not rename the file.)

Expanding a node that represents a file will reveal another node containing the file's name. For GPD files, the node also contains the path. You can change a file's name by using the node's context menu. If you change the path of a GPD file, the file is moved the next time it is saved.

The keyboard interface to the workspace view supports the following keys:

F2- edits a node label, if it can be edited.

F10- brings up a selected node's context menu.

Up, down, Page up, Page down cursor keys- these navigate the tree without expanding or contracting it.

Left and right cursor keys- these expand (right) and collapse (left) the tree at the current node.

Delete- removes the currently selected item.  In the Beta 1 version, only GPD files can be removed from a workspace.

Enter- causes a node's default action to occur.  For most nodes, this is to expand or collapse the node.  For file nodes, it opens an editor.

Using the mouse to double-click on a file node will open an editor. You can edit a node's label by holding down the left mouse button after selecting the node.  Right-clicking on a node displays an appropriate context menu.


Workspace file name

The title bar contains the workspace name, which is the name of the workspace's .mdw file. For a new, unsaved workspace, the name is Untitled.  Title bars for resource or GPD file editors started from the workspace view will have a title bar containing the workspace name and the resource name, separated by a colon.


Workspace Node

This is the workspace node, and is also the name of the resource file (RC file).  The workspace node's label can be altered.  Renaming this label has no effect on the RC file name or anything else in the workspace.


Device font list

This node identifies the number of device fonts contained in the resource DLL.  Each font is represented by a separate UFM file.  The node can be expanded to show the entire font.


Translation Table List

This node identifies the number of translation tables contained in the resource DLL.  Each table is represented by a separate GTT file. This node can be expanded to show the entire table list.


Printer Model List

This identifies the number of printer models associated with the resource DLL.  Each model is represented by a separate GPD file. This node can be expanded to show the entire model list.


Renaming files with the workspace editor

Each file in the workspace (except for the RC file) can be renamed in the workspace view, using the following steps:

1.	Locate the tree node corresponding to the file you wish to rename.

2.	Expand the node to expose the File Name: node.

3.	Press F2 or use the node's context menu to rename the node.

4.	Type in the new file name, and press Enter.

If the file cannot be renamed, a message box will appear.  Otherwise, the file will be renamed.

Moving GPD files

By following the steps listed above for a GPD file node, the full path name is available for editing.  Besides renaming a GPD file, you can move the file by editing the path and then selecting Save from the File menu.


Launching a resource or GPD file editor

To edit a UFM, GTT, or GPD file, do any of the following:

•	Double click on the item you wish to edit.

•	Press the enter key when the focus is on the item.

•	Select Open from the editing menu for the item.


Removing a GPD file from the workspace

To remove a GPD file from the workspace, do any of the following:

•	Select the model, and press the Delete key.

•	Right click the item, and select the Delete menu item.

You will be presented with a GPD deletion verification dialog.


GPD Deletion Query

This dialog is displayed when you attempt to remove a GPD file from the workspace.

Check the check box if you wish to delete the file from your disk.  Otherwise, only the record of the file in the workspace is removed.


Opening a GTT file

You can open a GTT file from within the workspace (see Launching a resource or GPD file editor), or by double-clicking the file in the Windows Explorer.


Glyph Translation Tables and the GTT Editor

A Glyph Translation Table (GTT) file contains the codes UniDrv must send to the printer to select Unicode characters. Two types of codes can be specified:

1.	The code to select an individual character.  For instance, the code a (hex 61) usually causes the printer to print that letter, while the code “’\x9.” (single quote, backspace, period) might be an overstrike code that prints an exclamation point.

2.	Optional codes to select and deselect a character set.  The UniDrv design and the GTT editor design assume each character set draws characters from a unique code page.  This is an enhancement over earlier minidrivers, where separate fonts and translation tables were needed for each character set.

Overstriking

The GTT also tells the driver how the codes are to be sent. For example, it contains an overstrike flag, which is viewable on the GTT editor's Predefined Tables tab. If the flag is set, all two-byte codes in the GTT will be rendered by overstriking.

The font's UFM file also controls overstriking. The overstrike code, “’\x9.”, code could be reduced to “’.”, eliminating the backspace, if an overstrike flag is set in the font's UFM file. The driver checks this flag to determine if the overstrike is to be done using the backspace or by explicit X-movement commands.  This flag is found on the UFM editor’s “Selection and Flags ” page.

Predefined Tables

GTT files can get quite large, particularly for Far Eastern printers.  To reduce their size, UniDrv supports several predefined GTTs.  These can be viewed on the GTT editor's Predefined Tables tab.  If your printer’s character set is close to one of the predefined tables, then you can make changes using the Code Points tab of the editor.  Only the differences between your GTT and the predefined one will be saved in the file.  These differences can be the addition of new code points, the deletion of existing ones, or the modification of existing ones.

The GTT editor

The GTT editor is a three-tab property sheet:

1.	Code Points and Encodings

2.	Code Pages Used

3.	Predefined Tables


Viewing and altering code points

The Code Point Encodings tab of the GTT editor displays the encodings and code pages for all of the code points in the GTT.  If the GTT uses a predefined table, the points from that table (those that have not been removed) are also displayed here.  You do not need to worry about which predefined points you have altered- what you see here is what the driver will use.

Code Point Encodings tab. For more information, click where the cursor changes to a hand above.

Keyboard usage

The following keys can be used on the code point tab:

Cursor movement keys- these navigate through the list, and include the paging and scrolling keys. Only one item is selected at a time.

F2- opens an edit control for the current selection string, so you can change it.

F10-displays the editing menu for the current code point.

Delete-deletes the current code point (assuming you verify the deletion).

Letters and numbers-will scroll the list to the next selection string which begins with the letter or number you press.


Character Selection String

This is the code that must be sent to the printer to cause the corresponding character to print. These code strings are specified in C-language string literal format. Non-alphanumeric characters are represented using the \x escape. For example, \x1B represents the ASCII escape character.

To sort the list in a collating order (using the ASCII representation of the encoding), click on the column title.  To reverse the sort order (ascending to descending or vice-versa), click on the title again.


Unicode Code Points

This is the Unicode value, in hexadecimal, for each character. Because the MBCS representation (if any) depends on the associated code page and might not be displayable on your system, it is not included here.

Code point values can be added or deleted, but not altered.

To sort the list in numeric order, click on the column title.  To reverse the sort order (ascending to descending or vice-versa), click on the title again.


Code page for each code point

A code page is associated with each code point. If more than one code page is available on the Code Pages Used tab, you can change the code page associated with a code point by right-clicking on the code point to display a context menu.

To sort the list in numeric order (of the code page number), click on the column title.  To reverse the sort order (ascending to descending or vice-versa), click on the title again.


The code point editing menu

The code point editing menu is a context menu. To display it, select a code point and press the F10 key, or right-click the mouse.  The items available in the menu depend upon how many code pages are available in the GTT, whether the GTT has any defined code points, and where you clicked, if you used the mouse.

The code point editing menu. The selection string for the affected code point is highlighted.

The items on the menu are:

Change Selection String-opens an edit control over the selection string, so you can change it.  This is available when a code point has been selected when the menu is displayed.  You can also do this from the keyboard using the F2 key.

Change Code Page-opens the code page selection dialog listing the other available code pages for this GTT, from which you can select one.  The editor does not check to see if this code point is valid in that page.  This choice is available when a code point is selected for editing, and the GTT supports multiple pages.  There is no keyboard accelerator for this function.

Add-brings up the add code points dialog , if there are unused code points in the current set of supported pages.  This choice is always available.  If the GTT is empty, pressing F10 will immediately invoke this function.

Delete-will delete the selected code point, after a deletion verification query (shown below).  Available when a code point is selected when the menu is displayed.  The Delete key is an accelerator for this function.


Add Code Points dialog

This dialog allows you to select one or more code points to add to the GTT file.  Only points currently unused by the GTT file are listed.

Add Code Points dialog- when large numbers of points are available, you must wait for it to be filled.

Each available code point appears only once on this list, even if it is contained in more than one code page. You can change a code point's code page after you select the code point.

You can select a single range of values by selecting one end point, then holding down the shift key while selecting the other end point.  You can add or remove single values by holding down the Ctrl key while selecting them. You can add a range of values by holding down the control key, selecting one end point, then selecting the other end point while holding down both the control and shift keys.

If you select a very large number of points to add, there will be a delay while the points are added into the table.


Sorting the displayed code points

The column headers on the code point tab of the GTT editor allow you to sort the list of points (this is true of all views with sort headers in this product).  The most recently clicked header has the highest sort priority, followed by the next most recently clicked, and so on.  You can change the sort order of any column from ascending to descending by clicking the header a second time.

Thus, to view code points (in descending order) within each code page (in ascending order), click the code points header until the list is in descending order, then click the code page header until the code pages are in ascending order.

You can use this feature to look for accidentally duplicated selection strings.  Sort on the strings to find any duplicates.


Viewing and altering the list of supported code pages

The Code Pages tab of the GTT editor allows you to view and change the list of pages used in the editor, and the command strings sent to the printer to select or deselect the page.

Code Pages Used tab of the GTT editor.  Click on any control for further information.

The Page name, Select, and Deselect boxes reflect the currently selected page in the list.


Code page name

The name of the code page to which the select and deselect entries apply.  To change this, select a different page in the list box.


Code page selection string

The string sent to the printer to select the code page identified by "code page name". This value is specified using C-language string literal format. Non-alphanumeric values use the \x escape.


Code page deselection string

The string sent to the printer to deselect the code page identified by "code page name". This value is specified using C-language string literal format. Non-alphanumeric values use the \x escape.


Supported code page list

This is a list of the code pages currently supported in this GTT file.  The editor does not check to see if any of these pages are actually used.


Add Page button

Press this button to display the code page selection dialog .


Remove page button

Press this button to remove the selected page.  The code page selection dialog will be displayed so you can assign a replacement page for any code points that used this page.


The Code Page Selection dialog

This dialog is allows you to select a code page from a list of available pages.  The name of the GTT file for which you are making the selection appears in the dialog title.  Only pages suitable to the current operation appear in the list.


Predefined tables tab

This tab lets you select a predefined glyph translation table. It also lets you specify if overstriking is to be used with the selected table.

You can select a predefined table, or “No predefined table used”.

To enable overstriking of all two-byte codes, check the Overstrike button.

Warning: Please be careful when changing this setting.  When a change is made, all unmodified code points are removed from the previous table.  The remaining points are then merged with the new table.  You can lose the definition of some points, or add points you previously removed, by changing this setting.


Launching the UFM editor

To start the UFM editor, double-click on the name of a font in the Minidriver Workspace Component View.

Adding new UFM files to a workspace will be provided in the next version of MDT.


UFM files and the UFM editor

A UFM file describes a single device font, and contains the following information:

•	Flags describing how the font is used, and what it looks like.

•	Metrics describing the size, shape, style, and many other aspects of the font.

•	A table showing the width of each character, if the font is variable pitch .

•	An kerning pairs table, if the font is variable pitch and kerning is used.

•	Structures containing metric adjustment values, if the printer can simulate bold or italic versions of the font.

•	Information describing how the font can be scaled, if the font is scalable.

Units used in metrics

Except where noted, the units used in describing the font depend upon the type of font.

Scalable fonts are described in arbitrary font units.  These units are mapped to master units at the unscaled size of the font, using information on the Scalability Metrics tab.

For all other fonts, metrics are specified in master units.

The UFM editor consists of eight property sheet tabs:

1.	General Information

2.	General Information (2)

3.	Metrics (General)

4.	Selection and Flags

5.	Simulations

6.	Scalability Metrics

7.	Character Widths

8.	Kerning Pairs


UFM Editor General Information tab

This tab allows you to modify the names by which the font is known to both the user and to GDI, and to set character style and width characteristics.

UFM editor general information tab.  Click on any control for further information.

The face name is typically formed by appending the style to the default family name, and the unique name is typically formed by prepending the resource DLL base name to the face name.

The Windows NT IFIMETRICS structure allows you to specify multiple family names for a font, so a combo box is used for these names.

To add a family name, type it into the edit control for the combo box, and press the Add button.

To remove a family name, select it from the list in the combo box, and press the Remove button.  You must have at least one family name for the font.

Changing the character pitch and scalability settings affects information shown on other tabs.  Changing the pitch can cause a slight delay while average character widths are recalculated.


Family Name

The name of the font “family”.  Fonts with the same family name are similar in appearance and style. You can specify multiple family names for a font.  Family names are supplied to applications when the EnumFonts and EnumFontFamilies Win32 functions are called.


Add Family Name button

Click on this button to add the name in the Family name edit control to the list of family names for the font.


Remove Family Name button

Click on this button to remove the selected family name from the list of family names associated with the font.


Face Name

The name of the font, as would be used in a LOGFONT or LOGFONTW structure.


Style Name

Optional name describing the font style, such as Light Oblique or Demibold.  It should match the weight and other settings for the font.  The Conversion Wizard only generates this name for bold and italic settings.


Font Unique name

This is intended to be a completely unique name for the font.  If there are Courier 10 cpi fonts for two different printers, the printer name is used to form a name that unique for each printer.

However, examining many existing Windows NT minidrivers shows that often this name isn’t unique within a single resource DLL.  MDT does not verify uniqueness at this level, either.


Character style flags

These flags show how the font is represented visually – underlined, struck out, or italicized.


Character pitch settings

Click on these buttons to set fixed or variable pitch.  There can be a slight delay when this setting is changed, while the average character width is recalculated.


Scalability flag

Use this button to turn scaling on or off.  If scaling is switched from on to off, the general metrics and character widths might have to be reentered, because they were specified in font units, and must now be in master units.


Font Units

Font Units are the units in which all measurements except for resolution (which defines the master units), italic angles (always in 10ths of a degree) and character weights (no units) are expressed.

If the font is not scalable, then font units are identical to master units.  If the font is scalable, then font units might have a greater resolution than master units.  The conversion between font units and master units for scalable fonts is defined on the Scalability Metrics tab of the UFM editor.


UFM Editor General Information (2) tab

This tab allows you to specify additional font parameters, relating to how the font is used by the printer and UniDrv. These parameters include master units, font location, and base line and centering adjustments.

UFM Editor General Information (2) tab.  Click any control for further details.

Because changing the glyph translation table (GTT) assigned to a UFM file is an inherently unsafe operation, and the correct checking for it is very complex, the GTT assignment is read-only in this version of the product.


Font Location

States where the font glyph information resides.  The available choices are:

Resident-the information is always part of the printer, typically in a ROM.

Primary in Cartridge-the font information is in a cartridge, where it is the main font for the cartridge.

Secondary in cartridge-the font’s glyphs are in a cartridge, but the font is not the default font in the cartridge.

Downloadable-the font is a software font that can be downloaded to the printer.


Scalable font technology

The font’s scalable technology, such as HP IntelliFont or Canon CAPSL.  This control is disabled when the font is not scalable.


Master Unit Specification

These controls let you enter the master units in the X and Y direction.


Baseline Adjustments

These entries are used where the printer’s definition of the font baseline differs from that used by GDI.  The baseline is adjusted up or down, by the specified amount, before and after using the font. Values must be specified using Y master units.


Centering adjustments

Sometimes a printer’s definition of the origin of a character cell differs from GDI’s.  This setting specifies the horizontal offset used when placing a character, to handle these differences.  Values must be specified using X master units.


Private Data

This is a 16-bit value available for the printer driver to use.  For 16-bit minidrivers, it was used to describe supported simulations.  No checking is done on the value you enter here.


Associated GTT description

The name of the GTT file that defines how to print the characters in this font.  This setting cannot be modified.  If the GTT is predefined, the name of the predefined table is used.  Otherwise, it is the name of the GTT as shown in the workspace editor.


UFM Editor Metrics (General) tab

This tab lets you define the metrics that describe the size and intended usage of the font.  It includes an animation of the various metrics.

UFM editor Metrics (General) tab-press any control area for further details.

Unicode translations for the special characters use the first code page in the associated GTT file.

The available special metrics are:

Baseline-the offset from the top of the character cell to the font baseline, minus any internal leading in font units.  This is the value shown in the animation.

Capital H height-the height of the ascender for the capital H, in font units.  If this value is 0, a default will be calculated by GDI.

Lowercase x height-the height of the ascender for a lowercase x, also in font units.  Again, a value of 0 will cause a suitable default to be calculated.

Internal leading-the amount of blank space at the top of the character cell built into the font, in font units.

External leading-the amount of space that should be used between lines of characters in this font, in font units.

Superscript height, width, X offset, and Y offset-the size and offset of the superscript version of the font

Subscript height, width, X offset, and Y offset-the size and offset of the subscript version of the font.

Italic Angle-the angle, in 10ths of a degree clockwise from a vertical line, at which the font is slanted.

Underline offset and width-defines the placement and size of an underline for the font.

Strikeout offset and width-defines the placement and size of a strike-through line for the font.

Lowercase p descender-given in font units.  This is only available when the font is scalable.

Lowercase d ascender-given in font units.  Also available only when the font is scalable.

The editor performs internal checks to keep these values consistent with the font height and width, as well as each other.


Font Family

The general family of the font. These settings match those defined for the lfPitchAndFamily member of the LOGFONT structure.  The settings are:

Modern-Fixed pitch fonts

Swiss-Variable pitch fonts without serifs

Roman-Variable pitch fonts with serifs

Decorative-Novelty fonts, dingbats, and the like

Other-anything else


Character Set

This defines the character set, as used in the lfCharSet member of the LOGFONT structure.  Some checking is done here with respect to DBCS code pages and DBCS characters sets to guarantee consistency.


Font Animation

The font metrics are animated in this area of the tab.  The font used in the animation is the TrueType font that best matches the family, size, and weight characteristics specified.  As you select different special metrics in the special metrics combo box, they will be displayed in the animation area.

Note that since this is NOT the exact font you are using on the printer, the animated values may not look right when displayed.  They do provide some guidance as to what the metric actually does, however.


Font Height

The font height in font units.  This is the full cell height, including the ascender, descender, and any internal leading.


Font Weight

This is the font weight, expressed in a range from 0 (thinnest) to 1000 (thickest).


Maximum Character Width

This is the maximum width of any character in the font.  In non-DBCS variable pitch fonts, this value cannot be altered, and is calculated from the character width table.


Average character width

This is a read-only value, because it can always be correctly determined from the available font data.

•	If the font is a DBCS font, it is ½ of the maximum width, and it represents the actual (for fixed pitch) or nominal (for variable pitch) width of the glyphs represented by single-byte character codes in the font.

•	If the font is not DBCS, and is fixed pitch, this value is the same as the maximum width entered above.

•	If the font is not DBCS and is variable pitch, it is the average of the width of the space character and the lowercase characters ‘a’ to ‘z’, if they exist in the font.

•	If the lowercase characters do not exist in a non-DBCS variable pitch font, then it is the average width of all of the characters in the font.


First and last character codes

These are read-only values because they are derived from the associated GTT file.  They represent either the SBCS or Unicode values for the highest and lowest code point in the font.  If this is a DBCS font, then the highest value will always be 0xFF, because only one byte is reserved in the GDI structure being edited here.

These values are represented in hexadecimal format.  The choice of SBCS or Unicode is made using the so-labeled radio buttons.


Default character

This is the character used when a request is made to print a non-existent character.  The displayed value is either SBCS or Unicode, depending on the so-labeled radio buttons.  It must be a code with an SBCS representation.


Break character

The blank or line-breaking space character.  It must be a code with an SBCS representation.  It is almost always 0x20 (ASCII space). The displayed value is either SBCS or Unicode, depending on the so-labeled radio buttons.


Character representation selection

Selects whether character values in this dialog are displayed as Unicode or SBCS values.


Special Metric Selection

Select the special metric you wish to view or edit.


Special Metric value

Modifying this value changes the metric selected in the Metric box.


Serifs

Serifs are decorative features appearing at the end of the strokes in a glyph.  Fonts without serifs tend to be easier to read at small resolutions, which is why they are commonly used in help text and dialogs.

This line of text has no serifs.

This line of text has serifs.


UFM Editor Selection and Flags tab

This tab allows you to specify the string sent to the printer to select the font. It also includes a few additional font parameters characteristics.

UFM Editor Selection and Flags tab-click over any control for further information.


Font Selection command

This is the string sent to the printer to cause it to load this font.  Non-alphanumeric characters are displayed and entered using \x notation, as in C.  Spaces are also significant, so only use them where they actually belong in the command sequence.  If a command string is not required, this box should be empty.


Font Deselection command

This is the string sent to the printer to cause it to unload this font.  Non-alphanumeric characters are displayed and entered using \x notation, as in C.  Spaces are also significant, so only use them where they actually belong in the command sequence. If a command string is not required, this box should be empty.


Simulation Flags

These boxes indicate which versions of the font the printer is capable of providing.  If the bold or italic flag is checked, then the corresponding flag(s) on the Simulations tab must also be set. (The editor does not yet catch inconsistencies.)


Carriage return flag

Set this flag if a carriage return character must be sent to the printer after a line of text.


Overstrike via Backspace flag

Set this flag if the backspace character will always back up over the previous character in a way that will guarantee correct overstriking.  This is only relevant when the associated GTT file requires overstriking of two-byte codes.  See Predefined tables tab for more information about the overstrike flag.


UFM editor Simulations tab

This tab allows you to describe how the metrics for any bold or italic versions of the font produced by the printer differ from the normal font.

UFM editor Simulations tab for a font for which the printer provides a bold version.

Click the appropriate check box to enable a simulation.  Enter the values for the weight, maximum and average width, and (for italic fonts) the italic angle .  When you first enable a simulation, the current values for the font will be copied to these controls.  These settings will be adjusted if they conflict with the normal font settings (e.g., if you make the normal font heavier, and it becomes heavier than the weight shown in your bold setting).

Caveats:  These apply only to the Beta 1 version.

•	If you enable bold and italic simulations, you must enable the bold italic simulation and provide settings for it.

•	The enabling of bold and italic simulations must match the corresponding flags on the Selection and Flags tab.


Italic Angle

The angle by which the font slants from the ascender.  It is expressed in 10ths of a degree, and in a clockwise direction.


UFM editor Scalability Metrics tab

This tab lets you define how to convert font units to master units, and the range of sizes through which a scalable font can be scaled.

The font units entry is the same as the font height field on the General Metrics tab, minus any internal leading (thus it is the ascender + descender = the em height).  These values must be for the font size at which character width information is exact.

The Master Units entry is the same height, expressed in master units.

Specify the orientations in which the font can be displayed in the Orientation group box.

The maximum and minimum sizes the font can be scaled through can be viewed and edited in either integral point sizes, or master units.  Warning:  Do not express these values in font units.


UFM editor Character Widths tab

For a variable pitch font, you can use this tab to view, sort, and edit the character width information.

The Character Widths tab after a couple of code points have had their widths adjusted.

To change a width, select it and press F2, then type a new value.

The data can be sorted in ascending or descending order in either column by clicking on the column headers.  In the above case, clicking the Code Points column a second time sorts it in reverse order, and then clicking the Width column twice gives it first precedence, and ascending order, producing the following result:

Character widths sorted in ascending order by width, then descending order by code point.

DBCS fonts have fixed width glyphs for all of the DBCS-encoded code points, so these are not available for entry here.  Neither are any single-byte codes above 0x7F, as these are also fixed pitch.


UFM editor Kerning Pairs tab

This tab allows you to define kerning pairs for a variable pitch font.  The tab is disabled if the font is fixed pitch.

UFM editor Kerning pairs tab (initially empty) after right clicking the mouse in the view.

The three columns are for the first and second character in the pair, and the amount by which the inter-character gap is to be adjusted.

The list can be sorted in ascending or descending order in any priority using the column headers.  For a description of this mechanism, see  Sorting the displayed code points.  Although the column names are different here, the mechanism is identical.

The F10 key displays a context menu (or takes you directly to the Add Kern Pair dialog if there are no pairs defined).  The F2 key allows you to change the kern amount for a pair, while the Delete key is used to delete a pair.

All of these functions can be accessed using the mouse by selecting an item if necessary and right clicking.

UFM editor Kern Pairs tab showing a context menu for the first pair.

There is a limit of 512 pairs in Windows NT GDI.  The editor enforces this limit.


Kerning

Kerning is the altering of the space between adjacent characters to make them more visually appealing.  It is handled in the UFM editor by specifying pairs of characters to kern, and the amount (usually negative) in font units by which the spacing is to be adjusted.


Add Kern Pair dialog

This dialog allows you to specify the pair of characters to kern , and the amount by which they can be kerned.

Select the first and second character from the dropdown lists, and type the kern amount in the edit control.  The lists are maintained using the code points in the GTT and the current set of pairs, so you cannot specify an invalid or already existing pair.


Selecting a GPD file for editing

The GPD file editor can be started in several ways:

•	The GPD file can be selected from the Model Information list in the Workspace view.

•	An existing GPD file can be opened from the File Open dialog.

•	A GPD file can be double-clicked in the Windows Explorer.

•	A new (empty) GPD file can be created by selecting the New option on the File menu.

If a file is started using the first method, saved error messages for the GPD file are restored.  Otherwise, the editor begins with no errors detected.


The error log and the error bar

When a GPD file is created by the Conversion Wizard, or when you choose Syntax Check while in the GPD editor, an error log is produced. Error messages stored in the error log are displayed in the error bar, at the bottom of the GPD editor's window.

Messages produced by the Conversion Wizard

The Conversion Wizard writes messages to the error log. These messages do not give the location of an error, nor do they indicate how often the same error was encountered. When the conversion completes, these error messages are displayed in the GPD editor's error bar.

The Conversion Wizard also writes some localized information into the GPD file, as comments.  These comments are colored yellow for warnings and red for errors. In most cases, the messages include the word "Warning" or "Error" so you can find them with the Find capability (F3).

Messages produced by the syntax checker

Error messages produced by the syntax checker are displayed in the error bar, at the bottom of the GPD editor's window. These messages often identify the line where the error was detected. If you click on the error bar's Previous and Next buttons, the editor scrolls to the location of the error within the GPD file.

In some cases, such as a missing required global keyword, no location information Is available in the error message. In such cases, the GPD editor cannot scroll to the error's location.


Editing a GPD file

A GPD editor window, with the error bar shown.  Click where the cursor changes to a hand for further information.

The GPD file editor is a simple text editor, It supports some common editing features, such as Find/Replace, and cut and paste.  No undo capability exists.

GPD file comments are color-coded. Error and warning comments produced by the Conversion Wizard are red and yellow, respectively. Other comments are green.

If the GPD file is opened from the File Open menu item or toolbar button, the title bar contains the file name. If a file is opened from the workspace, the title bar will read <Workspace name> : <Model Name>.

At the base of the editor window is a status bar, used to display messages and the current line and column.  If there are error or warning messages from the most recent conversion or syntax check , the GPD error bar is located just above the status bar in the window.


Comment Coloring

Comments like these are colored to make them easier to identify.  Most comments will be colored green.  Warning and error comments from the Conversion Wizard are yellow and red, respectively.


Previous and Next Error buttons

Use these buttons to navigate the error list.  If an error message contains a line number, the editor automatically scrolls to the line where the error was detected.


Fixed Error button

Use this button to remove the selected error from the displayed list, and from the error log. This allows you to use the log as a “to-do” list.


Error log

This is a list of all of the error and warning messages logged either from the Conversion Wizard, or from the most recent syntax check.  See Syntax Checking GPD files .

This list can be navigated with the error buttons .


Currently selected error

The status bar contains the text of the currently selected error.


Selection Indicator

This indicator on the status bar indicates where the currently selected text ends, or where the insertion point is located if there is no selected text.


Syntax Checking GPD files

To check the syntax of a single GPD file:

•	Open the GPD file from the workspace, the Open option of the File menu, or the toolbar button.

•	Select the File/Syntax Check menu item, or press the button, which looks like this:

To syntax check all of the GPD files associated with a workspace (which is a good idea just before you finish with the workspace):

•	Open the workspace, or make its view window active, if it is already opened.

•	Select the Syntax Check all GPDs option on the File menu, or press the tool bar button, which looks like this:


Main menu command summary

Commands

File menu

Edit menu

View menu

Window menu

Help menu


File menu commands

The File menu offers the following commands:

New	Creates a new document (workspace, UFM, GTT, or GPD file).
Open	Opens an existing document (workspace, GTT, or GPD file).
Close	Closes an opened document (workspace, UFM, GTT, or GPD file).
Save	Saves an opened document (workspace, UFM, GTT, or GPD file) using the same file name.
Save As	Saves an opened document (workspace, UFM, GTT, or GPD file) to a specified file name.
Exit	Exits Minidriver Development Tool.


Edit menu commands

The Edit menu offers the following commands:

Undo	Reverse previous editing operation.
Cut	Deletes data from the document and moves it to the clipboard.
Copy	Copies data from the document to the clipboard.
Paste	Pastes data from the clipboard into the document.


View menu commands

The View menu offers the following commands:

Toolbar	Shows or hides the toolbar.
Status Bar	Shows or hides the status bar.


Window menu commands

The Window menu offers the following commands, which enable you to arrange multiple views of multiple documents in the application window:

Cascade	Arranges windows in an overlapped fashion.
Tile	Arranges windows in non-overlapped tiles.
Arrange Icons	Arranges icons of closed windows.
Window 1, 2, ...	Goes to specified window.


Help menu commands

The Help menu offers the following commands, which provide you assistance with this application:

Tip of the day	Allows you to browse selected tips on using the program.
Help Topics	Offers you a table of contents for topics on which you can get help.
About	Displays the version number of this application, as well as system information.


File New command
New command (File menu)

Use this command to create a new workspace using the Minidriver Conversion Wizard.

You can open an existing document with the Open command.

Shortcuts

Toolbar:

Keys:	CTRL+N


File New dialog box

Specify the type of document you wish to create:

Minidriver Workspace

Glyph Translation Table (GTT)

Device Font Information (UFM)

Generic Printer Description (GPD)


File Open command
Open command (File menu)

Use this command to open an existing document in a new window.  You can open multiple documents at once.  Use the Window menu to switch among the multiple open documents.  See Window 1, 2, ... command.

You can create new documents with the New command.

Shortcuts

Toolbar:

Keys:	CTRL+O


File Open dialog box

The following options allow you to specify which file to open:

File Name

Type or select the filename you want to open.  This box lists files with the extension you select in the List Files of Type box.

List Files of Type

Select the type of file you want to open:

Minidriver Workspace

Glyph Translation Table (GTT)

Device Font Information (UFM)- this option is not available in the Beta 1 version.

Generic Printer Description (GPD)

Drives

Select the drive in which Minidriver Development Tool stores the file that you want to open.

Directories

Select the directory in which Minidriver Development Tool stores the file that you want to open.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File Close command
Close command (File menu)

Use this command to close all windows containing the active document.  Minidriver Development Tool suggests that you save changes to your document before you close it.  If you close a document without saving, you lose all changes made since the last time you saved it.  Before closing an untitled document, Minidriver Development Tool displays the Save As dialog box and suggests that you name and save the document.

You can also close a document by using the Close icon on the document's window, as shown below:


File Save command
Save command (File menu)

Use this command to save the active document to its current name and directory.  When you save a document for the first time, Minidriver Development Tool displays the Save As dialog box so you can name your document.  If you want to change the name and directory of an existing document before you save it, choose the Save As command.

Shortcuts

Toolbar:

Keys:	CTRL+S


File Save As command
Save As command (File menu)

Use this command to save and name the active document.  Minidriver Development Tool displays the Save As dialog box so you can name your document.

To save a document with its existing name and directory, use the Save command.


File Save As dialog box

The following options allow you to specify the name and location of the file you're about to save:

File Name

Type a new filename to save a document with a different name.  A filename can contain up to eight characters and an extension of up to three characters.  Minidriver Development Tool adds the extension you specify in the Save File As Type box.

Drives

Select the drive in which you want to store the document.

Directories

Select the directory in which you want to store the document.

Network...

Choose this button to connect to a network location, assigning it a new drive letter.


File 1, 2, 3, 4 command
1, 2, 3, 4 command (File menu)

Use the numbers and filenames listed at the bottom of the File menu to open the last four documents you closed.  Choose the number that corresponds with the document you want to open.


File Exit command
Exit command (File menu)

Use this command to end your Minidriver Development Tool session.  You can also use the Close command on the application Control menu.  Minidriver Development Tool prompts you to save documents with unsaved changes.

Shortcuts

Mouse:	Double-click the application's Control menu button.

Keys:	ALT+F4


Undo/Can't Undo command (Edit menu)

Use this command to reverse the last editing action, if possible.   The name of the command changes, depending on what the last action was.  The Undo command changes to Can't Undo on the menu if you cannot reverse your last action.

Shortcuts

Toolbar:

Keys:	CTRL+Z or

ALT-BACKSPACE


Cut command (Edit menu)

Use this command to remove the currently selected data from the document and put it on the clipboard.  This command is unavailable if there is no data currently selected.

Cutting data to the clipboard replaces the contents previously stored there.

Shortcuts

Toolbar:

Keys:	CTRL+X


Copy command (Edit menu)

Use this command to copy selected data onto the clipboard.  This command is unavailable if there is no data currently selected.

Copying data to the clipboard replaces the contents previously stored there.

Shortcuts

Toolbar:

Keys:	CTRL+C


Paste command (Edit menu)

Use this command to insert a copy of the clipboard contents at the insertion point.  This command is unavailable if the clipboard is empty.

Shortcuts

Toolbar:

Keys:	CTRL+V


View Toolbar command
Toolbar command (View menu)

Use this command to display and hide the Toolbar, which includes buttons for some of the most common commands in Minidriver Development Tool, such as File Open.  A check mark appears next to the menu item when the Toolbar is displayed.

See Toolbar for help on using the toolbar.


Toolbar

The toolbar is displayed across the top of the application window, below the menu bar.  The toolbar provides quick mouse access to many tools used in Minidriver Development Tool,

To hide or display the Toolbar, choose Toolbar from the View menu (ALT, V, T).

Click	To

Open a new document.

Open an existing document.  Minidriver Development Tool displays the Open dialog box, in which you can locate and open the desired file.

Save the active document or template with its current name.  If you have not named the document, Minidriver Development Tool displays the Save As dialog box.

Print the active document.

Remove selected data from the document and stores it on the clipboard.

Copy the selection to the clipboard.

Insert the contents of the clipboard at the insertion point.

Reverse the last editing.  Note:  You cannot undo some actions.


View Status Bar Command
Status Bar command (View menu)

Use this command to display and hide the Status Bar, which describes the action to be executed by the selected menu item or depressed toolbar button, and keyboard latch state. A check mark appears next to the menu item when the Status Bar is displayed.

See Status Bar for help on using the status bar.


Status Bar

The status bar is displayed at the bottom of the Minidriver Development Tool window.  To display or hide the status bar, use the Status Bar command in the View menu.

The left area of the status bar describes actions of menu items as you use the arrow keys to navigate through menus.  This area similarly shows messages that describe the actions of toolbar buttons as you depress them, before releasing them.  If after viewing the description of the toolbar button command you wish not to execute the command, then release the mouse button while the pointer is off the toolbar button.

The right areas of the status bar indicate which of the following keys are latched down:

Indicator	Description

CAP	The Caps Lock key is latched down.

NUM	The Num Lock key is latched down.

SCRL	The Scroll Lock key is latched down.


Cascade command (Window menu)

Use this command to arrange multiple opened windows in an overlapped fashion.


Tile command (Window menu)

Use this command to arrange multiple opened windows in a non-overlapped fashion.  Since many windows are property sheets of a fixed size, the results are not always pleasing.


Window Arrange Icons Command

Use this command to arrange the icons in the main window.


1, 2, ... command (Window menu)

Minidriver Development Tool displays a list of currently open document windows at the bottom of the Window menu.  A check mark appears in front of the document name of the active window.  Choose a document from this list to make its window active.


Index command (Help menu)

Use this command to display the opening screen of Help.  From the opening screen, you can jump to step-by-step instructions for using Minidriver Development Tool and various types of reference information.

Once you open Help, you can click the Contents button whenever you want to return to the opening screen.


About command (Help menu)

Use this command to display the copyright notice and version number of your copy of Minidriver Development Tool.


Help Using Help Command
Context Help command

Use the Context Help command to obtain help on some portion of Minidriver Development Tool.  When you choose the Toolbar's Context Help button, the mouse pointer will change to an arrow and question mark.  Then click somewhere in the Minidriver Development Tool window, such as another Toolbar button.  The Help topic will be shown for the item you clicked.

Shortcut

Keys:	SHIFT+F1


Title Bar

The title bar is located along the top of a window.  It contains the name of the application and/or the document.

To move a window, drag its title bar.

A title bar may contain the following elements:

Application Control-menu button

Document Control-menu button

Maximize button

Minimize button

Name of the application

Name of the document

Restore button


Size command (System menu)

Use this command to display a four-headed arrow so you can size the active window with the arrow keys.

After the pointer changes to the four-headed arrow:

1.	Press one of the DIRECTION keys (left, right, up, or down arrow key) to move the pointer to the border you want to move.

2.	Press a DIRECTION key to move the border.

3.	Press ENTER when the window is the size you want.

Note:  This command is unavailable if you maximize the window.

Shortcut

Mouse:	Drag the size bars at the corners or edges of the window.


Move command (Control menu)

Use this command to display a four-headed arrow so you can move the active window or dialog box with the arrow keys.

Note:  This command is unavailable if you maximize the window.

Shortcut

Keys:	CTRL+F7


System Minimize Command
Minimize command (application Control menu)

Use this command to reduce the Minidriver Development Tool window to an icon.

Shortcut

Mouse:	Click the minimize icon [image] on the title bar.

Keys:	ALT+F9


Maximize command (System menu)

Use this command to enlarge the active window to fill the available space.

Shortcut

Mouse:	Click the maximize icon [image] on the title bar; or double-click the title bar.

Keys:	CTRL+F10 enlarges a document window.


Next Window command (document Control menu)

Use this command to switch to the next open document window.  Minidriver Development Tool determines which window is next according to the order in which you opened the windows.

Shortcut

Keys:	CTRL+F6


Previous Window command (document Control menu)

Use this command to switch to the previous open document window.  Minidriver Development Tool determines which window is previous according to the order in which you opened the windows.

Shortcut

Keys:	SHIFT+CTRL+F6


Close command (Control menus)

Use this command to close the active window or dialog box.

Double-clicking a Control-menu box is the same as choosing the Close command.

Note:  If you have multiple windows open for a single document, the Close command on the document Control menu closes only one window at a time.  You can close all windows at once with the Close command on the File menu.

Shortcuts

Keys: 	CTRL+F4 closes a document window

ALT+F4 closes the <<YourType>> window or dialog box


Restore command (Control menu)

Use this command to return the active window to its size and position before you chose the Maximize or Minimize command.


Switch to command (application Control menu)

Use this command to display a list of all open applications.  Use this "Task List" to switch to or close an application on the list.

Shortcut

Keys:	CTRL+ESC

Dialog Box Options

When you choose the Switch To command, you will be presented with a dialog box with the following options:

Task List

Select the application you want to switch to or close.

Switch To

Makes the selected application active.

End Task

Closes the selected application.

Cancel

Closes the Task List box.

Cascade

Arranges open applications so they overlap and you can see each title bar.  This option does not affect applications reduced to icons.

Tile

Arranges open applications into windows that do not overlap.  This option does not affect applications reduced to icons.

Arrange Icons

Arranges the icons of all minimized applications across the bottom of the screen.


Find Dialog
Find dialog box

Use this dialog box to find specific strings in the GPD file.


Replace Dialog
Replace dialog box

Use this dialog box to find replace one string of characters in the GPD file with another.


No Help Available

No help is available for this area of the window.


No Help Available

No help is available for this message box or menu item.


Structure creation failure

The required structure for the highlighted directory could not be created.  The typical causes are:

•	The name used contains invalid characters for the file system.

•	The drive, or some other part of the path before the final component of the path, is invalid.

•	A file with the same name as the listed directory, or one of the subdirectories in the structure, already exists on the drive.

•	A root directory may be full.

•	You do not have write access to the target drive or directory.

The structure depends upon the target.  For Windows NT version 5.0, GTT and UFM subdirectories will be created.  For the other Windows NT versions, RLE and IFI subdirectories will be created.

Necessary Action:

Select a destination you have write access to, and give it a valid name.  Also make sure the subdirectory names are not a problem.  You can use an existing complete or partial structure with impunity.


Error log query

You have GPD file errors from the conversion of the workspace, recent syntax checks, or both in the workspace you have just opened or created.

Answering Yes causes a GPD editor to be launched for each GPD that has errors.  This can save you looking through multiple files to find the ones that have the errors.

Answering No brings you to the Workspace editor without opening any other windows.


No unmapped code points

You have asked to add code points to a GTT file, but all available code points in the supported code pages are already in use.

Necessary action:

If you want to add additional code points, go to the Code Pages Used tab, and add a code page to the GTT that contains the point or points you wish to add.


Minidriver Conversion Failure

This message usually is preceded by a message that gives more detail as to the cause of the conversion failure.  You cannot convert the 16-bit minidriver as it is currently defined.

Necessary action:

Should have been specified in the message or messages preceding this one.  Usually it is because files are missing from the 16-bit minidriver sources, or incorrect CTT Ids were used in one or more PFM files.


Unable to run UniTool

For some reason, the UniTool program could not be started.

Necessary action:

You do not need to run UniTool from the Wizard.  Try canceling the conversion, ending the program, and then running UniTool from Explorer, or a command prompt.  If UniTool will not run, try rebooting your machine, and if that fails to produce results, try installing the DDK again.