Difference between revisions of "Techwiki:Win32k/RFONT"

From ReactOS Wiki
Jump to: navigation, search
Line 132: Line 132:
 
  } RFONTOBJ, *PRFONTOBJ; // size 0x2F4 allocated in RFONTOBJ::bRealizeFont
 
  } RFONTOBJ, *PRFONTOBJ; // size 0x2F4 allocated in RFONTOBJ::bRealizeFont
  
ulContent
+
''ulContent''
RFONT_CONTENT_METRICS
+
:Can be one of:
RFONT_CONTENT_BITMAPS
+
RFONT_CONTENT_METRICS
RFONT_CONTENT_PATHS
+
RFONT_CONTENT_BITMAPS
 +
RFONT_CONTENT_PATHS
  
 
===References===
 
===References===

Revision as of 11:07, 25 May 2011

Windows XP version of Realized Font structure. Pool tag is 'Gfnt'

typedef struct
{
  RFONT *        prfntPrev; // 000
  RFONT *        prfntNext; // 004
} RFONTLINK, *PRFONTLINK;

typedef struct
{
 MATRIX *     pmx;
 ULONG        ulMode;
} EXFORMOBJ;
//
typedef struct
{
 GLYPHDATA     *pgdNext;                // 000
 GLYPHDATA     *pgdThreshold;           // 004
 void *         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
 void *         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 See FDM_TYPE_XXX flags.
 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;                  // Maximum glyph bitmap width, in pixels,
                                        // for this font instance. Not used for outlines.
 LONG           lMaxAscent;
 LONG           lMaxHeight;             // 14c
 ULONG          cyMax;                  // Maximum glyph bitmap height, in pixels,
                                        // for this font instance. Not used for outlines.
 ULONG          cjGlyphMax;             // Maximum bitmap size of a glyph, in bytes, for
                                        // this font instance.
 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
 void *         phg;                    // 1f4 Ref in RFONTOBJ::bGetWidthTable * to 70 HGLYPH array
 HGLYPH         hgBreak;                // 1f8
 FIX            fxBreak;                // 1fc
 FD_GLYPHSET *  pfdg;                   // 200 RFONTOBJ::pfdg(_FD_GLYPHSET *)
 void *         wcgp;                   // 204 'Gcac' Gdi glyph cache
 FLONG          flInfo;                 // 208 see FM_INFO_* in IFIMETRICS
 ULONG          cSelected;              // 20c
 RFONTLINK      rflPDEV;                // 210
 RFONTLINK      rflPFF;
 void *         hsemCache;              // 220 HSEMAPHORE set in RFONTOBJ::bInitCache
 CACHE          cache;                  // 224
 POINTL         ptlSim;                 // 27c
 BOOL           bNeededPaths;           // 284
 FLOATOBJ       efDtoWBase_31;          // 288
 FLOATOBJ       efDtoWAscent_31;        // 290
 TEXTMETRICW *  ptmw;                   // 298
 LONG           lMaxNegA;               // 29c See CHWIDTHINFO and FD_DEVICEMETRICS lMinA
 LONG           lMaxNegC;               // 2a0                              "       lMinC
 LONG           lMinWidthD;             // 2a4                              "       lMinD
 BOOL           bIsSystemFont;          // 2a8
 FLONG          flEUDCState;            // 2ac
 RFONT *        prfntSystemTT;
 RFONT *        prfntSysEUDC;
 RFONT *        prfntDefEUDC;
 void *         paprfntFaceName;
 void *         aprfntQuickBuff[8];     // 2c0
 BOOL           bFilledEudcArray;
 ULONG          ulTimeStamp;
 ULONG          uiNumLinks;
 BOOL           bVertical;              // 2ec
 HSEMAPHORE     hsemCache1;             // 2f0 HSEMAPHORE set in RFONTOBJ::bInitCache
} RFONTOBJ, *PRFONTOBJ; // size 0x2F4 allocated in RFONTOBJ::bRealizeFont

ulContent

Can be one of:
RFONT_CONTENT_METRICS
RFONT_CONTENT_BITMAPS
RFONT_CONTENT_PATHS

References