GD2, TrueType fonts, Greek text -> Provlima [SOLVED]

Nikos Zounis armado at hellug.gr
Tue Jan 21 13:05:02 EET 2003


To provlima lithike, i lisi dothike me iconv.

Euxaristw 





On Mon Jan 20, 2003 at 02:29:46AM +0200, DJ Art wrote:
> On Monday 20 January 2003 02:06, Nikos Zounis wrote:
> > Exw egkatastisei tin GD2 me freetype ipostirixi,
> > kai ola einai entaxei, diladi mporw apo tin GD
> > na deixw keimeno xrisimopoiontas true type
> > grammatoseires.
> >
> > To provlima einai oti deixnei me kinezika tous
> > ellinikous xaraktires.
> >
> > Yparxei tropos na mporo na xrisimopoiw me tin
> > entoli ImageTTFText oxi mono agglika grammata
> > alla kai ellinika, i akoma kalutera, kai
> > opoiadipote alli glwssa ipostirizetai apo tin
> > true type grammatoseira ?
> 
> το κλειδί στην συγκεκριμένη υπόθεση είναι να χρησιμοποιήσεις UTF-8.
> 
> Δηλαδή, έχουμε ας πούμε το textgd.c κάπως έτσι:
> 
> /* Compile this program using the following command:
> gcc -o textgd textgd.c iconv_string.c -liconv -lgd -lpng -lttf
> */
> 
> #include <gd.h>
> #include <gdfontl.h>
> #include <stdio.h>
> #include <string.h>
> #include "iconv_string.h"
> 
> int main() {
> 
> 	gdImagePtr im;
> 
> 	FILE *pngout;
> 	int black;
> 	int white;
> 	int brect[8];
> 	int x,y;
> 	char *err;
> 
> 	double sz = 40.;
> 	char *f = "/usr/X11R6/lib/X11/fonts/truetype/verdana.ttf";
> 
> 	const char* string = "ελληνικά";
> 	char* s = NULL;
> 
> 	iconv_string("UTF-8", "ISO-8859-7", string, string+strlen(string)+1, 
> &s, NULL);
> 
> 	err = gdImageStringFT(NULL,&brect[0],0,f,sz,0.,0,0,s);
> 	if (err) {fprintf(stderr,err); return 1;}
> 
> 	x = brect[2]-brect[6] + 6;
> 	y = brect[3]-brect[7] + 6;
> 	im = gdImageCreate(x,y);
> 
> 	black = gdImageColorAllocate(im, 0, 0, 0);
> 
> 	white = gdImageColorAllocate(im, 255, 255, 255);
> 
> 	x = 3 - brect[6];
> 	y = 3 - brect[7];
> 	err = gdImageStringFT(im,&brect[0],white,f,sz,0.0,x,y,s);
> 	if (err) {fprintf(stderr,err); return 1;}
> 
> 	pngout = fopen("djtest.png", "wb");
> 
> 	gdImagePng(im, pngout);
> 
> 	fclose(pngout);
> 
> 	gdImageDestroy(im);
> }
> 
> 
> το συγκεκριμένο προγραμματάκι χρησιμοποιεί το iconv για να μετατρέψει το 
> 
> const char* string = "ελληνικά";
> 
> σε UTF-8 encofing. Ας πούμε ότι το αρχείο είναι edited σε 8859-7 
> encoding.
> 
> έχεις πολλές επιλογές:
> 
> 1) Το χρησιμοποιείς το παραπάνω έτσι όπως είναι. Τα iconv_string.c και 
> iconv_string.h θα τα βρείς στο source tarball του iconv, μέσα σε ένα 
> φάκελο. (δεν θυμάμαι τώρα πως λέγεται ο φάκελος. είτε contrib, είτε 
> extras, είτε tools, κάπως έτσι).
> 
> 2) Δεν χρησιμοποιείς iconv, αλλά κάνεις edit το .c αρχείο με UTF-8 
> editor.
> 
> 3) Δεν χρησιμοποιείς iconv και γράφεις ένα ένα γράμμα με escape 
> sequence. π.χ.:
> 
> const char* string = "&320;&759;&758;";
> 
> κλπ κλπ ...
> 
> τώρα βέβαια, εγώ δεν χρησιμοποιήσα την function που ήθελες και το 
> παραπάνω προγραμματάκι το είχα φτιάξει με gd 1.8.4. Αλλά νομίζω πως 
> κάτι τέτοιο θα χρειαστείς να κάνεις και τώρα.
> 
> 
> -- 
> Kyritsis Athanasios <djart at hellug.gr>
> 
> - What's your ONE purpose in life ?
> - To explode, of course! ;-)
> 
> 
> -- 
> linux-greek-users mailing list -- http://lists.hellug.gr
> 

-- 
Nikos Zounis <armado at hellug.gr> http://members.hellug.gr/armado



More information about the Linux-greek-users mailing list