File: FontTest.php

package info (click to toggle)
php-font-lib 0.5.4%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 552 kB
  • sloc: php: 2,673; makefile: 15
file content (73 lines) | stat: -rw-r--r-- 2,745 bytes parent folder | download
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
<?php

namespace FontLib\Tests;

use FontLib\Font;
use PHPUnit\Framework\TestCase;

class FontTest extends TestCase
{
    public function testLoadFileNotFound()
    {
        // @todo when PHP 5.4 support is dropped, uncomment line below and drop
        //       the try...catch block.
        // $this->expectException('\Fontlib\Exception\FontNotFoundException');
        try {
            Font::load('non-existing/font.ttf');
            $this->fail('Load should have failed.');
        }
        catch (\Fontlib\Exception\FontNotFoundException $e) {
            // Avoid throwing a risky test error.
            $this->assertTrue(true);
        }
    }

    public function testLoadTTFFontSuccessfully()
    {
        $trueTypeFont = Font::load('/usr/share/fonts/truetype/noto/NotoSansShavian-Regular.ttf');

        $this->assertInstanceOf('FontLib\TrueType\File', $trueTypeFont);
    }

    public function test12CmapFormat()
    {
        $trueTypeFont = Font::load('/usr/share/fonts/truetype/noto/NotoSansShavian-Regular.ttf');

        $trueTypeFont->parse();

        $cmapTable = $trueTypeFont->getData("cmap", "subtables");

        $cmapFormat4Table = $cmapTable[0];

        $this->assertEquals(4, $cmapFormat4Table['format']);
        $this->assertEquals(5, $cmapFormat4Table['segCount']);
        $this->assertEquals($cmapFormat4Table['segCount'], count($cmapFormat4Table['startCode']));
        $this->assertEquals($cmapFormat4Table['segCount'], count($cmapFormat4Table['endCode']));

        $cmapFormat12Table = $cmapTable[1];

        $this->assertEquals(12, $cmapFormat12Table['format']);
        $this->assertEquals(5, $cmapFormat12Table['ngroups']);
        $this->assertEquals(5, count($cmapFormat12Table['startCode']));
        $this->assertEquals(5, count($cmapFormat12Table['endCode']));
        $this->assertEquals(52, count($cmapFormat12Table['glyphIndexArray']));
    }

    public function testFontLoadReadme()
    {
        $font = Font::load('/usr/share/fonts/truetype/noto/NotoSansShavian-Regular.ttf');
        $font->parse();
        $this->assertSame('Noto Sans Shavian', $font->getFontName());
        $this->assertSame('Regular', $font->getFontSubfamily());
        $this->assertSame('2.000;GOOG;NotoSansShavian-Regular', $font->getFontSubfamilyID());
        $this->assertSame('Noto Sans Shavian Regular', $font->getFontFullName());
        $this->assertSame(
            'Version 2.000; ttfautohint (v1.8.3) -l 8 -r 50 -G 200 -x 14 -D shaw -f none -a qsq -X ""',
            $font->getFontVersion()
        );
        $this->assertSame(400, $font->getFontWeight());
        $this->assertSame('NotoSansShavian-Regular', $font->getFontPostscriptName());
        $this->assertTrue($font->close());
    }

}