From c8abdce24ac63dac8f407aca0827b29f918380c8 Mon Sep 17 00:00:00 2001 From: Christopher Vagnetoft Date: Tue, 31 Oct 2017 02:35:38 +0100 Subject: [PATCH] TextElement: Fixed measurement, implemented font prop --- src/Elements/TextElement.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Elements/TextElement.php b/src/Elements/TextElement.php index 7964786..510bcb4 100644 --- a/src/Elements/TextElement.php +++ b/src/Elements/TextElement.php @@ -9,7 +9,7 @@ class TextElement extends Element private static $fontCache = []; - private static function findFont($font) + private static function findFont($font, $style='regular') { if (count(self::$fontCache)==0) { self::updateFonts(); @@ -18,7 +18,14 @@ class TextElement extends Element $font = strtolower($font); if (array_key_exists($font, self::$fontCache)) { - return self::$fontCache[$font]; + $info = self::$fontCache[$font]; + if (!$style) { + return $info; + } + if (array_key_exists($style, $info)) { + return $info[$style]; + } + return false; } return false; } @@ -34,7 +41,14 @@ class TextElement extends Element $seg = explode(":", $line); $file = $seg[0]; $name = strtolower(trim(preg_replace("/[^A-Za-z0-9 ]/", '', $seg[1]))); - self::$fontCache[$name] = $file; + $style = strtolower(str_replace("style=","",$seg[2])); + $style = explode(",",$style); + $style = reset($style); + + if (!array_key_exists($name, self::$fontCache)) { + self::$fontCache[$name] = []; + } + self::$fontCache[$name][$style] = $file; } } @@ -47,7 +61,9 @@ class TextElement extends Element $value = $this->getProp("value"); } - $font = self::findFont("liberation sans"); + $fontName = $this->getProp("font")?:"liberation sans"; + + $font = self::findFont($fontName); if (!$font) { return; } @@ -56,7 +72,7 @@ class TextElement extends Element $size = $this->getProp("font-size", 8); - $dims = imagettfbbox($size, 0, $font, $value); + $dims = imagettfbbox($size, 0, $font, "AaBbXxYyZz0129:;."); $textAscent = abs($dims[7]); $textDescent = abs($dims[1]); @@ -69,4 +85,4 @@ class TextElement extends Element } -} \ No newline at end of file +}