Re: A little polish of Thai shaper



Sorry. I forgot the attachment.

-Theppitak.

On Wed, Jun 13, 2001 at 03:20:03PM +0700, Theppitak Karoonboonyanan wrote:
> Hello,
> 
> I've just tested pango-0.16 with an iso10646 font, and the upper& lower
> vowels for Thai appear to be shifted to the left, as shown in :-
> 
>   http://linux.thai.net/~thep/2001_06_12_223941_shot.jpg
> 
> (Note that in the screenshot, I use an adjusted version of clearyu
> font to correct Thai glyphs. And I have already sent the patch to
> the author.)
> 
> I found that the case of iso10646 fonts are distinguished from other
> kinds of Thai fonts, which is not necessary here. I've tried fixing it,
> as in the attached patch, and the result is :-
> 
>   http://linux.thai.net/~thep/2001_06_12_235512_shot.jpg
> 
> Moreover, I found that the Thai shaper doesn't work with Windows
> TrueType fonts, which are Unicode-based, due to the ucs2tis()
> conversion we did in the past. Therefore, I think what we have
> to do next is revise it to be 16-bit, and the codepage classification
> might need auto detection, just like what ttmkfdir does, rather than
> the XLFD determining as I once proposed. Because the convention is
> 8-bit based.
> 
> But first, please check if the patch is OK.
> 
> Regards,
> -Theppitak.
> -- 
> Theppitak Karoonboonyanan
> Information Research and Development Division, NECTEC, Thailand
> (Was: Software and Language Engineering Laboratory)
> http://www.links.nectec.or.th/~thep/  mailto:theppitak nectec or th
> 
> _______________________________________________
> gtk-i18n-list mailing list
> gtk-i18n-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-i18n-list

--- thai-x.c	Tue Jun 12 23:25:00 2001
+++ thai-x.c.new	Wed Jun 13 14:53:55 2001
@@ -412,25 +412,11 @@
 
   if (combining)
     {
-      if (font_info->type == THAI_FONT_TIS ||
-	  font_info->type == THAI_FONT_TIS_MAC ||
-	  font_info->type == THAI_FONT_TIS_WIN)
-	{
-          glyphs->glyphs[index].geometry.width =
-		logical_rect.width + glyphs->glyphs[index - 1].geometry.width;
-          if (logical_rect.width > 0)
-	      glyphs->glyphs[index].geometry.x_offset = glyphs->glyphs[index - 1].geometry.width;
-          else
-	      glyphs->glyphs[index].geometry.x_offset = glyphs->glyphs[index].geometry.width;
-	  glyphs->glyphs[index - 1].geometry.width = 0;
-	}
-      else
-        {
-	  glyphs->glyphs[index].geometry.width =
-		MAX (logical_rect.width, glyphs->glyphs[index - 1].geometry.width);
-	  glyphs->glyphs[index - 1].geometry.width = 0;
-	  glyphs->glyphs[index].geometry.x_offset = 0;
-        }
+      glyphs->glyphs[index].geometry.x_offset =
+          glyphs->glyphs[index - 1].geometry.width;
+      glyphs->glyphs[index].geometry.width =
+          logical_rect.width + glyphs->glyphs[index - 1].geometry.width;
+      glyphs->glyphs[index - 1].geometry.width = 0;
     }
   else
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]