123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /*
- * Dump a font file
- *
- * Copyright 2009 Dmitry Timoshkov
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
- #include "config.h"
- #include "wine/port.h"
- #include <stdarg.h>
- #include <stdio.h>
- #include <stdlib.h>
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
- #ifdef HAVE_SYS_TYPES_H
- # include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_MMAN_H
- #include <sys/mman.h>
- #endif
- #include <fcntl.h>
- #include "windef.h"
- #include "winbase.h"
- #include "winnt.h"
- #include "winedump.h"
- #include <pshpack1.h>
- typedef struct
- {
- INT16 dfType;
- INT16 dfPoints;
- INT16 dfVertRes;
- INT16 dfHorizRes;
- INT16 dfAscent;
- INT16 dfInternalLeading;
- INT16 dfExternalLeading;
- BYTE dfItalic;
- BYTE dfUnderline;
- BYTE dfStrikeOut;
- INT16 dfWeight;
- BYTE dfCharSet;
- INT16 dfPixWidth;
- INT16 dfPixHeight;
- BYTE dfPitchAndFamily;
- INT16 dfAvgWidth;
- INT16 dfMaxWidth;
- BYTE dfFirstChar;
- BYTE dfLastChar;
- BYTE dfDefaultChar;
- BYTE dfBreakChar;
- INT16 dfWidthBytes;
- LONG dfDevice;
- LONG dfFace;
- LONG dfBitsPointer;
- LONG dfBitsOffset;
- BYTE dfReserved;
- /* Fields, introduced for Windows 3.x fonts */
- LONG dfFlags;
- INT16 dfAspace;
- INT16 dfBspace;
- INT16 dfCspace;
- LONG dfColorPointer;
- LONG dfReserved1[4];
- } FONTINFO16;
- typedef struct
- {
- SHORT dfVersion; /* Version */
- LONG dfSize; /* Total File Size */
- char dfCopyright[60]; /* Copyright notice */
- FONTINFO16 fi; /* FONTINFO structure */
- } WINFNT;
- #include <poppack.h>
- /* FIXME: recognize and dump also NE/PE wrapped fonts */
- enum FileSig get_kind_fnt(void)
- {
- const WINFNT *fnt = PRD(0, sizeof(WINFNT));
- if (fnt && (fnt->dfVersion == 0x200 || fnt->dfVersion == 0x300) &&
- PRD(0, fnt->dfSize) != NULL)
- return SIG_FNT;
- return SIG_UNKNOWN;
- }
- void fnt_dump(void)
- {
- const WINFNT *fnt = PRD(0, sizeof(WINFNT));
- printf("dfVersion %#x, dfSize %d bytes, dfCopyright %.60s\n",
- fnt->dfVersion, fnt->dfSize, fnt->dfCopyright);
- printf("dfType %d\n"
- "dfPoints %d\n"
- "dfVertRes %d\n"
- "dfHorizRes %d\n"
- "dfAscent %d\n"
- "dfInternalLeading %d\n"
- "dfExternalLeading %d\n"
- "dfItalic %d\n"
- "dfUnderline %d\n"
- "dfStrikeOut %d\n"
- "dfWeight %d\n"
- "dfCharSet %d\n"
- "dfPixWidth %d\n"
- "dfPixHeight %d\n"
- "dfPitchAndFamily %#x\n"
- "dfAvgWidth %d\n"
- "dfMaxWidth %d\n"
- "dfFirstChar %#x\n"
- "dfLastChar %#x\n"
- "dfDefaultChar %#x\n"
- "dfBreakChar %#x\n"
- "dfWidthBytes %d\n",
- fnt->fi.dfType, fnt->fi.dfPoints, fnt->fi.dfVertRes, fnt->fi.dfHorizRes,
- fnt->fi.dfAscent, fnt->fi.dfInternalLeading, fnt->fi.dfExternalLeading,
- fnt->fi.dfItalic, fnt->fi.dfUnderline, fnt->fi.dfStrikeOut, fnt->fi.dfWeight,
- fnt->fi.dfCharSet, fnt->fi.dfPixWidth, fnt->fi.dfPixHeight, fnt->fi.dfPitchAndFamily,
- fnt->fi.dfAvgWidth, fnt->fi.dfMaxWidth, fnt->fi.dfFirstChar, fnt->fi.dfLastChar,
- fnt->fi.dfDefaultChar, fnt->fi.dfBreakChar, fnt->fi.dfWidthBytes);
- }
|