/* DON'T REORDER!  The order is part of the cache signature. */
FC_OBJECT (FAMILY,		FcTypeString,	FcCompareFamily)
FC_OBJECT (FAMILYLANG,		FcTypeString,	NULL)
FC_OBJECT (STYLE,		FcTypeString,	FcCompareString)
FC_OBJECT (STYLELANG,		FcTypeString,	NULL)
FC_OBJECT (FULLNAME,		FcTypeString,	NULL)
FC_OBJECT (FULLNAMELANG,	FcTypeString,	NULL)
FC_OBJECT (SLANT,		FcTypeInteger,	FcCompareNumber)
FC_OBJECT (WEIGHT,		FcTypeInteger,	FcCompareNumber)
FC_OBJECT (WIDTH,		FcTypeInteger,	FcCompareNumber)
FC_OBJECT (SIZE,		FcTypeDouble,	NULL)
FC_OBJECT (ASPECT,		FcTypeDouble,	NULL)
FC_OBJECT (PIXEL_SIZE,		FcTypeDouble,	FcCompareSize)
FC_OBJECT (SPACING,		FcTypeInteger,	FcCompareNumber)
FC_OBJECT (FOUNDRY,		FcTypeString,	FcCompareString)
FC_OBJECT (ANTIALIAS,		FcTypeBool,	FcCompareBool)
FC_OBJECT (HINT_STYLE,		FcTypeInteger,	NULL)
FC_OBJECT (HINTING,		FcTypeBool,	NULL)
FC_OBJECT (VERTICAL_LAYOUT,	FcTypeBool,	NULL)
FC_OBJECT (AUTOHINT,		FcTypeBool,	NULL)
FC_OBJECT (GLOBAL_ADVANCE,	FcTypeBool,	NULL)	/* deprecated */
FC_OBJECT (FILE,		FcTypeString,	FcCompareFilename)
FC_OBJECT (INDEX,		FcTypeInteger,	NULL)
FC_OBJECT (RASTERIZER,		FcTypeString,	FcCompareString)
FC_OBJECT (OUTLINE,		FcTypeBool,	FcCompareBool)
FC_OBJECT (SCALABLE,		FcTypeBool,	FcCompareBool)
FC_OBJECT (DPI,			FcTypeDouble,	NULL)
FC_OBJECT (RGBA,		FcTypeInteger,	NULL)
FC_OBJECT (SCALE,		FcTypeDouble,	NULL)
FC_OBJECT (MINSPACE,		FcTypeBool,	NULL)
FC_OBJECT (CHAR_WIDTH,		FcTypeInteger,	NULL)
FC_OBJECT (CHAR_HEIGHT,		FcTypeInteger,	NULL)
FC_OBJECT (MATRIX,		FcTypeMatrix,	NULL)
FC_OBJECT (CHARSET,		FcTypeCharSet,	FcCompareCharSet)
FC_OBJECT (LANG,		FcTypeLangSet,	FcCompareLang)
FC_OBJECT (FONTVERSION,		FcTypeInteger,	FcCompareNumber)
FC_OBJECT (CAPABILITY,		FcTypeString,	NULL)
FC_OBJECT (FONTFORMAT,		FcTypeString,	FcCompareString)
FC_OBJECT (EMBOLDEN,		FcTypeBool,	NULL)
FC_OBJECT (EMBEDDED_BITMAP,	FcTypeBool,	NULL)
FC_OBJECT (DECORATIVE,		FcTypeBool,	FcCompareBool)
FC_OBJECT (LCD_FILTER,		FcTypeInteger,	NULL)
FC_OBJECT (NAMELANG,		FcTypeString,	NULL)
FC_OBJECT (FONT_FEATURES,	FcTypeString,	NULL)
FC_OBJECT (PRGNAME,		FcTypeString,	NULL)
FC_OBJECT (HASH,		FcTypeString,	FcCompareHash)
FC_OBJECT (POSTSCRIPT_NAME,	FcTypeString,	FcComparePostScript)
/* ^-------------- Add new objects here. */
