nanogui: Cyrillic font buit-in


Previous by date: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Next by date: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Previous in thread: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Next in thread: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello

Subject: Re: [nanogui] Cyrillic font buit-in
From: Cristian Chiarello ####@####.####
Date: 15 May 2008 06:21:04 -0000
Message-Id: <482BD67C.1010808@fimm.com>

Follow, Greg relpy. I have forgot to CC to the ML.
Sorry, Cristian.

> Starting from pcfdemo.c, I have write builtinfont.c that use GrText
> function that also call GdText function: I'm not be able to see the
> right symbols

You're switching from win32 to nano-X API, so you're
introducing new code paths to debug.  You should write
the demo in win32.


> but I have some new questions:
> 1) UTF8 use 1 2 and sometimes 4 bytes for one symbol: I use a char array
>   for store the text file. Is this correct? (see attach for source code)

The "tmp" variable should be short not int since you're specifying
UC16, not UC32.  Taking an address of an int doesn't guarantee
working especially on big-endian archs.



> 2) with fontforge I have open the .bdf and I have see that first
> cyrillic symbol is the 1024 (unicode). I have try to show this only one
> but I get an error (see attach char_utf8.txt). Why?

Pretty strange.  You might try turning off background painting
with GrSetGCUseBackground(FALSE) before the GrText
call, we need to debug why a drawhorzline call is being made
for text, I think its for text field area clearing...  a gdb stack
trace would be a good idea, there is something wrong here.
Could have something to do with the converted builtin bdf
file.  Make sure you're running CVS code by the way, since
there were some bugs fixed in the convbdf program some
months ago.

Regards,

Greg



>
> Tnx.
> Regards, Cristian
>


----------------------------------------------------------------------------
----


> /*
>  * pcfdemo - demonstrate PCF font loading for Nano-X
>  */
> #include <stdio.h>
> #include <stdlib.h>
> #define MWINCLUDECOLORS
> #include "nano-X.h"
>
> GR_FONT_ID font = 0;
> GR_WINDOW_ID main_wid;
> GR_FONT_INFO finfo;
>
> static void
> draw_string(void)
> {
> int count = 0;
> int x = 10;
> int y = 10;
> unsigned char ch;
> int tmp = 1024;
> GR_GC_ID gc = GrNewGC();
>
> GrSetGCFont(gc, font);
>
> GrSetGCForeground(gc, GR_RGB(255, 255, 255));
> GrSetGCBackground(gc, GR_RGB(0, 0, 0));
>
> printf("First char = %d, last char = %d\n", finfo.firstchar,
>        finfo.lastchar);
> printf("Max width = %d, max height = %d\n", finfo.maxwidth,
>        finfo.height);
>
> GrText(main_wid, gc, x, y, &tmp, 1, GR_TFTOP | GR_TFUC16); //this cause an
assert error
>
> /*
> for (ch = 0; ch < 255; ch++) {
> if (ch < finfo.firstchar || ch > finfo.lastchar)
> GrFillRect(main_wid, gc, x, y, finfo.maxwidth, finfo.height);
> else
> GrText(main_wid, gc, x, y, &ch, 1, GR_TFTOP | GR_TFASCII);
>
> if (++count >= 16) {
> x = 0;
> y += finfo.height;
> count = 0;
> } else
> x += finfo.maxwidth + 2;
> }
> */
> GrDestroyGC(gc);
> }
>
> static void drawFile(const char * fname){
> char buf[20]; //or int... unsigned?
> int count = 0;
> int x = 0;
> int y = 10;
> unsigned char ch;
> FILE * pfile;
>
> GR_GC_ID gc = GrNewGC();
>
> GrSetGCFont(gc, font);
>
> GrSetGCForeground(gc, GR_RGB(255, 255, 255));
> GrSetGCBackground(gc, GR_RGB(0, 0, 0));
>
> pfile = fopen(fname, "r");
> if( pfile > 0 ){
> fread(buf, 1, 20, pfile);
> GrText(main_wid, gc, x, y, buf, 20, GR_TFTOP | GR_TFUTF8);
> }
> GrDestroyGC(gc);
> }
>
> int
> main(int argc, char **argv)
> {
> int width, height;
>
> if (GrOpen() == -1)
> return (-1);
>
> font = GrCreateFont("DejaVuLGCSans", 19, 0); //This is a builtin fonts
generated by convbdf
> if (!font)
> printf("Unable to load font\n");
>
> GrGetFontInfo(font, &finfo);
>
> width = ((finfo.maxwidth + 2) * 16);
> height =
> (((finfo.lastchar - finfo.firstchar) / 16) +
> 5) * finfo.height;
>
> main_wid = GrNewWindowEx(GR_WM_PROPS_APPWINDOW, "builtinfont",
> GR_ROOT_WINDOW_ID, 0, 0, width, height, BLACK);
> GrSelectEvents(main_wid, GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_CLOSE_REQ);
> GrMapWindow(main_wid);
>
> while (1) {
> GR_EVENT event;
> GrGetNextEvent(&event);
>
> if (event.type == GR_EVENT_TYPE_EXPOSURE)
> draw_string();
> // drawFile("utf8.txt");
> // drawFile("unicode.txt");
>
>         if(event.type == GR_EVENT_TYPE_CLOSE_REQ) {
> GrClose();
> exit(0);
>       }
> }
> }
>


----------------------------------------------------------------------------
----


> tfb800@utfb800:~/src/x86/microwin_cvs/src/bin$ ./builtinfont
> XDefaultVisual:
>   Visual  class: TrueColor (4)
>              id: 35
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Screen RootDepth: 24
> Screen RootVisual
>   Visual  class: TrueColor (4)
>              id: 35
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Depth: 24
> Visual: 0
>   Visual  class: TrueColor (4)
>              id: 35
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 1
>   Visual  class: TrueColor (4)
>              id: 36
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 2
>   Visual  class: TrueColor (4)
>              id: 37
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 3
>   Visual  class: TrueColor (4)
>              id: 38
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 4
>   Visual  class: TrueColor (4)
>              id: 39
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 5
>   Visual  class: TrueColor (4)
>              id: 40
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 6
>   Visual  class: TrueColor (4)
>              id: 41
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 7
>   Visual  class: TrueColor (4)
>              id: 42
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 8
>   Visual  class: DirectColor (5)
>              id: 43
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 9
>   Visual  class: DirectColor (5)
>              id: 44
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 10
>   Visual  class: DirectColor (5)
>              id: 45
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 11
>   Visual  class: DirectColor (5)
>              id: 46
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 12
>   Visual  class: DirectColor (5)
>              id: 47
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 13
>   Visual  class: DirectColor (5)
>              id: 48
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 14
>   Visual  class: DirectColor (5)
>              id: 49
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Visual: 15
>   Visual  class: DirectColor (5)
>              id: 50
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Depth: 1
> Depth: 4
> Depth: 8
> Depth: 15
> Depth: 16
> Depth: 32
> Visual: 0
>   Visual  class: TrueColor (4)
>              id: 96
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> Selected Visual:
>   Visual  class: TrueColor (4)
>              id: 35
>    bits_per_rgb: 8
>     map_entries: 256
>        red_mask: 0x00ff0000
>      green_mask: 0x0000ff00
>       blue_mask: 0x000000ff
> createfont: (height == 0) found builtin font System (0)
> createfont: (height == 0) found builtin font System (0)
> fnt_createfont: DejaVuLGCSans,19 not found
> pcf_createfont: DejaVuLGCSans,19 not found
> createfont: (height != 0) using builtin font DejaVuLGCSans (4)
> First char = 32, last char = 65533
> Max width = 74, max height = 19
> builtinfont: /home/tfb800/src/x86/microwin_cvs/src/drivers/fblin32.c:68:
linear32_drawhorzline: Assertion `x2 >= x1' failed.
> Aborted (core dumped)
>




Previous by date: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Next by date: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Previous in thread: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Next in thread: 15 May 2008 06:21:04 -0000 Re: Cyrillic font buit-in, Cristian Chiarello


Powered by ezmlm-browse 0.20.