Carnildo: /* Font names are stored as null-terminated UTF-16 Pascal strings. */
So what's your problem? I'd die for comments like that! It's a Pascal string -- that means it has a leading length count, probably 2 bytes long (pg_char type in your example). Then the data also has a null terminator, probably actually two nulls. This makes it more easily usable from a C context. Then it tells you that it's in UTF-16 encoding.
I repeat, so what's your problem?