Difference between revisions of "Techwiki:Win32k/RFONT"
ThePhysicist (talk | contribs) |
ThePhysicist (talk | contribs) |
||
Line 84: | Line 84: | ||
LONG lCharInc; // 124 | LONG lCharInc; // 124 | ||
FIX fxMaxAscent; // 128 | FIX fxMaxAscent; // 128 | ||
− | FIX fxMaxDescent; // | + | FIX fxMaxDescent; // 12c |
FIX fxMaxExtent; // 130 | FIX fxMaxExtent; // 130 | ||
POINTFX ptfxMaxAscent; // 134 | POINTFX ptfxMaxAscent; // 134 | ||
− | POINTFX ptfxMaxDescent; // | + | POINTFX ptfxMaxDescent; // 13c |
ULONG cxMax; // 144 | ULONG cxMax; // 144 | ||
LONG lMaxAscent; // 148 | LONG lMaxAscent; // 148 | ||
− | LONG lMaxHeight; // | + | LONG lMaxHeight; // 14c |
ULONG cyMax; // 150 | ULONG cyMax; // 150 | ||
ULONG cjGlyphMax; // 154 | ULONG cjGlyphMax; // 154 | ||
FD_XFORM fdxQuantized; // 158 | FD_XFORM fdxQuantized; // 158 | ||
LONG lNonLinearExtLeading; // 168 | LONG lNonLinearExtLeading; // 168 | ||
− | LONG lNonLinearIntLeading; | + | LONG lNonLinearIntLeading; // 16c |
− | LONG lNonLinearMaxCharWidth; | + | LONG lNonLinearMaxCharWidth; // 170 |
− | LONG lNonLinearAvgCharWidth; | + | LONG lNonLinearAvgCharWidth; // 174 |
ULONG ulOrientation; // 178 | ULONG ulOrientation; // 178 | ||
− | POINTEF pteUnitBase; // | + | POINTEF pteUnitBase; // 17c |
− | FLOATOBJ efWtoDBase; | + | FLOATOBJ efWtoDBase; // 18c |
− | FLOATOBJ efDtoWBase; | + | FLOATOBJ efDtoWBase; // 194 |
− | LONG lAscent; // | + | LONG lAscent; // 19c |
− | POINTEF pteUnitAscent; // | + | POINTEF pteUnitAscent; // 1A0 |
− | FLOATOBJ efWtoDAscent; | + | FLOATOBJ efWtoDAscent; // 1B0 |
− | FLOATOBJ efDtoWAscent; | + | FLOATOBJ efDtoWAscent; // 1B8 |
LONG lEscapement; // 1c0 | LONG lEscapement; // 1c0 | ||
− | FLOATOBJ efWtoDEsc; | + | FLOATOBJ efWtoDEsc; // 1c4 |
− | FLOATOBJ efDtoWEsc; | + | FLOATOBJ efDtoWEsc; // 1cc |
+ | ULONG unknown[4]; // 1d4 | ||
FLOATOBJ efEscToBase; // 1e4 | FLOATOBJ efEscToBase; // 1e4 | ||
FLOATOBJ efEscToAscent; // 1ec | FLOATOBJ efEscToAscent; // 1ec | ||
Line 119: | Line 120: | ||
ULONG cSelected; // 20c | ULONG cSelected; // 20c | ||
RFONTLINK rflPDEV; // 210 | RFONTLINK rflPDEV; // 210 | ||
− | RFONTLINK rflPFF; | + | RFONTLINK rflPFF; // 218 |
void * hsemCache; // 220 | void * hsemCache; // 220 | ||
CACHE cache; // 224 | CACHE cache; // 224 | ||
Line 132: | Line 133: | ||
BOOL bIsSystemFont; // 2a8 | BOOL bIsSystemFont; // 2a8 | ||
FLONG flEUDCState; // 2ac | FLONG flEUDCState; // 2ac | ||
− | PRFONT prfntSystemTT; | + | PRFONT prfntSystemTT; // 2b0 |
− | PRFONT prfntSysEUDC; | + | PRFONT prfntSysEUDC; // 2b4 |
− | PRFONT prfntDefEUDC; | + | PRFONT prfntDefEUDC; // 2b8 |
− | PRFONT paprfntFaceName; | + | PRFONT paprfntFaceName; // 2bc |
PRFONT aprfntQuickBuff[8]; // 2c0 | PRFONT aprfntQuickBuff[8]; // 2c0 | ||
− | BOOL bFilledEudcArray; | + | BOOL bFilledEudcArray; // 2e0 |
− | ULONG ulTimeStamp; | + | ULONG ulTimeStamp; // 2e4 |
− | ULONG uiNumLinks; | + | ULONG uiNumLinks; // 2e8 |
BOOL bVertical; // 2ec | BOOL bVertical; // 2ec | ||
HSEMAPHORE hsemCache1; // 2f0 | HSEMAPHORE hsemCache1; // 2f0 |
Revision as of 10:29, 2 March 2012
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 _FONTOBJ
{
ULONG iUniq;
ULONG iFace;
ULONG cxMax;
FLONG flFontType;
ULONG_PTR iTTUniq;
ULONG_PTR iFile;
SIZE sizLogResPpi;
ULONG ulStyleSize;
PVOID pvConsumer;
PVOID pvProducer;
} FONTOBJ;
typedef struct _RFONT
{
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; // 128
FIX fxMaxDescent; // 12c
FIX fxMaxExtent; // 130
POINTFX ptfxMaxAscent; // 134
POINTFX ptfxMaxDescent; // 13c
ULONG cxMax; // 144
LONG lMaxAscent; // 148
LONG lMaxHeight; // 14c
ULONG cyMax; // 150
ULONG cjGlyphMax; // 154
FD_XFORM fdxQuantized; // 158
LONG lNonLinearExtLeading; // 168
LONG lNonLinearIntLeading; // 16c
LONG lNonLinearMaxCharWidth; // 170
LONG lNonLinearAvgCharWidth; // 174
ULONG ulOrientation; // 178
POINTEF pteUnitBase; // 17c
FLOATOBJ efWtoDBase; // 18c
FLOATOBJ efDtoWBase; // 194
LONG lAscent; // 19c
POINTEF pteUnitAscent; // 1A0
FLOATOBJ efWtoDAscent; // 1B0
FLOATOBJ efDtoWAscent; // 1B8
LONG lEscapement; // 1c0
FLOATOBJ efWtoDEsc; // 1c4
FLOATOBJ efDtoWEsc; // 1cc
ULONG unknown[4]; // 1d4
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; // 218
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; // 2b0
PRFONT prfntSysEUDC; // 2b4
PRFONT prfntDefEUDC; // 2b8
PRFONT paprfntFaceName; // 2bc
PRFONT aprfntQuickBuff[8]; // 2c0
BOOL bFilledEudcArray; // 2e0
ULONG ulTimeStamp; // 2e4
ULONG uiNumLinks; // 2e8
BOOL bVertical; // 2ec
HSEMAPHORE hsemCache1; // 2f0
} RFONT, *PRFONT; // size 0x2F4 allocated in RFONTOBJ::bRealizeFont
iUnique
- Does NOT match fobj.iUniq. (0)
flType
ulContent
- Can be one of:
RFONT_CONTENT_METRICS RFONT_CONTENT_BITMAPS RFONT_CONTENT_PATHS
hdevProducer
- HDEV of the font driver that loaded this font.
bDeviceFont
- TRUE if the font is a device font.
hdevConsumer
- HDEV of the driver that uses this RFONT to output text.
dhpdev
- Driver defined device handle, that identifies the
ppfe pPFF fdx cBitsPerPel mxWorldToDevice iGraphicsMode eptflNtoWScale_x_i eptflNtoWScale_y_i bNtoWIdent xoForDDI unk_000 mxForDDI
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.