I found an easy solution, since I'm on MacOs and using MacPorts as package 
manager : I can build pango using the following option:

sudo port -v install pango +no_x11 -x11 +quartz +builtin_modules

The "+builtin_modules" variant does what I want : It links the modules 
statically into pango, so no more worries about the modules path.

Thanks for your help.

Antoine



On 01 Mar 2012, at 11:26, John Emmas wrote:


On 1 Mar 2012, at 08:59, Antoine Baudoux wrote:

Hello,

Yes thats where pango was installed, but I want to repackage it in a bundled 
App. Is there a way to do that? The path to the modules file seems to be 
hardcoded in the library, and i was hoping to change it by setting the 
PANGO_RC_FILE env variable. Is there another way?


I can offer a solution for Windows but you'd need to be building the library 
yourself.  If so, you can modify 'pango_get_sysconf_subdirectory()' (in 
pango-utils.c).  I modified it to look for an environment variable called 
"PANGO_MODULE_PATH" (obviously, your main app would have to set up such an 
environment var for this to work).  Non-Windows versions simply return 
'[SYSCONFDIR]/pango' (where SYSCONFDIR is a path you define at compile time).  
So again, you'd need to be building pango yourself is you wanted to change the 
behaviour.

If nobody knows of a better approach, I'd recommend that this mod should be 
considered for inclusion in the main code base (and preferably, a similar idea 
for the non-Windows platforms).  The reason I needed this on Windows was that 
our app needed to have write access for the relevant folder - but we had no way 
of guaranteeing that "etc\\pango" would be a writeable directory.  So I just 
copied the idea from some other gtk library (several other gtk libraries seem 
to employ the same strategy).  I've included the full code for that function 
below, so you can see what I needed to change (it only involved 3 extra lines!!)

John


G_CONST_RETURN char *
pango_get_sysconf_subdirectory (void)
{
#ifdef G_OS_WIN32
    char *env_path;
    static gchar *result = NULL;

    if (result == NULL)
    {
       /* This function changed by JE - 17-02-2012 to allow us
          to find pango.modules from an environment variable */
          env_path = g_getenv("PANGO_MODULE_PATH");
          if (env_path)
      result = g_strdup(env_path);

          if (result == NULL)
          {
              gchar *root = 
g_win32_get_package_installation_directory_of_module (pango_dll);
              result = g_build_filename (root, "etc\\pango", NULL);
              g_free (root);
          }
    }
    return result;
#else
    return SYSCONFDIR "/pango";
#endif
}


_______________________________________________
gtk-i18n-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-i18n-list

Reply via email to