Techwiki:Win32k/RFONT
Revision as of 10:29, 4 August 2011 by ThePhysicist (talk | contribs)
Windows XP version of Realized Font structure. Pool tag is 'Gfnt'
typedef struct
{
PRFONT prfntPrev; // 000
PRFONT prfntNext; // 004
} RFONTLINK, *PRFONTLINK;
typedef struct
{
PMATRIX pmx;
ULONG ulMode;
} EXFORMOBJ;
typedef struct
{
GLYPHDATA *pgdNext; // 000
GLYPHDATA *pgdThreshold; // 004
PBYTE pjFirstBlockEnd; // 008
void * pdblBase; // 00c
ULONG cMetrics; // 010
DWORD unknow_014;
ULONG cjbbl; // 018
ULONG cBlocksMax; // 01c
ULONG cBlocks; // 020
ULONG cGlyphs; // 024
ULONG cjTotal; // 028
void * pbblBase; // 02c
void * pbblCur; // 030
GLYPHBITS * pgbNext; // 034
GLYPHBITS * pgbThreshold; // 038
PBYTE pjAuxCacheMem; // 03c
ULONG cjAuxCacheMem; // 040
ULONG cjGlyphMax; // 044
BOOL bSmallMetrics; // 048
ULONG iMax; // 04c
ULONG iFirst; // 050
ULONG cBits; // 054
// size = 058
} CACHE;
typedef struct _RFONTOBJ
{
FONTOBJ fobj; // 000
ULONG iUnique; // 02c
FLONG flType; // 030
ULONG ulContent; // 034
PVOID hdevProducer; // 038
BOOL bDeviceFont; // 03c
PVOID hdevConsumer; // 040
DHPDEV dhpdev; // 044
PFE * ppfe; // 048
PFF * pPFF; // 04c
FD_XFORM fdx; // 050
ULONG cBitsPerPel; // 060
MATRIX mxWorldToDevice; // 064
ULONG iGraphicsMode; // 0a0
FLOATOBJ eptflNtoWScale_x_i; // 0a4
FLOATOBJ eptflNtoWScale_y_i; // 0ac
ULONG bNtoWIdent; // 0b4
EXFORMOBJ xoForDDI; // 0b8
unsigned unk_000; // 0c0
MATRIX mxForDDI; // 0c4
ULONG flRealizedType; // 100
POINTL ptlUnderline1; // 104
POINTL ptlStrikeOut; // 10c
POINTL ptlULThickness; // 114
POINTL ptlSOThickness; // 11c
LONG lCharInc; // 124
FIX fxMaxAscent;
FIX fxMaxDescent;
FIX fxMaxExtent; // 130
POINTFX ptfxMaxAscent;
POINTFX ptfxMaxDescent;
ULONG cxMax; //
LONG lMaxAscent;
LONG lMaxHeight; // 14c
ULONG cyMax; //
ULONG cjGlyphMax; //
FD_XFORM fdxQuantized; // 158
LONG lNonLinearExtLeading; // 168
LONG lNonLinearIntLeading;
LONG lNonLinearMaxCharWidth;
LONG lNonLinearAvgCharWidth;
ULONG ulOrientation; // 178
POINTEF pteUnitBase; //
FLOATOBJ efWtoDBase;
FLOATOBJ efDtoWBase;
LONG lAscent; // 19C
POINTEF pteUnitAscent; //
FLOATOBJ efWtoDAscent;
FLOATOBJ efDtoWAscent;
LONG lEscapement; // 1c0
FLOATOBJ efWtoDEsc;
FLOATOBJ efDtoWEsc;
FLOATOBJ efEscToBase; // 1e4
FLOATOBJ efEscToAscent; // 1ec
HGLYPH * phg; // 1f4
HGLYPH hgBreak; // 1f8
FIX fxBreak; // 1fc
FD_GLYPHSET * pfdg; // 200
void * wcgp; // 204
FLONG flInfo; // 208
ULONG cSelected; // 20c
RFONTLINK rflPDEV; // 210
RFONTLINK rflPFF;
void * hsemCache; // 220
CACHE cache; // 224
POINTL ptlSim; // 27c
BOOL bNeededPaths; // 284
FLOATOBJ efDtoWBase_31; // 288
FLOATOBJ efDtoWAscent_31; // 290
TEXTMETRICW * ptmw; // 298
LONG lMaxNegA; // 29c
LONG lMaxNegC; // 2a0
LONG lMinWidthD; // 2a4
BOOL bIsSystemFont; // 2a8
FLONG flEUDCState; // 2ac
PRFONT prfntSystemTT;
PRFONT prfntSysEUDC;
PRFONT prfntDefEUDC;
PRFONT paprfntFaceName;
PRFONT aprfntQuickBuff[8]; // 2c0
BOOL bFilledEudcArray;
ULONG ulTimeStamp;
ULONG uiNumLinks;
BOOL bVertical; // 2ec
HSEMAPHORE hsemCache1; // 2f0
} RFONTOBJ, *PRFONTOBJ; // size 0x2F4 allocated in RFONTOBJ::bRealizeFont
ulContent
- Can be one of:
RFONT_CONTENT_METRICS RFONT_CONTENT_BITMAPS RFONT_CONTENT_PATHS
flRealizedType
- See FDM_TYPE_XXX flags.
cxMax
- Maximum glyph bitmap width, in pixels for this font instance. Not used for outlines.
cyMax
- Maximum glyph bitmap height, in pixels for this font instance. Not used for outlines.
cjGlyphMax
- Maximum bitmap size of a glyph, in bytes for this font instance.
phg
- Pointer to an array of HGLYPHs.
pfdg
'wcgp
- Pointer to Gdi glyph cache ('Gcac')
flInfo
- see FM_INFO_* in IFIMETRICS
hsemCache
- HSEMAPHORE to protect the cache
lMaxNegA
- See CHWIDTHINFO and FD_DEVICEMETRICS lMinA
lMaxNegC
- See CHWIDTHINFO and FD_DEVICEMETRICS lMinC
lMinWidthD
- See CHWIDTHINFO and FD_DEVICEMETRICS lMinD
hsemCache1
- HSEMAPHORE to protect the cache
References
- FD_DEVICEMETRICS
- IFIMETRICS
- Windows Symbol files, gdikdx.dll.