SAMPLE: Creating a Custom Raster FontLast reviewed: February 15, 1996Article ID: Q76535 |
The information in this article applies to:
SUMMARYFonts are stored as resources in resource-only dynamic-link libraries (DLLs). The process of creating a custom font library involves creating new font resources and inserting them into a DLL that has no code. Fonts must be in a resource-only library. The Windows 3.x Font Editor supports editing raster fonts compatible with Windows versions 2.x and Windows version 3.x. It is also possible to create a font-resource DLL that does have a code segment, which alleviates the problem of having to use a special linker. Sample code that demonstrates using the normal linker is also available in the Software Library, in a file called MYFONT. Download MYFONT.EXE, a self-extracting file, from the Microsoft Software Library (MSL) on the following services:
MORE INFORMATION
Basic Steps (Overview)
I. Create font files using the Font Editor. II. Create a font-resource script.III. Create a dummy code module. IV. Create a module-definition file that describes the fonts. V. Compile and link the sources.NOTE: Read Chapter 18 of the "Microsoft Windows Software Development Kit Guide to Programming." The following procedure is very similar.
Step I: Create a Font File
Note 1: It is not possible to generate a new font from scratch; an existing font file must be edited. Two fonts, ATRM1111.FNT and VGASYS.FNT, are supplied with the Windows 3.x SDK to provide a font on which to base new fonts. Note 2: The names of the font formats are deceiving. Windows 3.0-compatible format works only in 386 enhanced mode. Window 2.0-compatible format works in all modes; therefore, it is usually better to save fonts in 2.0 format.
Step II: Create a Font Resource Script
MyFont1 FONT MYFONT1.FNT MyFont2 FONT MYFONT2.FNT Step III: Create a Dummy Code Module
.xlist include cmacros.inc .list sBegin CODE sEnd CODE end Step IV: Create a Module Definition File
The DEF file for a font library might resemble the following:
LIBRARY FONTLIB DESCRIPTION 'FONTRES 133, 96, 72: MyFont, Terminal (7 point)' STUB 'WINSTUB.EXE' DATA NONENote: The DESCRIPTION statement specifies a string that describes the font attributes, and supplies a comment that is displayed by the Windows Control Panel when the font is loaded. WINSTUB.EXE is a small file that prints the message "This application requires Microsoft Windows" if the user tries to run the application under MS-DOS. The NONE attribute indicates that the library does not require its own automatic data segment. The description string MUST begin with the FONTRES text so that Windows will know that this is a font resource library. (See the "Microsoft Windows Software Development Kit Guide to Programming" for more information and examples.)
Step V: Building the Font Resource Library
The following is an sample makefile:
all: fontlib.exe fontlib.obj: fontlib.asm masm fontlib.asm; fontlib.exe: fontlib.mak fontlib.def fontlib.obj \ fontlib.rc fontlib.fnt link4 fontlib.obj, fontlib.exe, NUL, /NOD, fontlib.def rc fontlib.rc rename fontlib.exe fontlib.fon Using LINK Instead of LINK4:Important note: The specification of LINK4 in the sample above is not an error. The standard linkers supplied with Microsoft C version 5.1 and Microsoft C version 6.0 produce error messages when an attempt is made to create an executable file that has no segments. LINK4.EXE is not shipped with the Windows 3.x SDK. However, it is shipped with the Windows 2.x SDK and with the Windows 3.x DDK. If Steps III, IV, and V of the procedure given above are modified as follows, LINK versions 5.12 and later can be used to create font files:
NEW Step III: Create a Dummy Code ModuleCreate a code segment in the dummy code module by creating an empty Windows Exit Procedure (WEP). This code might resemble the following:
.xlist include cmacros.inc .list sBegin CODE cProc WEP,<FAR,PASCAL,PUBLIC>,<si,di> parmW EntryCode cBegin WEP cEnd WEP cEnd CODE end NEW Step IV: Create a Module Definition FileModify the DEF file provided above to add the following lines:
EXETYPE WINDOWS CODE MOVEABLE DISCARDABLE EXPORTS WEP @1 RESIDENTNAME NEW Step V: Building the Font Resource LibraryModify the makefile to refer to LINK instead of to LINK4.
Using MASM 6.0 Instead of MASM 5.1If the font file is built using version 6.0 of the Microsoft Macro Assembler (MASM), use version 5.3 of the CMACROS.INC file included with MASM instead of version 5.2 of the file included with the Windows SDK. To access the fonts, use AddFontResource() with the DLL name, and RemoveFontResource(). Use CreateFont() or CreateFontIndirect() to retrieve a handle to a font with the specified attributes. Use SelectObject() to put the font into a specified DC. The face name of the font (for example, "System" or "Helv") can be specified when the font is created using the Font Editor. This same face name is specified as the lpFaceName parameter when calling CreateFont() or CreateFontIndirect(). The face name can be any name desired.
|
Additional reference words: 3.00 3.10 softlib MYFONT.EXE
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |