nanogui: Cyrillic font buit-in


Previous by date: 15 May 2008 06:18:39 -0000 nxlib and FOX Toolkit, Graham Henderson
Next by date: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Previous in thread: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Greg Haerr
Next in thread: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Cristian Chiarello

Subject: Re: [nanogui] Cyrillic font buit-in
From: Cristian Chiarello ####@####.####
Date: 15 May 2008 06:18:39 -0000
Message-Id: <482BD5F9.7030703@fimm.com>

Greg Haerr:
> : return MwExtTextOut(hdc, x, y, 0, NULL, lpszString, cbString, NULL, 
> : MWTF_UTF8 );
> : 
> : Debugging, the function is called but the symbols are still wrong (the 
> : same as MWTF_UC16).
> 
> You should write a test program that displays text in a window
> directly using this same function.  If it works, then there are
> issues with how the edit box control stores text.  Otherwise,
> there are still other issues.

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 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)
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?

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:18:39 -0000 nxlib and FOX Toolkit, Graham Henderson
Next by date: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Cristian Chiarello
Previous in thread: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Greg Haerr
Next in thread: 15 May 2008 06:18:39 -0000 Re: Cyrillic font buit-in, Cristian Chiarello


Powered by ezmlm-browse 0.20.