Difference between revisions of "Techwiki:Win32k/PFE"
ThePhysicist (talk | contribs) |
ThePhysicist (talk | contribs) |
||
Line 4: | Line 4: | ||
{ | { | ||
PFF * pPFF; // 000 | PFF * pPFF; // 000 | ||
− | + | ULONG iFont; // 004 | |
FLONG flPFE; // 008 | FLONG flPFE; // 008 | ||
FG_GLYPHSET * pfdg; // 00c | FG_GLYPHSET * pfdg; // 00c | ||
Line 11: | Line 11: | ||
ULONG_PTR idifi; // 018 | ULONG_PTR idifi; // 018 | ||
FD_KERNINGPAIR *pkp; // 01c | FD_KERNINGPAIR *pkp; // 01c | ||
− | ULONG_PTR idkp; // 020 | + | ULONG_PTR idkp; // 020 |
ULONG ckp; // 024 | ULONG ckp; // 024 | ||
ULONG iOrientation; // 028 | ULONG iOrientation; // 028 | ||
Line 34: | Line 34: | ||
} | } | ||
+ | ''pPFF'' | ||
+ | :Pointer to the corresponding PFF (physical font file) | ||
+ | |||
+ | ''iFont'' | ||
+ | :One based index of the face in the font. Matches FONTOBJ::iFace | ||
''flPFE'' | ''flPFE'' | ||
Line 46: | Line 51: | ||
#define PFE_DBCS_FONT 0x0080 | #define PFE_DBCS_FONT 0x0080 | ||
#define PFE_VERT_FACE 0x0100 | #define PFE_VERT_FACE 0x0100 | ||
+ | |||
+ | ''pfdg'' | ||
+ | :Pointer to an FD_GLYPHSET structure that describes the character to hglyph mapping. This value is queried by a call to DrvQueryFontTree with iMode == QFT_GLYPHSET. | ||
+ | |||
+ | ''ulpId'' | ||
+ | :Value returned in *pid by DrvQueryFontTree with iMode == QFT_GLYPHSET. This value is passed to DrvFree when freeing the FD_GLYPHSET structure. | ||
+ | |||
+ | ''pkp'' | ||
+ | :Value returned in *pid by DrvQueryFontTree with iMode == QFT_KERNPAIRS. This value is passed to DrvFree when freeing the FD_KERNINGPAIR structure. | ||
+ | |||
+ | ''idkp'' | ||
+ | : "*pid" QFT_KERNPAIRS, passed to DrvQueryFontTree | ||
+ | |||
+ | ''ckp'' | ||
+ | :Number of kerning pairs in pkp | ||
+ | |||
+ | ''ulTimeStamp'' | ||
+ | :A counter that uniquely identifies this PFE. |
Revision as of 11:06, 2 March 2012
Pool tag is 'Gpfe'
typedef struct { PFF * pPFF; // 000 ULONG iFont; // 004 FLONG flPFE; // 008 FG_GLYPHSET * pfdg; // 00c ULONG_PTR ulpId; // 010 ? IFIMETRICS * pifi; // 014 ULONG_PTR idifi; // 018 FD_KERNINGPAIR *pkp; // 01c ULONG_PTR idkp; // 020 ULONG ckp; // 024 ULONG iOrientation; // 028 ULONG cjEfdwPFE; // 02c GISET * pgiset; // 030 ULONG ulTimeStamp; // 034 UNIVERSAL_FONT_ID ufi; // 038 DWORD pid; // 040 ? PFEOBJ::SameProccess DWORD tid; // 044 Added to XP ? PFEOBJ::SameThread LIST_ENTRY ql; // 044 048 void * pFlEntry; // 04c 050 ULONG cAlt; // 050 054 ULONG cPfdgRef; // 054 058 ULONG aiFamilyName[]; // 058 05c } PFE, *PPFE;
The handle manager structure looks like this on windows:
typedef struct { BASEOBJ baseobj; // 000 PPFE ppfe; // 010 }
pPFF
- Pointer to the corresponding PFF (physical font file)
iFont
- One based index of the face in the font. Matches FONTOBJ::iFace
flPFE
- Can be a combination of the following values:
#define PFE_DEVICEFONT 0x0001 #define PFE_DEADSTATE 0x0002 #define PFE_REMOTEFONT 0x0004 #define PFE_EUDC 0x0008 #define PFE_SBCS_SYSTEM 0x0010 #define PFE_UFIMATCH 0x0020 #define PFE_MEMORYFONT 0x0040 #define PFE_DBCS_FONT 0x0080 #define PFE_VERT_FACE 0x0100
pfdg
- Pointer to an FD_GLYPHSET structure that describes the character to hglyph mapping. This value is queried by a call to DrvQueryFontTree with iMode == QFT_GLYPHSET.
ulpId
- Value returned in *pid by DrvQueryFontTree with iMode == QFT_GLYPHSET. This value is passed to DrvFree when freeing the FD_GLYPHSET structure.
pkp
- Value returned in *pid by DrvQueryFontTree with iMode == QFT_KERNPAIRS. This value is passed to DrvFree when freeing the FD_KERNINGPAIR structure.
idkp
- "*pid" QFT_KERNPAIRS, passed to DrvQueryFontTree
ckp
- Number of kerning pairs in pkp
ulTimeStamp
- A counter that uniquely identifies this PFE.