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