diff --git a/app/Utils/Helpers.php b/app/Utils/Helpers.php index 07966956a2c0..27fe7eb0fe5d 100644 --- a/app/Utils/Helpers.php +++ b/app/Utils/Helpers.php @@ -264,4 +264,29 @@ class Helpers return $value; } + + /** + * Resolve the font from the supported fonts array. + * + * @param string $font + * @return array + */ + public static function resolveFont(string $font = 'Arial'): array + { + $fonts = [ + 'Arial' => '', + 'Inter' => 'https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap', + 'Roboto' => 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap', + 'Irish Grover' => 'https://fonts.googleapis.com/css2?family=Irish+Grover&display=swap', + ]; + + if (array_key_exists($font, $fonts)) { + return [ + 'name' => $font, + 'url' => $fonts[$font], + ]; + } + + return ['name' => 'Arial', 'url' => $fonts['Arial']]; + } } diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index d5bd8020bfeb..4b64aa4d7e1e 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -445,6 +445,8 @@ class HtmlEngine $data['_rate3'] = ['value' => '', 'label' => ctrans('texts.tax')]; $data['$font_size'] = ['value' => $this->settings->font_size . 'px', 'label' => '']; + $data['$font_name'] = ['value' => Helpers::resolveFont()['name'], 'label' => '']; + $data['$font_url'] = ['value' => Helpers::resolveFont()['url'], 'label' => '']; $data['$invoiceninja.whitelabel'] = ['value' => 'https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-develop/public/images/new_logo.png', 'label' => '']; diff --git a/tests/Unit/HelpersTest.php b/tests/Unit/HelpersTest.php new file mode 100644 index 000000000000..1516ef513adb --- /dev/null +++ b/tests/Unit/HelpersTest.php @@ -0,0 +1,41 @@ +assertArrayHasKey('name', $font); + $this->assertArrayHasKey('url', $font); + } + + public function testResolvingFont(): void + { + $font = Helpers::resolveFont('Inter'); + + $this->assertEquals('Inter', $font['name']); + } + + public function testDefaultFontIsArial(): void + { + $font = Helpers::resolveFont(); + + $this->assertEquals('Arial', $font['name']); + } +}