aboutsummaryrefslogtreecommitdiff
path: root/app/class/modelfont.php
blob: 09f2ddd51925b0a83340d7c6a6d9924510194d62 (plain)
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
<?php

class Modelfont extends Model
{

    const FONT_TYPES = ['woff2', 'woff', 'otf', 'ttf', 'eot', 'svg'];


    public function getfontlist()
    {
        return $this->fontlist($this->list());
    }

    public function renderfontface()
    {
        $list = $this->list();
        $fontlist = $this->fontlist($list);
        $fontface = $this->fontface($fontlist);
        $this->write($fontface);
    }


    public function list()
    {
        if ($handle = opendir(Model::FONT_DIR)) {
            $list = [];
            while (false !== ($entry = readdir($handle))) {
                if ($entry != "." && $entry != "..") {

                    $list[] = $entry;

                }
            }
        }

        return $list;

    }

    public function fontlist(array $list)
    {
        $fontlist = [];
        $fonttypes = implode('|', $this::FONT_TYPES);
        $regex = '#(.+)\.('.$fonttypes.')#';
        foreach ($list as $font) {
            if(preg_match($regex, $font, $out)) {
                $fontlist[] = ['id' => $out[1], 'ext' =>$out[2]];
            }
        }

        return $fontlist;
    }

    public function fontface(array $fontlist)
    {
        $fontface = '';
        foreach ($fontlist as $font) {
            $fontface .= '@font-face {' . PHP_EOL . 'font-family: ' . $font['id'] . ';' . PHP_EOL . ' src: url( ' . Model::fontpath() . $font['id'] .'.'. $font['ext'] . ');' . PHP_EOL . '}' . PHP_EOL . PHP_EOL;
        }
        return $fontface;
    }


    public function write(string $fontface)
    {
        $write = file_put_contents(Model::GLOBAL_DIR.'fonts.css', $fontface);
        if($write !== false) {

        }
    }
}









?>