public FreeTypeStreamWrapper(Stream stream) { _stream = stream; _startOffset = stream.Position; var ftStream = new FT_Stream.Win32() { @base = IntPtr.Zero, pos = 0, size = 0x7FFFFFFF, // Tells FreeType the size of the stream is unknown read = Marshal.GetFunctionPointerForDelegate(IoFuncWin32), close = Marshal.GetFunctionPointerForDelegate(CloseFunc) }; _ftStream = ftStream; _ftStreamHandle = GCHandle.Alloc(_ftStream, GCHandleType.Pinned); var ftOpenArgs = new FT_Open_Args.Win32() { flags = FT_OPEN_STREAM, stream = _ftStreamHandle.AddrOfPinnedObject() }; FT_Open_ArgsWin32 = ftOpenArgs; }
private static extern int _FT_Open_Face_Win32(IntPtr library, ref FT_Open_Args.Win32 args, int face_index, out IntPtr aface);