Back to the snippets index

Fonts Installed view ( Anthony 15/6/2008 )

This shows all the installed fonts with the name written using the actual font. There were a couple of problems with this example.
1/ The ' had been missed out in the preg_match
2/ I have found that the array generated with font and type are different.
I tested it with a version below 6.3.5 and it worked but would not work in versions above that. I have modifeid the code to work with both versions but it will need to be tidied up.

IM code:

<?php 
system("convert -version");
// Select the version number from the configeration file
    preg_match('/^LIB_VERSION_NUMBER ([0-9,]+)$/m', shell_exec("convert -list configure "), $vnums);
 
// Seperate the numbers at the ,
    $number = explode( ",", $vnums[1] );
 
// Format the version from 6,3,4,1 format to 06030401
    $version = "";
    for($i=0;$i<4;$i++)
    {
    $version .= str_pad( $number[$i], 2, '0', STR_PAD_LEFT );
    }    
 
// The 'list' method used to get the fonts changed in IM v6.3.5-7
    $font_list = ( $version > "06030507" ) ? "font" : "type";
 
// Populate the array only - do not display it
    exec("convert -list $font_list", $IMarray, $code);
 
// Sort the array alphabeticly
    sort( $IMarray );
 
// Setup some default values
    $delete = array();
    $image_list = "";
 
// Function to remove items from array
    function array_delete( $array, $filterfor ){ 
        $thisarray = array (); 
        foreach( $array as $value ) 
        if( stristr( $value, $filterfor )===false && strlen( $value )>0) 
        $thisarray[] = $value; 
        return $thisarray; 
    } 
 
// Remove items containing Name from the arrary
    $NoName = array_delete( $IMarray, "Name" ); 
 
// Remove items containing Path: from the array
    $NoPath = array_delete( $NoName, "Path:" ); 
 
// Remove items containing Path: from the array
    $NoFamily = array_delete( $NoPath, "family:" );
 
// Remove items containing Path: from the array
    $NoStretch = array_delete( $NoFamily, "stretch:" );
 
   // Remove items containing Path: from the array
    $NoWeight = array_delete( $NoStretch, "weight:" );
 
      // Remove items containing Path: from the array
    $NoStyle = array_delete( $NoWeight, "style:" );
 
// Find the amount of items in the array
    $count = count( $NoStyle );
 
// Reduce the count by one as the array starts at 0
    $count = $count-1;
 
// Start the loop to generate the images
    for ( $i=2; $i<=$count; $i++ ) {
 
// Get the font name from the array
        $FirstPart = explode(':', $NoStyle[$i]);
        $Font = str_replace( ' ', '', $FirstPart['1']);   
        $Image = $Font.".png";   
 
// Create the images
$cmd = "-size 250x15 xc:lightblue -font $Font -pointsize 13 -draw \"gravity West fill black text 0,0 $Font \" ";
// echo $cmd."<br>";
exec("convert $cmd $Image");
 
// Generate the list of images for use in the large image
        $image_list = $image_list." ".$Image;
 
// Generate the array of tempory images to delete
        $delete[] = $Image;
    }
 
// Create the large image
    exec("convert -background white -gravity Center $image_list -append fonts.png");
 
// Delete the tempory images
    foreach ( $delete as $value ) { 
        unlink( $value ); }
?> 
<img src="fonts.png">

Image to go with Fonts Installed view example code
Batch file - windows server
Fonts installed
Fonts Installed view
Gravity option
http image source
Image information
New image size in variable
Path - find automaticaly
Path to Imagemagick
Setup Information
Shell script
Variables in the code
Version of Imagemagick installed
Writing IM code