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);
              }
        }
}

[EMAIL PROTECTED]:~/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)


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to