begin process at 2012 02 15 21:11:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > FONT 'O' MATIC

FONT 'O' MATIC


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :fonts, open type, lecteur, fontomatic, inwebo Niveau :Initié Date de création :17/09/2008 Date de mise à jour :22/10/2009 15:54:24 Vu / téléchargé :6 887 / 157

Auteur : inwebo

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Version BETA octobre 09.
Lecteur de police de caractère vectorielle en ligne. Nécessite PHP5, la bibliothèque GD2 avec le support PNG et true type font d'installée.

Déposer vos polices dans l'application et elle se charge du reste. Testé uniquement sous firefox en ce qui concerne l'affichage (1024*768 minimum)
- Installation automatique.
- URL Rewriting même chez free.fr, grâce au module apache MultiViews (cf conclusion).
- Création d'appercus.
- Création à la volée d'appercus avec un texte utilisateur.
- Création d'appercus de chaque caractère ascii contenus dans la police.
- Utilisation du CSS pour la mise en forme.

Démonstration, notez l'url rewriting : http://fontomatic.free.fr/
Si vous utilisez une ancienne version de Font'O'Matic, effacez tous les fichiers présents à la racine de votre installation précédente. Vous pouvez écraser le reste.

Je suis à l'écoute de tous commentaires.

Site web :
http://inwebo.free.fr/fontomatic.php5

Source

  • //Création des caractères ascii exemple
  • function Create_preview_char_png()
  • {
  • // Parcours de tous les glyphes ASCII
  • for($i=33;$i<=126;$i++)
  • {
  • // Formatage du nom
  • $nbre_zero = 4 - strlen($i);
  • ($nbre_zero %2 == 0) ? $ascii_propre = substr_replace($i, "00", 0, 0) :$ascii_propre = substr_replace($i, "0", 0, 0);
  • $char = chr($i);
  • // Calcul de la largeur hauteur d'un charactere
  • $arf = imagettfbbox(60,0,$this->chemin_font,chr($i));
  • $largeur = (abs($arf[2]) + abs($arf[0]));
  • $hauteur = (abs($arf[5]) + abs($arf[3]));
  • // Test $largeur pour creation de l'image principale $image_temp_main
  • ($largeur<60)?$image_temp_main = imagecreate(69,168):$image_temp_main = imagecreate($largeur+10,168);
  • // Traitement image principale $image_temp_main
  • $bgc = imagecolorallocate($image_temp_main, 255, 255, 255);
  • $tc = imagecolorallocate($image_temp_main, 0, 0, 0);
  • // Récupere l'en tête $image_temp_header et on le colle dans l'image principale $image_temp_main
  • $image_temp_header = imagecreatefrompng($this->root_previews.$ascii_propre.'.png');
  • $test = imagecopy($image_temp_main,$image_temp_header,0,0,0,0,42,25);
  • // Crée l'image $image_temp_char contenant le chararctère en laissant une marge autour
  • $image_temp_char = imagecreate($largeur+2,$hauteur+2);
  • $bgc2 = imagecolorallocate($image_temp_char, 255, 255, 255);
  • $tc2 = imagecolorallocate($image_temp_char, 0, 0, 0);
  • // Ecriture du charactere dans $image_temp_char
  • $temp = @imagettftext($image_temp_char, 60, 0, abs($arf[0]), abs($arf[5]), $tc2,$this->chemin_font,chr($i));
  • // Calcul des coordonnées pour la fusion de $image_temp_char dans $image_temp_main
  • // Centre les glyphes
  • ($largeur<60) ? $dest_x = (69-$largeur)/2 : $dest_x = 0;
  • // Coordonnée constante Origine Haut gauche de l'image source
  • $dest_y =60;
  • // Fusionne $image_temp_main et $image_temp_char
  • $test2=imagecopy($image_temp_main,$image_temp_char,$dest_x,$dest_y,0,0,$largeur+7,$hauteur+10);
  • imagepng($image_temp_main,$this->chemin . $ascii_propre . '.png');
  • imagedestroy($image_temp_main);
  • imagedestroy($image_temp_header);
  • imagedestroy($image_temp_char);
  • unset($arf, $temp, $bgc, $tc, $bgc2, $tc2, $image_temp_main, $image_temp_header, $image_temp_char, $ascii_propre, $test, $test2, $nbre_zero);
  • }
  • }
//Création des caractères ascii exemple

	function Create_preview_char_png()
	{
                        // Parcours de tous les glyphes ASCII
			for($i=33;$i<=126;$i++)
			{
				// Formatage du nom
				$nbre_zero = 4 - strlen($i);
				($nbre_zero %2 == 0) ?	$ascii_propre = substr_replace($i, "00", 0, 0) :$ascii_propre = substr_replace($i, "0", 0, 0);
				$char = chr($i);
				
				// Calcul de la largeur hauteur d'un charactere
				$arf = imagettfbbox(60,0,$this->chemin_font,chr($i));
				$largeur = (abs($arf[2]) + abs($arf[0]));
				$hauteur = (abs($arf[5]) + abs($arf[3]));

				// Test $largeur pour creation de l'image principale $image_temp_main
				($largeur<60)?$image_temp_main = imagecreate(69,168):$image_temp_main = imagecreate($largeur+10,168);

				// Traitement image principale $image_temp_main
				$bgc = imagecolorallocate($image_temp_main, 255, 255, 255);
				$tc  = imagecolorallocate($image_temp_main, 0, 0, 0);
				// Récupere l'en tête $image_temp_header et on le colle dans l'image principale $image_temp_main
				$image_temp_header = imagecreatefrompng($this->root_previews.$ascii_propre.'.png');
				$test = imagecopy($image_temp_main,$image_temp_header,0,0,0,0,42,25);

				// Crée l'image $image_temp_char contenant le chararctère en laissant une marge autour			
				$image_temp_char = imagecreate($largeur+2,$hauteur+2);
				$bgc2 = imagecolorallocate($image_temp_char, 255, 255, 255);
				$tc2  = imagecolorallocate($image_temp_char, 0, 0, 0);
				// Ecriture du charactere dans $image_temp_char
				$temp = @imagettftext($image_temp_char, 60, 0, abs($arf[0]), abs($arf[5]), $tc2,$this->chemin_font,chr($i));
				// Calcul des coordonnées pour la fusion de $image_temp_char dans $image_temp_main
				// Centre les glyphes
				($largeur<60) ? $dest_x = (69-$largeur)/2 : $dest_x = 0;
				
				// Coordonnée constante Origine Haut gauche de l'image source
				$dest_y =60;
				// Fusionne $image_temp_main et $image_temp_char
				$test2=imagecopy($image_temp_main,$image_temp_char,$dest_x,$dest_y,0,0,$largeur+7,$hauteur+10);
				
				imagepng($image_temp_main,$this->chemin . $ascii_propre . '.png');
				
				imagedestroy($image_temp_main);
				imagedestroy($image_temp_header);
				imagedestroy($image_temp_char);
				unset($arf, $temp, $bgc, $tc, $bgc2, $tc2, $image_temp_main, $image_temp_header, $image_temp_char, $ascii_propre, $test, $test2, $nbre_zero);

			}
	}

 Conclusion

Je vous conseils vivement d'activer le module apache Multiviews (http://matrix.samizdat.net/serveurs/www/apache_1. 3/content-negotiation.html). Apache utilise un algorithme pour déterminer la variante la plus "appropriée" en fonction de la requête cliente (si elle existe). Vulgairement, au lieu d'avoir une adresse du type http://localhost/test/index.php?var=une_variable&v ar2=une_autre_variable, nous pouvons avoir cette adresse sous la forme http://localhost/test/index/une_variable/une_autre _variable/. De l'URL rewriting en quelque sorte. Activé par défaut chez free.fr et beaucoup d'autres. A activer avec easyphp 3.0.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 septembre 2008 23:02:42 :
- MAJ syteme requirements
18 septembre 2008 11:04:31 :
- MAJ source
18 septembre 2008 12:40:14 :
- Tout le code est commenté. - Valide HTML 4.01 Transitional.
18 septembre 2008 12:43:31 :
- MAJ
02 décembre 2008 14:59:49 :
- Passage PHP5 - Nom des class plus "logique" - Correction du code (x5 plus rapide) - Changement interface - Un soupçon de javascript
02 décembre 2008 15:02:38 :
- Passage à PHP5 - Un soupçon de javascript - Modification du code (x5 plus rapide) - Nom des class plus "logique" - Header mis en cache
28 avril 2009 17:42:27 :
- URL rewriting (si multiviews activé) - Séparation traitement affichage - Amélioration de la navigation - Pagination (utlie lorsque de nombreuses polices sont présentes) - Beaucoup d'erreurs (Logique, syntax, algo ...)! - Code entièrement commenté - Amèlioration du CSS
03 mai 2009 00:01:31 :
- Test du formulaire d'installation via Java script pour alléger le serveur. - Création d'une seule et unique image contenant tous les caractères ASCII, afin de limité les requêtes http. - Utilisable sur free.fr
08 mai 2009 17:44:38 :
- correction bug (merci trmaher) - Ajout readme
22 octobre 2009 15:42:11 :
- Réorganisation dossiers. - Correction syntaxe balises meta du header. - Index valid xHTML 1.0. - CSS valid 2.1. - Inclusion de footer.php5. - Correction lien retour page d'accueil. - Test de quantité de mémoire nécessaire. - Corrections CSS mineures. - Corrections inclusions fichiers (certains étaient inclus sans raisons !). - Correction de la pagination, et ajout des balises title des liens. - Site web : http://inwebo.free.fr/fontomatic.php5
22 octobre 2009 15:54:24 :
- Fichiers non nécessaire présent dans le zip.

 Sources du même auteur

Source avec Zip MY.DEVIANTART API
Source avec Zip Source avec une capture MY.BOOKMARKS
Source avec Zip Source avec une capture MY.EXCEPTION
Source avec Zip MY.REMOTE : SERVEUR D'OBJETS PHP5
Source avec Zip Source avec une capture MY.PICS : TRAITEMENT D'IMAGES NON DESTRUCTIF

 Sources de la même categorie

Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

 Sources en rapport avec celle ci

Source avec Zip MY.DEVIANTART API par inwebo
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip Source avec une capture MY.EXCEPTION par inwebo
Source avec Zip MY.REMOTE : SERVEUR D'OBJETS PHP5 par inwebo
Source avec Zip Source avec une capture MY.PICS : TRAITEMENT D'IMAGES NON DESTRUCTIF par inwebo

Commentaires et avis

Commentaire de djmmix le 18/09/2008 13:25:50 10/10

salut j'ai tester la source sous IE7 sa marche tres bien je ne vois pas pourquoi tu dit quel ne marche que sous firefox Oo  

sinon très sympatique pour ce faire un site exclusivement tourner sur les fonts tout s'install rien a faire merveilleux, en plus la possibilité de la tester en ligne la police pas mal :)

Commentaire de inwebo le 18/09/2008 13:42:44

Merci pour ce retour, tout à l'air okay alors ! même sous IE (que je n'ai pas tester).

En tout cas merci d'avoir pris le temps de test !
Après validation de cette étape du projet, une V2 est prévue.

Commentaire de GillesWebmaster le 19/09/2008 11:55:05 9/10

Bonjour,
L'idée m'est excellente; mais pourquoi donc avez vous intitulé  votre source "Police Secours"?

Commentaire de inwebo le 19/09/2008 12:11:55

Bonjour,

Hmm je dois avouer que pour trouvé des "noms" pour mes différents projets je suis plutôt naze. Et en plus de ça la typographie c'est pas mon truc nom plus. Alors à chaque fois que je fait un template sous photoshop je ne sais jamais quelle police choisir ! C'est ma petite BDD de typos que j'appelle au secours ! Voilà par contre si vous avez de meilleurs idées je suis preneur !

Merci d'avoir pris le temps d'étudier ce petit prog'
@+ bon code

Commentaire de trmaher le 05/05/2009 02:38:20

bonsoir,

j'ai essayé d'installer votre code via le fichier <u> installform.html</u> mais rien n'a se passé.

y a t'il une méthode spécifique pour l'installer.

merci d'avance.

Commentaire de trmaher le 05/05/2009 02:41:04

re bonsoir,
dis-mois comment peut-on activer le module apache Multiviews. A quoi sert en fait envers votre codes.

A+

Commentaire de inwebo le 05/05/2009 14:59:19

Bonjour, bonsoir

C'est vrai que je n'ai pas spécifié la méthode pour installer l'application, mes excuses.

Installation :

- L'installation se déroule automatiquement depuis la page index. Connectez vous simplement (pour du local) sur http://localhost/votre_repertoire_contenant_l_application/, ou http://localhost/votre_repertoire_contenant_l_application/index (si multiviews est activé), sinon http://localhost/votre_repertoire_contenant_l_application/index.php5

NB : L'extension .php5 est spécifié pour activé le support de php5 sur les serveurs de free.fr, cette extension n'est pas reconnue par le serveur apache fournit avec Debian par ex, il vous faudra ajouter l'extension manuellement dans les fichier de conf.

Multiviews :

Je me suis sans doute mal exprimé.

- Tout d'abord un peu de lecture : http://matrix.samizdat.net/serveurs/www/apache_1.3/content-negotiation.html
- Je suis parti du principe que
    1 - Je suis "obligé" pour l'instant d'utiliser l'hébergement gratuit de free.fr
    2 - Chez free.fr l'URL Rewriting est désactivé(e?)

- Traduction vulgaire : pour atteindre une page nous devons généralement la nommée explicitement (ex sur votre localhost : http://localhost/test/mes_photos.php pour atteindre la page mes_photos.php, http://localhost/test/mes_fichiers.php, pour atteindre la page mes_fichiers.php etc ...), mais grâce a multiviews, nous pouvons éviter de la nommée explicitement (ex http://localhost/test/mes_photos pour atteindre la page mes_photos.php, http://localhost/test/mes_fichiers  pour atteindre la page mes_fichiers.php), apache se débrouille pour trouvé le fichier.
Multiviews me permet de passer des variables dans l'url sans utliser la forme POST (http://localhost/test/mes_photos.php?categorie=plage&date=2008), ce qui donnera http://localhost/test/mes_photos/plage/2008/ ,apache recherche une fichier nommé mes_fichiers dans le répertoire test et l'affiche, le reste de la chaine est ignorée. Mais nous récupérons cette chaine (plage/2008/) car en amont nous avons définit arbitrairement que le premier "morceau" de la chaine correspond à la categorie et que le second correspond à la date nous avons donc nos deux variables).

Gains :

- Les noms des variables ne sont pas en clair dans l'url
- Meilleur référencement dans les moteurs de recherche
- Url rewriting même chez free.fr =)

Activer Multiviews

- Utilisation de Easyphp sous windows, éditez C:\Program Files\EasyPHP 3.0\apache\conf\httpd.conf, faites une recherche dans ce fichier de la chaine Multiviews, vous devriez vous trouver entre les balises <Directory "${path}/www">
et </Directory>, remarquer la ligne(l 231 chez moi) Options Indexes FollowSymLinks, ajouter à la fin de cette dernière MultiViews. Et voilà !

Est-ce plus clair ?

Commentaire de trmaher le 05/05/2009 20:37:42

bonjour,

Merci c'est très claire, en fait j'ai eu l'affichage de tout les fichiers ttf mais l'aperçus ne l'est pas.

par contre j'ai trouvé que les dossiers des ttf ont été déjà crée dans le dossier <b> pics</b> y compris les images des aperçus qu'ils correspondent.

Bon jusqu'à maintenant je peut dire qu'il s'agit d'un excellent boulot.

je voudrais vous poser une petite question concernant l'ajout de texte à une image, j'ai rencontré des problème au niveau l'affichage du texte en utilisant une police( font) que je possède mais le script ne marche plus.

Si vous connaissez quelque astuce prière de le me dire.

Commentaire de inwebo le 08/05/2009 00:26:31

Merci pour ce retour constructif, je viens de voir cela, l'erreur provient du code CSS généré par l'application. Pour le vérifier, il suffit de jeter un oeil dans le source de la page html detail.

background-image: url('http://fontomatic.free.fr/pics/1//-big.png'); (chez moi) au lieu de
background-image: url('http://fontomatic.free.fr/pics/1/une_police-big.png');


Cela arrive lorsque j'installe cette application à la racine d'un serveur web l'erreur se produit. Pour y remédier (en attendant que je corrige cette erreur), il suffit de l'installée dans un sous dossier, je me dépêche de corriger cela.

En tout cas merci pour ces retours constructifs.

Commentaire de inwebo le 08/05/2009 17:45:14

Correction effectuée.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

accéder à un lecteur réseau [ par babybutt ] bonzour à tous et à toutes bien sur !!!! =)j'aimerais savoir comment je pourrais faire pouraccéder à des données contenu dans un lecteur réseau du rés verifier qu'un fichier existe sur un lecteur en réseau [ par wakla ] bonjour,J'ai un fichier sur un lecteur partagé en réseau. J'utilise la fonction php file_exists pour vérifier s'il existe, celle ci me rend "false" po Lecture de code barre. [ par jeremy_r ] Bonjour à tous!J'espère que qqn ici réussira à me dépatouiller du problème que j'ai actuellement.J'ai développé une appli de recueil de données, ceci Lecteur de code barre avec douchette [ par el_pecheur ] Je cherche un moyen de lire un code barre avec une douchette rs232 en PHP5, connaitriez vous une solution ? 6 adresse dans le meme lecteur Flux RSS [ par Nexto ] Bonjour :) &nbsp;&nbsp;&nbsp; J'aimerais rassembler l'actu "A la Une" en utilisant 6 adresses de site qui utilisent le RSS j'emploie magpierss et j'a Récupere le nom d'un lecteur logique [ par Csay97 ] Bonjour, Je cherche une fonction me permettant de r&#233;cup&#233;rer le ou les noms de lecteur logique d'un syst&#232;me d'exploitation afin de pouvo lecteur multimedia (video/audio) qui lis un dossier [ par moveyourfeet79 ] bonjour,j'ouvre mon propre site d'&#233;lection (miss/mister/couples)j'aimerais permettres aux inscrit(e)s d'y mettre leurs vid&#233;os. Pour &#233;vi lecteur de flux rss [ par jul00 ] salut tou le monde je suis a la recherche d'un lecteur de flux rss simple est comment&#233; si c'&#233;tait possible j'en ai trouver quelque un dans l Intégré un lecteur pls dans une page web [ par PunKeR77 ] Bonjour,Je cherche &#224; int&#233;gr&#233; dans mon site web un lecteur de musique qui permettrait de le lire un fichier listen.pls ( obtenus gr&#226 Traiter le vote de chansons diffusées sur un lecteur [ par benpal ] Bonjour,Je souhaite utiliser un lecteur embarqué avec la balise &lt;EMBED&gt; et je ne vois pas comment identifier la chanson en cours de lecture pour


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,590 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales