Messaggioda anonymous_be1147 » 05/07/2006, 14:54

prime_number ha scritto:Sigh, font.dir c'è. La sintassi dovrebbe essere giusta... Mi sa che è un problema di permessi

Mi pare strano però, se la directory dove lo installi è ~/.fonts... :?
Ma xlsfonts | grep -i Bonzai non ha proprio output?

Con quel comando che aevo trovato, XFontPath, secondo te posso "depitstare" la ricerca della X11 di font? La sintassi di eugenio era corretta a riguardo? conoci il comando?

Sì, penso lo si possa usare, solo che passando una sola directory credo che elimini tutte quelle di default. Forse sarebbe meglio aggiungerla usando prima XGetFontPath (comando man XGetFontPath per i dettagli). In ogni caso credo che come terzo parametro non dovresti usare 0 bensì 1, perché tale argomento indica il numero di directory nel path specificato.

Eventualmente potresti sbirciare i sorgenti del comando xset, per vedere un esempio di utilizzo di queste funzioni (cerca la parola directoryList). :D

Così per curiosità: cosa c'è nel tuo file fonts.dir?
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 99 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda eugenio.amitrano » 05/07/2006, 15:20

Mi dispiace non poterti aiutare troppo sulle librerie X11, fortunatamente c'e' stan molto piu' preparato.

Per imparare queste librerie penso che mi occorrono alcuni giorni di studio.

Cmq ho trovato su questo sito
http://213.92.21.88/meo/white/programmazione/ditelo.htm

il seguente listato:

Codice:
/*
 * iLoveYouX.c
 *
 */

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>

#include

Display *display;
int screen_num;

void main(argc, argv)
int argc;
char **argv;
{
   Window win;
   unsigned int width = 300, height = 300;
   int x =0, y =0;       
   unsigned int border_width = 4;
   unsigned int display_width, display_height;
   char *window_name = "I Love You X Window Program";
   int count;
   XEvent report;
   GC gc;
   XFontStruct *font_info;
   char *display_name = NULL;
   unsigned long valuemask = 0;
   XGCValues values;
   char *fontname = "9x15";

   if ( (display=XOpenDisplay(display_name)) == NULL )
   {
      (void) fprintf( stderr, "Cannot connect to X server %s\n",
            XDisplayName(display_name));
      exit( -1 );
   }

   screen_num = DefaultScreen(display);
   display_width = DisplayWidth(display, screen_num);
   display_height = DisplayHeight(display, screen_num);

   win = XCreateSimpleWindow(display, RootWindow(display,screen_num),
         x, y, width, height, border_width, BlackPixel(display,
         screen_num), WhitePixel(display,screen_num));

   XSelectInput(display, win, ExposureMask | KeyPressMask |
         ButtonPressMask | StructureNotifyMask);

   if ((*font_info = XLoadQueryFont(display,fontname)) == NULL)
   {
      (void) fprintf( stderr, "Cannot open 9x15 font\n");
      exit( -1 );
   }

   gc = XCreateGC(display, win, valuemask, &values);

   XSetFont(display, gc, font_info->fid);

   XMapWindow(display, win);

   while (1)  {
      XNextEvent(display, &report);
      switch  (report.type) {
      case Expose:
         if (report.xexpose.count != 0)
            break;

         for (i=0;i<3;i++)
            XDrawString(display, win, gc, (i+1)*10, (i+2)*10,
            "I love You!", strlen("I love You!");
         break;
      case ConfigureNotify:
         width = report.xconfigure.width;
         height = report.xconfigure.height;
         break;
      case ButtonPress:
      case KeyPress:
         XUnloadFont(display, font_info->fid);
         XFreeGC(display, gc);
         XCloseDisplay(display);
         exit(1);
      default:
         break;
      }
   }
}


credo che utilizzi una font standard 9x15.
A limite questo programma potrebbe essere un punto di partenza. (Non l'ho compilato)

Ora vi chiedo (stan e prime_number) se esistono delle font di default, senza aggiungerne altre ? (Per.es. 9x15)
E' necessario per te (prime_number), se esistono gia' font di default, aggiungerne altre ?
Se si, e se si riesce a compilare questo programma, si puo' provare ad aggiungere una font non standard.

In questo modo puoi anche prelevare le info da qui' e copiarle nel tuo programma e sono disponibile nel darti un aiuto a farlo.

Eugenio
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 374 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda anonymous_be1147 » 05/07/2006, 15:50

eugenio.amitrano ha scritto:vi chiedo (stan e prime_number) se esistono delle font di default, senza aggiungerne altre ? (Per.es. 9x15)

Che io sappia, ci sono alcune font preinstallate sul server, ma quale font usare dipende poi dal client (o dall'utente tramite i file di risorse). Teoricamente uno potrebbe anche collegarsi ad altri font-server su altre macchine, ovviamente aggiungendo il search path appropriato.

se si riesce a compilare questo programma, si puo' provare ad aggiungere una font non standard.

Compila (con qualche piccola modifica) e funziona anche utilizzando i caratteri Bonzai. :D

Immagine
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 100 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda eugenio.amitrano » 06/07/2006, 08:09

Ok! Grazie mille Stan,
vogliamo provare a passare a prime_number il tuo listato modificato ?
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 376 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda anonymous_be1147 » 06/07/2006, 08:24

Certo, ecco il sorgente:
Codice:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <stdio.h>

#define FONTNAME "-altsys-bonzai-medium-r-normal--0-270-0-0-p-0-ascii-0"

Display *display;
int screen_num;
     
int main(argc, argv)
int argc;
char **argv;
{
   Window win;
   unsigned int width = 300, height = 300;
   int x =0, y =0;
   unsigned int border_width = 4;
   unsigned int display_width, display_height;
   char *window_name = "I Love You X Window Program";
   int count;
   XEvent report;
   GC gc;
   XFontStruct *font_info;
   char *display_name = NULL;
   unsigned long valuemask = 0;
   XGCValues values;
   char *fontname = FONTNAME;

   if ( (display=XOpenDisplay(display_name)) == NULL )
   {
      (void) fprintf( stderr, "Cannot connect to X server %s\n",
            XDisplayName(display_name));
      exit( -1 );
   }

   screen_num = DefaultScreen(display);
   display_width = DisplayWidth(display, screen_num);
   display_height = DisplayHeight(display, screen_num);

   win = XCreateSimpleWindow(display, RootWindow(display,screen_num),
         x, y, width, height, border_width, BlackPixel(display,
         screen_num), WhitePixel(display,screen_num));

   XSelectInput(display, win, ExposureMask | KeyPressMask |
         ButtonPressMask | StructureNotifyMask);

   if ((font_info = XLoadQueryFont(display,fontname)) == NULL)
   {
      (void) fprintf( stderr, "Cannot open %s font\n", FONTNAME);
      exit( -1 );
   }

   gc = XCreateGC(display, win, valuemask, &values);

   XSetFont(display, gc, font_info->fid);

   XMapWindow(display, win);

   while (1)  {
      int i;
      XNextEvent(display, &report);
      switch  (report.type) {
      case Expose:
         if (report.xexpose.count != 0)
            break;

         for (i=0;i<3;i++)
            XDrawString(display, win, gc, (i+1)*20, (i+2)*20,
            "I love You!", strlen("I love You!"));
         break;
      case ConfigureNotify:
         width = report.xconfigure.width;
         height = report.xconfigure.height;
         break;
      case ButtonPress:
      case KeyPress:
         XUnloadFont(display, font_info->fid);
         XFreeGC(display, gc);
         XCloseDisplay(display);
         exit(1);
      default:
         break;
      }
   }

   return 0;
}
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 101 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda prime_number » 06/07/2006, 08:47

Ragazzi mi dispiace di dovermi fare impazzire :s Ho copiato e incollato il codice, compilato e tutto, ma quando vado per eseguirlo mi dice che non può aprire il font.

Vi metto il codice del mio MakeFile, nel caso fosse un errore di linking

LIBX11DIR=/usr/X11R6/lib
OPTM = -O2 -fno-strength-reduce
CC = gcc
CDEB= -DDEBUG=0

SYS_LIBS = -lm -L$(LIBX11DIR) -lX11
LOCAL_LIBS = #
DBG =# -g

LDFLAGS = $(SYS_LIBS) $(LOCAL_LIBS)

all: love2.out

love2.out: love2.o
$(CC) -o love2.out love2.o $(LDFLAGS)

love2.o: love2.c
$(CC) -c love2.c

clean::
rm -f *.out *.o *.*~ *~ core

Dovrò rassegnarmi all'arial... NUUUUUUUUU :S

Altrimentii il mio sospetto è, come dicevo prima, che sia un problema di permessi, nel senso che ssendo in un laboratorio non posso modificare le impostazioni della X11 che è comune..

Paola
www.greedy-bear.com : il mio blog di cucina italiana e finlandese.
Avatar utente
prime_number
Cannot live without
Cannot live without
 
Messaggio: 445 di 6148
Iscritto il: 17/09/2004, 14:20
Località: Helsinki

Messaggioda eugenio.amitrano » 06/07/2006, 09:05

Almeno e' assodato che non e' un problema causato dal tuo sorgente.

Hai provato con la font 9x15 ?
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 377 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda anonymous_be1147 » 06/07/2006, 09:50

Penso che con 9x15 dovrebbe funzionare perché è un font di sistema (è un alias a un fixed).

Probabilmente le dà errore proprio perché non trova il font specificato.
Comunque non ci dovrebbero essere problemi ad "installarlo" eseguendo questi comandi all'interno della directory del font bonzai.

Codice:
xset fp default && xset fp rehash
xset fp+ \`pwd\` && xset fp rehash
xfd \`grep -i -m 1 bonzai fonts.dir | cut -f 2 -d ' '\`

(attenzione agli accenti).

Se viene visualizzato il carattere basta allora sostituire nel programma il corrispondente nome o un suo alias e ricompilare.
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 102 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda eugenio.amitrano » 06/07/2006, 10:07

Speriamo bene....
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 379 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda prime_number » 07/07/2006, 11:31

Ok ragazzi, dopo ci provo, grazie mille!! Poi vi so dire.. al momento sono impigliata nel backtracking!!! ;)

Paola
www.greedy-bear.com : il mio blog di cucina italiana e finlandese.
Avatar utente
prime_number
Cannot live without
Cannot live without
 
Messaggio: 448 di 6148
Iscritto il: 17/09/2004, 14:20
Località: Helsinki

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite