Impostare un certo font nella X11

Messaggioda prime_number » 03/07/2006, 13:39

Ciao... io vorrei impostare un font scelto da me. Uso la X11 in C per la grafica. ci è stato fornito questa funzione:

void SetFont(int ic)
{
switch (ic)
{
case 0: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--10*");
break;
case 1: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--12*");
break;
case 2: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--14*");
break;
case 3: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--18*");
break;
case 4: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--24*");
break;
case 5: font=XLoadFont(dpy,"-adobe-times-bold-r-normal--34*");
break;
}
XSetFont(dpy,gc,font);
XFlush(dpy);
}

Immagino dovrei cambiare "-adobe-times-bold-r-normal--34*" ma non conosco il significato di questa scrittura. Come imposto la cosa?

Grazie e scusate se vi tormento sempre per questo benedetto C, ma spesso guardando nelle librerie che trovo in internet non riesco a capire bene come muovermi!!

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

Messaggioda enigmagame » 03/07/2006, 18:49

Ciao :-D
spero che questo link di possa essere utile:
http://home.att.ne.jp/omega/kikuchi/067.html (almeno come spunto)
In linea di massima sono le impostazioni del font, quindi il nome, la dimensione, le proprietà (grassetto, sottolineato...)

Ciao!
enigmagame
Average Member
Average Member
 
Messaggio: 152 di 729
Iscritto il: 22/07/2005, 16:27
Località: Mantova

Messaggioda prime_number » 04/07/2006, 16:42

Ti ringrazio... solo che io ho un Font scaricato da me e devo usarlo con la X11.. non so dove iinstallarlo...!!

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

Messaggioda anonymous_be1147 » 04/07/2006, 17:58

prime_number ha scritto:ho un Font scaricato da me e devo usarlo con la X11.. non so dove iinstallarlo...!!

Se il tuo sistema usa fontconfig (cioè hai i comandi fc-cache, ecc.), dovrebbe essere sufficiente installarlo nella directory ~/.fonts e poi dare il comando fc-cache. Altrimenti, se non ricordo male, dovrebbe essere sufficiente aggiungere run-time il path con il comando xset fp+ <path> e xset fp rehash.

Controlla poi con xlsfonts o xfd, fc-list se viene visto dal server X.
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 97 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda prime_number » 05/07/2006, 09:22

dunque... ho seguito il primo procedimento ( usando fc-cache) ma poi il mio font non compare nella xlsfonts.

Il procedimento alternativo non l'ho capito, nella shell dovrei dare il comando xset fp ./fonts/bonzai.ttf ? O è diverso?

Ti ringrazio!!

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

Messaggioda prime_number » 05/07/2006, 09:36

Altrimenti secondo te potrei usare XSetFontPath(dpy, "~/.fonts", 0); ? Solo che mi dice che l'argomento 2 è tipo puntatore incompatibile... Non so bene come metterlo... :S

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

Messaggioda eugenio.amitrano » 05/07/2006, 11:14

Non conosco questa funzione e questa libreria che stai utilizzando, pero' ho visto su internet la sintassi di XSetFontPath.
Il secondo parametro e' di tipo (char **), quindi non puoi passargli quella costante ma l'indirizzo del puntatore della costante.

Esempio pratico:

char *stringa;
...
...
stringa = "~/.fonts";
XSetFontPath(dpy, &stringa, 0);

cosi' funziona sintatticamente, nel senso che il compilatore non ti rileva errori, pero' non so dirti se e' quello il valore che si aspetta la funzione. (Dovrei studiarmi un po' la libreria).

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

Messaggioda prime_number » 05/07/2006, 11:35

Eh facendo come dici tu, compila ma durante l'esecuzione mi dà quest'errore:
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 45 (X_OpenFont)
Serial number of failed request: 8
Current serial number in output stream: 16

Questa è la funzione per intero: i nomi he ho dato tra le virgolette in XLoadFont() non so cosa significhino in realtà :P . Sono andata nella cartella dove è stato installato il font (che è appunto /.font) e in una file di teto c'era scriitta quella riga di testo. mi pareva compatibile con quella data dal professore. Devo forse cambiare qualcosa al suo interno? Oppure l'errore che mi dà non dipende da questo? Boooh!

Grazie

Paola

void SetFont(int ic)
{
char *stringa;
stringa="~/.fonts";
XSetFontPath(dpy,&stringa , 0);
switch (ic)
{
case 0: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-10*");
break;
case 1: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-12*");
break;
case 2: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-14*");
break;
case 3: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-18*");
break;
case 4: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-24*");
break;
case 5: font=XLoadFont(dpy,"-Altsys-Bonzai-Medium-r-Normal--0-0-0-0-p-0-iso10646-34*");
break;
}
XSetFont(dpy,gc,font);
XFlush(dpy);
}
www.greedy-bear.com : il mio blog di cucina italiana e finlandese.
Avatar utente
prime_number
Cannot live without
Cannot live without
 
Messaggio: 442 di 6148
Iscritto il: 17/09/2004, 14:20
Località: Helsinki

Messaggioda anonymous_be1147 » 05/07/2006, 12:55

prime_number ha scritto:nella shell dovrei dare il comando xset fp ./fonts/bonzai.ttf ?

E' questo però devi specificare il percorso assoluto. Inoltre (importante) deve esserci nella stessa directory un file di nome fonts.dir, altrimenti lo devi creare tu con il comando ttmkfdir -c -f Bonzai > fonts.dir (dato internamente alla directory con il font).

Poi dai i comandi detti prima (xset fp+ <bonzai_font_path>; xset fp rehash) e quindi usi xfd o xfontsel per verificare che ci sia effettivamente il font.
Se è tutto ok puoi anche aggiungere il percorso al file di configurazione del server X.

Se il font è questo http://cooltext.com/Download/Font/bonzai.zip, la procedura sopra funziona sul mio sistema.
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 98 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda prime_number » 05/07/2006, 13:53

Sigh, font.dir c'è. La sintassi dovrebbe essere giusta... Mi sa che è un problema di permessi, sono in un laboratorio!! :S

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?

Thanks! siete i miei babysitter ormai voi 2 :P

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

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite