public TextLayoutEngine(string type)
        {
            unsafe
            {
                this._textlayout = TextLayout;

                gvtextlayout_engine_t *textLayoutEngine = (gvtextlayout_engine_t *)Marshal.AllocHGlobal(Marshal.SizeOf(typeof(gvtextlayout_engine_t)));
                _textLayoutEngine = new SafeMarshalHGlobalHandle((IntPtr)textLayoutEngine, true);

                *textLayoutEngine = new gvtextlayout_engine_t();
                textLayoutEngine->textlayout = Marshal.GetFunctionPointerForDelegate(_textlayout);

                gvplugin_installed_t *installedPluginData = (gvplugin_installed_t *)Marshal.AllocHGlobal(2 * Marshal.SizeOf(typeof(gvplugin_installed_t)));
                _installedPluginData = new SafeMarshalHGlobalHandle((IntPtr)installedPluginData, true);
                _engineType          = new SafeMarshalHGlobalHandle(Marshal.StringToHGlobalAnsi(type), true);

                installedPluginData->id       = 0;
                installedPluginData->type     = (byte *)_engineType.DangerousGetHandle();
                installedPluginData->quality  = 0;
                installedPluginData->engine   = textLayoutEngine;
                installedPluginData->features = null;
                installedPluginData[1]        = new gvplugin_installed_t();
            }
        }
        public TextLayoutEngine(string type)
        {
            unsafe
            {
                this._textlayout = TextLayout;

                gvtextlayout_engine_t* textLayoutEngine = (gvtextlayout_engine_t*)Marshal.AllocHGlobal(Marshal.SizeOf(typeof(gvtextlayout_engine_t)));
                _textLayoutEngine = new SafeMarshalHGlobalHandle((IntPtr)textLayoutEngine, true);

                *textLayoutEngine = new gvtextlayout_engine_t();
                textLayoutEngine->textlayout = Marshal.GetFunctionPointerForDelegate(_textlayout);

                gvplugin_installed_t* installedPluginData = (gvplugin_installed_t*)Marshal.AllocHGlobal(2 * Marshal.SizeOf(typeof(gvplugin_installed_t)));
                _installedPluginData = new SafeMarshalHGlobalHandle((IntPtr)installedPluginData, true);
                _engineType = new SafeMarshalHGlobalHandle(Marshal.StringToHGlobalAnsi(type), true);

                installedPluginData->id = 0;
                installedPluginData->type = (byte*)_engineType.DangerousGetHandle();
                installedPluginData->quality = 0;
                installedPluginData->engine = textLayoutEngine;
                installedPluginData->features = null;
                installedPluginData[1] = new gvplugin_installed_t();
            }
        }