Roberto Santini пре 3 година
родитељ
комит
e649408e72

+ 38
- 0
app/Exports/IssueExport.php Прегледај датотеку

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+namespace App\Exports;
4
+
5
+use Maatwebsite\Excel\Concerns\FromCollection;
6
+use Maatwebsite\Excel\Concerns\WithHeadings;
7
+
8
+class IssueExport implements FromCollection, WithHeadings
9
+{
10
+  protected $issueCollection;
11
+
12
+
13
+  public function __construct($issueCollection)
14
+  {
15
+    $this->issueCollection = $issueCollection;
16
+  }
17
+
18
+  public function headings(): array
19
+  {
20
+    return [
21
+      '#',
22
+      'Segnalazione',
23
+      'Cliente',
24
+      'Sede',
25
+      'Data',
26
+      'Ore',
27
+      'Tipo'
28
+    ];
29
+  }
30
+
31
+  /**
32
+  * @return \Illuminate\Support\Collection
33
+  */
34
+  public function collection()
35
+  {
36
+    return $this->issueCollection;
37
+  }
38
+}

+ 103
- 0
app/Http/Controllers/IssueController.php Прегледај датотеку

@@ -11,10 +11,14 @@ use Illuminate\Support\Facades\Log;
11 11
 use App\DataTables\IssueDataTable;
12 12
 use App\Models\Issue;
13 13
 use App\Models\User;
14
+use App\Models\Config;
14 15
 use Carbon\Carbon;
16
+use PDF;
15 17
 use Auth;
16 18
 use Storage;
17 19
 use Session;
20
+use App\Exports\IssueExport;
21
+use Maatwebsite\Excel\Facades\Excel;
18 22
 
19 23
 class IssueController extends Controller
20 24
 {
@@ -237,4 +241,103 @@ class IssueController extends Controller
237 241
 
238 242
     return view('issue.custom_field')->with(['customCollection' => $customCollection]);
239 243
   }
244
+
245
+  public function show_user_report(){
246
+    return view('issue.componi_user_report');
247
+  }
248
+
249
+  public function user_report(Request $request){
250
+    $redmineUser = session('redmine_user');
251
+    $from = Carbon::createFromFormat('d/m/Y', $request->data_inizio)->toDateString();
252
+    $to = Carbon::createFromFormat('d/m/Y', $request->data_fine)->toDateString();
253
+
254
+    // Ci sono tempi registrati?
255
+    $timeEntries = Http::get(config('redmine.url').'/time_entries.json', [
256
+      'key' => $redmineUser->api_key,
257
+      'from' => $from,
258
+      'to' => $to,
259
+      'project_id' => implode('|', json_decode(Auth::user()->progetti)),
260
+      'cf_'.Config::getValue(Config::CAMPO_FATTURARE) => 'Sì|Fatturato', // Custom fields "fatturare"
261
+    ]);
262
+
263
+    // dd($timeEntries->object());
264
+    if($timeEntries->object()->total_count > 0){
265
+      $pdf = PDF::loadView('issue.user_report', [
266
+        'from' => $from,
267
+        'to' => $to
268
+      ]);
269
+      return $pdf->stream();
270
+    }else{
271
+      Session::flash('flash_message', "Nessun tempo registrato nell'arco di tempo indicato!");
272
+      return redirect()->route('issue.user_report');
273
+    }
274
+
275
+
276
+  }
277
+
278
+  public function show_admin_report(){
279
+    return view('issue.componi_admin_report');
280
+  }
281
+
282
+  public function admin_report(Request $request){
283
+    $redmineUser = session('redmine_user');
284
+    $collectionIssue = new Collection();
285
+
286
+    $from = Carbon::createFromFormat('d/m/Y', $request->data_inizio)->toDateString();
287
+    $to = Carbon::createFromFormat('d/m/Y', $request->data_fine)->toDateString();
288
+
289
+    foreach($request->progetto as $project_id){
290
+      $timeEntries = Http::get(config('redmine.url').'/time_entries.json', [
291
+        'key' => $redmineUser->api_key,
292
+        'from' => $from,
293
+        'to' => $to,
294
+        'project_id' => $project_id,
295
+        'limit' => 100,
296
+        'cf_'.Config::getValue(Config::CAMPO_FATTURARE) => 'Sì', // Custom fields "fatturare"
297
+      ]);
298
+
299
+      // dd($project_id);
300
+
301
+      $arrayIssues = [];
302
+      try{
303
+        foreach($timeEntries->object()->time_entries as $timeEntry){
304
+          $arrayIssues[] = $timeEntry->issue->id;
305
+        }
306
+      }catch(\Exception $e){
307
+      }
308
+      $arrayIssues = array_unique($arrayIssues);
309
+      // dd($arrayIssues);
310
+
311
+      foreach($arrayIssues as $issue_id){
312
+        $issueResponse = Http::get(config('redmine.url').'/issues/'.$issue_id.'.json?include=custom_fields,project', [
313
+          'key' => $redmineUser->api_key,
314
+        ]);
315
+
316
+        $issue = $issueResponse->object()->issue;
317
+        foreach($issue->custom_fields as $customField){
318
+          if(substr($customField->name, 0, 4) == 'Sede'){
319
+            $sedeCliente = explode('(', $customField->value)[0];
320
+            break;
321
+          }else{
322
+            $sedeCliente = "";
323
+          }
324
+        }
325
+
326
+        // Tempo onsite o viaggio
327
+        $tempoImpiegatoOnSite = Issue::getTempoImpiegato($issue->id, [Config::getValue(Config::ATTIVITA_ON_SITE), 14], $from, $to, 'Sì');
328
+        $tempoImpiegatoRemota = Issue::getTempoImpiegato($issue->id, Config::getValue(Config::ATTIVITA_REMOTA), $from, $to, 'Sì');
329
+
330
+        foreach($tempoImpiegatoOnSite as $tempo){
331
+          $collectionIssue->push(['id' => $issue->id, 'subject' => $issue->subject, 'cliente' => $issue->project->name, 'sede_cliente' => $sedeCliente, 'data' => Carbon::parse($tempo->spent_on)->format('d/m/Y'), 'ore' => $tempo->hours, 'tipo' => 'onsite']);
332
+        }
333
+
334
+        foreach($tempoImpiegatoRemota as $tempo){
335
+          $collectionIssue->push(['id' => $issue->id, 'subject' => $issue->subject, 'cliente' => $issue->project->name, 'sede_cliente' => $sedeCliente, 'data' => Carbon::parse($tempo->spent_on)->format('d/m/Y'), 'remota' => $tempo->hours, 'tipo' => 'remota']);
336
+        }
337
+      }
338
+
339
+    }
340
+
341
+    return Excel::download(new IssueExport($collectionIssue), 'issue.xlsx');
342
+  }
240 343
 }

+ 22
- 5
app/Models/Issue.php Прегледај датотеку

@@ -49,17 +49,34 @@ class Issue{
49 49
     return $collection;
50 50
   }
51 51
 
52
-  public static function getTempoImpiegato($issue_id, $attivita){
52
+  public static function getTempoImpiegato($issue_id, $attivita, $from = null, $to = null, $fatturare = 'Sì|Fatturato'){
53 53
     $redmineUser = session('redmine_user');
54 54
     $collection = new Collection();
55 55
 
56
-    $issueResponse = Http::get(config('redmine.url').'/time_entries.json', [
56
+    $params = [
57 57
       'key' => $redmineUser->api_key,
58 58
       'issue_id' => $issue_id,
59
-      'cf_'.Config::getValue(Config::CAMPO_FATTURARE) => 'Sì|Fatturato', // Custom fields "fatturare"
60
-      'activity_id' => $attivita
59
+      'cf_'.Config::getValue(Config::CAMPO_FATTURARE) => $fatturare, // Custom fields "fatturare"
60
+    ];
61 61
 
62
-    ]);
62
+    if(is_array($attivita)){
63
+      $params['activity_id'] = implode('|', $attivita);
64
+    }else{
65
+      $params['activity_id'] = $attivita;
66
+    }
67
+
68
+    // dd($params);
69
+
70
+    if($from != null){
71
+      $params['from'] = $from;
72
+    }
73
+
74
+    if($to != null){
75
+      $params['to'] = $to;
76
+    }
77
+
78
+
79
+    $issueResponse = Http::get(config('redmine.url').'/time_entries.json', $params);
63 80
 
64 81
     $last_date = null;
65 82
     try{

+ 2
- 0
composer.json Прегледај датотеку

@@ -6,11 +6,13 @@
6 6
     "license": "MIT",
7 7
     "require": {
8 8
         "php": "^7.3|^8.0",
9
+        "barryvdh/laravel-dompdf": "^0.9.0",
9 10
         "fruitcake/laravel-cors": "^2.0",
10 11
         "guzzlehttp/guzzle": "^7.0.1",
11 12
         "laravel/framework": "^8.75",
12 13
         "laravel/sanctum": "^2.11",
13 14
         "laravel/tinker": "^2.5",
15
+        "maatwebsite/excel": "^3.1",
14 16
         "spatie/laravel-permission": "^5.5",
15 17
         "yajra/laravel-datatables": "^1.5"
16 18
     },

+ 501
- 215
composer.lock
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 0
config/app.php Прегледај датотеку

@@ -234,6 +234,7 @@ return [
234 234
         'URL' => Illuminate\Support\Facades\URL::class,
235 235
         'Validator' => Illuminate\Support\Facades\Validator::class,
236 236
         'View' => Illuminate\Support\Facades\View::class,
237
+        'Excel' => Maatwebsite\Excel\Facades\Excel::class,
237 238
 
238 239
     ],
239 240
 

+ 332
- 0
config/excel.php Прегледај датотеку

@@ -0,0 +1,332 @@
1
+<?php
2
+
3
+use Maatwebsite\Excel\Excel;
4
+
5
+return [
6
+    'exports' => [
7
+
8
+        /*
9
+        |--------------------------------------------------------------------------
10
+        | Chunk size
11
+        |--------------------------------------------------------------------------
12
+        |
13
+        | When using FromQuery, the query is automatically chunked.
14
+        | Here you can specify how big the chunk should be.
15
+        |
16
+        */
17
+        'chunk_size'             => 1000,
18
+
19
+        /*
20
+        |--------------------------------------------------------------------------
21
+        | Pre-calculate formulas during export
22
+        |--------------------------------------------------------------------------
23
+        */
24
+        'pre_calculate_formulas' => false,
25
+
26
+        /*
27
+        |--------------------------------------------------------------------------
28
+        | Enable strict null comparison
29
+        |--------------------------------------------------------------------------
30
+        |
31
+        | When enabling strict null comparison empty cells ('') will
32
+        | be added to the sheet.
33
+        */
34
+        'strict_null_comparison' => false,
35
+
36
+        /*
37
+        |--------------------------------------------------------------------------
38
+        | CSV Settings
39
+        |--------------------------------------------------------------------------
40
+        |
41
+        | Configure e.g. delimiter, enclosure and line ending for CSV exports.
42
+        |
43
+        */
44
+        'csv'                    => [
45
+            'delimiter'              => ',',
46
+            'enclosure'              => '"',
47
+            'line_ending'            => PHP_EOL,
48
+            'use_bom'                => false,
49
+            'include_separator_line' => false,
50
+            'excel_compatibility'    => false,
51
+            'output_encoding'        => '',
52
+        ],
53
+
54
+        /*
55
+        |--------------------------------------------------------------------------
56
+        | Worksheet properties
57
+        |--------------------------------------------------------------------------
58
+        |
59
+        | Configure e.g. default title, creator, subject,...
60
+        |
61
+        */
62
+        'properties'             => [
63
+            'creator'        => '',
64
+            'lastModifiedBy' => '',
65
+            'title'          => '',
66
+            'description'    => '',
67
+            'subject'        => '',
68
+            'keywords'       => '',
69
+            'category'       => '',
70
+            'manager'        => '',
71
+            'company'        => '',
72
+        ],
73
+    ],
74
+
75
+    'imports'            => [
76
+
77
+        /*
78
+        |--------------------------------------------------------------------------
79
+        | Read Only
80
+        |--------------------------------------------------------------------------
81
+        |
82
+        | When dealing with imports, you might only be interested in the
83
+        | data that the sheet exists. By default we ignore all styles,
84
+        | however if you want to do some logic based on style data
85
+        | you can enable it by setting read_only to false.
86
+        |
87
+        */
88
+        'read_only' => true,
89
+
90
+        /*
91
+        |--------------------------------------------------------------------------
92
+        | Ignore Empty
93
+        |--------------------------------------------------------------------------
94
+        |
95
+        | When dealing with imports, you might be interested in ignoring
96
+        | rows that have null values or empty strings. By default rows
97
+        | containing empty strings or empty values are not ignored but can be
98
+        | ignored by enabling the setting ignore_empty to true.
99
+        |
100
+        */
101
+        'ignore_empty' => false,
102
+
103
+        /*
104
+        |--------------------------------------------------------------------------
105
+        | Heading Row Formatter
106
+        |--------------------------------------------------------------------------
107
+        |
108
+        | Configure the heading row formatter.
109
+        | Available options: none|slug|custom
110
+        |
111
+        */
112
+        'heading_row' => [
113
+            'formatter' => 'slug',
114
+        ],
115
+
116
+        /*
117
+        |--------------------------------------------------------------------------
118
+        | CSV Settings
119
+        |--------------------------------------------------------------------------
120
+        |
121
+        | Configure e.g. delimiter, enclosure and line ending for CSV imports.
122
+        |
123
+        */
124
+        'csv'         => [
125
+            'delimiter'        => null,
126
+            'enclosure'        => '"',
127
+            'escape_character' => '\\',
128
+            'contiguous'       => false,
129
+            'input_encoding'   => 'UTF-8',
130
+        ],
131
+
132
+        /*
133
+        |--------------------------------------------------------------------------
134
+        | Worksheet properties
135
+        |--------------------------------------------------------------------------
136
+        |
137
+        | Configure e.g. default title, creator, subject,...
138
+        |
139
+        */
140
+        'properties'  => [
141
+            'creator'        => '',
142
+            'lastModifiedBy' => '',
143
+            'title'          => '',
144
+            'description'    => '',
145
+            'subject'        => '',
146
+            'keywords'       => '',
147
+            'category'       => '',
148
+            'manager'        => '',
149
+            'company'        => '',
150
+        ],
151
+
152
+    ],
153
+
154
+    /*
155
+    |--------------------------------------------------------------------------
156
+    | Extension detector
157
+    |--------------------------------------------------------------------------
158
+    |
159
+    | Configure here which writer/reader type should be used when the package
160
+    | needs to guess the correct type based on the extension alone.
161
+    |
162
+    */
163
+    'extension_detector' => [
164
+        'xlsx'     => Excel::XLSX,
165
+        'xlsm'     => Excel::XLSX,
166
+        'xltx'     => Excel::XLSX,
167
+        'xltm'     => Excel::XLSX,
168
+        'xls'      => Excel::XLS,
169
+        'xlt'      => Excel::XLS,
170
+        'ods'      => Excel::ODS,
171
+        'ots'      => Excel::ODS,
172
+        'slk'      => Excel::SLK,
173
+        'xml'      => Excel::XML,
174
+        'gnumeric' => Excel::GNUMERIC,
175
+        'htm'      => Excel::HTML,
176
+        'html'     => Excel::HTML,
177
+        'csv'      => Excel::CSV,
178
+        'tsv'      => Excel::TSV,
179
+
180
+        /*
181
+        |--------------------------------------------------------------------------
182
+        | PDF Extension
183
+        |--------------------------------------------------------------------------
184
+        |
185
+        | Configure here which Pdf driver should be used by default.
186
+        | Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF
187
+        |
188
+        */
189
+        'pdf'      => Excel::DOMPDF,
190
+    ],
191
+
192
+    /*
193
+    |--------------------------------------------------------------------------
194
+    | Value Binder
195
+    |--------------------------------------------------------------------------
196
+    |
197
+    | PhpSpreadsheet offers a way to hook into the process of a value being
198
+    | written to a cell. In there some assumptions are made on how the
199
+    | value should be formatted. If you want to change those defaults,
200
+    | you can implement your own default value binder.
201
+    |
202
+    | Possible value binders:
203
+    |
204
+    | [x] Maatwebsite\Excel\DefaultValueBinder::class
205
+    | [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class
206
+    | [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class
207
+    |
208
+    */
209
+    'value_binder' => [
210
+        'default' => Maatwebsite\Excel\DefaultValueBinder::class,
211
+    ],
212
+
213
+    'cache' => [
214
+        /*
215
+        |--------------------------------------------------------------------------
216
+        | Default cell caching driver
217
+        |--------------------------------------------------------------------------
218
+        |
219
+        | By default PhpSpreadsheet keeps all cell values in memory, however when
220
+        | dealing with large files, this might result into memory issues. If you
221
+        | want to mitigate that, you can configure a cell caching driver here.
222
+        | When using the illuminate driver, it will store each value in a the
223
+        | cache store. This can slow down the process, because it needs to
224
+        | store each value. You can use the "batch" store if you want to
225
+        | only persist to the store when the memory limit is reached.
226
+        |
227
+        | Drivers: memory|illuminate|batch
228
+        |
229
+        */
230
+        'driver'     => 'memory',
231
+
232
+        /*
233
+        |--------------------------------------------------------------------------
234
+        | Batch memory caching
235
+        |--------------------------------------------------------------------------
236
+        |
237
+        | When dealing with the "batch" caching driver, it will only
238
+        | persist to the store when the memory limit is reached.
239
+        | Here you can tweak the memory limit to your liking.
240
+        |
241
+        */
242
+        'batch'     => [
243
+            'memory_limit' => 60000,
244
+        ],
245
+
246
+        /*
247
+        |--------------------------------------------------------------------------
248
+        | Illuminate cache
249
+        |--------------------------------------------------------------------------
250
+        |
251
+        | When using the "illuminate" caching driver, it will automatically use
252
+        | your default cache store. However if you prefer to have the cell
253
+        | cache on a separate store, you can configure the store name here.
254
+        | You can use any store defined in your cache config. When leaving
255
+        | at "null" it will use the default store.
256
+        |
257
+        */
258
+        'illuminate' => [
259
+            'store' => null,
260
+        ],
261
+    ],
262
+
263
+    /*
264
+    |--------------------------------------------------------------------------
265
+    | Transaction Handler
266
+    |--------------------------------------------------------------------------
267
+    |
268
+    | By default the import is wrapped in a transaction. This is useful
269
+    | for when an import may fail and you want to retry it. With the
270
+    | transactions, the previous import gets rolled-back.
271
+    |
272
+    | You can disable the transaction handler by setting this to null.
273
+    | Or you can choose a custom made transaction handler here.
274
+    |
275
+    | Supported handlers: null|db
276
+    |
277
+    */
278
+    'transactions' => [
279
+        'handler' => 'db',
280
+        'db'      => [
281
+            'connection' => null,
282
+        ],
283
+    ],
284
+
285
+    'temporary_files' => [
286
+
287
+        /*
288
+        |--------------------------------------------------------------------------
289
+        | Local Temporary Path
290
+        |--------------------------------------------------------------------------
291
+        |
292
+        | When exporting and importing files, we use a temporary file, before
293
+        | storing reading or downloading. Here you can customize that path.
294
+        |
295
+        */
296
+        'local_path'          => storage_path('framework/cache/laravel-excel'),
297
+
298
+        /*
299
+        |--------------------------------------------------------------------------
300
+        | Remote Temporary Disk
301
+        |--------------------------------------------------------------------------
302
+        |
303
+        | When dealing with a multi server setup with queues in which you
304
+        | cannot rely on having a shared local temporary path, you might
305
+        | want to store the temporary file on a shared disk. During the
306
+        | queue executing, we'll retrieve the temporary file from that
307
+        | location instead. When left to null, it will always use
308
+        | the local path. This setting only has effect when using
309
+        | in conjunction with queued imports and exports.
310
+        |
311
+        */
312
+        'remote_disk'         => null,
313
+        'remote_prefix'       => null,
314
+
315
+        /*
316
+        |--------------------------------------------------------------------------
317
+        | Force Resync
318
+        |--------------------------------------------------------------------------
319
+        |
320
+        | When dealing with a multi server setup as above, it's possible
321
+        | for the clean up that occurs after entire queue has been run to only
322
+        | cleanup the server that the last AfterImportJob runs on. The rest of the server
323
+        | would still have the local temporary file stored on it. In this case your
324
+        | local storage limits can be exceeded and future imports won't be processed.
325
+        | To mitigate this you can set this config value to be true, so that after every
326
+        | queued chunk is processed the local temporary file is deleted on the server that
327
+        | processed it.
328
+        |
329
+        */
330
+        'force_resync_remote' => null,
331
+    ],
332
+];

BIN
public/assets/issue_report.png Прегледај датотеку


+ 9
- 0
resources/views/dashboard.blade.php Прегледај датотеку

@@ -26,6 +26,15 @@
26 26
       </div>
27 27
     </div>
28 28
 
29
+    <div class="col-3">
30
+      <div class="card">
31
+        <div class="card-body text-center">
32
+          <img class="rounded mx-auto d-block" src="{{ asset('assets/issue_report.png') }}" width="100px"/>
33
+          <a class="btn btn-primary mt-3" href="{{ route('issue.user_report') }}">Report</a>
34
+        </div>
35
+      </div>
36
+    </div>
37
+
29 38
     <div class="col-3">
30 39
       <div class="card">
31 40
         <div class="card-body text-center">

+ 14
- 0
resources/views/footer_pdf.blade.php Прегледај датотеку

@@ -0,0 +1,14 @@
1
+<!-- <div style="position: fixed; left: 0; bottom: 0; height: 0px; width: 100%; background-color: black; padding-top: 0px;">
2
+  <script type="text/php">
3
+  if ( isset($pdf) ) {
4
+    $font = $fontMetrics->getFont("helvetica", "bold");
5
+    $pdf->page_text(35, $pdf->get_height()-25, "{PAGE_NUM} / {PAGE_COUNT}", $font, 6, array(0,0,0));
6
+  }
7
+</script>
8
+</div> -->
9
+
10
+<div style="position: fixed; bottom: 0; height: 10px; width: 100%; padding-top: 0px; padding-right: 0px; text-align: left; border-top: 1px solid black; ">
11
+  <p style="font-size: 10px; text-align: justify;">
12
+    BgWorld srl - Via G. Pascoli, 6 - 24040 Lallio (BG)
13
+  </p>
14
+</div>

+ 145
- 0
resources/views/issue/componi_admin_report.blade.php Прегледај датотеку

@@ -0,0 +1,145 @@
1
+<?php
2
+use App\Models\Issue;
3
+use App\Models\Config;
4
+use Carbon\Carbon;
5
+use Illuminate\Support\Collection;
6
+
7
+$redmineUser = session('redmine_user');
8
+$collectionProject = new Collection();
9
+$index = 0;
10
+$totalProjects = 0;
11
+
12
+
13
+$response = Http::get(config('redmine.url').'/projects.json', [
14
+  'key' => $redmineUser->api_key,
15
+  'name' => '~Assistenza',
16
+  'limit' => 1
17
+]);
18
+
19
+$totalProjects = ceil($response->object()->total_count);
20
+
21
+foreach(range(0, $totalProjects) as $index){
22
+  $projectResponseAdmin = Http::get(config('redmine.url').'/projects.json', [
23
+    'key' => $redmineUser->api_key,
24
+    'name' => '~Assistenza',
25
+    'limit' => 100,
26
+    'offset' => 100*$index
27
+  ]);
28
+
29
+  foreach($projectResponseAdmin->object()->projects as $project){
30
+    $collectionProject->push($project);
31
+  }
32
+}
33
+
34
+
35
+?>
36
+
37
+<style>
38
+</style>
39
+
40
+<x-app-layout>
41
+  <x-slot name="header">
42
+    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
43
+      <i class="fas fa-chart-bar"></i> Genera report segnalazioni
44
+    </h2>
45
+  </x-slot>
46
+
47
+  {!! Form::open(['route' => 'issue.admin_report']) !!}
48
+  <div class="row justify-content-center mb-4">
49
+    <div class="col-xl-6 col-lg-6 col-md px-md-3 px-2">
50
+      <div class="card">
51
+        <div class="card-body">
52
+
53
+          <x-auth-validation-errors class="mb-4" :errors="$errors" />
54
+
55
+
56
+          <div class="form-row">
57
+            <div class="form-group col-md">
58
+              {!! Form::label('data_inizio', 'Data inizio') !!}
59
+              {!! Form::text('data_inizio', Carbon::now()->startOfMonth()->format('d/m/Y'), ['class' => 'form-control']) !!}
60
+            </div>
61
+
62
+            <div class="form-group col-md">
63
+              {!! Form::label('data_fine', 'Data fine') !!}
64
+              {!! Form::text('data_fine', Carbon::now()->endOfMonth()->format('d/m/Y'), ['class' => 'form-control']) !!}
65
+            </div>
66
+          </div>
67
+
68
+          <div class="form-row">
69
+            <div class="form-group col-md">
70
+              <button type="submit" class="btn btn-primary">Genera</button>
71
+            </div>
72
+          </div>
73
+
74
+
75
+
76
+        </div>
77
+      </div>
78
+    </div>
79
+
80
+    <div class="col-xl-6 col-lg-6 col-md px-md-3 px-2">
81
+      <div class="card">
82
+        <div class="card-body">
83
+          @foreach($collectionProject as $project)
84
+          {!! Form::checkbox('progetto[]', $project->id, false, ['class' => '']) !!} {{ $project->name }}<br>
85
+          @endforeach
86
+          </div>
87
+          </div>
88
+          </div>
89
+  </div>
90
+  {!! Form::close() !!}
91
+
92
+
93
+
94
+</x-app-layout>
95
+
96
+<script>
97
+$(document).ready(function(){
98
+  $.ajaxSetup({
99
+    headers: {
100
+      'X-CSRF-TOKEN': '{{csrf_token()}}'
101
+    }
102
+  });
103
+
104
+  $('#data_inizio').datetimepicker({
105
+    locale: 'it',
106
+    format: 'DD/MM/YYYY',
107
+    // inline: true,
108
+    sideBySide: true,
109
+    icons: {
110
+      time: "fa fa-clock-o",
111
+      date: "fa fa-calendar",
112
+      up: "fa fa-arrow-up",
113
+      down: "fa fa-arrow-down",
114
+      previous: "fa fa-chevron-left",
115
+      next: "fa fa-chevron-right",
116
+      today: "fa fa-clock-o",
117
+      clear: "fa fa-trash-o"
118
+    }
119
+  });
120
+
121
+  $('#data_fine').datetimepicker({
122
+    locale: 'it',
123
+    format: 'DD/MM/YYYY',
124
+    // inline: true,
125
+    sideBySide: true,
126
+    icons: {
127
+      time: "fa fa-clock-o",
128
+      date: "fa fa-calendar",
129
+      up: "fa fa-arrow-up",
130
+      down: "fa fa-arrow-down",
131
+      previous: "fa fa-chevron-left",
132
+      next: "fa fa-chevron-right",
133
+      today: "fa fa-clock-o",
134
+      clear: "fa fa-trash-o"
135
+    }
136
+  });
137
+
138
+  load_custom_fields("[name='project_id']");
139
+});
140
+
141
+
142
+function load_custom_fields(select){
143
+  $('#custom_fields').load("{{ route('issue.load_custom_fields') }}?project_id="+$(select).val());
144
+}
145
+</script>

+ 117
- 0
resources/views/issue/componi_user_report.blade.php Прегледај датотеку

@@ -0,0 +1,117 @@
1
+<?php
2
+use App\Models\Issue;
3
+use App\Models\Config;
4
+use Carbon\Carbon;
5
+use Illuminate\Support\Collection;
6
+
7
+?>
8
+
9
+<style>
10
+</style>
11
+
12
+<x-app-layout>
13
+  <x-slot name="header">
14
+    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
15
+      <i class="fas fa-chart-bar"></i> Genera report segnalazioni
16
+    </h2>
17
+  </x-slot>
18
+
19
+  <div class="row justify-content-center mb-4">
20
+    <div class="col-xl-6 col-lg-6 col-md px-md-3 px-2">
21
+      <div class="card">
22
+        <div class="card-body">
23
+
24
+          @if(Session::has('flash_message'))
25
+          <div class="row justify-content-center mb-4">
26
+            <div class="col">
27
+              <div class="card alert alert-success text-center">
28
+                {{ Session::get('flash_message') }}
29
+              </div>
30
+            </div>
31
+          </div>
32
+          @endif
33
+
34
+          <x-auth-validation-errors class="mb-4" :errors="$errors" />
35
+
36
+          {!! Form::open(['route' => 'issue.user_report']) !!}
37
+
38
+          <div class="form-row">
39
+            <div class="form-group col-md">
40
+              {!! Form::label('data_inizio', 'Data inizio') !!}
41
+              {!! Form::text('data_inizio', Carbon::now()->startOfMonth()->format('d/m/Y'), ['class' => 'form-control']) !!}
42
+            </div>
43
+
44
+            <div class="form-group col-md">
45
+              {!! Form::label('data_fine', 'Data fine') !!}
46
+              {!! Form::text('data_fine', Carbon::now()->endOfMonth()->format('d/m/Y'), ['class' => 'form-control']) !!}
47
+            </div>
48
+          </div>
49
+
50
+          <div class="form-row">
51
+            <div class="form-group col-md">
52
+              <button type="submit" class="btn btn-primary">Genera</button>
53
+            </div>
54
+          </div>
55
+
56
+
57
+          {!! Form::close() !!}
58
+
59
+        </div>
60
+      </div>
61
+    </div>
62
+  </div>
63
+
64
+
65
+
66
+</x-app-layout>
67
+
68
+<script>
69
+$(document).ready(function(){
70
+  $.ajaxSetup({
71
+    headers: {
72
+      'X-CSRF-TOKEN': '{{csrf_token()}}'
73
+    }
74
+  });
75
+
76
+  $('#data_inizio').datetimepicker({
77
+    locale: 'it',
78
+    format: 'DD/MM/YYYY',
79
+    // inline: true,
80
+    sideBySide: true,
81
+    icons: {
82
+      time: "fa fa-clock-o",
83
+      date: "fa fa-calendar",
84
+      up: "fa fa-arrow-up",
85
+      down: "fa fa-arrow-down",
86
+      previous: "fa fa-chevron-left",
87
+      next: "fa fa-chevron-right",
88
+      today: "fa fa-clock-o",
89
+      clear: "fa fa-trash-o"
90
+    }
91
+  });
92
+
93
+  $('#data_fine').datetimepicker({
94
+    locale: 'it',
95
+    format: 'DD/MM/YYYY',
96
+    // inline: true,
97
+    sideBySide: true,
98
+    icons: {
99
+      time: "fa fa-clock-o",
100
+      date: "fa fa-calendar",
101
+      up: "fa fa-arrow-up",
102
+      down: "fa fa-arrow-down",
103
+      previous: "fa fa-chevron-left",
104
+      next: "fa fa-chevron-right",
105
+      today: "fa fa-clock-o",
106
+      clear: "fa fa-trash-o"
107
+    }
108
+  });
109
+
110
+  load_custom_fields("[name='project_id']");
111
+});
112
+
113
+
114
+function load_custom_fields(select){
115
+  $('#custom_fields').load("{{ route('issue.load_custom_fields') }}?project_id="+$(select).val());
116
+}
117
+</script>

+ 159
- 0
resources/views/issue/user_report.blade.php Прегледај датотеку

@@ -0,0 +1,159 @@
1
+<?php
2
+use Illuminate\Support\Facades\Http;
3
+use App\Models\Issue;
4
+use App\Models\Config;
5
+use Carbon\Carbon;
6
+use Illuminate\Support\Collection;
7
+
8
+$redmineUser = session('redmine_user');
9
+$project_ids = json_decode(Auth::user()->progetti);
10
+
11
+?>
12
+
13
+<html>
14
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
15
+@include('testata_pdf')
16
+@include('footer_pdf')
17
+<body>
18
+
19
+  @foreach($project_ids as $project_id)
20
+  <?php
21
+  $timeEntries = Http::get(config('redmine.url').'/time_entries.json', [
22
+    'key' => $redmineUser->api_key,
23
+    'from' => $from,
24
+    'to' => $to,
25
+    'project_id' => $project_id,
26
+    'limit' => 100,
27
+    'cf_'.Config::getValue(Config::CAMPO_FATTURARE) => 'Sì|Fatturato', // Custom fields "fatturare"
28
+  ]);
29
+
30
+  $arrayIssues = [];
31
+  try{
32
+    foreach($timeEntries->object()->time_entries as $timeEntry){
33
+      $arrayIssues[] = $timeEntry->issue->id;
34
+    }
35
+
36
+  }catch(\Exception $e){
37
+  }
38
+  $arrayIssues = array_unique($arrayIssues);
39
+
40
+  $collectionIssue = new Collection();
41
+  foreach($arrayIssues as $issue_id){
42
+    $issueResponse = Http::get(config('redmine.url').'/issues/'.$issue_id.'.json?include=custom_fields', [
43
+      'key' => $redmineUser->api_key,
44
+    ]);
45
+
46
+    $issue = $issueResponse->object()->issue;
47
+    foreach($issue->custom_fields as $customField){
48
+      if(substr($customField->name, 0, 4) == 'Sede'){
49
+        $sedeCliente = explode('(', $customField->value)[0];
50
+        break;
51
+      }else{
52
+        $sedeCliente = "";
53
+      }
54
+    }
55
+
56
+    $collectionIssue->push(['id' => $issue->id, 'subject' => $issue->subject, 'sede_cliente' => $sedeCliente]);
57
+  }
58
+
59
+  $collectionIssue = $collectionIssue->sortBy('sede_cliente');
60
+
61
+  ?>
62
+
63
+  @if($collectionIssue->count() == 0)
64
+  @continue
65
+  @endif
66
+
67
+
68
+
69
+  <div style="width: 100%;">
70
+    @if($loop->iteration > 1)
71
+    <div class="page-break"></div>
72
+    @endif
73
+
74
+    <div style="width: 100%; padding-top: 0px; height: 100px; margin-bottom: 15px;" >
75
+      <div style="width: 25%; float: left;">
76
+        <img src="{{ public_path('assets/logo_bgw.png') }}" style="height: 100%"/>
77
+      </div>
78
+    </div>
79
+
80
+    <div style="width: 100%;">
81
+      <?php
82
+      $p = Http::get(config('redmine.url').'/projects/'.$project_id.'.json', [
83
+        'key' => $redmineUser->api_key,
84
+      ]);
85
+      ?>
86
+      <h1>Report {{ $p->object()->project->name }}</h1>
87
+    </div>
88
+
89
+    <div style="width: 100%; margin-bottom: 30px">
90
+      <?php
91
+      $sedeCliente = "";
92
+      $sedeClienteCorrente = null;
93
+      foreach($collectionIssue as $issue){
94
+        $sedeCliente = $issue['sede_cliente'];
95
+
96
+        if($sedeClienteCorrente != $sedeCliente){
97
+          if($sedeClienteCorrente != null){
98
+            echo "</table>";
99
+          }
100
+          $sedeClienteCorrente = $sedeCliente;
101
+          echo "<table class='table' style='width: 100%; margin-bottom: 40px;'>
102
+          <thead>
103
+          <tr>
104
+          <th style='width: 430px;'>Segnalazione - Sede: ".$sedeCliente."</th>
105
+          <th style='width: 60px;'>Data</th>
106
+          <th style='width: 60px;'>On Site</th>
107
+          <th style='width: 60px;'>Remota</th>
108
+          </tr>
109
+          </thead>";
110
+        }
111
+
112
+        // get tempi
113
+        $tempoImpiegatoOnSite = Issue::getTempoImpiegato($issue['id'], [Config::getValue(Config::ATTIVITA_ON_SITE), 14], $from, $to);
114
+        $tempoImpiegatoRemota = Issue::getTempoImpiegato($issue['id'], Config::getValue(Config::ATTIVITA_REMOTA), $from, $to);
115
+
116
+        $index=0;
117
+
118
+        foreach($tempoImpiegatoOnSite as $tempo){
119
+          echo "<tr>";
120
+          if($index == 0){
121
+            echo "<td rowspan=".($tempoImpiegatoOnSite->count()+$tempoImpiegatoRemota->count()).">#".$issue['id']." - ".$issue['subject']."</td>";
122
+            $index++;
123
+          }
124
+          echo "<td>".Carbon::parse($tempo->spent_on)->format('d/m/Y')."</td>";
125
+          echo "<td>".$tempo->hours."h</td>";
126
+          echo "<td></td>";
127
+          echo "</tr>";
128
+        }
129
+
130
+        // $index=0;
131
+        foreach($tempoImpiegatoRemota as $tempo){
132
+          echo "<tr>";
133
+          if($index == 0){
134
+            echo "<td rowspan=".($tempoImpiegatoOnSite->count()+$tempoImpiegatoRemota->count()).">#".$issue['id']." - ".$issue['subject']."</td>";
135
+            $index++;
136
+          }
137
+          echo "<td>".Carbon::parse($tempo->spent_on)->format('d/m/Y')."</td>";
138
+          echo "<td></td>";
139
+          echo "<td>".$tempo->hours."h</td>";
140
+          echo "</tr>";
141
+        }
142
+
143
+      }
144
+
145
+
146
+
147
+      ?>
148
+    </table>
149
+
150
+  </div>
151
+
152
+</div>
153
+
154
+@endforeach
155
+</table>
156
+
157
+
158
+</body>
159
+</html>

+ 10
- 0
resources/views/layouts/navigation.blade.php Прегледај датотеку

@@ -30,6 +30,16 @@
30 30
                         <i class="fas fa-ticket-alt"></i>Nuovo ticket
31 31
                     </x-nav-link>
32 32
 
33
+                    <x-nav-link :href="route('issue.user_report')" :active="request()->routeIs('issue.user_report')">
34
+                        <i class="fas fa-chart-bar"></i>Report
35
+                    </x-nav-link>
36
+
37
+                    @if(Auth::user()->can('view-configurazione'))
38
+                    <x-nav-link :href="route('issue.admin_report')" :active="request()->routeIs('issue.admin_report')">
39
+                        <i class="fas fa-chart-bar"></i>Report Excel
40
+                    </x-nav-link>
41
+                    @endif
42
+
33 43
                     @if(Auth::user()->can('view-configurazione'))
34 44
                     <x-nav-link :href="route('config.index')" :active="request()->routeIs('config.index')">
35 45
                         <i class="fas fa-cogs"></i>Configurazione

+ 102
- 0
resources/views/testata_pdf.blade.php Прегледај датотеку

@@ -0,0 +1,102 @@
1
+<head>
2
+  <link href="https://fonts.googleapis.com/css?family=Encode+Sans+Condensed:400,800" rel="stylesheet" type="text/css">
3
+  <style>
4
+
5
+  html {
6
+    margin: 1cm;
7
+  }
8
+  html, body, p, h1, h2, h3, td, th{
9
+    /* background-color: #fff; */
10
+    font-family:  sans-serif !important;
11
+    font-weight: 400;
12
+  }
13
+  p, h1, h2, h3{
14
+    margin: 2px;
15
+  }
16
+
17
+  b{
18
+    font-family: sans-serif !important;
19
+    font-weight: 800;
20
+  }
21
+
22
+  p, td, b{
23
+    font-size: 14px;
24
+  }
25
+
26
+  .elenco-particolari td{
27
+    vertical-align: top;
28
+  }
29
+
30
+  table, th, td {
31
+    border: 1px solid black;
32
+    padding: 5px;
33
+  }
34
+  table {
35
+    border-collapse: collapse;
36
+    width: 100%;
37
+  }
38
+
39
+  table.table_condizioni td{
40
+    border: 0px;
41
+    padding: 0px;
42
+  }
43
+
44
+  .table_condizioni{
45
+    border: 0px;
46
+  }
47
+
48
+  table.intestazione td, table.intestazione td b{
49
+    border: 0px;
50
+    font-size: 14px;
51
+    /* padding: 0px; */
52
+    padding-left: 5px;
53
+    padding-top: 0px;
54
+  }
55
+
56
+  th{
57
+    background-color: silver;
58
+  }
59
+
60
+  .td_bold{
61
+    font-family: 'Encode Sans Condensed', sans-serif;
62
+    font-weight: 800;
63
+  }
64
+
65
+  .page-break {
66
+    page-break-after: always;
67
+  }
68
+
69
+  .box_sx {
70
+    width: 46%;
71
+    float:left;
72
+    /* border: 1px solid black;
73
+    border-radius: 10px; */
74
+    /* padding: 10px;
75
+    padding-top: 0px; */
76
+    /* margin-right: 10px; */
77
+  }
78
+
79
+  .box_dx {
80
+    width: 46%;
81
+    float:left;
82
+    /* border: 1px solid black;
83
+    border-radius: 10px; */
84
+    /* padding: 10px;
85
+    padding-top: 0px; */
86
+    /* margin-right: 10px; */
87
+  }
88
+
89
+  .divData {
90
+    width: 100%;
91
+    font-weight: bold;
92
+    text-align: center;
93
+    background-color: #DCDCDC;
94
+    border-radius: 5px;
95
+    padding: 5px;
96
+    margin-bottom: 10px;
97
+  }
98
+
99
+
100
+
101
+</style>
102
+</head>

+ 6
- 0
routes/web.php Прегледај датотеку

@@ -41,6 +41,12 @@ Route::middleware(['auth', 'verified'])->group(function () {
41 41
   Route::post('issue/crea', [IssueController::class, 'crea'])->name('issue.crea');
42 42
   Route::get('attachment/{id?}/download', [IssueController::class, 'download'])->name('attachment.download');
43 43
 
44
+  Route::get('issue/user_report', [IssueController::class, 'show_user_report'])->name('issue.user_report');
45
+  Route::post('issue/user_report', [IssueController::class, 'user_report'])->name('issue.user_report');
46
+
47
+  Route::get('issue/admin_report', [IssueController::class, 'show_admin_report'])->name('issue.admin_report');
48
+  Route::post('issue/admin_report', [IssueController::class, 'admin_report'])->name('issue.admin_report');
49
+
44 50
   Route::get('config', [ConfigController::class, 'index'])->name('config.index');
45 51
   Route::post('save', [ConfigController::class, 'save'])->name('config.save');
46 52
 

+ 572
- 0
storage/fonts/Helvetica.afm.php Прегледај датотеку

@@ -0,0 +1,572 @@
1
+<?php return array (
2
+  'codeToName' => 
3
+  array (
4
+    32 => 'space',
5
+    160 => 'space',
6
+    33 => 'exclam',
7
+    34 => 'quotedbl',
8
+    35 => 'numbersign',
9
+    36 => 'dollar',
10
+    37 => 'percent',
11
+    38 => 'ampersand',
12
+    146 => 'quoteright',
13
+    40 => 'parenleft',
14
+    41 => 'parenright',
15
+    42 => 'asterisk',
16
+    43 => 'plus',
17
+    44 => 'comma',
18
+    45 => 'hyphen',
19
+    173 => 'hyphen',
20
+    46 => 'period',
21
+    47 => 'slash',
22
+    48 => 'zero',
23
+    49 => 'one',
24
+    50 => 'two',
25
+    51 => 'three',
26
+    52 => 'four',
27
+    53 => 'five',
28
+    54 => 'six',
29
+    55 => 'seven',
30
+    56 => 'eight',
31
+    57 => 'nine',
32
+    58 => 'colon',
33
+    59 => 'semicolon',
34
+    60 => 'less',
35
+    61 => 'equal',
36
+    62 => 'greater',
37
+    63 => 'question',
38
+    64 => 'at',
39
+    65 => 'A',
40
+    66 => 'B',
41
+    67 => 'C',
42
+    68 => 'D',
43
+    69 => 'E',
44
+    70 => 'F',
45
+    71 => 'G',
46
+    72 => 'H',
47
+    73 => 'I',
48
+    74 => 'J',
49
+    75 => 'K',
50
+    76 => 'L',
51
+    77 => 'M',
52
+    78 => 'N',
53
+    79 => 'O',
54
+    80 => 'P',
55
+    81 => 'Q',
56
+    82 => 'R',
57
+    83 => 'S',
58
+    84 => 'T',
59
+    85 => 'U',
60
+    86 => 'V',
61
+    87 => 'W',
62
+    88 => 'X',
63
+    89 => 'Y',
64
+    90 => 'Z',
65
+    91 => 'bracketleft',
66
+    92 => 'backslash',
67
+    93 => 'bracketright',
68
+    94 => 'asciicircum',
69
+    95 => 'underscore',
70
+    145 => 'quoteleft',
71
+    97 => 'a',
72
+    98 => 'b',
73
+    99 => 'c',
74
+    100 => 'd',
75
+    101 => 'e',
76
+    102 => 'f',
77
+    103 => 'g',
78
+    104 => 'h',
79
+    105 => 'i',
80
+    106 => 'j',
81
+    107 => 'k',
82
+    108 => 'l',
83
+    109 => 'm',
84
+    110 => 'n',
85
+    111 => 'o',
86
+    112 => 'p',
87
+    113 => 'q',
88
+    114 => 'r',
89
+    115 => 's',
90
+    116 => 't',
91
+    117 => 'u',
92
+    118 => 'v',
93
+    119 => 'w',
94
+    120 => 'x',
95
+    121 => 'y',
96
+    122 => 'z',
97
+    123 => 'braceleft',
98
+    124 => 'bar',
99
+    125 => 'braceright',
100
+    126 => 'asciitilde',
101
+    161 => 'exclamdown',
102
+    162 => 'cent',
103
+    163 => 'sterling',
104
+    165 => 'yen',
105
+    131 => 'florin',
106
+    167 => 'section',
107
+    164 => 'currency',
108
+    39 => 'quotesingle',
109
+    147 => 'quotedblleft',
110
+    171 => 'guillemotleft',
111
+    139 => 'guilsinglleft',
112
+    155 => 'guilsinglright',
113
+    150 => 'endash',
114
+    134 => 'dagger',
115
+    135 => 'daggerdbl',
116
+    183 => 'periodcentered',
117
+    182 => 'paragraph',
118
+    149 => 'bullet',
119
+    130 => 'quotesinglbase',
120
+    132 => 'quotedblbase',
121
+    148 => 'quotedblright',
122
+    187 => 'guillemotright',
123
+    133 => 'ellipsis',
124
+    137 => 'perthousand',
125
+    191 => 'questiondown',
126
+    96 => 'grave',
127
+    180 => 'acute',
128
+    136 => 'circumflex',
129
+    152 => 'tilde',
130
+    175 => 'macron',
131
+    168 => 'dieresis',
132
+    184 => 'cedilla',
133
+    151 => 'emdash',
134
+    198 => 'AE',
135
+    170 => 'ordfeminine',
136
+    216 => 'Oslash',
137
+    140 => 'OE',
138
+    186 => 'ordmasculine',
139
+    230 => 'ae',
140
+    248 => 'oslash',
141
+    156 => 'oe',
142
+    223 => 'germandbls',
143
+    207 => 'Idieresis',
144
+    233 => 'eacute',
145
+    159 => 'Ydieresis',
146
+    247 => 'divide',
147
+    221 => 'Yacute',
148
+    194 => 'Acircumflex',
149
+    225 => 'aacute',
150
+    219 => 'Ucircumflex',
151
+    253 => 'yacute',
152
+    234 => 'ecircumflex',
153
+    220 => 'Udieresis',
154
+    218 => 'Uacute',
155
+    203 => 'Edieresis',
156
+    169 => 'copyright',
157
+    229 => 'aring',
158
+    224 => 'agrave',
159
+    227 => 'atilde',
160
+    154 => 'scaron',
161
+    237 => 'iacute',
162
+    251 => 'ucircumflex',
163
+    226 => 'acircumflex',
164
+    231 => 'ccedilla',
165
+    222 => 'Thorn',
166
+    179 => 'threesuperior',
167
+    210 => 'Ograve',
168
+    192 => 'Agrave',
169
+    215 => 'multiply',
170
+    250 => 'uacute',
171
+    255 => 'ydieresis',
172
+    238 => 'icircumflex',
173
+    202 => 'Ecircumflex',
174
+    228 => 'adieresis',
175
+    235 => 'edieresis',
176
+    205 => 'Iacute',
177
+    177 => 'plusminus',
178
+    166 => 'brokenbar',
179
+    174 => 'registered',
180
+    200 => 'Egrave',
181
+    142 => 'Zcaron',
182
+    208 => 'Eth',
183
+    199 => 'Ccedilla',
184
+    193 => 'Aacute',
185
+    196 => 'Adieresis',
186
+    232 => 'egrave',
187
+    211 => 'Oacute',
188
+    243 => 'oacute',
189
+    239 => 'idieresis',
190
+    212 => 'Ocircumflex',
191
+    217 => 'Ugrave',
192
+    254 => 'thorn',
193
+    178 => 'twosuperior',
194
+    214 => 'Odieresis',
195
+    181 => 'mu',
196
+    236 => 'igrave',
197
+    190 => 'threequarters',
198
+    153 => 'trademark',
199
+    204 => 'Igrave',
200
+    189 => 'onehalf',
201
+    244 => 'ocircumflex',
202
+    241 => 'ntilde',
203
+    201 => 'Eacute',
204
+    188 => 'onequarter',
205
+    138 => 'Scaron',
206
+    176 => 'degree',
207
+    242 => 'ograve',
208
+    249 => 'ugrave',
209
+    209 => 'Ntilde',
210
+    245 => 'otilde',
211
+    195 => 'Atilde',
212
+    197 => 'Aring',
213
+    213 => 'Otilde',
214
+    206 => 'Icircumflex',
215
+    172 => 'logicalnot',
216
+    246 => 'odieresis',
217
+    252 => 'udieresis',
218
+    240 => 'eth',
219
+    158 => 'zcaron',
220
+    185 => 'onesuperior',
221
+    128 => 'Euro',
222
+  ),
223
+  'isUnicode' => false,
224
+  'FontName' => 'Helvetica',
225
+  'FullName' => 'Helvetica',
226
+  'FamilyName' => 'Helvetica',
227
+  'Weight' => 'Medium',
228
+  'ItalicAngle' => '0',
229
+  'IsFixedPitch' => 'false',
230
+  'CharacterSet' => 'ExtendedRoman',
231
+  'FontBBox' => 
232
+  array (
233
+    0 => '-166',
234
+    1 => '-225',
235
+    2 => '1000',
236
+    3 => '931',
237
+  ),
238
+  'UnderlinePosition' => '-100',
239
+  'UnderlineThickness' => '50',
240
+  'Version' => '002.000',
241
+  'EncodingScheme' => 'WinAnsiEncoding',
242
+  'CapHeight' => '718',
243
+  'XHeight' => '523',
244
+  'Ascender' => '718',
245
+  'Descender' => '-207',
246
+  'StdHW' => '76',
247
+  'StdVW' => '88',
248
+  'StartCharMetrics' => '317',
249
+  'C' => 
250
+  array (
251
+    32 => 278.0,
252
+    160 => 278.0,
253
+    33 => 278.0,
254
+    34 => 355.0,
255
+    35 => 556.0,
256
+    36 => 556.0,
257
+    37 => 889.0,
258
+    38 => 667.0,
259
+    146 => 222.0,
260
+    40 => 333.0,
261
+    41 => 333.0,
262
+    42 => 389.0,
263
+    43 => 584.0,
264
+    44 => 278.0,
265
+    45 => 333.0,
266
+    173 => 333.0,
267
+    46 => 278.0,
268
+    47 => 278.0,
269
+    48 => 556.0,
270
+    49 => 556.0,
271
+    50 => 556.0,
272
+    51 => 556.0,
273
+    52 => 556.0,
274
+    53 => 556.0,
275
+    54 => 556.0,
276
+    55 => 556.0,
277
+    56 => 556.0,
278
+    57 => 556.0,
279
+    58 => 278.0,
280
+    59 => 278.0,
281
+    60 => 584.0,
282
+    61 => 584.0,
283
+    62 => 584.0,
284
+    63 => 556.0,
285
+    64 => 1015.0,
286
+    65 => 667.0,
287
+    66 => 667.0,
288
+    67 => 722.0,
289
+    68 => 722.0,
290
+    69 => 667.0,
291
+    70 => 611.0,
292
+    71 => 778.0,
293
+    72 => 722.0,
294
+    73 => 278.0,
295
+    74 => 500.0,
296
+    75 => 667.0,
297
+    76 => 556.0,
298
+    77 => 833.0,
299
+    78 => 722.0,
300
+    79 => 778.0,
301
+    80 => 667.0,
302
+    81 => 778.0,
303
+    82 => 722.0,
304
+    83 => 667.0,
305
+    84 => 611.0,
306
+    85 => 722.0,
307
+    86 => 667.0,
308
+    87 => 944.0,
309
+    88 => 667.0,
310
+    89 => 667.0,
311
+    90 => 611.0,
312
+    91 => 278.0,
313
+    92 => 278.0,
314
+    93 => 278.0,
315
+    94 => 469.0,
316
+    95 => 556.0,
317
+    145 => 222.0,
318
+    97 => 556.0,
319
+    98 => 556.0,
320
+    99 => 500.0,
321
+    100 => 556.0,
322
+    101 => 556.0,
323
+    102 => 278.0,
324
+    103 => 556.0,
325
+    104 => 556.0,
326
+    105 => 222.0,
327
+    106 => 222.0,
328
+    107 => 500.0,
329
+    108 => 222.0,
330
+    109 => 833.0,
331
+    110 => 556.0,
332
+    111 => 556.0,
333
+    112 => 556.0,
334
+    113 => 556.0,
335
+    114 => 333.0,
336
+    115 => 500.0,
337
+    116 => 278.0,
338
+    117 => 556.0,
339
+    118 => 500.0,
340
+    119 => 722.0,
341
+    120 => 500.0,
342
+    121 => 500.0,
343
+    122 => 500.0,
344
+    123 => 334.0,
345
+    124 => 260.0,
346
+    125 => 334.0,
347
+    126 => 584.0,
348
+    161 => 333.0,
349
+    162 => 556.0,
350
+    163 => 556.0,
351
+    'fraction' => 167.0,
352
+    165 => 556.0,
353
+    131 => 556.0,
354
+    167 => 556.0,
355
+    164 => 556.0,
356
+    39 => 191.0,
357
+    147 => 333.0,
358
+    171 => 556.0,
359
+    139 => 333.0,
360
+    155 => 333.0,
361
+    'fi' => 500.0,
362
+    'fl' => 500.0,
363
+    150 => 556.0,
364
+    134 => 556.0,
365
+    135 => 556.0,
366
+    183 => 278.0,
367
+    182 => 537.0,
368
+    149 => 350.0,
369
+    130 => 222.0,
370
+    132 => 333.0,
371
+    148 => 333.0,
372
+    187 => 556.0,
373
+    133 => 1000.0,
374
+    137 => 1000.0,
375
+    191 => 611.0,
376
+    96 => 333.0,
377
+    180 => 333.0,
378
+    136 => 333.0,
379
+    152 => 333.0,
380
+    175 => 333.0,
381
+    'breve' => 333.0,
382
+    'dotaccent' => 333.0,
383
+    168 => 333.0,
384
+    'ring' => 333.0,
385
+    184 => 333.0,
386
+    'hungarumlaut' => 333.0,
387
+    'ogonek' => 333.0,
388
+    'caron' => 333.0,
389
+    151 => 1000.0,
390
+    198 => 1000.0,
391
+    170 => 370.0,
392
+    'Lslash' => 556.0,
393
+    216 => 778.0,
394
+    140 => 1000.0,
395
+    186 => 365.0,
396
+    230 => 889.0,
397
+    'dotlessi' => 278.0,
398
+    'lslash' => 222.0,
399
+    248 => 611.0,
400
+    156 => 944.0,
401
+    223 => 611.0,
402
+    207 => 278.0,
403
+    233 => 556.0,
404
+    'abreve' => 556.0,
405
+    'uhungarumlaut' => 556.0,
406
+    'ecaron' => 556.0,
407
+    159 => 667.0,
408
+    247 => 584.0,
409
+    221 => 667.0,
410
+    194 => 667.0,
411
+    225 => 556.0,
412
+    219 => 722.0,
413
+    253 => 500.0,
414
+    'scommaaccent' => 500.0,
415
+    234 => 556.0,
416
+    'Uring' => 722.0,
417
+    220 => 722.0,
418
+    'aogonek' => 556.0,
419
+    218 => 722.0,
420
+    'uogonek' => 556.0,
421
+    203 => 667.0,
422
+    'Dcroat' => 722.0,
423
+    'commaaccent' => 250.0,
424
+    169 => 737.0,
425
+    'Emacron' => 667.0,
426
+    'ccaron' => 500.0,
427
+    229 => 556.0,
428
+    'Ncommaaccent' => 722.0,
429
+    'lacute' => 222.0,
430
+    224 => 556.0,
431
+    'Tcommaaccent' => 611.0,
432
+    'Cacute' => 722.0,
433
+    227 => 556.0,
434
+    'Edotaccent' => 667.0,
435
+    154 => 500.0,
436
+    'scedilla' => 500.0,
437
+    237 => 278.0,
438
+    'lozenge' => 471.0,
439
+    'Rcaron' => 722.0,
440
+    'Gcommaaccent' => 778.0,
441
+    251 => 556.0,
442
+    226 => 556.0,
443
+    'Amacron' => 667.0,
444
+    'rcaron' => 333.0,
445
+    231 => 500.0,
446
+    'Zdotaccent' => 611.0,
447
+    222 => 667.0,
448
+    'Omacron' => 778.0,
449
+    'Racute' => 722.0,
450
+    'Sacute' => 667.0,
451
+    'dcaron' => 643.0,
452
+    'Umacron' => 722.0,
453
+    'uring' => 556.0,
454
+    179 => 333.0,
455
+    210 => 778.0,
456
+    192 => 667.0,
457
+    'Abreve' => 667.0,
458
+    215 => 584.0,
459
+    250 => 556.0,
460
+    'Tcaron' => 611.0,
461
+    'partialdiff' => 476.0,
462
+    255 => 500.0,
463
+    'Nacute' => 722.0,
464
+    238 => 278.0,
465
+    202 => 667.0,
466
+    228 => 556.0,
467
+    235 => 556.0,
468
+    'cacute' => 500.0,
469
+    'nacute' => 556.0,
470
+    'umacron' => 556.0,
471
+    'Ncaron' => 722.0,
472
+    205 => 278.0,
473
+    177 => 584.0,
474
+    166 => 260.0,
475
+    174 => 737.0,
476
+    'Gbreve' => 778.0,
477
+    'Idotaccent' => 278.0,
478
+    'summation' => 600.0,
479
+    200 => 667.0,
480
+    'racute' => 333.0,
481
+    'omacron' => 556.0,
482
+    'Zacute' => 611.0,
483
+    142 => 611.0,
484
+    'greaterequal' => 549.0,
485
+    208 => 722.0,
486
+    199 => 722.0,
487
+    'lcommaaccent' => 222.0,
488
+    'tcaron' => 317.0,
489
+    'eogonek' => 556.0,
490
+    'Uogonek' => 722.0,
491
+    193 => 667.0,
492
+    196 => 667.0,
493
+    232 => 556.0,
494
+    'zacute' => 500.0,
495
+    'iogonek' => 222.0,
496
+    211 => 778.0,
497
+    243 => 556.0,
498
+    'amacron' => 556.0,
499
+    'sacute' => 500.0,
500
+    239 => 278.0,
501
+    212 => 778.0,
502
+    217 => 722.0,
503
+    'Delta' => 612.0,
504
+    254 => 556.0,
505
+    178 => 333.0,
506
+    214 => 778.0,
507
+    181 => 556.0,
508
+    236 => 278.0,
509
+    'ohungarumlaut' => 556.0,
510
+    'Eogonek' => 667.0,
511
+    'dcroat' => 556.0,
512
+    190 => 834.0,
513
+    'Scedilla' => 667.0,
514
+    'lcaron' => 299.0,
515
+    'Kcommaaccent' => 667.0,
516
+    'Lacute' => 556.0,
517
+    153 => 1000.0,
518
+    'edotaccent' => 556.0,
519
+    204 => 278.0,
520
+    'Imacron' => 278.0,
521
+    'Lcaron' => 556.0,
522
+    189 => 834.0,
523
+    'lessequal' => 549.0,
524
+    244 => 556.0,
525
+    241 => 556.0,
526
+    'Uhungarumlaut' => 722.0,
527
+    201 => 667.0,
528
+    'emacron' => 556.0,
529
+    'gbreve' => 556.0,
530
+    188 => 834.0,
531
+    138 => 667.0,
532
+    'Scommaaccent' => 667.0,
533
+    'Ohungarumlaut' => 778.0,
534
+    176 => 400.0,
535
+    242 => 556.0,
536
+    'Ccaron' => 722.0,
537
+    249 => 556.0,
538
+    'radical' => 453.0,
539
+    'Dcaron' => 722.0,
540
+    'rcommaaccent' => 333.0,
541
+    209 => 722.0,
542
+    245 => 556.0,
543
+    'Rcommaaccent' => 722.0,
544
+    'Lcommaaccent' => 556.0,
545
+    195 => 667.0,
546
+    'Aogonek' => 667.0,
547
+    197 => 667.0,
548
+    213 => 778.0,
549
+    'zdotaccent' => 500.0,
550
+    'Ecaron' => 667.0,
551
+    'Iogonek' => 278.0,
552
+    'kcommaaccent' => 500.0,
553
+    'minus' => 584.0,
554
+    206 => 278.0,
555
+    'ncaron' => 556.0,
556
+    'tcommaaccent' => 278.0,
557
+    172 => 584.0,
558
+    246 => 556.0,
559
+    252 => 556.0,
560
+    'notequal' => 549.0,
561
+    'gcommaaccent' => 556.0,
562
+    240 => 556.0,
563
+    158 => 500.0,
564
+    'ncommaaccent' => 556.0,
565
+    185 => 333.0,
566
+    'imacron' => 278.0,
567
+    128 => 556.0,
568
+  ),
569
+  'CIDtoGID_Compressed' => true,
570
+  'CIDtoGID' => 'eJwDAAAAAAE=',
571
+  '_version_' => 6,
572
+);

+ 86
- 0
storage/fonts/dompdf_font_family_cache.php Прегледај датотеку

@@ -0,0 +1,86 @@
1
+<?php return function ($fontDir, $rootDir) {
2
+return array (
3
+  'sans-serif' => array(
4
+    'normal' => $rootDir . '/lib/fonts/Helvetica',
5
+    'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
6
+    'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
7
+    'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
8
+  ),
9
+  'times' => array(
10
+    'normal' => $rootDir . '/lib/fonts/Times-Roman',
11
+    'bold' => $rootDir . '/lib/fonts/Times-Bold',
12
+    'italic' => $rootDir . '/lib/fonts/Times-Italic',
13
+    'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
14
+  ),
15
+  'times-roman' => array(
16
+    'normal' => $rootDir . '/lib/fonts/Times-Roman',
17
+    'bold' => $rootDir . '/lib/fonts/Times-Bold',
18
+    'italic' => $rootDir . '/lib/fonts/Times-Italic',
19
+    'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
20
+  ),
21
+  'courier' => array(
22
+    'normal' => $rootDir . '/lib/fonts/Courier',
23
+    'bold' => $rootDir . '/lib/fonts/Courier-Bold',
24
+    'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
25
+    'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
26
+  ),
27
+  'helvetica' => array(
28
+    'normal' => $rootDir . '/lib/fonts/Helvetica',
29
+    'bold' => $rootDir . '/lib/fonts/Helvetica-Bold',
30
+    'italic' => $rootDir . '/lib/fonts/Helvetica-Oblique',
31
+    'bold_italic' => $rootDir . '/lib/fonts/Helvetica-BoldOblique',
32
+  ),
33
+  'zapfdingbats' => array(
34
+    'normal' => $rootDir . '/lib/fonts/ZapfDingbats',
35
+    'bold' => $rootDir . '/lib/fonts/ZapfDingbats',
36
+    'italic' => $rootDir . '/lib/fonts/ZapfDingbats',
37
+    'bold_italic' => $rootDir . '/lib/fonts/ZapfDingbats',
38
+  ),
39
+  'symbol' => array(
40
+    'normal' => $rootDir . '/lib/fonts/Symbol',
41
+    'bold' => $rootDir . '/lib/fonts/Symbol',
42
+    'italic' => $rootDir . '/lib/fonts/Symbol',
43
+    'bold_italic' => $rootDir . '/lib/fonts/Symbol',
44
+  ),
45
+  'serif' => array(
46
+    'normal' => $rootDir . '/lib/fonts/Times-Roman',
47
+    'bold' => $rootDir . '/lib/fonts/Times-Bold',
48
+    'italic' => $rootDir . '/lib/fonts/Times-Italic',
49
+    'bold_italic' => $rootDir . '/lib/fonts/Times-BoldItalic',
50
+  ),
51
+  'monospace' => array(
52
+    'normal' => $rootDir . '/lib/fonts/Courier',
53
+    'bold' => $rootDir . '/lib/fonts/Courier-Bold',
54
+    'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
55
+    'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
56
+  ),
57
+  'fixed' => array(
58
+    'normal' => $rootDir . '/lib/fonts/Courier',
59
+    'bold' => $rootDir . '/lib/fonts/Courier-Bold',
60
+    'italic' => $rootDir . '/lib/fonts/Courier-Oblique',
61
+    'bold_italic' => $rootDir . '/lib/fonts/Courier-BoldOblique',
62
+  ),
63
+  'dejavu sans' => array(
64
+    'bold' => $rootDir . '/lib/fonts/DejaVuSans-Bold',
65
+    'bold_italic' => $rootDir . '/lib/fonts/DejaVuSans-BoldOblique',
66
+    'italic' => $rootDir . '/lib/fonts/DejaVuSans-Oblique',
67
+    'normal' => $rootDir . '/lib/fonts/DejaVuSans',
68
+  ),
69
+  'dejavu sans mono' => array(
70
+    'bold' => $rootDir . '/lib/fonts/DejaVuSansMono-Bold',
71
+    'bold_italic' => $rootDir . '/lib/fonts/DejaVuSansMono-BoldOblique',
72
+    'italic' => $rootDir . '/lib/fonts/DejaVuSansMono-Oblique',
73
+    'normal' => $rootDir . '/lib/fonts/DejaVuSansMono',
74
+  ),
75
+  'dejavu serif' => array(
76
+    'bold' => $rootDir . '/lib/fonts/DejaVuSerif-Bold',
77
+    'bold_italic' => $rootDir . '/lib/fonts/DejaVuSerif-BoldItalic',
78
+    'italic' => $rootDir . '/lib/fonts/DejaVuSerif-Italic',
79
+    'normal' => $rootDir . '/lib/fonts/DejaVuSerif',
80
+  ),
81
+  'encode sans condensed' => array(
82
+    'normal' => $fontDir . '/encode_sans_condensed_normal_be9c7c9139c8386fff63b1a695a5a1f6',
83
+    '800' => $fontDir . '/encode_sans_condensed_800_b20cbfdb8ef4b52e91d3024c4df854e4',
84
+  ),
85
+);
86
+}; ?>

BIN
storage/fonts/encode_sans_condensed_800_b20cbfdb8ef4b52e91d3024c4df854e4.ttf Прегледај датотеку


+ 249
- 0
storage/fonts/encode_sans_condensed_800_b20cbfdb8ef4b52e91d3024c4df854e4.ufm Прегледај датотеку

@@ -0,0 +1,249 @@
1
+StartFontMetrics 4.1
2
+Notice Converted by PHP-font-lib
3
+Comment https://github.com/PhenX/php-font-lib
4
+EncodingScheme FontSpecific
5
+Copyright Copyright 2012 The Encode Project Authors (impallari@gmail.com), with Reserved Font Name "Encode Sans".
6
+FontName Encode Sans Condensed ExtraBold
7
+FontSubfamily Regular
8
+UniqueID 2.000;IMPA;EncodeSansCondensed-ExtraBold
9
+FullName Encode Sans Condensed ExtraBold
10
+Version Version 2.000
11
+PostScriptName EncodeSansCondensed-ExtraBold
12
+LicenseURL http://scripts.sil.org/OFL
13
+Weight Bold
14
+ItalicAngle 0
15
+IsFixedPitch false
16
+UnderlineThickness 25
17
+UnderlinePosition -38
18
+FontHeightOffset 0
19
+Ascender 1030
20
+Descender -220
21
+FontBBox -538 -254 1356 1148
22
+StartCharMetrics 316
23
+U 0 ; WX 0 ; N NULL ; G 1
24
+U 13 ; WX 218 ; N CR ; G 2
25
+U 32 ; WX 218 ; N space ; G 3
26
+U 33 ; WX 280 ; N exclam ; G 189
27
+U 34 ; WX 428 ; N quotedbl ; G 195
28
+U 35 ; WX 586 ; N numbersign ; G 191
29
+U 36 ; WX 513 ; N dollar ; G 236
30
+U 37 ; WX 969 ; N percent ; G 258
31
+U 38 ; WX 734 ; N ampersand ; G 275
32
+U 39 ; WX 217 ; N quotesingle ; G 196
33
+U 40 ; WX 328 ; N parenleft ; G 215
34
+U 41 ; WX 328 ; N parenright ; G 216
35
+U 42 ; WX 494 ; N asterisk ; G 182
36
+U 43 ; WX 517 ; N plus ; G 247
37
+U 44 ; WX 260 ; N comma ; G 187
38
+U 45 ; WX 375 ; N hyphen ; G 219
39
+U 46 ; WX 260 ; N period ; G 192
40
+U 47 ; WX 351 ; N slash ; G 198
41
+U 48 ; WX 598 ; N zero ; G 134
42
+U 49 ; WX 350 ; N one ; G 135
43
+U 50 ; WX 479 ; N two ; G 136
44
+U 51 ; WX 484 ; N three ; G 137
45
+U 52 ; WX 576 ; N four ; G 138
46
+U 53 ; WX 490 ; N five ; G 139
47
+U 54 ; WX 567 ; N six ; G 140
48
+U 55 ; WX 456 ; N seven ; G 141
49
+U 56 ; WX 598 ; N eight ; G 142
50
+U 57 ; WX 567 ; N nine ; G 143
51
+U 58 ; WX 260 ; N colon ; G 186
52
+U 59 ; WX 260 ; N semicolon ; G 197
53
+U 60 ; WX 517 ; N less ; G 253
54
+U 61 ; WX 517 ; N equal ; G 251
55
+U 62 ; WX 517 ; N greater ; G 252
56
+U 63 ; WX 446 ; N question ; G 193
57
+U 64 ; WX 962 ; N at ; G 274
58
+U 65 ; WX 638 ; N A ; G 4
59
+U 66 ; WX 611 ; N B ; G 12
60
+U 67 ; WX 539 ; N C ; G 13
61
+U 68 ; WX 654 ; N D ; G 15
62
+U 69 ; WX 552 ; N E ; G 17
63
+U 70 ; WX 524 ; N F ; G 22
64
+U 71 ; WX 628 ; N G ; G 23
65
+U 72 ; WX 673 ; N H ; G 24
66
+U 73 ; WX 272 ; N I ; G 25
67
+U 74 ; WX 272 ; N J ; G 30
68
+U 75 ; WX 606 ; N K ; G 31
69
+U 76 ; WX 508 ; N L ; G 32
70
+U 77 ; WX 853 ; N M ; G 34
71
+U 78 ; WX 681 ; N N ; G 35
72
+U 79 ; WX 682 ; N O ; G 37
73
+U 80 ; WX 598 ; N P ; G 45
74
+U 81 ; WX 682 ; N Q ; G 47
75
+U 82 ; WX 626 ; N R ; G 48
76
+U 83 ; WX 513 ; N S ; G 49
77
+U 84 ; WX 579 ; N T ; G 50
78
+U 85 ; WX 660 ; N U ; G 51
79
+U 86 ; WX 628 ; N V ; G 56
80
+U 87 ; WX 997 ; N W ; G 57
81
+U 88 ; WX 630 ; N X ; G 58
82
+U 89 ; WX 579 ; N Y ; G 59
83
+U 90 ; WX 545 ; N Z ; G 61
84
+U 91 ; WX 328 ; N bracketleft ; G 213
85
+U 92 ; WX 351 ; N backslash ; G 183
86
+U 93 ; WX 328 ; N bracketright ; G 214
87
+U 94 ; WX 586 ; N asciicircum ; G 284
88
+U 95 ; WX 533 ; N underscore ; G 199
89
+U 96 ; WX 573 ; N grave ; G 312
90
+U 97 ; WX 493 ; N a ; G 63
91
+U 98 ; WX 539 ; N b ; G 71
92
+U 99 ; WX 412 ; N c ; G 72
93
+U 100 ; WX 539 ; N d ; G 74
94
+U 101 ; WX 489 ; N e ; G 76
95
+U 102 ; WX 358 ; N f ; G 81
96
+U 103 ; WX 539 ; N g ; G 82
97
+U 104 ; WX 538 ; N h ; G 83
98
+U 105 ; WX 259 ; N i ; G 84
99
+U 106 ; WX 259 ; N j ; G 91
100
+U 107 ; WX 527 ; N k ; G 93
101
+U 108 ; WX 258 ; N l ; G 94
102
+U 109 ; WX 802 ; N m ; G 96
103
+U 110 ; WX 538 ; N n ; G 97
104
+U 111 ; WX 523 ; N o ; G 99
105
+U 112 ; WX 539 ; N p ; G 107
106
+U 113 ; WX 539 ; N q ; G 109
107
+U 114 ; WX 375 ; N r ; G 110
108
+U 115 ; WX 417 ; N s ; G 111
109
+U 116 ; WX 381 ; N t ; G 113
110
+U 117 ; WX 533 ; N u ; G 114
111
+U 118 ; WX 513 ; N v ; G 119
112
+U 119 ; WX 802 ; N w ; G 120
113
+U 120 ; WX 508 ; N x ; G 121
114
+U 121 ; WX 513 ; N y ; G 122
115
+U 122 ; WX 429 ; N z ; G 125
116
+U 123 ; WX 348 ; N braceleft ; G 211
117
+U 124 ; WX 250 ; N bar ; G 282
118
+U 125 ; WX 348 ; N braceright ; G 212
119
+U 126 ; WX 517 ; N asciitilde ; G 255
120
+U 160 ; WX 218 ; N uni00A0 ; G 231
121
+U 161 ; WX 280 ; N exclamdown ; G 190
122
+U 162 ; WX 413 ; N cent ; G 234
123
+U 163 ; WX 592 ; N sterling ; G 238
124
+U 164 ; WX 586 ; N currency ; G 235
125
+U 165 ; WX 583 ; N yen ; G 239
126
+U 166 ; WX 250 ; N brokenbar ; G 283
127
+U 167 ; WX 479 ; N section ; G 277
128
+U 168 ; WX 573 ; N dieresis ; G 311
129
+U 169 ; WX 810 ; N copyright ; G 278
130
+U 170 ; WX 411 ; N ordfeminine ; G 132
131
+U 171 ; WX 558 ; N guillemotleft ; G 221
132
+U 172 ; WX 620 ; N logicalnot ; G 256
133
+U 173 ; WX 375 ; N uni00AD ; G 220
134
+U 174 ; WX 687 ; N registered ; G 279
135
+U 175 ; WX 573 ; N macron ; G 313
136
+U 176 ; WX 455 ; N degree ; G 281
137
+U 177 ; WX 517 ; N plusminus ; G 254
138
+U 178 ; WX 401 ; N uni00B2 ; G 175
139
+U 179 ; WX 401 ; N uni00B3 ; G 176
140
+U 180 ; WX 573 ; N acute ; G 308
141
+U 181 ; WX 533 ; N uni00B5 ; G 257
142
+U 182 ; WX 598 ; N paragraph ; G 276
143
+U 183 ; WX 260 ; N periodcentered ; G 184
144
+U 184 ; WX 573 ; N cedilla ; G 309
145
+U 185 ; WX 401 ; N uni00B9 ; G 174
146
+U 186 ; WX 435 ; N ordmasculine ; G 133
147
+U 187 ; WX 558 ; N guillemotright ; G 222
148
+U 188 ; WX 963 ; N onequarter ; G 180
149
+U 189 ; WX 963 ; N onehalf ; G 179
150
+U 190 ; WX 963 ; N threequarters ; G 181
151
+U 191 ; WX 446 ; N questiondown ; G 194
152
+U 192 ; WX 638 ; N Agrave ; G 8
153
+U 193 ; WX 638 ; N Aacute ; G 5
154
+U 194 ; WX 638 ; N Acircumflex ; G 6
155
+U 195 ; WX 638 ; N Atilde ; G 10
156
+U 196 ; WX 638 ; N Adieresis ; G 7
157
+U 197 ; WX 638 ; N Aring ; G 9
158
+U 198 ; WX 901 ; N AE ; G 11
159
+U 199 ; WX 539 ; N Ccedilla ; G 14
160
+U 200 ; WX 552 ; N Egrave ; G 21
161
+U 201 ; WX 552 ; N Eacute ; G 18
162
+U 202 ; WX 552 ; N Ecircumflex ; G 19
163
+U 203 ; WX 552 ; N Edieresis ; G 20
164
+U 204 ; WX 272 ; N Igrave ; G 29
165
+U 205 ; WX 272 ; N Iacute ; G 26
166
+U 206 ; WX 272 ; N Icircumflex ; G 27
167
+U 207 ; WX 272 ; N Idieresis ; G 28
168
+U 208 ; WX 654 ; N Eth ; G 16
169
+U 209 ; WX 681 ; N Ntilde ; G 36
170
+U 210 ; WX 682 ; N Ograve ; G 41
171
+U 211 ; WX 682 ; N Oacute ; G 38
172
+U 212 ; WX 682 ; N Ocircumflex ; G 39
173
+U 213 ; WX 682 ; N Otilde ; G 43
174
+U 214 ; WX 682 ; N Odieresis ; G 40
175
+U 215 ; WX 500 ; N multiply ; G 249
176
+U 216 ; WX 682 ; N Oslash ; G 42
177
+U 217 ; WX 660 ; N Ugrave ; G 55
178
+U 218 ; WX 660 ; N Uacute ; G 52
179
+U 219 ; WX 660 ; N Ucircumflex ; G 53
180
+U 220 ; WX 660 ; N Udieresis ; G 54
181
+U 221 ; WX 579 ; N Yacute ; G 60
182
+U 222 ; WX 603 ; N Thorn ; G 46
183
+U 223 ; WX 695 ; N germandbls ; G 112
184
+U 224 ; WX 493 ; N agrave ; G 67
185
+U 225 ; WX 493 ; N aacute ; G 64
186
+U 226 ; WX 493 ; N acircumflex ; G 65
187
+U 227 ; WX 493 ; N atilde ; G 69
188
+U 228 ; WX 493 ; N adieresis ; G 66
189
+U 229 ; WX 493 ; N aring ; G 68
190
+U 230 ; WX 741 ; N ae ; G 70
191
+U 231 ; WX 412 ; N ccedilla ; G 73
192
+U 232 ; WX 489 ; N egrave ; G 80
193
+U 233 ; WX 489 ; N eacute ; G 77
194
+U 234 ; WX 489 ; N ecircumflex ; G 78
195
+U 235 ; WX 489 ; N edieresis ; G 79
196
+U 236 ; WX 259 ; N igrave ; G 90
197
+U 237 ; WX 259 ; N iacute ; G 86
198
+U 238 ; WX 259 ; N icircumflex ; G 87
199
+U 239 ; WX 259 ; N idieresis ; G 88
200
+U 240 ; WX 523 ; N eth ; G 75
201
+U 241 ; WX 538 ; N ntilde ; G 98
202
+U 242 ; WX 523 ; N ograve ; G 103
203
+U 243 ; WX 523 ; N oacute ; G 100
204
+U 244 ; WX 523 ; N ocircumflex ; G 101
205
+U 245 ; WX 523 ; N otilde ; G 105
206
+U 246 ; WX 523 ; N odieresis ; G 102
207
+U 247 ; WX 517 ; N divide ; G 250
208
+U 248 ; WX 523 ; N oslash ; G 104
209
+U 249 ; WX 533 ; N ugrave ; G 118
210
+U 250 ; WX 533 ; N uacute ; G 115
211
+U 251 ; WX 533 ; N ucircumflex ; G 116
212
+U 252 ; WX 533 ; N udieresis ; G 117
213
+U 253 ; WX 513 ; N yacute ; G 123
214
+U 254 ; WX 539 ; N thorn ; G 108
215
+U 255 ; WX 513 ; N ydieresis ; G 124
216
+U 305 ; WX 259 ; N dotlessi ; G 85
217
+U 338 ; WX 918 ; N OE ; G 44
218
+U 339 ; WX 788 ; N oe ; G 106
219
+U 699 ; WX 573 ; N uni02BB ; G 307
220
+U 700 ; WX 573 ; N uni02BC ; G 306
221
+U 710 ; WX 573 ; N circumflex ; G 310
222
+U 730 ; WX 573 ; N ring ; G 314
223
+U 732 ; WX 573 ; N tilde ; G 315
224
+U 8201 ; WX 200 ; N uni2009 ; G 232
225
+U 8203 ; WX 0 ; N uni200B ; G 233
226
+U 8211 ; WX 400 ; N endash ; G 218
227
+U 8212 ; WX 800 ; N emdash ; G 217
228
+U 8216 ; WX 260 ; N quoteleft ; G 228
229
+U 8217 ; WX 260 ; N quoteright ; G 229
230
+U 8218 ; WX 260 ; N quotesinglbase ; G 230
231
+U 8220 ; WX 503 ; N quotedblleft ; G 226
232
+U 8221 ; WX 503 ; N quotedblright ; G 227
233
+U 8222 ; WX 503 ; N quotedblbase ; G 225
234
+U 8226 ; WX 368 ; N bullet ; G 185
235
+U 8230 ; WX 758 ; N ellipsis ; G 188
236
+U 8242 ; WX 217 ; N minute ; G 285
237
+U 8243 ; WX 428 ; N second ; G 286
238
+U 8249 ; WX 314 ; N guilsinglleft ; G 223
239
+U 8250 ; WX 314 ; N guilsinglright ; G 224
240
+U 8260 ; WX 162 ; N fraction ; G 178
241
+U 8308 ; WX 401 ; N uni2074 ; G 177
242
+U 8364 ; WX 611 ; N Euro ; G 237
243
+U 8482 ; WX 1006 ; N trademark ; G 280
244
+U 8593 ; WX 691 ; N arrowup ; G 272
245
+U 8595 ; WX 691 ; N arrowdown ; G 273
246
+U 8722 ; WX 517 ; N minus ; G 248
247
+U 8725 ; WX 351 ; N uni2215 ; G 246
248
+EndCharMetrics
249
+EndFontMetrics

BIN
storage/fonts/encode_sans_condensed_normal_be9c7c9139c8386fff63b1a695a5a1f6.ttf Прегледај датотеку


+ 249
- 0
storage/fonts/encode_sans_condensed_normal_be9c7c9139c8386fff63b1a695a5a1f6.ufm Прегледај датотеку

@@ -0,0 +1,249 @@
1
+StartFontMetrics 4.1
2
+Notice Converted by PHP-font-lib
3
+Comment https://github.com/PhenX/php-font-lib
4
+EncodingScheme FontSpecific
5
+Copyright Copyright 2012 The Encode Project Authors (impallari@gmail.com), with Reserved Font Name "Encode Sans".
6
+FontName Encode Sans Condensed
7
+FontSubfamily Regular
8
+UniqueID 2.000;IMPA;EncodeSansCondensed-Regular
9
+FullName Encode Sans Condensed Regular
10
+Version Version 2.000
11
+PostScriptName EncodeSansCondensed-Regular
12
+LicenseURL http://scripts.sil.org/OFL
13
+Weight Medium
14
+ItalicAngle 0
15
+IsFixedPitch false
16
+UnderlineThickness 25
17
+UnderlinePosition -38
18
+FontHeightOffset 0
19
+Ascender 1030
20
+Descender -220
21
+FontBBox -387 -233 1150 1075
22
+StartCharMetrics 316
23
+U 0 ; WX 0 ; N NULL ; G 1
24
+U 13 ; WX 211 ; N CR ; G 2
25
+U 32 ; WX 211 ; N space ; G 3
26
+U 33 ; WX 225 ; N exclam ; G 189
27
+U 34 ; WX 337 ; N quotedbl ; G 195
28
+U 35 ; WX 527 ; N numbersign ; G 191
29
+U 36 ; WX 458 ; N dollar ; G 236
30
+U 37 ; WX 836 ; N percent ; G 258
31
+U 38 ; WX 658 ; N ampersand ; G 275
32
+U 39 ; WX 186 ; N quotesingle ; G 196
33
+U 40 ; WX 290 ; N parenleft ; G 215
34
+U 41 ; WX 290 ; N parenright ; G 216
35
+U 42 ; WX 439 ; N asterisk ; G 182
36
+U 43 ; WX 511 ; N plus ; G 247
37
+U 44 ; WX 205 ; N comma ; G 187
38
+U 45 ; WX 350 ; N hyphen ; G 219
39
+U 46 ; WX 205 ; N period ; G 192
40
+U 47 ; WX 253 ; N slash ; G 198
41
+U 48 ; WX 543 ; N zero ; G 134
42
+U 49 ; WX 299 ; N one ; G 135
43
+U 50 ; WX 426 ; N two ; G 136
44
+U 51 ; WX 446 ; N three ; G 137
45
+U 52 ; WX 521 ; N four ; G 138
46
+U 53 ; WX 448 ; N five ; G 139
47
+U 54 ; WX 504 ; N six ; G 140
48
+U 55 ; WX 412 ; N seven ; G 141
49
+U 56 ; WX 543 ; N eight ; G 142
50
+U 57 ; WX 504 ; N nine ; G 143
51
+U 58 ; WX 205 ; N colon ; G 186
52
+U 59 ; WX 205 ; N semicolon ; G 197
53
+U 60 ; WX 511 ; N less ; G 253
54
+U 61 ; WX 511 ; N equal ; G 251
55
+U 62 ; WX 511 ; N greater ; G 252
56
+U 63 ; WX 400 ; N question ; G 193
57
+U 64 ; WX 831 ; N at ; G 274
58
+U 65 ; WX 588 ; N A ; G 4
59
+U 66 ; WX 565 ; N B ; G 12
60
+U 67 ; WX 488 ; N C ; G 13
61
+U 68 ; WX 601 ; N D ; G 15
62
+U 69 ; WX 497 ; N E ; G 17
63
+U 70 ; WX 476 ; N F ; G 22
64
+U 71 ; WX 576 ; N G ; G 23
65
+U 72 ; WX 630 ; N H ; G 24
66
+U 73 ; WX 221 ; N I ; G 25
67
+U 74 ; WX 221 ; N J ; G 30
68
+U 75 ; WX 546 ; N K ; G 31
69
+U 76 ; WX 465 ; N L ; G 32
70
+U 77 ; WX 787 ; N M ; G 34
71
+U 78 ; WX 642 ; N N ; G 35
72
+U 79 ; WX 613 ; N O ; G 37
73
+U 80 ; WX 549 ; N P ; G 45
74
+U 81 ; WX 613 ; N Q ; G 47
75
+U 82 ; WX 581 ; N R ; G 48
76
+U 83 ; WX 458 ; N S ; G 49
77
+U 84 ; WX 517 ; N T ; G 50
78
+U 85 ; WX 618 ; N U ; G 51
79
+U 86 ; WX 573 ; N V ; G 56
80
+U 87 ; WX 920 ; N W ; G 57
81
+U 88 ; WX 567 ; N X ; G 58
82
+U 89 ; WX 517 ; N Y ; G 59
83
+U 90 ; WX 497 ; N Z ; G 61
84
+U 91 ; WX 290 ; N bracketleft ; G 213
85
+U 92 ; WX 253 ; N backslash ; G 183
86
+U 93 ; WX 290 ; N bracketright ; G 214
87
+U 94 ; WX 527 ; N asciicircum ; G 284
88
+U 95 ; WX 483 ; N underscore ; G 199
89
+U 96 ; WX 453 ; N grave ; G 312
90
+U 97 ; WX 447 ; N a ; G 63
91
+U 98 ; WX 482 ; N b ; G 71
92
+U 99 ; WX 370 ; N c ; G 72
93
+U 100 ; WX 482 ; N d ; G 74
94
+U 101 ; WX 444 ; N e ; G 76
95
+U 102 ; WX 305 ; N f ; G 81
96
+U 103 ; WX 482 ; N g ; G 82
97
+U 104 ; WX 487 ; N h ; G 83
98
+U 105 ; WX 203 ; N i ; G 84
99
+U 106 ; WX 203 ; N j ; G 91
100
+U 107 ; WX 450 ; N k ; G 93
101
+U 108 ; WX 203 ; N l ; G 94
102
+U 109 ; WX 749 ; N m ; G 96
103
+U 110 ; WX 487 ; N n ; G 97
104
+U 111 ; WX 477 ; N o ; G 99
105
+U 112 ; WX 482 ; N p ; G 107
106
+U 113 ; WX 482 ; N q ; G 109
107
+U 114 ; WX 311 ; N r ; G 110
108
+U 115 ; WX 379 ; N s ; G 111
109
+U 116 ; WX 322 ; N t ; G 113
110
+U 117 ; WX 483 ; N u ; G 114
111
+U 118 ; WX 455 ; N v ; G 119
112
+U 119 ; WX 747 ; N w ; G 120
113
+U 120 ; WX 428 ; N x ; G 121
114
+U 121 ; WX 455 ; N y ; G 122
115
+U 122 ; WX 389 ; N z ; G 125
116
+U 123 ; WX 310 ; N braceleft ; G 211
117
+U 124 ; WX 214 ; N bar ; G 282
118
+U 125 ; WX 310 ; N braceright ; G 212
119
+U 126 ; WX 511 ; N asciitilde ; G 255
120
+U 160 ; WX 211 ; N uni00A0 ; G 231
121
+U 161 ; WX 225 ; N exclamdown ; G 190
122
+U 162 ; WX 368 ; N cent ; G 234
123
+U 163 ; WX 545 ; N sterling ; G 238
124
+U 164 ; WX 527 ; N currency ; G 235
125
+U 165 ; WX 538 ; N yen ; G 239
126
+U 166 ; WX 214 ; N brokenbar ; G 283
127
+U 167 ; WX 430 ; N section ; G 277
128
+U 168 ; WX 453 ; N dieresis ; G 311
129
+U 169 ; WX 832 ; N copyright ; G 278
130
+U 170 ; WX 374 ; N ordfeminine ; G 132
131
+U 171 ; WX 416 ; N guillemotleft ; G 221
132
+U 172 ; WX 620 ; N logicalnot ; G 256
133
+U 173 ; WX 350 ; N uni00AD ; G 220
134
+U 174 ; WX 727 ; N registered ; G 279
135
+U 175 ; WX 453 ; N macron ; G 313
136
+U 176 ; WX 456 ; N degree ; G 281
137
+U 177 ; WX 511 ; N plusminus ; G 254
138
+U 178 ; WX 359 ; N uni00B2 ; G 175
139
+U 179 ; WX 359 ; N uni00B3 ; G 176
140
+U 180 ; WX 453 ; N acute ; G 308
141
+U 181 ; WX 483 ; N uni00B5 ; G 257
142
+U 182 ; WX 549 ; N paragraph ; G 276
143
+U 183 ; WX 205 ; N periodcentered ; G 184
144
+U 184 ; WX 453 ; N cedilla ; G 309
145
+U 185 ; WX 359 ; N uni00B9 ; G 174
146
+U 186 ; WX 398 ; N ordmasculine ; G 133
147
+U 187 ; WX 416 ; N guillemotright ; G 222
148
+U 188 ; WX 831 ; N onequarter ; G 180
149
+U 189 ; WX 831 ; N onehalf ; G 179
150
+U 190 ; WX 831 ; N threequarters ; G 181
151
+U 191 ; WX 400 ; N questiondown ; G 194
152
+U 192 ; WX 588 ; N Agrave ; G 8
153
+U 193 ; WX 588 ; N Aacute ; G 5
154
+U 194 ; WX 588 ; N Acircumflex ; G 6
155
+U 195 ; WX 588 ; N Atilde ; G 10
156
+U 196 ; WX 588 ; N Adieresis ; G 7
157
+U 197 ; WX 588 ; N Aring ; G 9
158
+U 198 ; WX 812 ; N AE ; G 11
159
+U 199 ; WX 488 ; N Ccedilla ; G 14
160
+U 200 ; WX 497 ; N Egrave ; G 21
161
+U 201 ; WX 497 ; N Eacute ; G 18
162
+U 202 ; WX 497 ; N Ecircumflex ; G 19
163
+U 203 ; WX 497 ; N Edieresis ; G 20
164
+U 204 ; WX 221 ; N Igrave ; G 29
165
+U 205 ; WX 221 ; N Iacute ; G 26
166
+U 206 ; WX 221 ; N Icircumflex ; G 27
167
+U 207 ; WX 221 ; N Idieresis ; G 28
168
+U 208 ; WX 601 ; N Eth ; G 16
169
+U 209 ; WX 642 ; N Ntilde ; G 36
170
+U 210 ; WX 613 ; N Ograve ; G 41
171
+U 211 ; WX 613 ; N Oacute ; G 38
172
+U 212 ; WX 613 ; N Ocircumflex ; G 39
173
+U 213 ; WX 613 ; N Otilde ; G 43
174
+U 214 ; WX 613 ; N Odieresis ; G 40
175
+U 215 ; WX 482 ; N multiply ; G 249
176
+U 216 ; WX 613 ; N Oslash ; G 42
177
+U 217 ; WX 618 ; N Ugrave ; G 55
178
+U 218 ; WX 618 ; N Uacute ; G 52
179
+U 219 ; WX 618 ; N Ucircumflex ; G 53
180
+U 220 ; WX 618 ; N Udieresis ; G 54
181
+U 221 ; WX 517 ; N Yacute ; G 60
182
+U 222 ; WX 554 ; N Thorn ; G 46
183
+U 223 ; WX 604 ; N germandbls ; G 112
184
+U 224 ; WX 447 ; N agrave ; G 67
185
+U 225 ; WX 447 ; N aacute ; G 64
186
+U 226 ; WX 447 ; N acircumflex ; G 65
187
+U 227 ; WX 447 ; N atilde ; G 69
188
+U 228 ; WX 447 ; N adieresis ; G 66
189
+U 229 ; WX 447 ; N aring ; G 68
190
+U 230 ; WX 712 ; N ae ; G 70
191
+U 231 ; WX 370 ; N ccedilla ; G 73
192
+U 232 ; WX 444 ; N egrave ; G 80
193
+U 233 ; WX 444 ; N eacute ; G 77
194
+U 234 ; WX 444 ; N ecircumflex ; G 78
195
+U 235 ; WX 444 ; N edieresis ; G 79
196
+U 236 ; WX 203 ; N igrave ; G 90
197
+U 237 ; WX 203 ; N iacute ; G 86
198
+U 238 ; WX 203 ; N icircumflex ; G 87
199
+U 239 ; WX 203 ; N idieresis ; G 88
200
+U 240 ; WX 477 ; N eth ; G 75
201
+U 241 ; WX 487 ; N ntilde ; G 98
202
+U 242 ; WX 477 ; N ograve ; G 103
203
+U 243 ; WX 477 ; N oacute ; G 100
204
+U 244 ; WX 477 ; N ocircumflex ; G 101
205
+U 245 ; WX 477 ; N otilde ; G 105
206
+U 246 ; WX 477 ; N odieresis ; G 102
207
+U 247 ; WX 511 ; N divide ; G 250
208
+U 248 ; WX 477 ; N oslash ; G 104
209
+U 249 ; WX 483 ; N ugrave ; G 118
210
+U 250 ; WX 483 ; N uacute ; G 115
211
+U 251 ; WX 483 ; N ucircumflex ; G 116
212
+U 252 ; WX 483 ; N udieresis ; G 117
213
+U 253 ; WX 455 ; N yacute ; G 123
214
+U 254 ; WX 482 ; N thorn ; G 108
215
+U 255 ; WX 455 ; N ydieresis ; G 124
216
+U 305 ; WX 203 ; N dotlessi ; G 85
217
+U 338 ; WX 856 ; N OE ; G 44
218
+U 339 ; WX 760 ; N oe ; G 106
219
+U 699 ; WX 453 ; N uni02BB ; G 307
220
+U 700 ; WX 453 ; N uni02BC ; G 306
221
+U 710 ; WX 453 ; N circumflex ; G 310
222
+U 730 ; WX 453 ; N ring ; G 314
223
+U 732 ; WX 453 ; N tilde ; G 315
224
+U 8201 ; WX 200 ; N uni2009 ; G 232
225
+U 8203 ; WX 0 ; N uni200B ; G 233
226
+U 8211 ; WX 400 ; N endash ; G 218
227
+U 8212 ; WX 800 ; N emdash ; G 217
228
+U 8216 ; WX 205 ; N quoteleft ; G 228
229
+U 8217 ; WX 205 ; N quoteright ; G 229
230
+U 8218 ; WX 205 ; N quotesinglbase ; G 230
231
+U 8220 ; WX 366 ; N quotedblleft ; G 226
232
+U 8221 ; WX 366 ; N quotedblright ; G 227
233
+U 8222 ; WX 366 ; N quotedblbase ; G 225
234
+U 8226 ; WX 334 ; N bullet ; G 185
235
+U 8230 ; WX 593 ; N ellipsis ; G 188
236
+U 8242 ; WX 186 ; N minute ; G 285
237
+U 8243 ; WX 337 ; N second ; G 286
238
+U 8249 ; WX 248 ; N guilsinglleft ; G 223
239
+U 8250 ; WX 248 ; N guilsinglright ; G 224
240
+U 8260 ; WX 114 ; N fraction ; G 178
241
+U 8308 ; WX 359 ; N uni2074 ; G 177
242
+U 8364 ; WX 552 ; N Euro ; G 237
243
+U 8482 ; WX 908 ; N trademark ; G 280
244
+U 8593 ; WX 642 ; N arrowup ; G 272
245
+U 8595 ; WX 642 ; N arrowdown ; G 273
246
+U 8722 ; WX 511 ; N minus ; G 248
247
+U 8725 ; WX 253 ; N uni2215 ; G 246
248
+EndCharMetrics
249
+EndFontMetrics

Loading…
Откажи
Сачувај