Skip to content

Commit

Permalink
Revert "Bundle with pre-built unicode fonts for performance improvemnt"
Browse files Browse the repository at this point in the history
  • Loading branch information
hidakatsuya committed Aug 27, 2015
1 parent 0f851a7 commit 911a7e7
Show file tree
Hide file tree
Showing 18 changed files with 90 additions and 69 deletions.
Binary file removed fonts/ipag.ctg.z
Binary file not shown.
15 changes: 0 additions & 15 deletions fonts/ipag.php

This file was deleted.

Binary file added fonts/ipag.ttf
Binary file not shown.
Binary file removed fonts/ipag.z
Binary file not shown.
Binary file removed fonts/ipagp.ctg.z
Binary file not shown.
15 changes: 0 additions & 15 deletions fonts/ipagp.php

This file was deleted.

Binary file added fonts/ipagp.ttf
Binary file not shown.
Binary file removed fonts/ipagp.z
Binary file not shown.
Binary file removed fonts/ipam.ctg.z
Binary file not shown.
15 changes: 0 additions & 15 deletions fonts/ipam.php

This file was deleted.

Binary file added fonts/ipam.ttf
Binary file not shown.
Binary file removed fonts/ipam.z
Binary file not shown.
Binary file removed fonts/ipamp.ctg.z
Binary file not shown.
15 changes: 0 additions & 15 deletions fonts/ipamp.php

This file was deleted.

Binary file added fonts/ipamp.ttf
Binary file not shown.
Binary file removed fonts/ipamp.z
Binary file not shown.
56 changes: 50 additions & 6 deletions src/Thinreports/Generator/PDF/Font.php
Expand Up @@ -14,11 +14,16 @@
*/
class Font
{
/**
* @var string[]
*/
static public $installed_builtin_fonts = array();

static public $builtin_unicode_fonts = array(
'IPAMincho' => 'ipam',
'IPAPMincho' => 'ipamp',
'IPAGothic' => 'ipag',
'IPAPGothic' => 'ipagp'
'IPAMincho' => 'ipam.ttf',
'IPAPMincho' => 'ipamp.ttf',
'IPAGothic' => 'ipag.ttf',
'IPAPGothic' => 'ipagp.ttf'
);

static public $builtin_font_aliases = array(
Expand All @@ -35,12 +40,51 @@ static public function getFontName($name)
if (array_key_exists($name, self::$builtin_font_aliases)) {
return self::$builtin_font_aliases[$name];
}
if (self::isBuiltinUnicodeFont($name)) {
return self::$builtin_unicode_fonts[$name];

if (array_key_exists($name, self::$builtin_unicode_fonts)) {
if (self::isInstalledFont($name)) {
return static::$installed_builtin_fonts[$name];
} else {
return self::installBuiltinFont($name);
}
}
return $name;
}

/**
* @param string $name
* @return string
* @see http://www.tcpdf.org/doc/code/classTCPDF__FONTS.html
*/
static public function installBuiltinFont($name)
{
$filename = self::getBuiltinFontPath($name);

$font_name = \TCPDF_FONTS::addTTFFont($filename, 'TrueTypeUnicode', '', 32);
static::$installed_builtin_fonts[$name] = $font_name;

return $font_name;
}

/**
* @param string $name
* @return boolean
*/
static public function isInstalledFont($name)
{
return array_key_exists($name, static::$installed_builtin_fonts);
}

/**
* @param string $name
* @return string
*/
static public function getBuiltinFontPath($name)
{
$font_directory = realpath(__DIR__ . '/../../../../fonts');
return $font_directory . '/' . self::$builtin_unicode_fonts[$name];
}

/**
* @param string $name
* @return boolean
Expand Down
43 changes: 40 additions & 3 deletions test/unit/Thinreports/Generator/PDF/FontTest.php
Expand Up @@ -5,17 +5,47 @@

class FontTest extends TestCase
{
function setup()
{
Font::$installed_builtin_fonts = array();
}

function test_getFontName()
{
$this->assertEquals('Helvetica', Font::getFontName('Helvetica'));

$this->assertEquals('Courier', Font::getFontName('Courier New'));
$this->assertEquals('Times', Font::getFontName('Times New Roman'));

$this->assertFalse(Font::isInstalledFont('IPAMincho'));
$this->assertNotContains('ipam', Font::$installed_builtin_fonts);

$this->assertEquals('ipam', Font::getFontName('IPAMincho'));
$this->assertEquals('ipamp', Font::getFontName('IPAPMincho'));
$this->assertEquals('ipag', Font::getFontName('IPAGothic'));
$this->assertEquals('ipagp', Font::getFontName('IPAPGothic'));

$this->assertTrue(Font::isInstalledFont('IPAMincho'));
$this->assertContains('ipam', Font::$installed_builtin_fonts);

$this->assertEquals('ipam', Font::getFontName('IPAMincho'));
}

/**
* @dataProvider unicodeFontProvider
*/
function test_installBuiltinFont($expected_result, $font_name)
{
$actual = Font::installBuiltinFont($font_name);

$this->assertEquals($expected_result, $actual);
$this->assertContains($actual, Font::$installed_builtin_fonts);
}
function unicodeFontProvider()
{
return array(
array('ipam', 'IPAMincho'),
array('ipag', 'IPAGothic'),
array('ipamp', 'IPAPMincho'),
array('ipagp', 'IPAPGothic')
);
}

function test_isBuiltinUnicodeFont()
Expand All @@ -24,4 +54,11 @@ function test_isBuiltinUnicodeFont()
$this->assertFalse(Font::isBuiltinUnicodeFont('Helvetica'));
$this->assertTrue(Font::isBuiltinUnicodeFont('IPAGothic'));
}

function test_isInstalledFont()
{
$this->assertFalse(Font::isInstalledFont('IPAMincho'));
Font::$installed_builtin_fonts['IPAMincho'] = 'ipam';
$this->assertTrue(Font::isInstalledFont('IPAMincho'));
}
}

0 comments on commit 911a7e7

Please sign in to comment.