1: | <?php
|
2: |
|
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: |
|
18: | class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
|
19: | {
|
20: | |
21: | |
22: |
|
23: | public $transform_to = 'span';
|
24: |
|
25: | |
26: | |
27: |
|
28: | protected $_size_lookup = array(
|
29: | '0' => 'xx-small',
|
30: | '1' => 'xx-small',
|
31: | '2' => 'small',
|
32: | '3' => 'medium',
|
33: | '4' => 'large',
|
34: | '5' => 'x-large',
|
35: | '6' => 'xx-large',
|
36: | '7' => '300%',
|
37: | '-1' => 'smaller',
|
38: | '-2' => '60%',
|
39: | '+1' => 'larger',
|
40: | '+2' => '150%',
|
41: | '+3' => '200%',
|
42: | '+4' => '300%'
|
43: | );
|
44: |
|
45: | |
46: | |
47: | |
48: | |
49: | |
50: |
|
51: | public function transform($tag, $config, $context)
|
52: | {
|
53: | if ($tag instanceof HTMLPurifier_Token_End) {
|
54: | $new_tag = clone $tag;
|
55: | $new_tag->name = $this->transform_to;
|
56: | return $new_tag;
|
57: | }
|
58: |
|
59: | $attr = $tag->attr;
|
60: | $prepend_style = '';
|
61: |
|
62: |
|
63: | if (isset($attr['color'])) {
|
64: | $prepend_style .= 'color:' . $attr['color'] . ';';
|
65: | unset($attr['color']);
|
66: | }
|
67: |
|
68: |
|
69: | if (isset($attr['face'])) {
|
70: | $prepend_style .= 'font-family:' . $attr['face'] . ';';
|
71: | unset($attr['face']);
|
72: | }
|
73: |
|
74: |
|
75: | if (isset($attr['size'])) {
|
76: |
|
77: | if ($attr['size'] !== '') {
|
78: | if ($attr['size'][0] == '+' || $attr['size'][0] == '-') {
|
79: | $size = (int)$attr['size'];
|
80: | if ($size < -2) {
|
81: | $attr['size'] = '-2';
|
82: | }
|
83: | if ($size > 4) {
|
84: | $attr['size'] = '+4';
|
85: | }
|
86: | } else {
|
87: | $size = (int)$attr['size'];
|
88: | if ($size > 7) {
|
89: | $attr['size'] = '7';
|
90: | }
|
91: | }
|
92: | }
|
93: | if (isset($this->_size_lookup[$attr['size']])) {
|
94: | $prepend_style .= 'font-size:' .
|
95: | $this->_size_lookup[$attr['size']] . ';';
|
96: | }
|
97: | unset($attr['size']);
|
98: | }
|
99: |
|
100: | if ($prepend_style) {
|
101: | $attr['style'] = isset($attr['style']) ?
|
102: | $prepend_style . $attr['style'] :
|
103: | $prepend_style;
|
104: | }
|
105: |
|
106: | $new_tag = clone $tag;
|
107: | $new_tag->name = $this->transform_to;
|
108: | $new_tag->attr = $attr;
|
109: |
|
110: | return $new_tag;
|
111: | }
|
112: | }
|
113: |
|
114: |
|
115: | |