Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
fpdf /
Delete
Unzip
Name
Size
Permission
Date
Action
cache
[ DIR ]
drwxr-sr-x
2017-05-29 10:14
classes
[ DIR ]
drwxr-sr-x
2013-05-22 07:48
data
[ DIR ]
drwxr-sr-x
2013-05-22 07:49
demo
[ DIR ]
drwxr-sr-x
2017-10-25 14:17
destinations
[ DIR ]
drwxr-sr-x
2013-05-22 07:51
features
[ DIR ]
drwxr-sr-x
2013-05-22 07:52
fonts
[ DIR ]
drwxr-sr-x
2013-05-22 07:54
fpdf
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
help
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
out
[ DIR ]
drwxr-sr-x
2013-05-22 07:56
postscript
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
samples
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
temp
[ DIR ]
drwxr-sr-x
2017-05-29 18:53
templates
[ DIR ]
drwxr-sr-x
2013-05-22 07:58
unittest
[ DIR ]
drwxr-sr-x
2013-05-22 07:59
.cvsignore
181
B
-rw-r--r--
2013-05-22 07:29
ChangeLog
52.56
KB
-rw-r--r--
2013-05-22 07:48
LICENSE
25.82
KB
-rw-r--r--
2013-05-22 07:56
TODO
894
B
-rw-r--r--
2013-05-22 07:58
autofix.url.php
1.8
KB
-rw-r--r--
2013-05-22 07:29
background.image.php
7.33
KB
-rw-r--r--
2013-05-22 07:29
background.position.php
2.17
KB
-rw-r--r--
2013-05-22 07:29
box.block.inline.php
5.24
KB
-rw-r--r--
2013-05-22 07:29
box.block.php
16.2
KB
-rw-r--r--
2013-05-22 07:29
box.body.php
894
B
-rw-r--r--
2013-05-22 07:29
box.br.php
6.07
KB
-rw-r--r--
2013-05-22 07:29
box.button.php
4.03
KB
-rw-r--r--
2013-05-22 07:29
box.button.reset.php
965
B
-rw-r--r--
2013-05-22 07:29
box.button.submit.php
2.86
KB
-rw-r--r--
2013-05-22 07:29
box.checkbutton.php
6.5
KB
-rw-r--r--
2013-05-22 07:29
box.container.php
33.85
KB
-rw-r--r--
2013-05-22 07:29
box.field.pageno.php
2.16
KB
-rw-r--r--
2013-05-22 07:29
box.field.pages.php
2.26
KB
-rw-r--r--
2013-05-22 07:29
box.form.php
842
B
-rw-r--r--
2013-05-22 07:29
box.frame.php
10.75
KB
-rw-r--r--
2013-05-22 07:29
box.generic.formatted.php
33.63
KB
-rw-r--r--
2013-05-22 07:29
box.generic.inline.php
3.72
KB
-rw-r--r--
2013-05-22 07:29
box.generic.php
11.08
KB
-rw-r--r--
2013-05-22 07:29
box.iframe.php
2.21
KB
-rw-r--r--
2013-05-22 07:29
box.img.php
9.76
KB
-rw-r--r--
2013-05-22 07:29
box.inline.control.php
3.15
KB
-rw-r--r--
2013-05-22 07:29
box.inline.php
14.46
KB
-rw-r--r--
2013-05-22 07:29
box.inline.simple.php
893
B
-rw-r--r--
2013-05-22 07:29
box.input.img.php
3.79
KB
-rw-r--r--
2013-05-22 07:29
box.input.password.php
2.05
KB
-rw-r--r--
2013-05-22 07:29
box.input.text.php
2.35
KB
-rw-r--r--
2013-05-22 07:29
box.input.textarea.php
1.91
KB
-rw-r--r--
2013-05-22 07:29
box.legend.php
1.55
KB
-rw-r--r--
2013-05-22 07:29
box.list-item.php
6.77
KB
-rw-r--r--
2013-05-22 07:29
box.note-call.class.php
6.23
KB
-rw-r--r--
2013-05-22 07:29
box.null.php
959
B
-rw-r--r--
2013-05-22 07:29
box.page.margin.class.php
18.82
KB
-rw-r--r--
2013-05-22 07:30
box.page.php
1.05
KB
-rw-r--r--
2013-05-22 07:30
box.php
18.32
KB
-rw-r--r--
2013-05-22 07:30
box.radiobutton.php
3.5
KB
-rw-r--r--
2013-05-22 07:30
box.select.php
4.3
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.fake.php
1.23
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.php
9.92
KB
-rw-r--r--
2013-05-22 07:30
box.table.php
43.15
KB
-rw-r--r--
2013-05-22 07:30
box.table.row.php
6.08
KB
-rw-r--r--
2013-05-22 07:30
box.table.section.php
1.52
KB
-rw-r--r--
2013-05-22 07:30
box.text.php
20.09
KB
-rw-r--r--
2013-05-22 07:30
box.text.string.php
1.41
KB
-rw-r--r--
2013-05-22 07:30
box.utils.text-align.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:30
box.whitespace.php
3.21
KB
-rw-r--r--
2013-05-22 07:30
config.inc.php
5.78
KB
-rw-r--r--
2013-05-22 07:48
config.parse.php
7.61
KB
-rw-r--r--
2013-05-22 07:48
content_type.class.php
506
B
-rw-r--r--
2013-05-22 07:48
converter.class.php
1.4
KB
-rw-r--r--
2013-05-22 07:48
css.background.attachment.inc.php
788
B
-rw-r--r--
2013-05-22 07:48
css.background.color.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:48
css.background.image.inc.php
1021
B
-rw-r--r--
2013-05-22 07:48
css.background.inc.php
2.13
KB
-rw-r--r--
2013-05-22 07:48
css.background.position.inc.php
3.56
KB
-rw-r--r--
2013-05-22 07:48
css.background.repeat.inc.php
1.47
KB
-rw-r--r--
2013-05-22 07:48
css.border.bottom.color.inc.php
753
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.inc.php
469
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.style.inc.php
726
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.width.inc.php
920
B
-rw-r--r--
2013-05-22 07:48
css.border.collapse.inc.php
812
B
-rw-r--r--
2013-05-22 07:48
css.border.color.inc.php
2.74
KB
-rw-r--r--
2013-05-22 07:48
css.border.inc.php
6.41
KB
-rw-r--r--
2013-05-22 07:48
css.border.left.color.inc.php
718
B
-rw-r--r--
2013-05-22 07:48
css.border.left.inc.php
459
B
-rw-r--r--
2013-05-22 07:48
css.border.left.style.inc.php
712
B
-rw-r--r--
2013-05-22 07:48
css.border.left.width.inc.php
904
B
-rw-r--r--
2013-05-22 07:48
css.border.right.color.inc.php
725
B
-rw-r--r--
2013-05-22 07:48
css.border.right.inc.php
464
B
-rw-r--r--
2013-05-22 07:48
css.border.right.style.inc.php
719
B
-rw-r--r--
2013-05-22 07:48
css.border.right.width.inc.php
912
B
-rw-r--r--
2013-05-22 07:48
css.border.style.inc.php
3.04
KB
-rw-r--r--
2013-05-22 07:49
css.border.top.color.inc.php
711
B
-rw-r--r--
2013-05-22 07:49
css.border.top.inc.php
455
B
-rw-r--r--
2013-05-22 07:49
css.border.top.style.inc.php
705
B
-rw-r--r--
2013-05-22 07:49
css.border.top.width.inc.php
896
B
-rw-r--r--
2013-05-22 07:49
css.border.width.inc.php
2.77
KB
-rw-r--r--
2013-05-22 07:49
css.bottom.inc.php
1.62
KB
-rw-r--r--
2013-05-22 07:49
css.cache.class.php
1018
B
-rw-r--r--
2013-05-22 07:49
css.clear.inc.php
903
B
-rw-r--r--
2013-05-22 07:49
css.color.inc.php
610
B
-rw-r--r--
2013-05-22 07:49
css.colors.inc.php
9.09
KB
-rw-r--r--
2013-05-22 07:49
css.constants.inc.php
6.32
KB
-rw-r--r--
2013-05-22 07:49
css.content.inc.php
3.39
KB
-rw-r--r--
2013-05-22 07:49
css.counter.collection.php
378
B
-rw-r--r--
2013-05-22 07:49
css.counter.php
419
B
-rw-r--r--
2013-05-22 07:49
css.direction.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.display.inc.php
1
KB
-rw-r--r--
2013-05-22 07:49
css.float.inc.php
737
B
-rw-r--r--
2013-05-22 07:49
css.font-family.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.font-size.inc.php
1.51
KB
-rw-r--r--
2013-05-22 07:49
css.font-style.inc.php
531
B
-rw-r--r--
2013-05-22 07:49
css.font-weight.inc.php
671
B
-rw-r--r--
2013-05-22 07:49
css.font.inc.php
6.67
KB
-rw-r--r--
2013-05-22 07:49
css.frame.inc.php
100
B
-rw-r--r--
2013-05-22 07:49
css.height.inc.php
1.04
KB
-rw-r--r--
2013-05-22 07:49
css.html2ps.html.content.inc.php
984
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pixels.php
496
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pseudoelements.inc.php
755
B
-rw-r--r--
2013-05-22 07:49
css.inc.php
4.3
KB
-rw-r--r--
2013-05-22 07:49
css.left.inc.php
693
B
-rw-r--r--
2013-05-22 07:49
css.letter-spacing.inc.php
829
B
-rw-r--r--
2013-05-22 07:49
css.line-height.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-image.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-position.inc.php
695
B
-rw-r--r--
2013-05-22 07:49
css.list-style-type.inc.php
3.66
KB
-rw-r--r--
2013-05-22 07:49
css.list-style.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.margin.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:49
css.max-height.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.min-height.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.min-width.inc.php
521
B
-rw-r--r--
2013-05-22 07:49
css.orphans.inc.php
407
B
-rw-r--r--
2013-05-22 07:49
css.overflow.inc.php
910
B
-rw-r--r--
2013-05-22 07:49
css.padding.inc.php
2.96
KB
-rw-r--r--
2013-05-22 07:49
css.page-break-after.inc.php
351
B
-rw-r--r--
2013-05-22 07:49
css.page-break-before.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break-inside.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break.inc.php
813
B
-rw-r--r--
2013-05-22 07:49
css.page.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.parse.inc.php
9.29
KB
-rw-r--r--
2013-05-22 07:49
css.parse.media.inc.php
805
B
-rw-r--r--
2013-05-22 07:49
css.parse.properties.php
1.92
KB
-rw-r--r--
2013-05-22 07:49
css.position.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.property.collection.php
2.99
KB
-rw-r--r--
2013-05-22 07:49
css.property.declaration.php
1.45
KB
-rw-r--r--
2013-05-22 07:49
css.property.handler.class.php
2.39
KB
-rw-r--r--
2013-05-22 07:49
css.property.stringset.class.php
783
B
-rw-r--r--
2013-05-22 07:49
css.property.sub.class.php
1.69
KB
-rw-r--r--
2013-05-22 07:49
css.property.sub.field.class.php
455
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.add.margin.inc.php
9
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.align.inc.php
1.75
KB
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellpadding.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellspacing.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.action.inc.php
441
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.radiogroup.inc.php
477
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.destination.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.target.inc.php
955
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.listcounter.inc.php
567
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.localalign.inc.php
588
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.nowrap.inc.php
532
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.table.border.inc.php
2.24
KB
-rw-r--r--
2013-05-22 07:49
css.right.inc.php
702
B
-rw-r--r--
2013-05-22 07:49
css.rules.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:49
css.rules.page.inc.php
11.19
KB
-rw-r--r--
2013-05-22 07:49
css.ruleset.class.php
9.87
KB
-rw-r--r--
2013-05-22 07:49
css.selectors.inc.php
7.4
KB
-rw-r--r--
2013-05-22 07:49
css.size.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.state.class.php
5.15
KB
-rw-r--r--
2013-05-22 07:49
css.table-layout.inc.php
734
B
-rw-r--r--
2013-05-22 07:49
css.text-align.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.text-decoration.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.text-indent.inc.php
845
B
-rw-r--r--
2013-05-22 07:49
css.text-transform.inc.php
1.1
KB
-rw-r--r--
2013-05-22 07:49
css.top.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.utils.inc.php
4.95
KB
-rw-r--r--
2013-05-22 07:49
css.vertical-align.inc.php
4.91
KB
-rw-r--r--
2013-05-22 07:49
css.visibility.inc.php
941
B
-rw-r--r--
2013-05-22 07:49
css.white-space.inc.php
1.02
KB
-rw-r--r--
2013-05-22 07:49
css.widows.inc.php
394
B
-rw-r--r--
2013-05-22 07:49
css.width.inc.php
1.76
KB
-rw-r--r--
2013-05-22 07:49
css.word-spacing.inc.php
817
B
-rw-r--r--
2013-05-22 07:49
css.z-index.inc.php
473
B
-rw-r--r--
2013-05-22 07:49
default.css
7.31
KB
-rw-r--r--
2013-05-22 07:50
destination._http.class.php
618
B
-rw-r--r--
2013-05-22 07:51
destination._interface.class.php
518
B
-rw-r--r--
2013-05-22 07:51
destination.browser.class.php
377
B
-rw-r--r--
2013-05-22 07:50
destination.download.class.php
540
B
-rw-r--r--
2013-05-22 07:50
destination.file.class.php
622
B
-rw-r--r--
2013-05-22 07:51
dispatcher.class.php
713
B
-rw-r--r--
2013-05-22 07:51
doc.anchor.class.php
1.07
KB
-rw-r--r--
2013-05-22 07:51
dom.activelink.inc.php
2.81
KB
-rw-r--r--
2013-05-22 07:51
dom.php4.inc.php
1.5
KB
-rw-r--r--
2013-05-22 07:51
dom.php5.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp1251.inc.php
10.38
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp866.inc.php
10.89
KB
-rw-r--r--
2013-05-22 07:51
encoding.dingbats.inc.php
11.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.entities.inc.php
25.8
KB
-rw-r--r--
2013-05-22 07:51
encoding.glyphs.inc.php
101.68
KB
-rw-r--r--
2013-05-22 07:51
encoding.inc.php
1.61
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-1.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-10.inc.php
10.92
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-11.inc.php
9.63
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-13.inc.php
10.6
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-14.inc.php
10.98
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-15.inc.php
10.55
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-2.inc.php
16.24
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-3.inc.php
15.74
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-4.inc.php
10.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-5.inc.php
10.36
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-6.inc.php
8.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-7.inc.php
10.22
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-8.inc.php
5.96
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-9.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.koi8-r.inc.php
11.09
KB
-rw-r--r--
2013-05-22 07:51
encoding.symbol.inc.php
10.04
KB
-rw-r--r--
2013-05-22 07:51
encoding.windows-1250.inc.php
17
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1251.inc.php
10.39
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1252.inc.php
16.32
KB
-rw-r--r--
2013-05-22 07:52
error.php
191
B
-rw-r--r--
2013-05-22 07:52
favicon.ico
1
B
-rw-r--r--
2013-05-22 07:52
fetched_data._html.class.php
405
B
-rw-r--r--
2013-05-22 07:52
fetched_data._interface.class.php
286
B
-rw-r--r--
2013-05-22 07:52
fetched_data.file.class.php
688
B
-rw-r--r--
2013-05-22 07:52
fetched_data.url.class.php
1.31
KB
-rw-r--r--
2013-05-22 07:52
fetcher._interface.class.php
995
B
-rw-r--r--
2013-05-22 07:52
fetcher.local.class.php
357
B
-rw-r--r--
2013-05-22 07:52
fetcher.memory.class.php
600
B
-rw-r--r--
2013-05-22 07:52
fetcher.url.class.php
14.88
KB
-rw-r--r--
2013-05-22 07:52
fetcher.url.curl.class.php
2.6
KB
-rw-r--r--
2013-05-22 07:52
filter.data._interface.class.php
138
B
-rw-r--r--
2013-05-22 07:52
filter.data.doctype.class.php
1.98
KB
-rw-r--r--
2013-05-22 07:52
filter.data.encoding.class.php
889
B
-rw-r--r--
2013-05-22 07:52
filter.data.html2xhtml.class.php
211
B
-rw-r--r--
2013-05-22 07:52
filter.data.ucs2.class.php
283
B
-rw-r--r--
2013-05-22 07:52
filter.data.utf8.class.php
284
B
-rw-r--r--
2013-05-22 07:52
filter.data.xhtml2xhtml.class.php
169
B
-rw-r--r--
2013-05-22 07:52
filter.output._interface.class.php
249
B
-rw-r--r--
2013-05-22 07:52
filter.output.gzip.class.php
391
B
-rw-r--r--
2013-05-22 07:52
filter.output.ps2pdf.class.php
1.28
KB
-rw-r--r--
2013-05-22 07:52
filter.post._interface.class.php
142
B
-rw-r--r--
2013-05-22 07:52
filter.post.positioned.class.php
806
B
-rw-r--r--
2013-05-22 07:52
filter.post.postponed.class.php
765
B
-rw-r--r--
2013-05-22 07:52
filter.pre._interface.class.php
160
B
-rw-r--r--
2013-05-22 07:52
filter.pre.fields.class.php
1.7
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.footnotes.class.php
1.16
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.headfoot.class.php
1.05
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.height-constraint.class.php
1.2
KB
-rw-r--r--
2013-05-22 07:52
flow_context.class.inc.php
11.75
KB
-rw-r--r--
2013-05-22 07:52
flow_viewport.class.inc.php
829
B
-rw-r--r--
2013-05-22 07:52
font.class.php
6.15
KB
-rw-r--r--
2013-05-22 07:52
font.constants.inc.php
228
B
-rw-r--r--
2013-05-22 07:52
font.resolver.class.php
7.41
KB
-rw-r--r--
2013-05-22 07:52
font_factory.class.php
1.51
KB
-rw-r--r--
2013-05-22 07:55
globals.inc.php
51
B
-rw-r--r--
2013-05-22 07:55
globals.php
119
B
-rw-r--r--
2013-05-22 07:55
height.php
7.25
KB
-rw-r--r--
2013-05-22 07:55
html.attrs.inc.php
31.84
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config
7.99
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config.recommended
8.94
KB
-rw-r--r--
2013-05-22 07:56
image.class.php
5.3
KB
-rw-r--r--
2013-05-22 07:56
index.php
185
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.factory.php
1.03
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.normal.php
1.65
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.nowrap.php
632
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.php
53.41
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.line.php
1.09
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.php
938
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.wrap.php
1.18
KB
-rw-r--r--
2013-05-22 07:56
layout._interface.class.php
149
B
-rw-r--r--
2013-05-22 07:56
layout.default.class.php
3.25
KB
-rw-r--r--
2013-05-22 07:56
layout.page.breaks.php
21.75
KB
-rw-r--r--
2013-05-22 07:56
layout.vertical.php
1.46
KB
-rw-r--r--
2013-05-22 07:56
list-style.image.php
335
B
-rw-r--r--
2013-05-22 07:56
logger.php
424
B
-rw-r--r--
2013-05-22 07:56
manager.encoding.php
8.57
KB
-rw-r--r--
2013-05-22 07:56
media.layout.inc.php
3.6
KB
-rw-r--r--
2013-05-22 07:56
observer.class.php
89
B
-rw-r--r--
2013-05-22 07:56
ot.class.php
27.21
KB
-rw-r--r--
2013-05-22 07:56
output._generic.class.php
8.72
KB
-rw-r--r--
2013-05-22 07:56
output._generic.pdf.class.php
582
B
-rw-r--r--
2013-05-22 07:56
output._generic.ps.class.php
851
B
-rw-r--r--
2013-05-22 07:56
output._interface.class.php
2.78
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.class.php
12.54
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.l2.class.php
2.95
KB
-rw-r--r--
2013-05-22 07:56
output.fpdf.class.php
11.46
KB
-rw-r--r--
2013-05-22 07:56
output.pcl.class.php
8.35
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.1.6.class.php
7.66
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.class.php
12.68
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.old.class.php
959
B
-rw-r--r--
2013-05-22 07:56
output.png.class.php
15.33
KB
-rw-r--r--
2013-05-22 07:56
parser._interface.class.php
134
B
-rw-r--r--
2013-05-22 07:56
parser.xhtml.class.php
3.24
KB
-rw-r--r--
2013-05-22 07:56
path.php
3.3
KB
-rw-r--r--
2013-05-22 07:56
path.point.php
187
B
-rw-r--r--
2013-05-22 07:56
path.rectangle.php
566
B
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.makefont.php
13.08
KB
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.php
86.35
KB
-rw-r--r--
2013-05-22 07:56
pipeline.class.php
43.81
KB
-rw-r--r--
2013-05-22 07:56
pipeline.factory.class.php
1.17
KB
-rw-r--r--
2013-05-22 07:56
ps.image.encoder.inc.php
8
B
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.simple.inc.php
7.07
KB
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.stream.inc.php
657
B
-rw-r--r--
2013-05-22 07:57
ps.l2.image.encoder.stream.inc.php
1.13
KB
-rw-r--r--
2013-05-22 07:57
ps.l3.image.encoder.stream.inc.php
7.92
KB
-rw-r--r--
2013-05-22 07:57
ps.unicode.inc.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
ps.utils.inc.php
344
B
-rw-r--r--
2013-05-22 07:57
ps.whitespace.inc.php
103
B
-rw-r--r--
2013-05-22 07:57
render.queue.class.php
275
B
-rw-r--r--
2013-05-22 07:57
render.stacking.context.class.php
589
B
-rw-r--r--
2013-05-22 07:57
render.stacking.level.class.php
246
B
-rw-r--r--
2013-05-22 07:57
strategy.link.rendering.normal.php
929
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.simple.php
370
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.smart.php
395
B
-rw-r--r--
2013-05-22 07:57
strategy.position.absolute.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.auto.php
10.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.fixed.php
381
B
-rw-r--r--
2013-05-22 07:57
strategy.width.absolute.positioned.php
7.54
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.natural.php
2.55
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.php
2.14
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.nowrap.php
1.36
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.php
2.01
KB
-rw-r--r--
2013-05-22 07:58
stubs._.inc.php
48
B
-rw-r--r--
2013-05-22 07:58
stubs.common.inc.php
615
B
-rw-r--r--
2013-05-22 07:58
stubs.file_get_contents.inc.php
253
B
-rw-r--r--
2013-05-22 07:58
stubs.file_put_contents.inc.php
133
B
-rw-r--r--
2013-05-22 07:58
stubs.is_executable.inc.php
54
B
-rw-r--r--
2013-05-22 07:58
stubs.memory_get_usage.inc.php
854
B
-rw-r--r--
2013-05-22 07:58
tag.body.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.font.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.frame.inc.php
3.59
KB
-rw-r--r--
2013-05-22 07:58
tag.img.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tag.input.inc.php
156
B
-rw-r--r--
2013-05-22 07:58
tag.select.inc.php
100
B
-rw-r--r--
2013-05-22 07:58
tag.span.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.table.inc.php
99
B
-rw-r--r--
2013-05-22 07:58
tag.td.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.utils.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tree.navigation.inc.php
1.68
KB
-rw-r--r--
2013-05-22 07:58
treebuilder.class.php
2.25
KB
-rw-r--r--
2013-05-22 07:58
utils_array.php
1.95
KB
-rw-r--r--
2013-05-22 07:59
utils_graphic.php
1.46
KB
-rw-r--r--
2013-05-22 07:59
utils_number.php
451
B
-rw-r--r--
2013-05-22 07:59
utils_text.php
182
B
-rw-r--r--
2013-05-22 07:59
utils_units.php
1.84
KB
-rw-r--r--
2013-05-22 07:59
utils_url.php
2.22
KB
-rw-r--r--
2013-05-22 07:59
value.background.php
4.81
KB
-rw-r--r--
2013-05-22 07:59
value.border.class.php
5.64
KB
-rw-r--r--
2013-05-22 07:59
value.border.color.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.border.edge.class.php
7.44
KB
-rw-r--r--
2013-05-22 07:59
value.border.style.class.php
451
B
-rw-r--r--
2013-05-22 07:59
value.border.width.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.bottom.php
314
B
-rw-r--r--
2013-05-22 07:59
value.color.php
1.14
KB
-rw-r--r--
2013-05-22 07:59
value.content.item.php
5
KB
-rw-r--r--
2013-05-22 07:59
value.content.php
1.01
KB
-rw-r--r--
2013-05-22 07:59
value.font.class.php
1.57
KB
-rw-r--r--
2013-05-22 07:59
value.generic.length.php
2.44
KB
-rw-r--r--
2013-05-22 07:59
value.generic.percentage.php
1.77
KB
-rw-r--r--
2013-05-22 07:59
value.generic.php
294
B
-rw-r--r--
2013-05-22 07:59
value.height.php
314
B
-rw-r--r--
2013-05-22 07:59
value.left.php
308
B
-rw-r--r--
2013-05-22 07:59
value.line-height.class.php
909
B
-rw-r--r--
2013-05-22 07:59
value.list-style.class.php
1.25
KB
-rw-r--r--
2013-05-22 07:59
value.margin.class.php
3.43
KB
-rw-r--r--
2013-05-22 07:59
value.max-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.min-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.padding.class.php
3.29
KB
-rw-r--r--
2013-05-22 07:59
value.right.php
311
B
-rw-r--r--
2013-05-22 07:59
value.text-indent.class.php
845
B
-rw-r--r--
2013-05-22 07:59
value.top.php
305
B
-rw-r--r--
2013-05-22 07:59
width.constraint.php
909
B
-rw-r--r--
2013-05-22 07:59
width.php
2.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.autoclose.inc.php
2.31
KB
-rw-r--r--
2013-05-22 07:59
xhtml.comments.inc.php
240
B
-rw-r--r--
2013-05-22 07:59
xhtml.deflist.inc.php
854
B
-rw-r--r--
2013-05-22 07:59
xhtml.entities.inc.php
2.88
KB
-rw-r--r--
2013-05-22 07:59
xhtml.lists.inc.php
982
B
-rw-r--r--
2013-05-22 07:59
xhtml.p.inc.php
1.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.script.inc.php
211
B
-rw-r--r--
2013-05-22 07:59
xhtml.selects.inc.php
727
B
-rw-r--r--
2013-05-22 07:59
xhtml.style.inc.php
1.18
KB
-rw-r--r--
2013-05-22 07:59
xhtml.tables.inc.php
4.49
KB
-rw-r--r--
2013-05-22 07:59
xhtml.utils.inc.php
15.36
KB
-rw-r--r--
2013-05-22 07:59
xml.validation.inc.php
326
B
-rw-r--r--
2013-05-22 07:59
Save
Rename
<?php define('OT_CMAP_PLATFORM_WINDOWS', 3); define('OT_CMAP_PLATFORM_WINDOWS_UNICODE', 1); define('OT_PLATFORM_ID_MICROSOFT', 3); define('OT_NAME_ID_SUBFAMILY_NAME', 2); define('OT_NAME_ID_UNIQUE_ID', 3); define('OT_NAME_ID_FULL_NAME', 4); define('OT_NAME_ID_POSTSCRIPT_NAME', 6); define('OT_CMAP_LANGUAGE_WINDOWS_ENGLISH_AMERICAN', 0x0409); /** * This class allows parsing TrueType/OpenType font files */ class OpenTypeFile { var $_filehandle; var $_sfnt; function OpenTypeFile() { $this->_filehandle = null; $this->_sfnt = new OpenTypeFileSFNT(); } function open($filename) { $this->_filehandle = fopen($filename, 'rb'); $this->_read($this->_filehandle); } function close() { fclose($this->_filehandle); } function _delete() { $this->close(); $this->_sfnt->_delete(); } function getFileHandle() { return $this->_filehandle; } function &getTable($tag) { $table =& $this->_sfnt->_getTable($tag, $this->_filehandle, $this); return $table; } function &_getCMAPSubtable($offset) { $table =& $this->_sfnt->_getCMAPSubtable($offset, $this->_filehandle, $this); return $table; } function _read($filehandle) { $this->_sfnt->_read($filehandle); } } /** * A key characteristic of the OpenType format is the TrueType sfnt * "wrapper", which provides organization for a collection of tables * in a general and extensible manner. */ class OpenTypeFileSFNT { var $_offsetTable; var $_tableDirectory; var $_tables; function _delete() { foreach ($this->_tables as $key => $value) { $this->_tables[$key]->_delete(); unset($this->_tables[$key]); }; $this->_tables = array(); } function OpenTypeFileSFNT() { $this->_offsetTable = new OpenTypeFileOffsetTable(); $this->_tableDirectory = array(); } function _read($filehandle) { $this->_offsetTable->_read($filehandle); for ($i=0; $i<$this->_offsetTable->_numTables; $i++) { $tableDirectory = new OpenTypeFileTableDirectory(); $tableDirectory->_read($filehandle); $this->_tableDirectory[] = $tableDirectory; }; } function &_getCMAPSubtable($offset, $filehandle, $file) { $dir = $this->_getDirectory('cmap'); if (is_null($dir)) { $dummy = null; return $dummy; }; /** * Store current file position, as _getCMAPSubtable could be * called from another file-related operation */ $old_pos = ftell($filehandle); fseek($filehandle, $dir->_offset, SEEK_SET); fseek($filehandle, $offset, SEEK_CUR); $subtable = new OpenTypeFileCMAPSubtable(); $subtable->_read($filehandle); /** * Restore current file position */ fseek($filehandle, $old_pos, SEEK_SET); return $subtable; } function &_getTable($tag, $filehandle, $file) { if (!isset($this->_tables[$tag])) { $table = $this->_createTableByTag($tag); if (is_null($table)) { $dummy = null; return $dummy; }; $table->setFontFile($file); $dir = $this->_getDirectory($tag); if (is_null($dir)) { $dummy = null; return $dummy; }; /** * Store current file position, as _getTable could be called * from another _getTable */ $old_pos = ftell($filehandle); fseek($filehandle, $dir->_offset, SEEK_SET); $table->_read($filehandle); /** * Restore current file position */ fseek($filehandle, $old_pos, SEEK_SET); $this->_tables[$tag] =& $table; }; return $this->_tables[$tag]; } function _getDirectory($tag) { foreach ($this->_tableDirectory as $directoryEntry) { if ($directoryEntry->_tag == $tag) { return $directoryEntry; }; }; return null; } function _createTableByTag($tag) { switch ($tag) { case 'hhea': return new OpenTypeFileHHEA(); case 'maxp': return new OpenTypeFileMAXP(); case 'cmap': return new OpenTypeFileCMAP(); case 'hmtx': return new OpenTypeFileHMTX(); case 'post': return new OpenTypeFilePOST(); case 'head': return new OpenTypeFileHEAD(); case 'name': return new OpenTypeFileNAME(); default: return null; } } } /** * The OpenType font with the Offset Table. If the font file contains only one font, the Offset Table will begin at byte 0 of the file. If the font file is a TrueType collection, the beginning point of the Offset Table for each font is indicated in the TTCHeader. * * Offset Table Type Name Description * Fixed sfnt version 0x00010000 for version 1.0. * USHORT numTables Number of tables. * USHORT searchRange (Maximum power of 2 <= numTables) x 16. * USHORT entrySelector Log2(maximum power of 2 <= numTables). * USHORT rangeShift NumTables x 16-searchRange. * * OpenType fonts that contain TrueType outlines should use the value * of 1.0 for the sfnt version. OpenType fonts containing CFF data * should use the tag 'OTTO' as the sfnt version number. * * NOTE: The Apple specification for TrueType fonts allows for 'true' * and 'typ1' for sfnt version. These version tags should not be used * for fonts which contain OpenType tables. */ class OpenTypeFileOffsetTable { var $_numTables; var $_searchRange; var $_entrySelector; var $_rangeShift; function OpenTypeFileOffsetTable() { $this->_numTables = 0; $this->_searchRange = 0; $this->_entrySelector = 0; $this->_rangeShift = 0; } function _read($filehandle) { $content = fread($filehandle, 4+4*2); $unpacked = unpack("Nversion/nnumTables/nsearchRange/nentrySelector/nrangeShift", $content); $fixed = $unpacked['version']; $this->_numTables = $unpacked['numTables']; $this->_searchRange = $unpacked['searchRange']; $this->_entrySelector = $unpacked['entrySelector']; $this->_rangeShift = $unpacked['rangeShift']; } } /** * The Offset Table is followed immediately by the Table Directory * entries. Entries in the Table Directory must be sorted in ascending * order by tag. Offset values in the Table Directory are measured * from the start of the font file. * * Table Directory Type Name Description * ULONG tag 4 -byte identifier. * ULONG checkSum CheckSum for this table. * ULONG offset Offset from beginning of TrueType font file. * ULONG length Length of this table. * * The Table Directory makes it possible for a given font to contain * only those tables it actually needs. As a result there is no * standard value for numTables. * * Tags are the names given to tables in the OpenType font file. All * tag names consist of four characters. Names with less than four * letters are allowed if followed by the necessary trailing * spaces. All tag names defined within a font (e.g., table names, * feature tags, language tags) must be built from printing characters * represented by ASCII values 32-126. */ class OpenTypeFileTableDirectory { var $_tag; var $_checkSum; var $_offset; var $_length; function OpenTypeFileTableDirectory() { $this->_tag = null; $this->_checkSum = 0; $this->_offset = 0; $this->_length = 0; } function _read($filehandle) { $content = fread($filehandle, 4*4); $unpacked = unpack("c4tag/NcheckSum/Noffset/Nlength", $content); $this->_tag = chr($unpacked['tag1']).chr($unpacked['tag2']).chr($unpacked['tag3']).chr($unpacked['tag4']); $this->_checkSum = $unpacked['checkSum']; $this->_offset = $unpacked['offset']; $this->_length = $unpacked['length']; } } /* -------------- */ class OpenTypeFileTable { var $_fontFile; function _delete() { } function OpenTypeFileTable() { $this->_fontFile = null; } function setFontFile(&$fontFile) { $this->_fontFile =& $fontFile; } function &getFontFile() { return $this->_fontFile; } function _fixFWord($value) { if ($value > 65536/2) { return $value - 65536; } else { return $value; }; } function _fixShort($value) { if ($value > 65536/2) { return $value - 65536; } else { return $value; }; } } class OpenTypeFilePOST extends OpenTypeFileTable { var $_version; var $_italicAngle; var $_underlinePosition; var $_underlineThickness; var $_isFixedPitch; var $_minMemType42; var $_maxMemType42; var $_minMemType1; var $_maxMemType1; function OpenTypeFilePOST() { $this->OpenTypeFileTable(); } function _read($filehandle) { $content = fread($filehandle, 2*2 + 7*4); $unpacked = unpack("Nversion/NitalicAngle/nunderlinePosition/nunderlineThickness/NisFixedPitch/NminMemType42/NmaxMemType42/NminMemType1/NmaxMemType1", $content); $this->_version = $unpacked['version']; $this->_italicAngle = $unpacked['italicAngle']; $this->_underlinePosition = $this->_fixFWord($unpacked['underlinePosition']); $this->_underlineThickness = $this->_fixFWord($unpacked['underlineThickness']); $this->_isFixedPitch = $unpacked['isFixedPitch']; $this->_minMemType42 = $unpacked['minMemType42']; $this->_maxMemType42 = $unpacked['maxMemType42']; $this->_minMemType1 = $unpacked['minMemType1']; $this->_maxMemType1 = $unpacked['maxMemType1']; } } class OpenTypeFileNAME extends OpenTypeFileTable { var $_format; var $_count; var $_stringOffset; var $_nameRecord; function OpenTypeFileNAME() { $this->OpenTypeFileTable(); $this->_nameRecord = array(); } function _read($filehandle) { $content = fread($filehandle, 2*3); $unpacked = unpack("nformat/ncount/nstringOffset", $content); $this->_format = $unpacked['format']; $this->_count = $unpacked['count']; $this->_stringOffset = $unpacked['stringOffset']; $baseOffset = ftell($filehandle) + OpenTypeFileNAMERecord::sizeof()*$this->_count; for ($i=0; $i<$this->_count; $i++) { $record =& new OpenTypeFileNAMERecord(); $record->setBaseOffset($baseOffset); $record->setFontFile($this->getFontFile()); $record->_read($filehandle); $this->_nameRecord[] =& $record; }; } /** * Note that this function can perform "wildcard" lookups when one or more * parameters is set to null value; in this case the first encountered name * will be returned * * @return String corresponding name content or null is this name is * not defined in the font file */ function lookup($platformId, $encodingId, $languageId, $nameId) { $size = count($this->_nameRecord); for ($i=0; $i<$size; $i++) { if ($this->_nameRecord[$i]->match($platformId, $encodingId, $languageId, $nameId)) { return $this->_nameRecord[$i]->getName(); }; } return null; } } class OpenTypeFileNAMERecord extends OpenTypeFileTable { var $_platformId; var $_encodingId; var $_languageId; var $_nameId; var $_length; var $_offset; var $_content; var $_baseOffset; function OpenTypeFileNAMERecord() { $this->OpenTypeFileTable(); $this->_content = null; } function sizeof() { return 6*2; } function setBaseOffset($offset) { $this->_baseOffset = $offset; } function match($platformId, $encodingId, $languageId, $nameId) { return (is_null($platformId) || $platformId == $this->_platformId) && (is_null($encodingId) || $encodingId == $this->_encodingId) && (is_null($languageId) || $languageId == $this->_languageId) && (is_null($nameId) || $nameId == $this->_nameId); } function getBaseOffset() { return $this->_baseOffset; } function getName() { if (is_null($this->_content)) { $file =& $this->getFontFile(); $filehandle = $file->getFileHandle(); $old_offset = ftell($filehandle); fseek($filehandle, $this->getBaseOffset() + $this->_offset, SEEK_SET); $this->_content = fread($filehandle, $this->_length); fseek($filehandle, $old_offset, SEEK_SET); }; return $this->_content; } function _read($filehandle) { $content = fread($filehandle, 6*2); $unpacked = unpack("nplatformId/nencodingId/nlanguageId/nnameId/nlength/noffset", $content); $this->_platformId = $unpacked['platformId']; $this->_encodingId = $unpacked['encodingId']; $this->_languageId = $unpacked['languageId']; $this->_nameId = $unpacked['nameId']; $this->_length = $unpacked['length']; $this->_offset = $unpacked['offset']; } } /** * This table gives global information about the font. The bounding * box values should be computed using only glyphs that have * contours. Glyphs with no contours should be ignored for the * purposes of these calculations. * * Type Name Description * Fixed Table version number 0x00010000 for version 1.0. * Fixed fontRevision Set by font manufacturer. * ULONG checkSumAdjustment To compute: set it to 0, sum the entire font as ULONG, then store 0xB1B0AFBA - sum. * ULONG magicNumber Set to 0x5F0F3CF5. * USHORT flags Bit 0: Baseline for font at y=0; * Bit 1: Left sidebearing point at x=0; * Bit 2: Instructions may depend on point size; * Bit 3: Force ppem to integer values for all internal scaler math; may use fractional ppem sizes if this bit is clear; * Bit 4: Instructions may alter advance width (the advance widths might not scale linearly); * Bits 5-10: These should be set according to Apple's specification . However, they are not implemented in OpenType. * Bit 11: Font data is 'lossless,' as a result of having been compressed and decompressed with the Agfa MicroType Express engine. * Bit 12: Font converted (produce compatible metrics) * Bit 13: Font optimised for ClearType * Bit 14: Reserved, set to 0 * Bit 15: Reserved, set to 0 * USHORT unitsPerEm Valid range is from 16 to 16384. This value should be a power of 2 for fonts that have TrueType outlines. * LONGDATETIME created Number of seconds since 12:00 midnight, January 1, 1904. 64-bit integer * LONGDATETIME modified Number of seconds since 12:00 midnight, January 1, 1904. 64-bit integer * SHORT xMin For all glyph bounding boxes. * SHORT yMin For all glyph bounding boxes. * SHORT xMax For all glyph bounding boxes. * SHORT yMax For all glyph bounding boxes. * USHORT macStyle Bit 0: Bold (if set to 1); * Bit 1: Italic (if set to 1) * Bit 2: Underline (if set to 1) * Bit 3: Outline (if set to 1) * Bit 4: Shadow (if set to 1) * Bit 5: Condensed (if set to 1) * Bit 6: Extended (if set to 1) * Bits 7-15: Reserved (set to 0). * USHORT lowestRecPPEM Smallest readable size in pixels. * SHORT fontDirectionHint 0: Fully mixed directional glyphs; * 1: Only strongly left to right; * 2: Like 1 but also contains neutrals; * -1: Only strongly right to left; * -2: Like -1 but also contains neutrals. 1 * SHORT indexToLocFormat 0 for short offsets, 1 for long. * SHORT glyphDataFormat 0 for current format. */ class OpenTypeFileHEAD extends OpenTypeFileTable { var $_version; var $_fontRevision; var $_checkSumAdjustment; var $_magicNumber; var $_flags; var $_unitsPerEm; var $_created; var $_modified; var $_xMin; var $_yMin; var $_xMax; var $_yMax; var $_macStyle; var $_lowestRecPPEM; var $_fontDirectionHint; var $_indexToLocFormat; var $_glyphDataFormat; function OpenTypeFileHEAD() { $this->OpenTypeFileTable(); } function _read($filehandle) { $content = fread($filehandle, 4*4 + 11*2 + 2*8); $unpacked = unpack("Nversion/NfontRevision/NcheckSumAdjustment/NmagicNumber/nflags/nunitsPerEm/N2created/N2modified/nxMin/nyMin/nxMax/nyMax/nmacStyle/nlowestRecPPEM/nfontDirectionHint/nindexToLocFormat/nglyphDataFormat", $content); $this->_version = $unpacked['version']; $this->_fontRevision = $unpacked['fontRevision']; $this->_checkSumAdjustment = $unpacked['checkSumAdjustment']; $this->_magicNumber = $unpacked['magicNumber']; $this->_flags = $unpacked['flags']; $this->_unitsPerEm = $unpacked['unitsPerEm']; $this->_created = $unpacked['created1'] << 32 | $unpacked['created2']; $this->_modified = $unpacked['modified1'] << 32 | $unpacked['modified2']; $this->_xMin = $this->_fixShort($unpacked['xMin']); $this->_yMin = $this->_fixShort($unpacked['yMin']); $this->_xMax = $this->_fixShort($unpacked['xMax']); $this->_yMax = $this->_fixShort($unpacked['yMax']); $this->_macStyle = $unpacked['macStyle']; $this->_lowestRecPPEM = $unpacked['lowestRecPPEM']; $this->_fontDirectionHint = $this->_fixShort($unpacked['fontDirectionHint']); $this->_indexToLocFormat = $this->_fixShort($unpacked['indexToLocFormat']); $this->_glyphDataFormat = $this->_fixShort($unpacked['glyphDataFormat']); } } class OpenTypeFileCMAP extends OpenTypeFileTable { var $_header; var $_encodings; var $_subtables; function OpenTypeFileCMAP() { $this->OpenTypeFileTable(); $this->_header = new OpenTypeFileCMAPHeader(); $this->_encodings = array(); $this->_subtables = array(); } function _read($filehandle) { $this->_header->_read($filehandle); for ($i=0; $i<$this->_header->_numTables; $i++) { $encoding = new OpenTypeFileCMAPEncoding(); $encoding->_read($filehandle); $this->_encodings[] =& $encoding; }; } /** * It is assumed that current file position is set to the beginning * of CMAP table */ function _getSubtable($filehandle, $offset) { fseek($filehandle, $offset, SEEK_CUR); $subtable = new OpenTypeFileCMAPSubtable(); $subtable->_read($filehandle); return $subtable; } function &findSubtable($platformId, $encodingId) { $file = $this->getFontFile(); $index = 0; foreach ($this->_encodings as $encoding) { if ($encoding->_platformId == $platformId && $encoding->_encodingId == $encodingId) { return $this->getSubtable($index); }; }; $dummy = null; return $dummy; } function &getSubtable($index) { if (!isset($this->_subtables[$index])) { $file =& $this->getFontFile(); $subtable =& $file->_getCMAPSubtable($this->_encodings[$index]->_offset); $this->_subtables[$index] =& $subtable; return $subtable; } else { return $this->_subtables[$index]; }; } } /** * TODO: support for CMAP subtable formats other than 4 */ class OpenTypeFileCMAPSubtable { var $_format; var $_content; function OpenTypeFileCMAPSubtable() { $this->_content = null; } function lookup($unicode) { return $this->_content->lookup($unicode); } function _read($filehandle) { $content = fread($filehandle, 2); $unpacked = unpack("nformat", $content); $this->_format = $unpacked['format']; switch ($this->_format) { case 4: $this->_content = new OpenTypeFileCMAPSubtable4(); $this->_content->_read($filehandle); return; default: die(sprintf("Unsupported CMAP subtable format: %i", $this->_format)); } } } class OpenTypeFileCMAPSubtable4 extends OpenTypeFileTable { var $_length; var $_language; var $_segCountX2; var $_searchRange; var $_entrySelector; var $_rangeShift; var $_endCount; var $_startCount; var $_idDelta; var $_idRangeOffset; var $_glyphIdArray; function OpenTypeFileCMAPSubtable4() { $this->_endCount = array(); $this->_startCount = array(); $this->_idDelta = array(); $this->_idRangeOffset = array(); $this->_glyphIdArray = array(); } function lookup($unicode) { $index = $this->_lookupSegment($unicode); if (is_null($index)) { return null; }; if ($this->_idRangeOffset[$index] != 0) { /** * If the idRangeOffset value for the segment is not 0, the * mapping of character codes relies on glyphIdArray. The * character code offset from startCode is added to the * idRangeOffset value. This sum is used as an offset from the * current location within idRangeOffset itself to index out the * correct glyphIdArray value. This obscure indexing trick works * because glyphIdArray immediately follows idRangeOffset in the * font file. The C expression that yields the glyph index is: * * *(idRangeOffset[i]/2 + (c - startCount[i]) + &idRangeOffset[i]) * * The value c is the character code in question, and i is the * segment index in which c appears. If the value obtained from * the indexing operation is not 0 (which indicates * missingGlyph), idDelta[i] is added to it to get the glyph * index. The idDelta arithmetic is modulo 65536. */ $value = $this->_glyphIdArray[$unicode - $this->_startCount[$index]]; return ($value + $this->_idDelta[$index]) % 65536; } else { /** * If the idRangeOffset is 0, the idDelta value is added * directly to the character code offset (i.e. idDelta[i] + c) * to get the corresponding glyph index. Again, the idDelta * arithmetic is modulo 65536. */ return ($this->_idDelta[$index] + $unicode) % 65536; }; } /** * The segments are sorted in order of increasing endCode values, * and the segment values are specified in four parallel arrays. You * search for the first endCode that is greater than or equal to the * character code you want to map. */ function _lookupSegment($unicode) { for ($i=0; $i<$this->_segCountX2/2; $i++) { if ($unicode <= $this->_endCount[$i]) { /** * If the corresponding startCode is less than or equal to the * character code, then you use the corresponding idDelta and * idRangeOffset to map the character code to a glyph index * (otherwise, the missingGlyph is returned). */ if ($this->_startCount[$i] <= $unicode) { return $i; } else { return null; }; }; }; return null; } function _read($filehandle) { $content = fread($filehandle, 6*2); $unpacked = unpack("nlength/nlanguage/nsegCountX2/nsearchRange/nentrySelector/nrangeShift", $content); $this->_length = $unpacked['length']; $this->_language = $unpacked['language']; $this->_segCountX2 = $unpacked['segCountX2']; $this->_searchRange = $unpacked['searchRange']; $this->_entrySelector = $unpacked['entrySelector']; $this->_rangeShift = $unpacked['rangeShift']; for ($i=0; $i<floor($this->_segCountX2/2); $i++) { $content = fread($filehandle, 2); $unpacked = unpack("nendCount", $content); $this->_endCount[] = $unpacked['endCount']; }; // Skip 'reservedPad' field $content = fread($filehandle, 2); for ($i=0; $i<$this->_segCountX2/2; $i++) { $content = fread($filehandle, 2); $unpacked = unpack("nstartCount", $content); $this->_startCount[] = $unpacked['startCount']; }; for ($i=0; $i<$this->_segCountX2/2; $i++) { $content = fread($filehandle, 2); $unpacked = unpack("nidDelta", $content); $this->_idDelta[] = $this->_fixShort($unpacked['idDelta']); }; for ($i=0; $i<$this->_segCountX2/2; $i++) { $content = fread($filehandle, 2); $unpacked = unpack("nidRangeOffset", $content); $this->_idRangeOffset[] = $unpacked['idRangeOffset']; }; for ($i=0; $i<$this->_length - 2*12; $i+=2) { $content = fread($filehandle, 2); $unpacked = unpack("nglyphId", $content); $this->_glyphIdArray[] = $unpacked['glyphId']; }; } } class OpenTypeFileCMAPEncoding { var $_platformId; var $_encodingId; var $_offset; function _read($filehandle) { $content = fread($filehandle, 2*2+4); $unpacked = unpack("nplatformId/nencodingId/Noffset", $content); $this->_platformId = $unpacked['platformId']; $this->_encodingId = $unpacked['encodingId']; $this->_offset = $unpacked['offset']; } } class OpenTypeFileCMAPHeader { var $_version; var $_numTables; function _read($filehandle) { $content = fread($filehandle, 2*2); $unpacked = unpack("nversion/nnumTables", $content); $this->_version = $unpacked['version']; $this->_numTables = $unpacked['numTables']; } } // @TODO: v 1.0 support class OpenTypeFileMAXP extends OpenTypeFileTable { var $_numGlyphs; function OpenTypeFileMAXP() { $this->OpenTypeFileTable(); } function _read($filehandle) { $content = fread($filehandle, 4+2*1); $unpacked = unpack("Nversion/nnumGlyphs", $content); $version = $unpacked['version']; $this->_numGlyphs = $unpacked['numGlyphs']; } } class OpenTypeFileHHEA extends OpenTypeFileTable { var $_ascender; var $_descender; var $_lineGap; var $_advanceWidthMax; var $_minLeftSideBearing; var $_minRightSideBearing; var $_xMaxExtent; var $_caretSlopeRise; var $_caretSlopeRun; var $_caretOffset; var $_metricDataFormat; var $_numberOfHMetrics; function OpenTypeFileHHEA() { $this->OpenTypeFileTable(); } function _read($filehandle) { $content = fread($filehandle, 4+16*2); $unpacked = unpack("Nversion/nascender/ndescender/nlineGap/nadvanceWidthMax/nminLeftSideBearing/". "nminRightSideBearing/nxMaxExtent/ncaretSlopeRise/ncaretSlopeRun/ncaretOffset/n4reserved/". "nmetricDataFormat/nnumberOfHMetrics", $content); $version = $unpacked['version']; $this->_ascender = $this->_fixFWord($unpacked['ascender']); $this->_descender = $this->_fixFWord($unpacked['descender']); $this->_lineGap = $this->_fixFWord($unpacked['lineGap']); $this->_advanceWidthMax = $unpacked['advanceWidthMax']; $this->_minLeftSideBearing = $this->_fixFWord($unpacked['minLeftSideBearing']); $this->_minRightSideBearing = $this->_fixFWord($unpacked['minRightSideBearing']); $this->_xMaxExtent = $this->_fixFWord($unpacked['xMaxExtent']); $this->_caretSlopeRise = $this->_fixShort($unpacked['caretSlopeRise']); $this->_caretSlopeRun = $this->_fixShort($unpacked['caretSlopeRun']); $this->_caretOffset = $this->_fixShort($unpacked['caretOffset']); $this->_metricDataFormat = $this->_fixShort($unpacked['metricDataFormat']); $this->_numberOfHMetrics = $unpacked['numberOfHMetrics']; } } class OpenTypeFileHMTX extends OpenTypeFileTable { var $_hMetrics; var $_leftSideBearing; function _delete() { unset($this->_hMetrics); unset($this->_leftSideBearing); } function OpenTypeFileHMTX() { $this->OpenTypeFileTable(); $this->_hMetrics = array(); $this->_leftSideBearing = array(); } function _read($filehandle) { $fontFile =& $this->getFontFile(); $hhea =& $fontFile->getTable('hhea'); $maxp =& $fontFile->getTable('maxp'); for ($i=0; $i<$hhea->_numberOfHMetrics; $i++) { $content = fread($filehandle, 2*2); $unpacked = unpack("nadvanceWidth/nlsb", $content); $this->_hMetrics[] = array('advanceWidth' => $unpacked['advanceWidth'], 'lsb' => $this->_fixShort($unpacked['lsb'])); }; for ($i=0; $i<$maxp->_numGlyphs; $i++) { $content = fread($filehandle, 2); $unpacked = unpack("nitem", $content); $this->_leftSideBearing[] = $unpacked['item']; }; } } ?>