Beim Casten mußt du einfach nur einen Typen gleicher Größe haben ... also einem, der dann SizeOf(TFontStyles) entspricht.
das kann auch ein Record oder StaticArray sein.
Delphi-Quellcode:
Type T = Array[0..31] of Byte;
P = ^T;
Count := 0;
For i := 0 to SizeOf(Typ) do
Count := Count + ZähleBitsInByte(P(@TypVar)[i]);