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


