Please patch gdttf.c

From: Date: Wed, 05 Jul 2000 21:35:42 +0000
Subject: Please patch gdttf.c
References: 1  Groups: php.dev php.general 
Request: Send a blank email to php-dev+get-23637@lists.php.net to get a copy of this message
Hi there, I'm starting by posting this here... if there is a better place please let me know... I've been having problems with the TTF functions in gdttf.c for some time now... Since php 3.0.7 actually. At that time somebody helped me out with a patch which fixed the problem as I am not a Truetype programmer... I assumed this patch would have been applied to the next version... it was not... So finally when 3.0.11 came out and the patch was still not put in the cvs I sent the code and was assured it would be... Still it was not. Currently 4.0.1 still has these problems and I am getting tired of manually applying the changes to the source tree each time a new version comes out. Please, somebody apply this patch to gdttf.c so that it will work with all the TTF files in our database. If I can post this somewhere else where it will be of more use please let me know... thanks, Rob Goodwin developer www.myfonts.com this is the diff for the gdttf.c found in 4.0.1 ============== 83c83,84 < TT_CharMap char_map; --- > TT_CharMap char_map_Unicode, char_map_Big5, char_map_Roman; > int have_char_map_Unicode, have_char_map_Big5, have_char_map_Roman; 155a157,158 > > 331c334 < int i, n; --- > int i, n, map_found; 374a378,381 > map_found = 0; > a->have_char_map_Unicode = 0; > a->have_char_map_Big5 = 0; > a->have_char_map_Roman = 0; 388,400c395,415 < TT_Get_CharMap_ID(a->face, i, &platform, &encoding); < if ((platform == 3 && encoding == 1) || < (platform == 2 && encoding == 1) || < (platform == 0)) { < TT_Get_CharMap(a->face, i, &a->char_map); < i = n+1; < } < } < < if (i == n) { < *error = "Sorry, but this font doesn't contain any Unicode mapping table"; < return NULL; < } --- > TT_Get_CharMap_ID(a->face, i, &platform, &encoding); > if ((platform == 3 && encoding == 1) /* Windows Unicode */ > || (platform == 0 && encoding == 0)) { /* ?? Unicode */ > TT_Get_CharMap(a->face, i, &a->char_map_Unicode); > a->have_char_map_Unicode = 1; > map_found++; > } else if (platform == 3 && encoding == 4) { /* Windows Big5 */ > TT_Get_CharMap(a->face, i, &a->char_map_Big5); > a->have_char_map_Big5 = 1; > map_found++; > } else if (platform == 1 && encoding == 0) { /* Apple Roman */ > TT_Get_CharMap(a->face, i, &a->char_map_Roman); > a->have_char_map_Roman = 1; > map_found++; > } > } > > if (! map_found) { > *error = "Unable to find a CharMap that I can handle"; > return NULL; > } 465c480,486 < glyph_code = TT_Char_Index(b->font->char_map, a->character); --- > if (b->font->have_char_map_Unicode) { > glyph_code = TT_Char_Index(b->font->char_map_Unicode, a->character); > } else if (a->character < 161 && b->font->have_char_map_Roman) { > glyph_code = TT_Char_Index(b->font->char_map_Roman, a->character); > } else if ( b->font->have_char_map_Big5) { > glyph_code = TT_Char_Index(b->font->char_map_Big5, a->character); > } 660,661c681,697 < len = gdTcl_UtfToUniChar(*next, &ch); < *next += len; --- > if (font->have_char_map_Unicode) { /* use UTF-8 mapping from ASCII */ > len = gdTcl_UtfToUniChar(*next, &ch); > *next += len; > } else { > /* > * Big 5 mapping: > * use "JIS-8 half-width katakana" coding from 8-bit characters. Ref: > * > ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/japan.inf-032092.sjs > */ > ch = (**next) & 255; /* don't extend sign */ > (*next)++; > if (ch >= 161 /* first code of JIS-8 pair */ > && **next) { /* don't advance past '\0' */ > ch = (ch * 256) + **next; > (*next)++; > } > }

« previous php.dev (#23637) next »