# HG changeset patch # User John Tsiombikas # Date 1316151066 -10800 # Node ID 17fed026b24b995438afadfbb76191cd3b3affe8 # Parent fe0c54e574aedb97f00676ec996469b2dd21b315 done with the unicode sample diff -r fe0c54e574ae -r 17fed026b24b examples/Makefile --- a/examples/Makefile Thu Sep 15 23:32:39 2011 +0300 +++ b/examples/Makefile Fri Sep 16 08:31:06 2011 +0300 @@ -1,15 +1,24 @@ -fonts = fonts/FreeSerif.ttf fonts/klingon.ttf +fonts = fonts/linux-libertine.ttf fonts/klingon.ttf fonts/sazanami-mincho.ttf .PHONY: all all: $(fonts) cd simple; $(MAKE) + cd unicode; $(MAKE) -fonts/FreeSerif.ttf: +fonts/linux-libertine.ttf: mkdir -p fonts - wget http://ftp.gnu.org/gnu/freefont/freefont-ttf-20100919.tar.gz - tar xzvf freefont-ttf-20100919.tar.gz - rm -f freefont-ttf-20100919.tar.gz - cp freefont-20100919/FreeSerif.ttf $@ + wget http://downloads.sourceforge.net/project/linuxlibertine/linuxlibertine/5.1.3-2/LinLibertineTTF_5.1.3_2011_06_21.tgz + mkdir -p linlibertine + cd linlibertine; tar xzvf ../LinLibertineTTF_5.1.3_2011_06_21.tgz + rm -f LinLibertineTTF_5.1.3_2011_06_21.tgz + cp linlibertine/LinLibertine_R.ttf $@ + +fonts/sazanami-mincho.ttf: + mkdir -p fonts + wget -O sazanami-20040629.tar.bz2 'http://sourceforge.jp/frs/redir.php?m=iij&f=/efont/10087/sazanami-20040629.tar.bz2' + tar xjvf sazanami-20040629.tar.bz2 + rm -f sazanami-20040629.tar.bz2 + cp sazanami-20040629/sazanami-mincho.ttf $@ fonts/klingon.ttf: mkdir -p fonts diff -r fe0c54e574ae -r 17fed026b24b examples/unicode/Makefile --- a/examples/unicode/Makefile Thu Sep 15 23:32:39 2011 +0300 +++ b/examples/unicode/Makefile Fri Sep 16 08:31:06 2011 +0300 @@ -6,7 +6,7 @@ LDFLAGS = -L. -ldrawtext $(libgl) lib_so = libdrawtext.so -fonts = serif.ttf klingon.ttf +fonts = serif.ttf cjk.ttf klingon.ttf ifeq ($(shell uname -s), Darwin) libgl = -framework OpenGL -framework GLUT @@ -21,7 +21,11 @@ rm -f $@ ln -s $< $@ -serif.ttf: ../fonts/FreeSerif.ttf +serif.ttf: ../fonts/linux-libertine.ttf + rm -f $@ + ln -s $< $@ + +cjk.ttf: ../fonts/sazanami-mincho.ttf rm -f $@ ln -s $< $@ diff -r fe0c54e574ae -r 17fed026b24b examples/unicode/unicode.c --- a/examples/unicode/unicode.c Thu Sep 15 23:32:39 2011 +0300 +++ b/examples/unicode/unicode.c Fri Sep 16 08:31:06 2011 +0300 @@ -20,40 +20,47 @@ /* XXX fonts are represented by the opaque struct dtx_font type, so you * need to create at least one with dtx_open_font (see main). */ -struct dtx_font *freeserif, *klingon; +struct dtx_font *fntmain, *fntcjk, *fntklingon; -#define FONT_SIZE 24 +#define FONT_SZ 24 int main(int argc, char **argv) { glutInit(&argc, argv); glutInitWindowSize(512, 384); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("libdrawtext example: simple"); + glutCreateWindow("libdrawtext example: unicode"); glutDisplayFunc(disp); glutReshapeFunc(reshape); glutKeyboardFunc(keyb); /* XXX dtx_open_font opens a font file and returns a pointer to dtx_font */ - if(!(freeserif = dtx_open_font("serif.ttf", 0))) { + if(!(fntmain = dtx_open_font("serif.ttf", 0))) { return 1; } - dtx_prepare_range(freeserif, FONT_SIZE, 0, 256); /* prepare ASCII */ - dtx_prepare_range(freeserif, FONT_SIZE, 0x0370, 0x0400); /* greek */ - dtx_prepare_range(freeserif, FONT_SIZE, 0x4e00, 0x9fc0); /* kanji */ + dtx_prepare_range(fntmain, FONT_SZ, 0, 256); /* ASCII */ + dtx_prepare_range(fntmain, FONT_SZ, 0x370, 0x400); /* greek */ + dtx_prepare_range(fntmain, FONT_SZ, 0x400, 0x500); /* cyrilic */ - if(!(klingon = dtx_open_font("klingon.ttf", 0))) { + if(!(fntcjk = dtx_open_font("cjk.ttf", 0))) { return 1; } - dtx_prepare_range(klingon, FONT_SIZE, 0xf8d0, 0xf900); + dtx_prepare_range(fntcjk, FONT_SZ, 0x4e00, 0x9fc0); /* kanji */ + + if(!(fntklingon = dtx_open_font("klingon.ttf", 0))) { + return 1; + } + dtx_prepare_range(fntklingon, FONT_SZ, 0xf8d0, 0xf900); /* klingon */ glutMainLoop(); return 0; } -const char *ascii_text = "Hello world!"; +/* various UTF-8 strings */ +const char *english_text = "Hello world!"; const char *greek_text = "\xce\x9a\xce\xbf\xcf\x8d\xcf\x81\xce\xb1\xcf\x83\xce\xb7"; +const char *russian_text = "\xd0\xa0\xd0\xb0\xd1\x81\xd1\x86\xd0\xb2\xd0\xb5\xd1\x82\xd0\xb0\xd0\xbb\xd0\xb8 \xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xbd\xd0\xb8 \xd0\xb8 \xd0\xb3\xd1\x80\xd1\x83\xd1\x88\xd0\xb8"; const char *kanji_text = "\xe4\xb9\x97\xe4\xba\xac"; const char *klingon_text = "\xef\xa3\xa3\xef\xa3\x9d\xef\xa3\x93\xef\xa3\x98\xef\xa3\x9d\xef\xa3\xa2\xef\xa3\xa1\xef\xa3\x9d\xef\xa3\x99"; @@ -65,21 +72,26 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - dtx_use_font(freeserif, FONT_SIZE); + dtx_use_font(fntmain, FONT_SZ); glTranslatef(-200, 150, 0); /* XXX call dtx_string to draw utf-8 text. * any transformations and the current color apply */ - dtx_string(ascii_text); + dtx_string(english_text); glTranslatef(0, -40, 0); dtx_string(greek_text); glTranslatef(0, -40, 0); + dtx_string(russian_text); + + dtx_use_font(fntcjk, FONT_SZ); + + glTranslatef(0, -40, 0); dtx_string(kanji_text); - dtx_use_font(klingon, FONT_SIZE); + dtx_use_font(fntklingon, FONT_SZ); glTranslatef(0, -40, 0); dtx_string(klingon_text); diff -r fe0c54e574ae -r 17fed026b24b src/utf8.c --- a/src/utf8.c Thu Sep 15 23:32:39 2011 +0300 +++ b/src/utf8.c Fri Sep 16 08:31:06 2011 +0300 @@ -49,8 +49,6 @@ mask = 0x3f; shift = 6; } - - printf("code: %x\n", code); return code; }