Font letter overzicht in een plaatje

Gepost door Eric Bruggema op 17-02-2009 09:45.

Dit scriptje heb ik geschreven voor een site om fonts te laten zien middels vaste karakter sets. Omdat ik het scriptje toch wilde delen post ik het hier.

je hebt om het scriptje te gebruiken 2 vaste bestanden nodig.

standard.ttf (om de kleine letters te laten zien, bv times/arial)

en test2.ttf dit kan het font zijn die je wilt previewen.

Voorbeeld: http://www.plaatjesupload.nl/bekijken/1306525.html

Kritiet is welkom, wil altijd blijven leren en dat kan niet zonder comments!

comments toegevoegd

Bestanden van dit script

index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
function calculateTextBox($text, $fontFile, $fontSize, $fontAngle)
{
    // functie van php.net
    $rect = imagettfbbox($fontSize,
                         $fontAngle,
                         $fontFile,
                         $text);

    $minX = min(array($rect[0],
                      $rect[2],
                      $rect[4],
                      $rect[6]));
    $maxX = max(array($rect[0],
                      $rect[2],
                      $rect[4],
                      $rect[6]));
    $minY = min(array($rect[1],
                      $rect[3],
                      $rect[5],
                      $rect[7]));
    $maxY = max(array($rect[1],
                      $rect[3],
                      $rect[5],
                      $rect[7]));

    return array("left"   => abs($minX),
                 "top"    => abs($minY),
                 "width"  => $maxX - $minX,
                 "height" => $maxY - $minY,
                 "box"    => $rect);
}

// zet pad voor GD
putenv('GDFONTPATH=' . realpath('.'));

// maak afbeelding
$im = imagecreatetruecolor(721,
                           241);

// stel kleuren in 
$color = imageColorAllocate($im, 0, 0, 0);
$back  = imagecolorallocate($im, 255, 255, 255);

// zet achtergrond kleur
imagefill($im, 0, 0, $back);

// maak horizontale lijnen
for ($x = 0; $x < 4; $x++)
{
    imageline($im, 0, $x * 80, 721, ($x * 80), $color);
}

// maak verticale lijnen
for ($x = 0; $x < 10; $x++)
{
    imageline($im, $x * 80, 1, $x * 80, 241, $color);
}

// variabelen
$fontsize = 40;
$font  = 'test2.ttf';
$x = 0;
$y = 0;

// bereken grootte van de letters
foreach (range("a", "z") AS $id => $key)
{
    $bbox = calculateTextBox($key, $font, $fontsize, 0);

    // plaats kleine lettertje links bovenin
    imagettftext ($im,
                  12,
                  0,
                  $x + 3,
                  $y + 14,
                  $color,
                  "standard.ttf",
                  $key);

    // plaats grote letter in het midden
    imagettftext ($im,
                  $fontsize,
                  0,
                  $x + (80/2 - $bbox['width']/2),
                  $y + (80 - ($bbox['height']/2)),
                  $color,
                  $font,
                  $key);
    $x = $x + 80;
    
    // bij $x > 700 ga naar de 'volgende regel'
    if ($x > 700)
    {
        $x = 0;
        $y = $y + 80;
    }
}

// zet headers voor het plaatje
header('Content-Type: image/png');
// laat plaatje zien
imagePNG($im);
?>

Commentaar

17-02-2009 11:03

Leuk script. Werkt ook goed voor zover ik het kan zien. Weer een waardevolle toevoeging voor de SL :)

1
2
3
Post hier de source-code van je script. Alle informatie tussen <? ... ?> en <?php ... ?> zal automatisch worden getoond in color-coding. 

Let op! Het is niet de bedoeling om hier een link naar je website te plaatsen. Post hier gewoon de code, veel simpeler, sneller en meer kans dat het blijft staan.
Inloggen wachtwoord vergeten? Aanmelden