/* * True Type font engine support * * Copyright 1996 John Harvey */ #include #include #include "windows.h" #include "font.h" /* GDI 300 */ WORD WINAPI EngineEnumerateFont(LPSTR fontname, FARPROC16 proc, DWORD data ) { fprintf(stderr,"EngineEnumerateFont(%s,%p,%lx),stub\n",fontname,proc,data); return 0; } /* GDI 301 */ WORD WINAPI EngineDeleteFont(LPFONTINFO16 lpFontInfo) { WORD handle; /* untested, don't know if it works. We seem to access some structure that is located after the FONTINFO. The FONTINFO docu says that there may follow some char-width table or font bitmap or vector info. I think it is some kind of font bitmap that begins at offset 0x52, as FONTINFO goes up to 0x51. If this is correct, everything should be implemented correctly. */ if ( ((lpFontInfo->dfType & (RASTER_FONTTYPE|DEVICE_FONTTYPE)) == (RASTER_FONTTYPE|DEVICE_FONTTYPE)) && (LOWORD(lpFontInfo->dfFace) == LOWORD(lpFontInfo)+0x6e) && (handle = *(WORD *)(lpFontInfo+0x54)) ) { *(WORD *)(lpFontInfo+0x54) = 0; GlobalFree16(handle); } return 1; } /* GDI 302 */ WORD WINAPI EngineRealizeFont(LPLOGFONT16 lplogFont, LPTEXTXFORM16 lptextxform, LPFONTINFO16 lpfontInfo) { fprintf(stderr,"EngineRealizeFont(%p,%p,%p),stub\n",lplogFont,lptextxform,lpfontInfo); return 0; } /* GDI 303 */ WORD WINAPI EngineGetCharWidth(LPFONTINFO16 lpFontInfo, BYTE firstChar, BYTE lastChar, LPINT16 buffer) { int i; for (i = firstChar; i <= lastChar; i++) *buffer++ = lpFontInfo->dfAvgWidth; /* insert some charwidth functionality here; use average width for now */ return 1; } /* GDI 304 */ WORD WINAPI EngineSetFontContext(LPFONTINFO16 lpFontInfo, WORD data) { return 0; } /* GDI 305 */ WORD WINAPI EngineGetGlyphBMP(WORD word, LPFONTINFO16 lpFontInfo, WORD w1, WORD w2, LPSTR string, DWORD dword, /*LPBITMAPMETRICS16*/ LPVOID metrics) { return 0; } /* GDI 306 */ DWORD WINAPI EngineMakeFontDir(HDC16 hdc, LPFONTDIR16 fontdir, LPCSTR string) { return -1; /* error */ } /* GDI 314 */ WORD WINAPI EngineExtTextOut() { return 0; }