Accueil > > > FONT 'O' MATIC
FONT 'O' MATIC
Information sur la source
Description
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
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
Sources de la même categorie
Commentaires et avis
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 :) 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écupérer le ou les noms de lecteur logique d'un système d'exploitation afin de pouvo
lecteur multimedia (video/audio) qui lis un dossier [ par moveyourfeet79 ]
bonjour,j'ouvre mon propre site d'élection (miss/mister/couples)j'aimerais permettres aux inscrit(e)s d'y mettre leurs vidéos. Pour é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é si c'était possible j'en ai trouver quelque un dans l
Intégré un lecteur pls dans une page web [ par PunKeR77 ]
Bonjour,Je cherche à intégré dans mon site web un lecteur de musique qui permettrait de le lire un fichier listen.pls ( obtenus grâ
Traiter le vote de chansons diffusées sur un lecteur [ par benpal ]
Bonjour,Je souhaite utiliser un lecteur embarqué avec la balise <EMBED> et je ne vois pas comment identifier la chanson en cours de lecture pour
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|