Re: PangoF2 in win32 not applying GSUB - Fixed.

2010-03-01 Thread Ravi Kiran.
Thanks Tml,

 This fixed the issue for me, now the GSUBs are working properly in win32.
I just commented out the portion in pango_ot_info_get() in 
pango-1.26.2\pango\pango-ot-info.c.


PangoOTInfo *
pango_ot_info_get (FT_Face face)
{
  PangoOTInfo *info;

  if (G_LIKELY (face->generic.data && face->generic.finalizer == 
pango_ot_info_finalizer))
return face->generic.data;
  else
{
  if (face->generic.finalizer)
face->generic.finalizer (face->generic.data);

  info = face->generic.data = g_object_new (PANGO_TYPE_OT_INFO, NULL);
  face->generic.finalizer = pango_ot_info_finalizer;

  info->face = face;

  /*
  if (face->stream->base != NULL) {
hb_blob_t *blob;

blob = hb_blob_create ((const char *) face->stream->base,
   (unsigned int) face->stream->size,
   HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE,
   NULL, NULL);
info->hb_face = hb_face_create_for_data (blob, face->face_index);
hb_blob_destroy (blob);
  } else 
  */
  {
info->hb_face = hb_face_create_for_tables (_get_table, NULL, info);
  }


  hb_face_set_unicode_funcs (info->hb_face, hb_glib_get_unicode_funcs ());

  /* XXX this is such a waste if not SFNT */
  if (!hb_ot_layout_has_font_glyph_classes (info->hb_face))
synthesize_class_def (info);
}

  return info;
}


Warm Regds,
Ravi Kiran.




--- On Mon, 3/1/10, Tor Lillqvist  wrote:

> From: Tor Lillqvist 
> Subject: Re: PangoF2 in win32 not applying GSUB.
> To: "Ravi Kiran." 
> Cc: gtk-i18n-list@gnome.org
> Date: Monday, March 1, 2010, 10:41 AM
> I think I found the cause to the
> problem. Pango assumes that the
> FT_StreamRec::base field, if non-zero, points to the whole
> font file
> read or mapped into memory. See pango_ot_info_get(). As
> such this is
> correct according to FreeType documentation, as said in
> ftsystem.h,
> "base :: For memory-based streams, this is the address of
> the first
> stream byte in memory.  This field should always be
> set to NULL for
> disk-based streams."
> 
> Now, for some reason the base field is not set to NULL on
> Windows when
> pango_ot_info_get() gets called, even if the FT stream is
> not
> memory-based. (FreeType doesn't contain code to map fonts
> into memory
> on Windows, even if the API as such is almost as easy to
> use as mmap()
> &co.)
> 
> Freetype, a bit dangerously, uses the FT_StreamRec::base
> field
> internally while reading stuff from the font file, setting
> it in
> FT_Stream_EnterFrame() and resetting it to NULL in
> FT_Stream_ExitFrame(). Before pango_ot_info_get() gets
> called,
> FT_Stream_EnterFrame() has been called but the
> corresponding call to
> FT_Stream_ExitFrame() doesn't seem to have happened yet.
> 
> Whether this is a bug in FreeType, a Windows- or
> MinGW-specific
> problem, or whether Pango uses FreeType in some
> wrong/undefined way,
> no idea.
> 
> So face->stream->base is non-NULL and Pango thinks it
> is a
> memory-based stream even if base points to some random
> buffer with
> just a part of the font file.
> 
> A quick fix is to make the code in pango_ot_info_get()
> always use the
> "else" branch on Windows, and then indeed for instance in
> GIMP's text
> tool Arabic shaping works again, and hopefully also your
> Telugu
> problem is solved. At least the result looks different.
> 
> I now notice that FreeType 2.3.12 has been released, but it
> doesn't
> seem to work any differently.
> 
> --tml
> 


  
___
gtk-i18n-list mailing list
gtk-i18n-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-i18n-list


Re: Tutorial for using advanced text features in pango library

2010-03-01 Thread Ravi Kiran.
Hi Basil,

  I did not come across any tutorials for advance stuff. For the basic 
tutorials, here are the links

http://x11.gp2x.de/personal/google/
http://www.ibm.com/developerworks/library/l-u-pango2/

For advanced stuff, I use Google CodeSearch with the API I am looking for
This gets me code snippets. Since advanced stuff is usually strict in 
the order in which you call things, I use the flow as it is.

http://www.google.com/codesearch 

You can also look at the samples that I have cobbled together in the previous 
post. I used code snippets from Inkscape for that . 


Regds
Ravi Kiran


--- On Mon, 3/1/10, Basil Saji  wrote:

> From: Basil Saji 
> Subject: Tutorial for using advanced text features in pango library
> To: gtk-i18n-list@gnome.org
> Date: Monday, March 1, 2010, 8:13 AM
> Hi
> 
> Kindly let me know if there is any tutorial for using
> advanced text features in the pango library.
> 
> Basil
> 
> -- 
> The end is only the beginning
> 
> 
> -Inline Attachment Follows-
> 
> ___
> gtk-i18n-list mailing list
> gtk-i18n-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-i18n-list
> 


  
___
gtk-i18n-list mailing list
gtk-i18n-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-i18n-list


Re: PangoF2 in win32 not applying GSUB.

2010-03-01 Thread Tor Lillqvist
I think I found the cause to the problem. Pango assumes that the
FT_StreamRec::base field, if non-zero, points to the whole font file
read or mapped into memory. See pango_ot_info_get(). As such this is
correct according to FreeType documentation, as said in ftsystem.h,
"base :: For memory-based streams, this is the address of the first
stream byte in memory.  This field should always be set to NULL for
disk-based streams."

Now, for some reason the base field is not set to NULL on Windows when
pango_ot_info_get() gets called, even if the FT stream is not
memory-based. (FreeType doesn't contain code to map fonts into memory
on Windows, even if the API as such is almost as easy to use as mmap()
&co.)

Freetype, a bit dangerously, uses the FT_StreamRec::base field
internally while reading stuff from the font file, setting it in
FT_Stream_EnterFrame() and resetting it to NULL in
FT_Stream_ExitFrame(). Before pango_ot_info_get() gets called,
FT_Stream_EnterFrame() has been called but the corresponding call to
FT_Stream_ExitFrame() doesn't seem to have happened yet.

Whether this is a bug in FreeType, a Windows- or MinGW-specific
problem, or whether Pango uses FreeType in some wrong/undefined way,
no idea.

So face->stream->base is non-NULL and Pango thinks it is a
memory-based stream even if base points to some random buffer with
just a part of the font file.

A quick fix is to make the code in pango_ot_info_get() always use the
"else" branch on Windows, and then indeed for instance in GIMP's text
tool Arabic shaping works again, and hopefully also your Telugu
problem is solved. At least the result looks different.

I now notice that FreeType 2.3.12 has been released, but it doesn't
seem to work any differently.

--tml
___
gtk-i18n-list mailing list
gtk-i18n-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-i18n-list


Tutorial for using advanced text features in pango library

2010-03-01 Thread Basil Saji
Hi

Kindly let me know if there is any tutorial for using advanced text features
in the pango library.

Basil

-- 
The end is only the beginning
___
gtk-i18n-list mailing list
gtk-i18n-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-i18n-list