Launch !
1
.htaccess
Normal file
|
|
@ -0,0 +1 @@
|
|||
FallbackResource /app.php
|
||||
12
app.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php include('snippets/functions.php') ?>
|
||||
<?php include('snippets/init.php') ?>
|
||||
<?php include('snippets/controller.php') ?>
|
||||
<?php include('snippets/header.php') ?>
|
||||
<div id="container">
|
||||
<?php include('snippets/introduction.php') ?>
|
||||
<?php include('snippets/nav.php') ?>
|
||||
<article>
|
||||
<iframe id="framepad" name="myframe" width=600 height=400 src="<?= $currentiframe ?>"></iframe>
|
||||
</article>
|
||||
</div>
|
||||
<?php include('snippets/footer.php') ?>
|
||||
11
assets/ajax.php
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
session_start();
|
||||
if( array_key_exists('action', $_POST) ) :
|
||||
switch ($_POST['action']):
|
||||
case 'headerVisibility':
|
||||
if( array_key_exists('visibility', $_POST) ) :
|
||||
$_SESSION['header'] = $_POST['visibility'];
|
||||
endif;
|
||||
break;
|
||||
endswitch;
|
||||
endif;
|
||||
BIN
assets/fonts/hkgrotesk/HKGrotesk-Bold.eot
Normal file
8769
assets/fonts/hkgrotesk/HKGrotesk-Bold.svg
Normal file
|
After Width: | Height: | Size: 411 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-Bold.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Bold.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Bold.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-BoldItalic.eot
Normal file
8339
assets/fonts/hkgrotesk/HKGrotesk-BoldItalic.svg
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-BoldItalic.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-BoldItalic.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-BoldItalic.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Italic.eot
Normal file
8946
assets/fonts/hkgrotesk/HKGrotesk-Italic.svg
Normal file
|
After Width: | Height: | Size: 360 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-Italic.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Italic.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Italic.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Light.eot
Normal file
7095
assets/fonts/hkgrotesk/HKGrotesk-Light.svg
Normal file
|
After Width: | Height: | Size: 368 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-Light.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Light.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Light.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-LightItalic.eot
Normal file
6642
assets/fonts/hkgrotesk/HKGrotesk-LightItalic.svg
Normal file
|
After Width: | Height: | Size: 298 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-LightItalic.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-LightItalic.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-LightItalic.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Medium.eot
Normal file
9369
assets/fonts/hkgrotesk/HKGrotesk-Medium.svg
Normal file
|
After Width: | Height: | Size: 430 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-Medium.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Medium.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Medium.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-MediumItalic.eot
Normal file
8943
assets/fonts/hkgrotesk/HKGrotesk-MediumItalic.svg
Normal file
|
After Width: | Height: | Size: 358 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-MediumItalic.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-MediumItalic.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-MediumItalic.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Regular.eot
Normal file
9383
assets/fonts/hkgrotesk/HKGrotesk-Regular.svg
Normal file
|
After Width: | Height: | Size: 433 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-Regular.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Regular.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-Regular.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBold.eot
Normal file
9387
assets/fonts/hkgrotesk/HKGrotesk-SemiBold.svg
Normal file
|
After Width: | Height: | Size: 431 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBold.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBold.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBold.woff2
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBoldItalic.eot
Normal file
8946
assets/fonts/hkgrotesk/HKGrotesk-SemiBoldItalic.svg
Normal file
|
After Width: | Height: | Size: 359 KiB |
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBoldItalic.ttf
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBoldItalic.woff
Normal file
BIN
assets/fonts/hkgrotesk/HKGrotesk-SemiBoldItalic.woff2
Normal file
BIN
assets/fonts/jeanluc/jeanlucweb-bold.eot
Normal file
BIN
assets/fonts/jeanluc/jeanlucweb-bold.otf
Normal file
390
assets/fonts/jeanluc/jeanlucweb-bold.svg
Normal file
|
|
@ -0,0 +1,390 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG webfont generated by Font Squirrel.
|
||||
Copyright : Copyright c 2010 by Atelier Carvalho Bernau All rights reserved
|
||||
Designer : Atelier Carvalho Bernau with Bernd Volmer
|
||||
Foundry : Atelier Carvalho Bernau with Bernd Volmer
|
||||
Foundry URL : httpwwwcarvalhobernaucom
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="webfontUP15foyJ" horiz-adv-x="260" >
|
||||
<font-face units-per-em="1000" ascent="831" descent="-169" />
|
||||
<missing-glyph horiz-adv-x="200" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode="	" horiz-adv-x="200" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode="!" horiz-adv-x="272" d="M55 487v176h162v-176l-21 -272h-120zM56 0v154h160v-154h-160z" />
|
||||
<glyph unicode=""" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
|
||||
<glyph unicode="#" horiz-adv-x="551" d="M20 153v124h97l22 109h-71v124h97l31 153h116l-31 -153h64l31 153h116l-31 -153h70v-124h-96l-22 -109h71v-124h-96l-31 -153h-117l31 153h-63l-31 -153h-117l31 153h-71zM233 277h64l22 109h-64z" />
|
||||
<glyph unicode="$" horiz-adv-x="449" d="M25 212h135q-3 -82 36 -104v153l-33 17q-135 71 -135 212q0 81 47.5 129t120.5 57v90h58v-90q173 -18 168 -226h-136q3 83 -32 103v-155l38 -21q45 -25 73 -50t40.5 -51t16 -46.5t3.5 -49.5q0 -75 -42 -130.5t-129 -64.5v-105h-58v105q-176 15 -171 227zM161 499 q0 -48 35 -68v126q-35 -10 -35 -58zM254 105q34 13 34 61q0 45 -34 64v-125z" />
|
||||
<glyph unicode="%" horiz-adv-x="617" d="M25 471v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM65 0l386 663h103l-388 -663h-101zM126 468q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM348 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81 q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM449 108q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86z" />
|
||||
<glyph unicode="&" horiz-adv-x="561" d="M20 181q0 109 106 168q-43 50 -57.5 83.5t-14.5 71.5q0 78 51.5 127.5t133.5 49.5q83 0 134.5 -48t51.5 -122q0 -52 -25 -93t-84 -84l65 -79q11 41 11 87h122q5 -96 -42 -194q16 -13 37 -13h37v-135h-38q-50 0 -74 6.5t-47 28.5q-66 -55 -148 -55q-112 0 -165.5 56.5 t-53.5 144.5zM178 193q0 -38 22 -56.5t57 -18.5q26 0 48 13l-102 123q-25 -24 -25 -61zM189 499q0 -19 9.5 -34t37.5 -47q30 22 41 39t11 41q0 21 -13 35t-35 14t-36.5 -13t-14.5 -35z" />
|
||||
<glyph unicode="'" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
|
||||
<glyph unicode="(" horiz-adv-x="254" d="M15 205v242q0 109 57 180t162 66v-126q-38 -1 -63.5 -29t-25.5 -79v-266q0 -50 25.5 -78t63.5 -29v-126q-105 -5 -162 65.5t-57 179.5z" />
|
||||
<glyph unicode=")" horiz-adv-x="254" d="M15 -40v126q38 1 63.5 29t25.5 78v266q0 51 -25.5 79t-63.5 29v126q105 5 162 -66t57 -180v-242q0 -109 -57 -179.5t-162 -65.5z" />
|
||||
<glyph unicode="*" horiz-adv-x="348" d="M20 479v83l87 -3l-49 73l73 42l43 -81l43 79l72 -40l-48 -73l87 3v-83l-87 3l48 -73l-72 -41l-43 77l-44 -77l-71 40l48 74z" />
|
||||
<glyph unicode="+" horiz-adv-x="460" d="M25 265v134h136v138h138v-138h136v-134h-136v-138h-138v138h-136z" />
|
||||
<glyph unicode="," horiz-adv-x="270" d="M55 -75v235h160v-72l-87 -163h-73z" />
|
||||
<glyph unicode="-" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
|
||||
<glyph unicode="." horiz-adv-x="270" d="M55 0v160h160v-160h-160z" />
|
||||
<glyph unicode="/" horiz-adv-x="421" d="M-14 -40l317 743h127l-318 -743h-126z" />
|
||||
<glyph unicode="0" horiz-adv-x="476" d="M34 197v267q0 109 58.5 164t145.5 55t145.5 -55t58.5 -163v-267q0 -111 -58 -164.5t-146 -53.5q-89 0 -146.5 52.5t-57.5 164.5zM193 203q0 -57 45 -57t45 57v254q0 59 -45 59t-45 -59v-254z" />
|
||||
<glyph unicode="1" horiz-adv-x="287" d="M13 489v87l23 1q81 3 99 86h104v-663h-160v488z" />
|
||||
<glyph unicode="2" horiz-adv-x="450" d="M25 0v106q0 92 31.5 143t116.5 114q61 45 79 70t18 50q0 22 -11.5 36.5t-34.5 14.5q-24 0 -36.5 -15t-15 -31t-1.5 -40h-143q-2 123 53.5 179t144.5 56q86 0 142 -50.5t56 -142.5q0 -66 -28 -110.5t-96 -100.5l-29 -23.5l-26 -21t-19.5 -17t-16.5 -16.5t-10.5 -14 t-7.5 -15t-1 -15v-1h229v-156h-394z" />
|
||||
<glyph unicode="3" horiz-adv-x="439" d="M23 217h141q-4 -87 46 -87q26 0 37 20t11 65q0 54 -20 72.5t-67 18.5h-27v111l77 94v5h-191v147h359v-127l-93 -114v-4q119 -27 119 -203q0 -122 -56 -178.5t-145 -56.5q-31 0 -57.5 5.5t-53 22t-44.5 42t-28.5 68.5t-7.5 99z" />
|
||||
<glyph unicode="4" horiz-adv-x="472" d="M17 142v126l209 395h188v-385h43v-136h-43v-142h-152v142h-245zM156 278h106v209h-6z" />
|
||||
<glyph unicode="5" horiz-adv-x="457" d="M32 207h146q-1 -34 14 -53.5t42 -19.5q55 0 55 80q0 41 -18.5 63.5t-50.5 22.5t-67 -25l-111 -1v389h369v-149h-231v-106q39 12 73 12q82 0 133.5 -55t51.5 -156q0 -63 -19 -109.5t-50.5 -71.5t-65 -36.5t-68.5 -11.5q-92 0 -148 59.5t-55 167.5z" />
|
||||
<glyph unicode="6" horiz-adv-x="465" d="M34 219v231q0 118 54.5 175.5t148.5 57.5q197 0 193 -235h-146q2 84 -50 84q-55 0 -55 -76v-77h3q45 31 98 31q69 0 114.5 -46.5t45.5 -154.5q0 -67 -19.5 -115t-51.5 -71.5t-64.5 -33t-67.5 -9.5q-203 0 -203 239zM179 205q0 -70 54 -70q56 0 56 74q0 33 -16 50t-38 17 q-56 0 -56 -71z" />
|
||||
<glyph unicode="7" horiz-adv-x="415" d="M15 508v155h380v-143l-161 -520h-167l164 508h-216z" />
|
||||
<glyph unicode="8" horiz-adv-x="473" d="M28 187q0 52 26 94t61 62v4q-38 26 -59 61t-21 97q0 79 61.5 128.5t139.5 49.5q79 0 140.5 -49.5t61.5 -128.5q0 -62 -21 -97t-59 -61v-4q35 -20 61 -62t26 -94q0 -103 -62 -155t-147 -52q-83 0 -145.5 52t-62.5 155zM176 203q0 -34 17 -54t44 -20t44 20t17 54 q0 31 -17.5 51.5t-43.5 20.5t-43.5 -20.5t-17.5 -51.5zM182 477q0 -28 16 -46.5t39 -18.5t39 18.5t16 46.5q0 31 -15 49t-40 18t-40 -18t-15 -49z" />
|
||||
<glyph unicode="9" horiz-adv-x="465" d="M26 464q0 108 59.5 163.5t145.5 55.5q39 0 71.5 -10t63 -34.5t48 -73t17.5 -117.5v-232q0 -120 -55.5 -178t-144.5 -58q-90 0 -143.5 57.5t-51.5 165.5h146q-3 -72 49 -72q55 0 55 68v85h-1q-39 -30 -89 -30q-72 0 -121 50t-49 160zM178 458q0 -33 16 -50.5t39 -17.5 q24 0 39 18t15 54q0 69 -54 69q-55 0 -55 -73z" />
|
||||
<glyph unicode=":" horiz-adv-x="270" d="M55 0v160h160v-160h-160zM55 255v160h160v-160h-160z" />
|
||||
<glyph unicode=";" horiz-adv-x="270" d="M55 -75v235h160v-72l-87 -163h-73zM55 255v160h160v-160h-160z" />
|
||||
<glyph unicode="<" horiz-adv-x="460" d="M45 281v96l359 202v-131l-219 -117l219 -117v-134z" />
|
||||
<glyph unicode="=" horiz-adv-x="460" d="M25 172v119h410v-119h-410zM25 373v119h410v-119h-410z" />
|
||||
<glyph unicode=">" horiz-adv-x="460" d="M56 80v131l219 117l-219 117v134l359 -201v-96z" />
|
||||
<glyph unicode="?" horiz-adv-x="455" d="M26 448q-2 123 53.5 179t148.5 56q87 0 142 -48.5t55 -129.5q0 -85 -66 -159q-65 -72 -65 -118v-13h-152v25q0 51 19.5 87t59.5 76q29 29 38.5 47t9.5 39q0 19 -14 32t-34 13q-25 0 -37.5 -15t-15 -30.5t-1.5 -40.5h-141zM138 0v154h160v-154h-160z" />
|
||||
<glyph unicode="@" horiz-adv-x="516" d="M45 204v243q0 115 61.5 175.5t159.5 60.5q89 0 147 -53.5t58 -154.5v-341h-83l-3 14q-23 -14 -55 -14q-58 0 -99 33.5t-41 113.5v82q0 74 41.5 109.5t98.5 35.5q22 0 39 -5q-5 45 -33 68.5t-73 23.5q-117 0 -117 -151v-250q0 -69 35.5 -99t87.5 -30q68 0 105 20v-86 q-45 -19 -120 -19q-40 0 -75.5 11.5t-66.5 36.5t-49 70t-18 106zM295 270q0 -49 38 -49q39 0 39 49v102q0 50 -38 50q-39 0 -39 -50v-102z" />
|
||||
<glyph unicode="A" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="B" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
|
||||
<glyph unicode="C" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
|
||||
<glyph unicode="D" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="E" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
|
||||
<glyph unicode="F" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
|
||||
<glyph unicode="G" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
|
||||
<glyph unicode="H" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
|
||||
<glyph unicode="I" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
|
||||
<glyph unicode="J" horiz-adv-x="438" d="M6 230h146q-3 -83 47 -83q22 0 32 16.5t10 55.5v444h160v-432q0 -62 -14 -109.5t-35 -73.5t-49.5 -42t-52.5 -21t-50 -5q-37 0 -68.5 10.5t-62 36t-47.5 77.5t-16 126zM241 705v135h160v-135h-160z" />
|
||||
<glyph unicode="K" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
|
||||
<glyph unicode="L" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph unicode="M" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
|
||||
<glyph unicode="N" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
|
||||
<glyph unicode="O" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="P" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="Q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="R" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="S" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="T" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="U" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
|
||||
<glyph unicode="V" horiz-adv-x="500" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
|
||||
<glyph unicode="W" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
|
||||
<glyph unicode="X" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
|
||||
<glyph unicode="Y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
|
||||
<glyph unicode="Z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
|
||||
<glyph unicode="[" horiz-adv-x="248" d="M50 -40v730h198v-86h-70v-558h70v-86h-198z" />
|
||||
<glyph unicode="\" horiz-adv-x="421" d="M-17 704h127l321 -751h-126z" />
|
||||
<glyph unicode="]" horiz-adv-x="248" d="M0 -40v86h70v558h-70v86h198v-730h-198z" />
|
||||
<glyph unicode="^" horiz-adv-x="418" d="M5 257l158 406h92l158 -406h-116l-92 231l-92 -231h-108z" />
|
||||
<glyph unicode="_" horiz-adv-x="470" d="M25 -33h420v-136h-420v136z" />
|
||||
<glyph unicode="`" horiz-adv-x="161" d="M-34 845h133l63 -137h-128z" />
|
||||
<glyph unicode="a" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="b" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
|
||||
<glyph unicode="c" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
|
||||
<glyph unicode="d" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="e" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
|
||||
<glyph unicode="f" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
|
||||
<glyph unicode="g" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
|
||||
<glyph unicode="h" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
|
||||
<glyph unicode="i" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
|
||||
<glyph unicode="j" horiz-adv-x="438" d="M6 230h146q-3 -83 47 -83q22 0 32 16.5t10 55.5v444h160v-432q0 -62 -14 -109.5t-35 -73.5t-49.5 -42t-52.5 -21t-50 -5q-37 0 -68.5 10.5t-62 36t-47.5 77.5t-16 126zM241 705v135h160v-135h-160z" />
|
||||
<glyph unicode="k" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
|
||||
<glyph unicode="l" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph unicode="m" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
|
||||
<glyph unicode="n" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
|
||||
<glyph unicode="o" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="p" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="r" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="s" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="t" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="u" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
|
||||
<glyph unicode="v" horiz-adv-x="500" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
|
||||
<glyph unicode="w" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
|
||||
<glyph unicode="x" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
|
||||
<glyph unicode="y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
|
||||
<glyph unicode="z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
|
||||
<glyph unicode="{" horiz-adv-x="264" d="M20 259v142h13q23 0 27 14.5t-4 55.5q-18 105 31.5 162.5t161.5 59.5v-126q-54 0 -67.5 -25t-2.5 -83l2 -12q8 -44 -5 -72.5t-58 -42.5v-4q79 -24 64 -116l-3 -19q-10 -57 2.5 -82t67.5 -25v-126q-111 2 -159 59.5t-33 164.5q8 44 3.5 59.5t-27.5 15.5h-13z" />
|
||||
<glyph unicode="|" horiz-adv-x="216" d="M50 -168v966h116v-966h-116z" />
|
||||
<glyph unicode="}" horiz-adv-x="264" d="M15 -40v126q54 0 67.5 25t2.5 83l-2 12q-8 44 5 72.5t58 42.5v4q-79 24 -64 116l3 19q10 57 -2.5 82t-67.5 25v126q111 -2 159 -59.5t33 -164.5q-8 -43 -3.5 -59t27.5 -16h13v-142h-13q-23 0 -27 -15t4 -55q18 -105 -31.5 -162.5t-161.5 -59.5z" />
|
||||
<glyph unicode="~" horiz-adv-x="460" d="M10 254q0 71 30.5 116.5t98.5 45.5q42 0 94 -28.5t68 -28.5q38 0 38 51h111q0 -71 -30 -116.5t-96 -45.5q-42 0 -96.5 28t-70.5 28q-36 0 -36 -50h-111z" />
|
||||
<glyph unicode="¡" horiz-adv-x="272" d="M55 0v176l21 272h120l21 -272v-176h-162zM56 509v154h160v-154h-160z" />
|
||||
<glyph unicode="¢" horiz-adv-x="436" d="M37 373v113q0 181 155 195v85h54v-84q154 -16 152 -212h-121q0 76 -31 91v-262q31 14 31 101h121q5 -205 -152 -222v-105h-54v105q-155 14 -155 195zM163 366q0 -51 29 -67v261q-29 -13 -29 -67v-127z" />
|
||||
<glyph unicode="£" horiz-adv-x="497" d="M15 203v66h61v42h-61v66h61v96q0 210 199 210t187 -250h-151v31q0 38 -10 54t-31 16q-39 0 -39 -56v-101h158v-66h-158v-42h158v-66h-158v-65h232v-138h-429v138h42v65h-61z" />
|
||||
<glyph unicode="¥" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-150 -385h111v-66h-121v-42h121v-66h-121v-104h-160v104h-118v66h118v42h-118v66h108z" />
|
||||
<glyph unicode="¨" horiz-adv-x="303" d="M-3 709v129h131v-129h-131zM175 709v129h131v-129h-131z" />
|
||||
<glyph unicode="©" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM95 331q0 -127 74 -211t192 -84t192.5 84t74.5 211q0 125 -75 210.5t-192 85.5q-118 0 -192 -84.5t-74 -211.5zM222 245v172q0 47 14.5 80t38.5 48.5t46.5 22 t47.5 6.5q59 0 101 -40t40 -140h-110q3 62 -32 62q-32 0 -32 -42v-167q0 -42 32 -42q18 0 25.5 15t6.5 55h110q1 -55 -11 -94t-34.5 -58t-45.5 -27t-50 -8q-25 0 -47.5 6t-46.5 21.5t-38.5 49t-14.5 80.5z" />
|
||||
<glyph unicode="ª" horiz-adv-x="298" d="M3 317l92 346h110l89 -346h-95l-15 65h-74l-16 -65h-91zM123 456h48l-22 101h-3z" />
|
||||
<glyph unicode="«" horiz-adv-x="494" d="M10 330l123 213h139l-126 -213l127 -213h-139zM216 330l123 213h139l-126 -213l127 -213h-139z" />
|
||||
<glyph unicode="­" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
|
||||
<glyph unicode="®" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM95 331q0 -127 74 -211t192 -84t192.5 84t74.5 211q0 125 -75 210.5t-192 85.5q-118 0 -192 -84.5t-74 -211.5zM225 100v463h140q78 0 112.5 -37t34.5 -91 q0 -71 -64 -108v-2q69 -21 69 -109v-116h-116v113q0 49 -39 49h-21v-162h-116zM341 376h17q41 0 41 50q0 43 -39 43h-19v-93z" />
|
||||
<glyph unicode="¯" horiz-adv-x="336" d="M14 707v105h308v-105h-308z" />
|
||||
<glyph unicode="°" horiz-adv-x="333" d="M15 532q0 72 46 111.5t107 39.5q60 0 105 -39.5t45 -111.5q0 -71 -45.5 -110.5t-105.5 -39.5q-61 0 -106.5 39.5t-45.5 110.5zM89 531q0 -38 22.5 -60.5t57.5 -22.5q33 0 55.5 22.5t22.5 60.5q0 39 -22.5 60.5t-55.5 21.5q-35 0 -57.5 -21.5t-22.5 -60.5z" />
|
||||
<glyph unicode="´" horiz-adv-x="161" d="M-5 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="¶" horiz-adv-x="490" d="M30 473q0 86 53 138t147 52h220v-832h-56v791h-72v-791h-56v453h-36q-94 0 -147 51.5t-53 137.5z" />
|
||||
<glyph unicode="·" horiz-adv-x="270" d="M55 248v160h160v-160h-160z" />
|
||||
<glyph unicode="¸" horiz-adv-x="206" d="M7 -96h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l36 80h44l-16 -50q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54z" />
|
||||
<glyph unicode="º" horiz-adv-x="289" d="M25 435v112q0 62 34.5 93.5t84.5 31.5q51 0 85.5 -31.5t34.5 -93.5v-111q0 -63 -34.5 -94t-85.5 -31t-85 30t-34 94zM115 437q0 -35 29 -35q30 0 30 35v108q0 35 -30 35q-29 0 -29 -35v-108z" />
|
||||
<glyph unicode="»" horiz-adv-x="494" d="M15 117l127 213l-126 213h139l123 -213l-124 -213h-139zM221 117l127 213l-126 213h139l123 -213l-124 -213h-139z" />
|
||||
<glyph unicode="¿" horiz-adv-x="455" d="M30 158q0 86 66 159q65 72 65 118v13h152v-25q0 -51 -19.5 -87t-59.5 -76q-29 -29 -38.5 -47t-9.5 -39q0 -19 14 -32t34 -13q25 0 37.5 15t15 30.5t1.5 40.5h141q2 -123 -53.5 -179t-148.5 -56q-87 0 -142 48.5t-55 129.5zM157 509v154h160v-154h-160z" />
|
||||
<glyph unicode="À" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM125 845h133l63 -137h-128zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Á" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM185 708l63 137h133l-68 -137h-128zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Â" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 702v101l136 40l136 -40v-101l-136 36zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ã" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ä" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 709v129h131v-129h-131zM213 262h73l-33 201h-6zM277 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Å" horiz-adv-x="502" d="M4 0l156 663h24q-59 33 -59 108q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -74 -60 -108h25l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM214 771q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5 t-11 -29.5z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6h-8 l-6 -20q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l24 55q-150 32 -150 213z" />
|
||||
<glyph unicode="È" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM91 845h133l63 -137h-128z" />
|
||||
<glyph unicode="É" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM151 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 709v129h131v-129h-131zM243 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ì" d="M2 845h133l63 -137h-128zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Í" d="M50 0v663h160v-663h-160zM62 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Î" d="M17 702v101l112 40l114 -40v-101l-114 36zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Ï" d="M-24 709v129h131v-129h-131zM50 0v663h160v-663h-160zM154 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ð" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
|
||||
<glyph unicode="Ñ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM113 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
|
||||
<glyph unicode="Ò" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM122 845h133l63 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ó" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM182 708l63 137h133l-68 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ô" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 702v101l136 40l136 -40v-101l-136 36zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z " />
|
||||
<glyph unicode="Õ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z M197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ö" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 709v129h131v-129h-131zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM274 709v129h131 v-129h-131z" />
|
||||
<glyph unicode="×" horiz-adv-x="460" d="M10 458l94 94l125 -126l126 126l94 -94l-126 -126l127 -126l-94 -94l-127 126l-124 -124l-94 94l124 124z" />
|
||||
<glyph unicode="Ø" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132q15 -11 40 -11q67 0 67 77v211z" />
|
||||
<glyph unicode="Ù" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM120 845h133l63 -137h-128z" />
|
||||
<glyph unicode="Ú" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM180 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Û" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ü" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 709v129h131v-129h-131zM272 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ý" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM176 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Þ" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="ß" horiz-adv-x="901" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM477 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5 t-143 -52.5q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="à" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM125 845h133l63 -137h-128zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="á" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM185 708l63 137h133l-68 -137h-128zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="â" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 702v101l136 40l136 -40v-101l-136 36zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ã" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ä" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 709v129h131v-129h-131zM213 262h73l-33 201h-6zM277 709v129h131v-129h-131z" />
|
||||
<glyph unicode="å" horiz-adv-x="502" d="M4 0l156 663h24q-59 33 -59 108q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -74 -60 -108h25l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM214 771q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5 t-11 -29.5z" />
|
||||
<glyph unicode="æ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
|
||||
<glyph unicode="ç" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6h-8 l-6 -20q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l24 55q-150 32 -150 213z" />
|
||||
<glyph unicode="è" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM91 845h133l63 -137h-128z" />
|
||||
<glyph unicode="é" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM151 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ê" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ë" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 709v129h131v-129h-131zM243 709v129h131v-129h-131z" />
|
||||
<glyph unicode="ì" d="M2 845h133l63 -137h-128z" />
|
||||
<glyph unicode="í" d="M62 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="î" d="M17 702v101l112 40l114 -40v-101l-114 36zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ï" d="M-24 709v129h131v-129h-131zM154 709v129h131v-129h-131z" />
|
||||
<glyph unicode="ð" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
|
||||
<glyph unicode="ñ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM113 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
|
||||
<glyph unicode="ò" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM122 845h133l63 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ó" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM182 708l63 137h133l-68 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ô" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 702v101l136 40l136 -40v-101l-136 36zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z " />
|
||||
<glyph unicode="õ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z M197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ö" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 709v129h131v-129h-131zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM274 709v129h131 v-129h-131z" />
|
||||
<glyph unicode="÷" horiz-adv-x="460" d="M25 265v134h410v-134h-410zM159 101v129h142v-129h-142zM159 432v129h142v-129h-142z" />
|
||||
<glyph unicode="ø" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132q15 -11 40 -11q67 0 67 77v211z" />
|
||||
<glyph unicode="ù" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM120 845h133l63 -137h-128z" />
|
||||
<glyph unicode="ú" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM180 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="û" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ü" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 709v129h131v-129h-131zM272 709v129h131v-129h-131z" />
|
||||
<glyph unicode="ý" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM176 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="þ" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="ÿ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM90 709v129h131v-129h-131zM268 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ā" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 707v105h308v-105h-308zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ā" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 707v105h308v-105h-308zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ă" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ă" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ą" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-7q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-82l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ą" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-7q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-82l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ć" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM173 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ć" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM173 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ĉ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ĉ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ċ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM174 704v134h134v-134h-134z" />
|
||||
<glyph unicode="ċ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM174 704v134h134v-134h-134z" />
|
||||
<glyph unicode="Č" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="č" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ď" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 733v98q99 -24 136 -32l136 32v-98l-136 -37zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="ď" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 733v98q99 -24 136 -32l136 32v-98l-136 -37zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="Đ" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
|
||||
<glyph unicode="đ" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="Ē" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 707v105h308v-105h-308z" />
|
||||
<glyph unicode="ē" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 707v105h308v-105h-308z" />
|
||||
<glyph unicode="Ĕ" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM61 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="ĕ" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM61 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="Ė" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM152 704v134h134v-134h-134z" />
|
||||
<glyph unicode="ė" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM152 704v134h134v-134h-134z" />
|
||||
<glyph unicode="Ę" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-1q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-263z" />
|
||||
<glyph unicode="ę" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-1q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-263z" />
|
||||
<glyph unicode="Ě" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="ě" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ĝ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ĝ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ğ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="ğ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="Ġ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM183 704v134h134v-134h-134z" />
|
||||
<glyph unicode="ġ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM183 704v134h134v-134h-134z" />
|
||||
<glyph unicode="Ģ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ģ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="Ĥ" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ĥ" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ħ" horiz-adv-x="503" d="M10 473v131h40v59h158v-59h87v59h158v-59h40v-131h-40v-473h-158v274h-87v-274h-158v473h-40zM208 407h87v66h-87v-66z" />
|
||||
<glyph unicode="ħ" horiz-adv-x="503" d="M10 473v131h40v59h158v-59h87v59h158v-59h40v-131h-40v-473h-158v274h-87v-274h-158v473h-40zM208 407h87v66h-87v-66z" />
|
||||
<glyph unicode="Ĩ" d="M-2 701q1 59 21.5 93t57.5 34q24 0 52.5 -14.5t39.5 -14.5q24 0 26 29h67q0 -60 -20 -93.5t-57 -33.5q-23 0 -51 14t-39 14q-28 0 -28 -28h-69zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ĩ" d="M-2 701q1 59 21.5 93t57.5 34q24 0 52.5 -14.5t39.5 -14.5q24 0 26 29h67q0 -60 -20 -93.5t-57 -33.5q-23 0 -51 14t-39 14q-28 0 -28 -28h-69zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Ī" d="M23 707v105h215v-105h-215zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ī" d="M23 707v105h215v-105h-215zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Ĭ" d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ĭ" d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Į" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160zM56 -89q0 28 19 52t50 37h85q-51 -26 -51 -58t37 -32h4v-79h-36q-108 0 -108 80z" />
|
||||
<glyph unicode="į" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160zM56 -89q0 28 19 52t50 37h85q-51 -26 -51 -58t37 -32h4v-79h-36q-108 0 -108 80z" />
|
||||
<glyph unicode="İ" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
|
||||
<glyph unicode="ı" d="M50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="IJ" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v134h162v-134h-162zM500 706v134h162v-134h-162z" />
|
||||
<glyph unicode="ij" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v134h162v-134h-162zM500 706v134h162v-134h-162z" />
|
||||
<glyph unicode="Ĵ" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 702v101l112 40l114 -40v-101l-114 36z" />
|
||||
<glyph unicode="ĵ" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 702v101l112 40l114 -40v-101l-114 36z" />
|
||||
<glyph unicode="Ķ" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM152 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ķ" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM152 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="Ĺ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM59 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ĺ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM59 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ļ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM98 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ļ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM98 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="Ľ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM256 457l20 206h116l-31 -206h-105z" />
|
||||
<glyph unicode="ľ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM256 457l20 206h116l-31 -206h-105z" />
|
||||
<glyph unicode="Ŀ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM263 279v130h120v-130h-120z" />
|
||||
<glyph unicode="ŀ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM263 279v130h120v-130h-120z" />
|
||||
<glyph unicode="Ł" horiz-adv-x="387" d="M9 225v131l41 18v289h158v-218l86 39v-131l-86 -39v-154h164v-160h-322v243z" />
|
||||
<glyph unicode="ł" horiz-adv-x="387" d="M9 225v131l41 18v289h158v-218l86 39v-131l-86 -39v-154h164v-160h-322v243z" />
|
||||
<glyph unicode="Ń" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM203 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ń" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM203 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ņ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM154 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ņ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM154 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="Ň" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="ň" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ŋ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
|
||||
<glyph unicode="ŋ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
|
||||
<glyph unicode="Ō" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 707v105h308v-105h-308zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ō" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 707v105h308v-105h-308zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ŏ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ŏ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ő" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM110 711l63 137h119l-68 -137h-114zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM254 711 l63 137h119l-68 -137h-114z" />
|
||||
<glyph unicode="ő" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM110 711l63 137h119l-68 -137h-114zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM254 711 l63 137h119l-68 -137h-114z" />
|
||||
<glyph unicode="Œ" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
|
||||
<glyph unicode="œ" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
|
||||
<glyph unicode="Ŕ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM169 708l63 137h133l-68 -137h-128zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="ŕ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM169 708l63 137h133l-68 -137h-128zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="Ŗ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM137 -169l56 122h117l-60 -122h-113zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="ŗ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM137 -169l56 122h117l-60 -122h-113zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="Ř" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 735v98q99 -24 136 -32l136 32v-98l-136 -37zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="ř" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 735v98q99 -24 136 -32l136 32v-98l-136 -37zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="Ś" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM167 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ś" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM167 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ŝ" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ŝ" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ş" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4l-6 -18 q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l23 53q-69 13 -110 68.5t-38 160.5z" />
|
||||
<glyph unicode="ş" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4l-6 -18 q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l23 53q-69 13 -110 68.5t-38 160.5z" />
|
||||
<glyph unicode="Š" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="š" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ţ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM101 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ţ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM101 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="Ť" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="ť" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ŧ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-121h100v-136h-100v-251h-160v251h-104v136h104v121h-117z" />
|
||||
<glyph unicode="ŧ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="Ũ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
|
||||
<glyph unicode="ũ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
|
||||
<glyph unicode="Ū" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 707v105h308v-105h-308z" />
|
||||
<glyph unicode="ū" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 707v105h308v-105h-308z" />
|
||||
<glyph unicode="Ŭ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM90 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="ŭ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM90 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="Ů" horiz-adv-x="495" d="M40 209v454h137q-56 34 -56 106q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -71 -56 -106h134v-454q0 -229 -207 -229q-208 0 -208 229zM200 207q0 -63 47 -63q48 0 48 63v443q-21 -7 -46 -7q-28 0 -49 8v-444zM210 769q0 -19 11 -30t28 -11q16 0 27.5 11.5 t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
|
||||
<glyph unicode="ů" horiz-adv-x="495" d="M40 209v454h137q-56 34 -56 106q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -71 -56 -106h134v-454q0 -229 -207 -229q-208 0 -208 229zM200 207q0 -63 47 -63q48 0 48 63v443q-21 -7 -46 -7q-28 0 -49 8v-444zM210 769q0 -19 11 -30t28 -11q16 0 27.5 11.5 t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
|
||||
<glyph unicode="Ű" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM108 711l63 137h119l-68 -137h-114zM252 711l63 137h119l-68 -137h-114z" />
|
||||
<glyph unicode="ű" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM108 711l63 137h119l-68 -137h-114zM252 711l63 137h119l-68 -137h-114z" />
|
||||
<glyph unicode="Ų" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -181 -137 -222q-53 -16 -53 -55q0 -36 37 -36h4v-79h-36q-108 0 -108 80q0 53 58 84q-180 16 -180 228z" />
|
||||
<glyph unicode="ų" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -181 -137 -222q-53 -16 -53 -55q0 -36 37 -36h4v-79h-36q-108 0 -108 80q0 53 58 84q-180 16 -180 228z" />
|
||||
<glyph unicode="Ŵ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ŵ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ŷ" horiz-adv-x="482" d="M2 663h168l71 -212h6l71 212h162l-160 -411v-252h-160v252zM108 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ŷ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM108 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="Ÿ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM90 709v129h131v-129h-131zM268 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ź" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM148 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ź" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM148 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ż" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM149 704v134h134v-134h-134z" />
|
||||
<glyph unicode="ż" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM149 704v134h134v-134h-134z" />
|
||||
<glyph unicode="Ž" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="ž" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="Ǻ" horiz-adv-x="502" d="M4 0l156 663h37q-73 30 -73 115q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -84 -73 -115h39l152 -663h-164l-23 123h-125l-23 -123h-159zM195 908l54 119h133l-59 -119h-128zM213 262h73l-33 201h-6zM213 778q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5 t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
|
||||
<glyph unicode="ǻ" horiz-adv-x="502" d="M4 0l156 663h37q-73 30 -73 115q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -84 -73 -115h39l152 -663h-164l-23 123h-125l-23 -123h-159zM195 908l54 119h133l-59 -119h-128zM213 262h73l-33 201h-6zM213 778q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5 t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
|
||||
<glyph unicode="Ǽ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM290 697l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ǽ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM290 697l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ǿ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM182 708l63 137h133l-68 -137h-128zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132 q15 -11 40 -11q67 0 67 77v211z" />
|
||||
<glyph unicode="ǿ" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM182 708l63 137h133l-68 -137h-128zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132 q15 -11 40 -11q67 0 67 77v211z" />
|
||||
<glyph unicode="Ș" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM109 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ș" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM109 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="340" d="M34 702v101l136 40l136 -40v-101l-136 36z" />
|
||||
<glyph unicode="ˇ" horiz-adv-x="340" d="M34 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
|
||||
<glyph unicode="˘" horiz-adv-x="380" d="M32 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph unicode="˙" horiz-adv-x="134" d="M0 704v134h134v-134h-134z" />
|
||||
<glyph unicode="˚" horiz-adv-x="204" d="M-26 804q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5t-38.5 -93t-89.5 -33t-89.5 33t-38.5 93zM63 804q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
|
||||
<glyph unicode="˛" horiz-adv-x="192" d="M41 -89q0 28 19 52t50 37h75q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80z" />
|
||||
<glyph unicode="˜" horiz-adv-x="332" d="M8 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
|
||||
<glyph unicode="˝" horiz-adv-x="286" d="M-25 711l63 137h119l-68 -137h-114zM119 711l63 137h119l-68 -137h-114z" />
|
||||
<glyph unicode="Ẁ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM208 845h133l63 -137h-128z" />
|
||||
<glyph unicode="ẁ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM208 845h133l63 -137h-128z" />
|
||||
<glyph unicode="Ẃ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM268 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="ẃ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM268 708l63 137h133l-68 -137h-128z" />
|
||||
<glyph unicode="Ẅ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM182 709v129h131v-129h-131zM360 709v129h131v-129h-131z" />
|
||||
<glyph unicode="ẅ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM182 709v129h131v-129h-131zM360 709v129h131v-129h-131z" />
|
||||
<glyph unicode="Ỳ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM116 845h133l63 -137h-128z" />
|
||||
<glyph unicode="ỳ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM116 845h133l63 -137h-128z" />
|
||||
<glyph unicode=" " horiz-adv-x="513" />
|
||||
<glyph unicode=" " horiz-adv-x="1027" />
|
||||
<glyph unicode=" " horiz-adv-x="513" />
|
||||
<glyph unicode=" " horiz-adv-x="1027" />
|
||||
<glyph unicode=" " horiz-adv-x="342" />
|
||||
<glyph unicode=" " horiz-adv-x="256" />
|
||||
<glyph unicode=" " horiz-adv-x="171" />
|
||||
<glyph unicode=" " horiz-adv-x="171" />
|
||||
<glyph unicode=" " horiz-adv-x="128" />
|
||||
<glyph unicode=" " horiz-adv-x="205" />
|
||||
<glyph unicode=" " horiz-adv-x="57" />
|
||||
<glyph unicode="‐" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
|
||||
<glyph unicode="‑" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
|
||||
<glyph unicode="–" horiz-adv-x="411" d="M20 262v140h371v-140h-371z" />
|
||||
<glyph unicode="—" horiz-adv-x="541" d="M20 262v140h501v-140h-501z" />
|
||||
<glyph unicode="‘" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
|
||||
<glyph unicode="’" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
|
||||
<glyph unicode="‚" horiz-adv-x="206" d="M25 -75v320h146v-320h-146z" />
|
||||
<glyph unicode="“" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
|
||||
<glyph unicode="”" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
|
||||
<glyph unicode="„" horiz-adv-x="372" d="M25 -75v320h136v-320h-136zM201 -75v320h136v-320h-136z" />
|
||||
<glyph unicode="†" horiz-adv-x="215" d="M15 524v74h50v70h86v-70h49v-74h-49v-152h-86v152h-50z" />
|
||||
<glyph unicode="‡" horiz-adv-x="215" d="M15 429v74h50v36h-50v74h50v55h86v-55h49v-74h-49v-36h49v-74h-49v-57h-86v57h-50z" />
|
||||
<glyph unicode="•" horiz-adv-x="394" d="M45 320q0 63 44.5 107.5t107.5 44.5t107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5t-107.5 44.5t-44.5 107.5z" />
|
||||
<glyph unicode="…" horiz-adv-x="750" d="M55 0v160h160v-160h-160zM295 0v160h160v-160h-160zM535 0v160h160v-160h-160z" />
|
||||
<glyph unicode=" " horiz-adv-x="205" />
|
||||
<glyph unicode="‰" horiz-adv-x="919" d="M25 471v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM65 0l386 663h103l-388 -663h-101zM126 468q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM348 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81 q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM449 108q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM650 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM751 108q0 -31 21 -31t21 31v86q0 32 -21 32 t-21 -32v-86z" />
|
||||
<glyph unicode="‹" horiz-adv-x="288" d="M10 330l123 213h139l-126 -213l127 -213h-139z" />
|
||||
<glyph unicode="›" horiz-adv-x="288" d="M15 117l127 213l-126 213h139l123 -213l-124 -213h-139z" />
|
||||
<glyph unicode=" " horiz-adv-x="256" />
|
||||
<glyph unicode="€" horiz-adv-x="496" d="M0 245v66h54v42h-54v66h54v45q0 109 58.5 164t145.5 55q89 0 147 -57.5t57 -168.5h-159q3 59 -45 59q-45 0 -45 -59v-38h195v-66h-195v-42h195v-66h-195v-42q0 -57 45 -57q48 0 45 57h159q2 -113 -56 -168t-148 -55q-89 0 -146.5 52.5t-57.5 164.5v48h-54z" />
|
||||
<glyph unicode="™" horiz-adv-x="578" d="M10 575v88h208v-88h-57v-258h-92v258h-59zM241 317v346h111l47 -182l43 182h111v-346h-85l-2 175l-35 -175h-66l-38 177v-177h-86z" />
|
||||
<glyph unicode="−" horiz-adv-x="460" d="M25 265v134h410v-134h-410z" />
|
||||
<glyph unicode="≠" horiz-adv-x="460" d="M25 172v119h131l34 82h-165v119h214l36 86h107l-36 -86h89v-119h-138l-34 -82h172v-119h-221l-36 -88h-108l36 88h-81z" />
|
||||
<glyph unicode="◊" horiz-adv-x="1001" d="M10 228l608 608l427 -428l-608 -608zM80 228l357 -358l538 538l-357 358zM87 227l177 177l3 -3l-177 -177zM94 220l177 177l3 -3l-177 -177zM101 213l177 177l3 -3l-177 -177zM108 206l177 177l3 -3l-177 -177zM115 199l177 177l3 -3l-177 -177zM123 192l176 177l3 -3 l-176 -177zM130 185l176 177l3 -3l-176 -177zM137 178l176 177l3 -3l-176 -177zM144 171l176 177l3 -3l-176 -177zM151 163l177 177l3 -3l-177 -177zM158 156l177 177l3 -3l-177 -177zM165 149l177 177l3 -3l-177 -177zM172 142l177 177l3 -3l-177 -177zM179 135l177 177 l3 -3l-177 -177zM186 128l177 177l3 -3l-177 -177zM193 121l177 177l3 -3l-177 -177zM200 114l177 177l3 -3l-177 -177zM207 107l177 177l3 -3l-177 -177zM214 100l177 177l3 -3l-177 -177zM222 93l176 177l3 -3l-176 -177zM229 86l176 177l3 -3l-176 -177zM236 79l176 177 l3 -3l-176 -177zM243 72l176 177l3 -3l-176 -177zM250 65l177 176l3 -3l-177 -176zM257 57l177 177l3 -3l-177 -177zM264 50l177 177l3 -3l-177 -177zM271 43l177 177l3 -3l-177 -177zM278 36l177 177l3 -3l-177 -177zM285 29l177 177l3 -3l-177 -177zM292 22l177 177l3 -3 l-177 -177zM299 15l177 177l3 -3l-177 -177zM306 8l177 177l3 -3l-177 -177zM313 1l177 177l3 -3l-177 -177zM320 -6l177 177l3 -3l-177 -177zM328 -13l176 177l3 -3l-176 -177zM335 -20l176 177l3 -3l-176 -177zM342 -27l176 177l3 -3l-176 -177zM349 -34l177 176l3 -3 l-177 -176zM356 -42l177 177l3 -3l-177 -177zM363 -49l177 177l3 -3l-177 -177zM370 -56l177 177l3 -3l-177 -177zM377 -63l177 177l3 -3l-177 -177zM384 -70l177 177l3 -3l-177 -177zM391 -77l177 177l3 -3l-177 -177zM398 -84l177 177l3 -3l-177 -177zM405 -91l177 177 l3 -3l-177 -177zM412 -98l177 177l3 -3l-177 -177zM419 -105l177 177l3 -3l-177 -177zM427 -112l176 177l3 -3l-176 -177zM434 -119l176 177l3 -3l-176 -177zM445 586l3 3l351 -351l-3 -3zM452 593l3 3l351 -350l-3 -3zM459 600l3 3l351 -350l-3 -3zM466 608l3 3l351 -351 l-3 -3zM473 615l3 3l351 -351l-3 -3zM480 622l3 3l351 -351l-3 -3zM487 629l3 3l351 -351l-3 -3zM494 636l3 3l351 -351l-3 -3zM502 643l3 3l350 -351l-3 -3zM509 650l3 3l350 -351l-3 -3zM516 657l3 3l351 -351l-3 -3zM523 664l3 3l351 -351l-3 -3zM530 671l3 3l351 -351 l-3 -3zM537 678l3 3l351 -351l-3 -3zM544 685l3 3l351 -351l-3 -3zM551 692l3 3l351 -350l-3 -3zM558 699l3 3l351 -350l-3 -3zM565 707l3 3l351 -351l-3 -3zM572 714l3 3l351 -351l-3 -3zM579 721l3 3l351 -351l-3 -3zM586 728l3 3l351 -351l-3 -3zM593 735l3 3l351 -351 l-3 -3zM601 742l3 3l350 -351l-3 -3zM608 749l3 3l350 -351l-3 -3zM615 756l3 3l350 -351l-3 -3z" />
|
||||
<glyph horiz-adv-x="290" d="M55 -169l56 122h117l-60 -122h-113z" />
|
||||
<glyph d="M50 0v663h160v-663h-160z" />
|
||||
<glyph d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
|
||||
<glyph d="M23 707v105h215v-105h-215z" />
|
||||
<glyph d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
|
||||
<glyph horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
|
||||
<glyph d="M50 0v663h160v-663h-160z" />
|
||||
<glyph horiz-adv-x="290" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 72 KiB |
BIN
assets/fonts/jeanluc/jeanlucweb-bold.woff
Normal file
BIN
assets/fonts/jeanluc/jeanlucweb-thin.eot
Normal file
BIN
assets/fonts/jeanluc/jeanlucweb-thin.otf
Normal file
384
assets/fonts/jeanluc/jeanlucweb-thin.svg
Normal file
|
|
@ -0,0 +1,384 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG webfont generated by Font Squirrel.
|
||||
Copyright : Copyright c 2010 by Atelier Carvalho Bernau All rights reserved
|
||||
Designer : Atelier Carvalho Bernau with Bernd Volmer
|
||||
Foundry : Atelier Carvalho Bernau with Bernd Volmer
|
||||
Foundry URL : httpwwwcarvalhobernaucom
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="webfontDsa4tOUg" horiz-adv-x="500" >
|
||||
<font-face units-per-em="1000" ascent="831" descent="-169" />
|
||||
<missing-glyph horiz-adv-x="200" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode="	" horiz-adv-x="200" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode="!" horiz-adv-x="90" d="M31 0v40h28v-40h-28zM32 103v560h26v-560h-26z" />
|
||||
<glyph unicode=""" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
|
||||
<glyph unicode="#" horiz-adv-x="506" d="M12 193v24h99l61 229h-93v24h100l51 193h26l-51 -193h164l51 193h26l-51 -193h99v-24h-106l-60 -229h100v-24h-106l-51 -193h-27l51 193h-163l-51 -193h-27l51 193h-93zM138 217h163l61 229h-164z" />
|
||||
<glyph unicode="$" horiz-adv-x="449" d="M25 214h143q-3 -88 45 -98v129l-50 30q-135 80 -135 213q0 85 53.5 135t131.5 54v89h26v-89q82 -3 134 -56t49 -173h-140q3 90 -43 98v-134l51 -32q58 -36 88.5 -71.5t38.5 -63.5t8 -69q0 -75 -46 -130.5t-140 -60.5v-105h-26v105q-193 8 -188 229zM171 499q0 -43 42 -71 v119q-42 -6 -42 -48zM239 116q39 6 39 56q0 33 -39 58v-114z" />
|
||||
<glyph unicode="%" horiz-adv-x="545" d="M35 459v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM64 0l386 663h33l-388 -663h-31zM125 462q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM288 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5 t-79.5 -29.5t-79.5 29t-31.5 90zM378 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98z" />
|
||||
<glyph unicode="&" horiz-adv-x="398" d="M30 140q0 48 15.5 88t33.5 62.5t55 60.5l-25 55q-37 81 -37 150q0 60 26.5 94t74.5 34q100 0 100 -122q0 -54 -24.5 -97.5t-86.5 -113.5l79 -171q27 -60 43 -91q36 76 35 214h25q3 -156 -45 -238q30 -45 66 -45h8v-23h-8q-48 0 -82 45q-45 -57 -123 -57q-58 0 -94 38 t-36 117zM56 140q0 -67 30 -99t77 -32q68 0 107 55q-19 30 -53 104l-73 161q-32 -38 -45 -55t-28 -54.5t-15 -79.5zM98 562q0 -69 35 -146l20 -44q51 60 72.5 99t21.5 91q0 47 -19.5 72.5t-54.5 25.5t-55 -27t-20 -71z" />
|
||||
<glyph unicode="'" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
|
||||
<glyph unicode="(" horiz-adv-x="212" d="M30 186v277q0 110 51 171t111 58v-23q-48 2 -92 -51.5t-44 -146.5v-293q0 -93 44 -146.5t92 -51.5v-23q-60 -3 -111 58t-51 171z" />
|
||||
<glyph unicode=")" horiz-adv-x="212" d="M20 -20q48 -2 92 51.5t44 146.5v293q0 93 -44 146.5t-92 51.5v23q60 3 111 -58t51 -171v-277q0 -110 -51 -171t-111 -58v23z" />
|
||||
<glyph unicode="*" horiz-adv-x="382" d="M20 509v23l154 -2l-81 132l19 12l79 -134l78 134l21 -12l-83 -132l155 2v-23l-154 2l82 -131l-21 -13l-79 135l-78 -135l-19 13l81 131z" />
|
||||
<glyph unicode="+" horiz-adv-x="400" d="M27 319v24h160v160h26v-160h160v-24h-160v-160h-26v160h-160z" />
|
||||
<glyph unicode="," horiz-adv-x="76" d="M25 -75v321h26v-321h-26z" />
|
||||
<glyph unicode="-" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
|
||||
<glyph unicode="." horiz-adv-x="90" d="M31 0v40h28v-40h-28z" />
|
||||
<glyph unicode="/" horiz-adv-x="290" d="M-6 -40l273 743h29l-273 -743h-29z" />
|
||||
<glyph unicode="0" horiz-adv-x="476" d="M34 197v267q0 109 58.5 164t145.5 55t145.5 -55t58.5 -163v-267q0 -111 -58 -164.5t-146 -53.5q-89 0 -146.5 52.5t-57.5 164.5zM193 203q0 -57 45 -57t45 57v254q0 59 -45 59t-45 -59v-254z" />
|
||||
<glyph unicode="1" horiz-adv-x="287" d="M13 489v87l23 1q81 3 99 86h104v-663h-160v488z" />
|
||||
<glyph unicode="2" horiz-adv-x="450" d="M25 0v106q0 92 31.5 143t116.5 114q61 45 79 70t18 50q0 22 -11.5 36.5t-34.5 14.5q-24 0 -36.5 -15t-15 -31t-1.5 -40h-143q-2 123 53.5 179t144.5 56q86 0 142 -50.5t56 -142.5q0 -66 -28 -110.5t-96 -100.5l-29 -23.5l-26 -21t-19.5 -17t-16.5 -16.5t-10.5 -14 t-7.5 -15t-1 -15v-1h229v-156h-394z" />
|
||||
<glyph unicode="3" horiz-adv-x="439" d="M23 217h141q-4 -87 46 -87q26 0 37 20t11 65q0 54 -20 72.5t-67 18.5h-27v111l77 94v5h-191v147h359v-127l-93 -114v-4q119 -27 119 -203q0 -122 -56 -178.5t-145 -56.5q-31 0 -57.5 5.5t-53 22t-44.5 42t-28.5 68.5t-7.5 99z" />
|
||||
<glyph unicode="4" horiz-adv-x="472" d="M17 142v126l209 395h188v-385h43v-136h-43v-142h-152v142h-245zM156 278h106v209h-6z" />
|
||||
<glyph unicode="5" horiz-adv-x="457" d="M32 207h146q-1 -34 14 -53.5t42 -19.5q55 0 55 80q0 41 -18.5 63.5t-50.5 22.5t-67 -25l-111 -1v389h369v-149h-231v-106q39 12 73 12q82 0 133.5 -55t51.5 -156q0 -63 -19 -109.5t-50.5 -71.5t-65 -36.5t-68.5 -11.5q-92 0 -148 59.5t-55 167.5z" />
|
||||
<glyph unicode="6" horiz-adv-x="465" d="M34 219v231q0 118 54.5 175.5t148.5 57.5q197 0 193 -235h-146q2 84 -50 84q-55 0 -55 -76v-77h3q45 31 98 31q69 0 114.5 -46.5t45.5 -154.5q0 -67 -19.5 -115t-51.5 -71.5t-64.5 -33t-67.5 -9.5q-203 0 -203 239zM179 205q0 -70 54 -70q56 0 56 74q0 33 -16 50t-38 17 q-56 0 -56 -71z" />
|
||||
<glyph unicode="7" horiz-adv-x="415" d="M15 508v155h380v-143l-161 -520h-167l164 508h-216z" />
|
||||
<glyph unicode="8" horiz-adv-x="473" d="M28 187q0 52 26 94t61 62v4q-38 26 -59 61t-21 97q0 79 61.5 128.5t139.5 49.5q79 0 140.5 -49.5t61.5 -128.5q0 -62 -21 -97t-59 -61v-4q35 -20 61 -62t26 -94q0 -103 -62 -155t-147 -52q-83 0 -145.5 52t-62.5 155zM176 203q0 -34 17 -54t44 -20t44 20t17 54 q0 31 -17.5 51.5t-43.5 20.5t-43.5 -20.5t-17.5 -51.5zM182 477q0 -28 16 -46.5t39 -18.5t39 18.5t16 46.5q0 31 -15 49t-40 18t-40 -18t-15 -49z" />
|
||||
<glyph unicode="9" horiz-adv-x="465" d="M26 464q0 108 59.5 163.5t145.5 55.5q39 0 71.5 -10t63 -34.5t48 -73t17.5 -117.5v-232q0 -120 -55.5 -178t-144.5 -58q-90 0 -143.5 57.5t-51.5 165.5h146q-3 -72 49 -72q55 0 55 68v85h-1q-39 -30 -89 -30q-72 0 -121 50t-49 160zM178 458q0 -33 16 -50.5t39 -17.5 q24 0 39 18t15 54q0 69 -54 69q-55 0 -55 -73z" />
|
||||
<glyph unicode=":" horiz-adv-x="80" d="M26 0v40h28v-40h-28zM26 378v39h28v-39h-28z" />
|
||||
<glyph unicode=";" horiz-adv-x="80" d="M26 377v40h28v-40h-28zM27 -75v321h26v-321h-26z" />
|
||||
<glyph unicode="<" horiz-adv-x="400" d="M25 330l325 208v-28l-279 -180l279 -178v-30z" />
|
||||
<glyph unicode="=" horiz-adv-x="400" d="M30 245v26h340v-26h-340zM30 393v26h340v-26h-340z" />
|
||||
<glyph unicode=">" horiz-adv-x="400" d="M50 122v28l278 180l-278 178v30l325 -208z" />
|
||||
<glyph unicode="?" horiz-adv-x="382" d="M16 448q-7 115 40.5 175t137.5 60q77 0 122.5 -48t45.5 -124q0 -47 -19.5 -83.5t-68.5 -74.5q-48 -36 -62 -70.5t-14 -110.5v-69h-26v63q0 91 18.5 131t75.5 83q70 52 70 128q0 67 -39.5 109.5t-99.5 42.5q-168 0 -155 -212h-26zM170 0v42h30v-42h-30z" />
|
||||
<glyph unicode="@" horiz-adv-x="486" d="M50 202v258q0 113 55.5 168t148.5 55q87 0 134.5 -49t47.5 -150v-345h-24l-3 59q-13 -29 -42.5 -47t-67.5 -18q-57 0 -94 36t-37 113v76q0 76 37.5 113t100.5 37q36 0 64 -18.5t39 -43.5v22q0 101 -40.5 146t-119.5 45q-81 0 -127 -49t-46 -149v-259q0 -102 45 -149.5 t122 -47.5q64 0 111 30v-26q-37 -28 -111 -28q-89 0 -141 52.5t-52 168.5zM194 282q0 -64 30.5 -94t77.5 -30t77.5 32t30.5 102v58q0 64 -30.5 98.5t-77.5 34.5q-48 0 -78 -31t-30 -94v-76z" />
|
||||
<glyph unicode="A" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="B" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
|
||||
<glyph unicode="C" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
|
||||
<glyph unicode="D" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="E" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
|
||||
<glyph unicode="F" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
|
||||
<glyph unicode="G" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
|
||||
<glyph unicode="H" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
|
||||
<glyph unicode="I" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="J" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM240 706v25h162v-25h-162z" />
|
||||
<glyph unicode="K" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
|
||||
<glyph unicode="L" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph unicode="M" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
|
||||
<glyph unicode="N" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
|
||||
<glyph unicode="O" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="P" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="Q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="R" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="S" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="T" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="U" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
|
||||
<glyph unicode="V" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
|
||||
<glyph unicode="W" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
|
||||
<glyph unicode="X" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
|
||||
<glyph unicode="Y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
|
||||
<glyph unicode="Z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
|
||||
<glyph unicode="[" horiz-adv-x="139" d="M30 -40v730h94v-26h-68v-678h68v-26h-94z" />
|
||||
<glyph unicode="\" horiz-adv-x="290" d="M1 683h29l259 -703h-29z" />
|
||||
<glyph unicode="]" horiz-adv-x="139" d="M15 -14h68v678h-68v26h94v-730h-94v26z" />
|
||||
<glyph unicode="^" horiz-adv-x="289" d="M-7 259l132 416h26l133 -416h-28l-119 372l-116 -372h-28z" />
|
||||
<glyph unicode="_" horiz-adv-x="380" d="M15 -63h350v-26h-350v26z" />
|
||||
<glyph unicode="`" horiz-adv-x="161" d="M-12 824h33l93 -116h-31z" />
|
||||
<glyph unicode="a" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="b" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
|
||||
<glyph unicode="c" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
|
||||
<glyph unicode="d" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="e" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
|
||||
<glyph unicode="f" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
|
||||
<glyph unicode="g" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
|
||||
<glyph unicode="h" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
|
||||
<glyph unicode="i" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="j" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM240 706v25h162v-25h-162z" />
|
||||
<glyph unicode="k" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
|
||||
<glyph unicode="l" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph unicode="m" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
|
||||
<glyph unicode="n" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
|
||||
<glyph unicode="o" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="p" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="r" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="s" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="t" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="u" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
|
||||
<glyph unicode="v" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
|
||||
<glyph unicode="w" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
|
||||
<glyph unicode="x" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
|
||||
<glyph unicode="y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
|
||||
<glyph unicode="z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
|
||||
<glyph unicode="{" horiz-adv-x="212" d="M23 313v22q35 0 53 12t18 43q0 26 -21 89t-21 95q0 52 33.5 85t103.5 33v-24q-57 0 -84 -26.5t-27 -67.5q0 -30 20.5 -89.5t20.5 -90.5q0 -59 -52 -70q52 -13 52 -70q0 -31 -20.5 -90.5t-20.5 -89.5q0 -41 27 -67.5t84 -26.5v-24q-70 0 -103.5 33t-33.5 85q0 32 21 95 t21 89q0 31 -18 43t-53 12z" />
|
||||
<glyph unicode="|" horiz-adv-x="86" d="M30 -168v966h26v-966h-26z" />
|
||||
<glyph unicode="}" horiz-adv-x="212" d="M23 -20q57 0 84 26.5t27 67.5q0 30 -20.5 89.5t-20.5 90.5q0 58 52 70q-52 11 -52 70q0 31 20.5 90.5t20.5 89.5q0 41 -27 67.5t-84 26.5v24q70 0 103.5 -33t33.5 -85q0 -32 -21 -95t-21 -89q0 -31 18 -43t53 -12v-22q-35 0 -53 -12t-18 -43q0 -26 21 -89t21 -95 q0 -52 -33.5 -85t-103.5 -33v24z" />
|
||||
<glyph unicode="~" horiz-adv-x="311" d="M7 294q0 79 69 79q31 0 84 -28.5t77 -28.5q41 0 41 54h26q0 -79 -69 -79q-31 0 -84 28.5t-77 28.5q-41 0 -41 -54h-26z" />
|
||||
<glyph unicode="¡" horiz-adv-x="90" d="M31 623v40h28v-40h-28zM32 0v560h26v-560h-26z" />
|
||||
<glyph unicode="¢" horiz-adv-x="436" d="M37 373v113q0 56 15 96.5t41.5 61t54 29.5t60.5 10v83h26v-84q168 -8 164 -212h-122q0 45 -9 67.5t-33 27.5v-270q23 4 32.5 27t9.5 78h122q1 -63 -12.5 -108t-39 -68.5t-53 -34t-59.5 -12.5v-86h-26v86q-171 6 -171 196zM164 366q0 -65 44 -71v270q-44 -5 -44 -72v-127z " />
|
||||
<glyph unicode="£" horiz-adv-x="497" d="M15 239v26h61v56h-61v26h61v126q0 210 199 210t187 -250h-151v31q0 38 -10 54t-31 16q-39 0 -39 -56v-131h108v-26h-108v-56h108v-26h-108v-101h232v-138h-429v138h42v101h-61z" />
|
||||
<glyph unicode="¥" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-150 -385h111v-26h-121v-56h121v-26h-121v-170h-160v170h-118v26h118v56h-118v26h108z" />
|
||||
<glyph unicode="¨" horiz-adv-x="303" d="M85 718v29h28v-29h-28zM189 718v29h28v-29h-28z" />
|
||||
<glyph unicode="©" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM55 331q0 -141 85 -234.5t221 -93.5t221.5 93.5t85.5 234.5q0 138 -86 233.5t-221 95.5q-136 0 -221 -94t-85 -235zM222 235v192q0 47 14.5 80t38.5 48.5 t46.5 22t47.5 6.5q59 0 101 -40t40 -140h-110q3 62 -32 62q-32 0 -32 -42v-187q0 -42 32 -42q18 0 25.5 15t6.5 55h110q1 -55 -11 -94t-34.5 -58t-45.5 -27t-50 -8q-25 0 -47.5 6t-46.5 21.5t-38.5 49t-14.5 80.5z" />
|
||||
<glyph unicode="ª" horiz-adv-x="289" d="M17 330l108 345h26l109 -345h-28l-31 98h-126l-30 -98h-28zM82 452h111l-56 179z" />
|
||||
<glyph unicode="«" horiz-adv-x="272" d="M15 331l123 212h31l-124 -212l125 -214h-31zM97 331l123 212h31l-124 -212l125 -214h-31z" />
|
||||
<glyph unicode="­" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
|
||||
<glyph unicode="®" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM55 331q0 -141 85 -234.5t221 -93.5t221.5 93.5t85.5 234.5q0 138 -86 233.5t-221 95.5q-136 0 -221 -94t-85 -235zM225 90v483h140q78 0 112.5 -37t34.5 -91 q0 -71 -64 -108v-2q69 -21 69 -109v-136h-116v133q0 49 -39 49h-21v-182h-116zM341 376h17q41 0 41 50q0 43 -39 43h-19v-93z" />
|
||||
<glyph unicode="¯" horiz-adv-x="336" d="M42 716v26h252v-26h-252z" />
|
||||
<glyph unicode="°" horiz-adv-x="282" d="M20 565q0 58 36.5 89t85.5 31t84.5 -31t35.5 -89q0 -57 -36 -88.5t-84 -31.5q-49 0 -85.5 31.5t-36.5 88.5zM48 565q0 -44 28 -70t66 -26q37 0 65 26t28 70q0 45 -28 70t-65 25q-38 0 -66 -25t-28 -70z" />
|
||||
<glyph unicode="´" horiz-adv-x="161" d="M46 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="¶" horiz-adv-x="490" d="M30 473q0 86 53 138t147 52h210v-832h-26v810h-122v-810h-26v453h-36q-94 0 -147 51.5t-53 137.5zM58 473q0 -74 46 -120.5t126 -46.5h36v335h-36q-80 0 -126 -47t-46 -121z" />
|
||||
<glyph unicode="·" horiz-adv-x="90" d="M31 321v40h28v-40h-28z" />
|
||||
<glyph unicode="¸" horiz-adv-x="206" d="M23 -115h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l39 78h27l-31 -55q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5z" />
|
||||
<glyph unicode="º" horiz-adv-x="289" d="M25 448v97q0 62 34.5 94t84.5 32t85 -32t35 -94v-96q0 -63 -34.5 -94.5t-85.5 -31.5t-85 31t-34 94zM51 449q0 -51 25.5 -76t67.5 -25t68 25.5t26 76.5v94q0 50 -26.5 76t-67.5 26t-67 -26t-26 -76v-95z" />
|
||||
<glyph unicode="»" horiz-adv-x="272" d="M20 117l124 214l-123 212h31l123 -212l-124 -214h-31zM102 117l124 214l-123 212h31l123 -212l-124 -214h-31z" />
|
||||
<glyph unicode="¿" horiz-adv-x="382" d="M20 152q0 47 19.5 83.5t68.5 74.5q48 36 62 70.5t14 110.5v69h26v-63q0 -91 -18.5 -131t-75.5 -83q-70 -52 -70 -128q0 -67 39.5 -109.5t99.5 -42.5q168 0 155 212h26q7 -115 -40.5 -175t-137.5 -60q-77 0 -122.5 48t-45.5 124zM182 621v42h30v-42h-30z" />
|
||||
<glyph unicode="À" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM147 824h33l93 -116h-31zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Á" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM236 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Â" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 706v26l136 52l136 -52v-26l-136 50zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ã" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ä" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM187 718v29h28v-29h-28zM213 262h73l-33 201h-6zM291 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Å" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM154 781q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM180 781q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 h-12l-16 -29q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l27 54q-32 4 -59 16t-53 35t-41 65.5t-15 99.5z" />
|
||||
<glyph unicode="È" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM113 824h33l93 -116h-31z" />
|
||||
<glyph unicode="É" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM202 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM153 718v29h28v-29h-28zM257 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ì" horiz-adv-x="260" d="M24 824h33l93 -116h-31zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Í" horiz-adv-x="260" d="M50 0v663h160v-663h-160zM113 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Î" horiz-adv-x="260" d="M17 714v27l113 43l113 -43v-27l-113 42zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Ï" horiz-adv-x="260" d="M50 0v663h160v-663h-160zM64 718v29h28v-29h-28zM168 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ð" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
|
||||
<glyph unicode="Ñ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM129 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
|
||||
<glyph unicode="Ò" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM144 824h33l93 -116h-31zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ó" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM233 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ô" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 706v26l136 52l136 -52v-26l-136 50zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Õ" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM108 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM197 205 q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ö" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM184 718v29h28v-29h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM288 718v29h28v-29 h-28z" />
|
||||
<glyph unicode="×" horiz-adv-x="400" d="M39 186l145 145l-144 144l17 17l144 -144l144 144l16 -17l-144 -144l144 -143l-17 -17l-144 143l-145 -145z" />
|
||||
<glyph unicode="Ø" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z " />
|
||||
<glyph unicode="Ù" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM142 824h33l93 -116h-31z" />
|
||||
<glyph unicode="Ú" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM231 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Û" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ü" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM182 718v29h28v-29h-28zM286 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ý" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM227 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Þ" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="ß" horiz-adv-x="901" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM477 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5 t-143 -52.5q-90 0 -146 55t-53 179z" />
|
||||
<glyph unicode="à" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM147 824h33l93 -116h-31zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="á" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM236 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="â" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 706v26l136 52l136 -52v-26l-136 50zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ã" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ä" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM187 718v29h28v-29h-28zM213 262h73l-33 201h-6zM291 718v29h28v-29h-28z" />
|
||||
<glyph unicode="å" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM154 781q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM180 781q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="æ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
|
||||
<glyph unicode="ç" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 h-12l-16 -29q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l27 54q-32 4 -59 16t-53 35t-41 65.5t-15 99.5z" />
|
||||
<glyph unicode="è" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM113 824h33l93 -116h-31z" />
|
||||
<glyph unicode="é" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM202 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ê" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ë" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM153 718v29h28v-29h-28zM257 718v29h28v-29h-28z" />
|
||||
<glyph unicode="ì" horiz-adv-x="260" d="M24 824h33l93 -116h-31z" />
|
||||
<glyph unicode="í" horiz-adv-x="260" d="M113 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="î" horiz-adv-x="260" d="M17 714v27l113 43l113 -43v-27l-113 42zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ï" horiz-adv-x="260" d="M64 718v29h28v-29h-28zM168 718v29h28v-29h-28z" />
|
||||
<glyph unicode="ð" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
|
||||
<glyph unicode="ñ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM129 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
|
||||
<glyph unicode="ò" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM144 824h33l93 -116h-31zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ó" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM233 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ô" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 706v26l136 52l136 -52v-26l-136 50zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="õ" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM108 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM197 205 q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ö" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM184 718v29h28v-29h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM288 718v29h28v-29 h-28z" />
|
||||
<glyph unicode="÷" horiz-adv-x="400" d="M29 319v24h346v-24h-346zM188 187v36h28v-36h-28zM188 439v36h28v-36h-28z" />
|
||||
<glyph unicode="ø" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z " />
|
||||
<glyph unicode="ù" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM142 824h33l93 -116h-31z" />
|
||||
<glyph unicode="ú" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM231 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="û" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ü" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM182 718v29h28v-29h-28zM286 718v29h28v-29h-28z" />
|
||||
<glyph unicode="ý" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM227 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="þ" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
|
||||
<glyph unicode="ÿ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM178 718v29h28v-29h-28zM282 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ā" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM127 716v26h252v-26h-252zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ā" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM127 716v26h252v-26h-252zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ă" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM139 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ă" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM139 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ą" horiz-adv-x="502" d="M4 0l156 663h186l152 -663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-117l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="ą" horiz-adv-x="502" d="M4 0l156 663h186l152 -663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-117l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
|
||||
<glyph unicode="Ć" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM224 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ć" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM224 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ĉ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ĉ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ċ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM225 715v36h32v-36h-32z" />
|
||||
<glyph unicode="ċ" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM225 715v36h32v-36h-32z" />
|
||||
<glyph unicode="Č" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="č" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ď" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 757v26l136 -50l136 50v-26l-136 -52zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="ď" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 757v26l136 -50l136 50v-26l-136 -52zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="Đ" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
|
||||
<glyph unicode="đ" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
|
||||
<glyph unicode="Ē" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM93 716v26h252v-26h-252z" />
|
||||
<glyph unicode="ē" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM93 716v26h252v-26h-252z" />
|
||||
<glyph unicode="Ĕ" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM105 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="ĕ" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM105 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="Ė" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM203 715v36h32v-36h-32z" />
|
||||
<glyph unicode="ė" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM203 715v36h32v-36h-32z" />
|
||||
<glyph unicode="Ę" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h1q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-293z" />
|
||||
<glyph unicode="ę" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h1q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-293z" />
|
||||
<glyph unicode="Ě" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="ě" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ĝ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ĝ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ğ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="ğ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="Ġ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM234 715v36h32v-36h-32z" />
|
||||
<glyph unicode="ġ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM234 715v36h32v-36h-32z" />
|
||||
<glyph unicode="Ģ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM181 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ģ" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM181 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="Ĥ" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ĥ" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ħ" horiz-adv-x="503" d="M10 523v26h40v114h158v-114h87v114h158v-114h40v-26h-40v-523h-158v274h-87v-274h-158v523h-40zM208 427h87v96h-87v-96z" />
|
||||
<glyph unicode="ħ" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
|
||||
<glyph unicode="Ĩ" horiz-adv-x="260" d="M4 711q-2 78 55 78q24 0 73.5 -26.5t71.5 -26.5q28 0 24 53h26q4 -78 -53 -78q-27 0 -77 26.5t-69 26.5q-25 0 -25 -49v-4h-26zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ĩ" horiz-adv-x="260" d="M4 711q-2 78 55 78q24 0 73.5 -26.5t71.5 -26.5q28 0 24 53h26q4 -78 -53 -78q-27 0 -77 26.5t-69 26.5q-25 0 -25 -49v-4h-26zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="Ī" horiz-adv-x="260" d="M30 716v26h201v-26h-201zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ī" horiz-adv-x="260" d="M30 716v26h201v-26h-201z" />
|
||||
<glyph unicode="Ĭ" horiz-adv-x="260" d="M16 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ĭ" horiz-adv-x="260" d="M16 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="Į" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-113z" />
|
||||
<glyph unicode="į" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="İ" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="ı" horiz-adv-x="260" d="M50 0v663h160v-663h-160z" />
|
||||
<glyph unicode="IJ" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v25h162v-25h-162zM500 706v25h162v-25h-162z" />
|
||||
<glyph unicode="ij" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v25h162v-25h-162zM500 706v25h162v-25h-162z" />
|
||||
<glyph unicode="Ĵ" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 714v27l113 43l113 -43v-27l-113 42z" />
|
||||
<glyph unicode="ĵ" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 714v27l113 43l113 -43v-27l-113 42z" />
|
||||
<glyph unicode="Ķ" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM197 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ķ" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM197 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="Ĺ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM110 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ĺ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM110 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ļ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM143 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ļ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM143 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="Ľ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM278 526l45 137h30l-45 -137h-30z" />
|
||||
<glyph unicode="ľ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
|
||||
<glyph unicode="Ŀ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM322 312v40h28v-40h-28z" />
|
||||
<glyph unicode="ŀ" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM322 312v40h28v-40h-28z" />
|
||||
<glyph unicode="Ł" horiz-adv-x="387" d="M9 265v31l41 20v347h158v-270l86 43v-31l-86 -43v-202h164v-160h-322v285z" />
|
||||
<glyph unicode="ł" horiz-adv-x="387" d="M9 265v31l41 20v347h158v-270l86 43v-31l-86 -43v-202h164v-160h-322v285z" />
|
||||
<glyph unicode="Ń" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM254 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ń" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM254 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ņ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM199 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ņ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM199 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="Ň" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="ň" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ŋ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
|
||||
<glyph unicode="ŋ" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
|
||||
<glyph unicode="Ō" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM124 716v26h252v-26h-252zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ō" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM124 716v26h252v-26h-252zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ŏ" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="ŏ" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
|
||||
<glyph unicode="Ő" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM176 708l67 137h29l-68 -137h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM285 708 l67 137h29l-68 -137h-28z" />
|
||||
<glyph unicode="ő" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM176 708l67 137h29l-68 -137h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM285 708 l67 137h29l-68 -137h-28z" />
|
||||
<glyph unicode="Œ" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
|
||||
<glyph unicode="œ" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
|
||||
<glyph unicode="Ŕ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128zM220 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ŕ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128zM220 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ŗ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM182 -169l50 102h29l-51 -102h-28zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="ŗ" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM182 -169l50 102h29l-51 -102h-28zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="Ř" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 759v26l136 -50l136 50v-26l-136 -52zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="ř" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 759v26l136 -50l136 50v-26l-136 -52zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
|
||||
<glyph unicode="Ś" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM218 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ś" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM218 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ŝ" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ŝ" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ş" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4 l-16 -28q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l26 53q-79 8 -126 63.5t-44 168.5z" />
|
||||
<glyph unicode="ş" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4 l-16 -28q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l26 53q-79 8 -126 63.5t-44 168.5z" />
|
||||
<glyph unicode="Š" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="š" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ţ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM146 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ţ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM146 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="Ť" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="ť" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ŧ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-121h100v-26h-100v-361h-160v361h-104v26h104v121h-117z" />
|
||||
<glyph unicode="ŧ" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
|
||||
<glyph unicode="Ũ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
|
||||
<glyph unicode="ũ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
|
||||
<glyph unicode="Ū" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM122 716v26h252v-26h-252z" />
|
||||
<glyph unicode="ū" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM122 716v26h252v-26h-252z" />
|
||||
<glyph unicode="Ŭ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM134 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="ŭ" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM134 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="Ů" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM150 769q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM176 769q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5 t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
|
||||
<glyph unicode="ů" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM150 769q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM176 769q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5 t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
|
||||
<glyph unicode="Ű" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM174 708l67 137h29l-68 -137h-28zM283 708l67 137h29l-68 -137h-28z" />
|
||||
<glyph unicode="ű" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM174 708l67 137h29l-68 -137h-28zM283 708l67 137h29l-68 -137h-28z" />
|
||||
<glyph unicode="Ų" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -96 -34 -147.5t-104 -76.5q-111 -43 -111 -92q0 -51 97 -51h14v-25h-26q-48 0 -79.5 18.5t-31.5 54.5q0 54 77 90h-9q-208 0 -208 229z" />
|
||||
<glyph unicode="ų" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -96 -34 -147.5t-104 -76.5q-111 -43 -111 -92q0 -51 97 -51h14v-25h-26q-48 0 -79.5 18.5t-31.5 54.5q0 54 77 90h-9q-208 0 -208 229z" />
|
||||
<glyph unicode="Ŵ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ŵ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ŷ" horiz-adv-x="482" d="M2 663h168l71 -212h6l71 212h162l-160 -411v-252h-160v252zM108 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ŷ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM108 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="Ÿ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM178 718v29h28v-29h-28zM282 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ź" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM199 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ź" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM199 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ż" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM200 715v36h32v-36h-32z" />
|
||||
<glyph unicode="ż" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM200 715v36h32v-36h-32z" />
|
||||
<glyph unicode="Ž" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="ž" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="Ǻ" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM153 778q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM179 778q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6zM237 890l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ǻ" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM153 778q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM179 778q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6zM237 890l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ǽ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM341 697l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ǽ" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM341 697l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ǿ" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z M233 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ǿ" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z M233 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ș" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM154 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ș" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM154 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="340" d="M34 706v26l136 52l136 -52v-26l-136 50z" />
|
||||
<glyph unicode="ˇ" horiz-adv-x="340" d="M34 759v26l136 -50l136 50v-26l-136 -52z" />
|
||||
<glyph unicode="˘" horiz-adv-x="380" d="M76 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
|
||||
<glyph unicode="˙" horiz-adv-x="134" d="M51 715v36h32v-36h-32z" />
|
||||
<glyph unicode="˚" horiz-adv-x="204" d="M3 804q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM29 804q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
|
||||
<glyph unicode="˛" horiz-adv-x="192" d="M48 -93q0 33 25 55.5t81 40.5l38 -3q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76z" />
|
||||
<glyph unicode="˜" horiz-adv-x="332" d="M24 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
|
||||
<glyph unicode="˝" horiz-adv-x="286" d="M41 708l67 137h29l-68 -137h-28zM150 708l67 137h29l-68 -137h-28z" />
|
||||
<glyph unicode="Ẁ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM230 824h33l93 -116h-31z" />
|
||||
<glyph unicode="ẁ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM230 824h33l93 -116h-31z" />
|
||||
<glyph unicode="Ẃ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM319 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="ẃ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM319 708l93 116h33l-95 -116h-31z" />
|
||||
<glyph unicode="Ẅ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM270 718v29h28v-29h-28zM374 718v29h28v-29h-28z" />
|
||||
<glyph unicode="ẅ" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM270 718v29h28v-29h-28zM374 718v29h28v-29h-28z" />
|
||||
<glyph unicode="Ỳ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM138 824h33l93 -116h-31z" />
|
||||
<glyph unicode="ỳ" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM138 824h33l93 -116h-31z" />
|
||||
<glyph unicode=" " horiz-adv-x="503" />
|
||||
<glyph unicode=" " horiz-adv-x="1006" />
|
||||
<glyph unicode=" " horiz-adv-x="503" />
|
||||
<glyph unicode=" " horiz-adv-x="1006" />
|
||||
<glyph unicode=" " horiz-adv-x="335" />
|
||||
<glyph unicode=" " horiz-adv-x="251" />
|
||||
<glyph unicode=" " horiz-adv-x="167" />
|
||||
<glyph unicode=" " horiz-adv-x="167" />
|
||||
<glyph unicode=" " horiz-adv-x="125" />
|
||||
<glyph unicode=" " horiz-adv-x="201" />
|
||||
<glyph unicode=" " horiz-adv-x="55" />
|
||||
<glyph unicode="‐" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
|
||||
<glyph unicode="‑" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
|
||||
<glyph unicode="–" horiz-adv-x="411" d="M20 319v26h371v-26h-371z" />
|
||||
<glyph unicode="—" horiz-adv-x="541" d="M20 319v26h501v-26h-501z" />
|
||||
<glyph unicode="‘" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
|
||||
<glyph unicode="’" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
|
||||
<glyph unicode="‚" horiz-adv-x="76" d="M30 -75v321h26v-321h-26z" />
|
||||
<glyph unicode="“" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
|
||||
<glyph unicode="”" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
|
||||
<glyph unicode="„" horiz-adv-x="156" d="M30 -75v321h26v-321h-26zM100 -75v321h26v-321h-26z" />
|
||||
<glyph unicode="†" horiz-adv-x="225" d="M20 558v24h80v86h26v-86h79v-24h-79v-186h-26v186h-80z" />
|
||||
<glyph unicode="‡" horiz-adv-x="225" d="M20 449v24h80v96h-80v24h80v75h26v-75h79v-24h-79v-96h79v-24h-79v-77h-26v77h-80z" />
|
||||
<glyph unicode="•" horiz-adv-x="394" d="M45 320q0 63 44.5 107.5t107.5 44.5t107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5t-107.5 44.5t-44.5 107.5z" />
|
||||
<glyph unicode="…" horiz-adv-x="270" d="M31 0v40h28v-40h-28zM121 0v40h28v-40h-28zM211 0v40h28v-40h-28z" />
|
||||
<glyph unicode=" " horiz-adv-x="201" />
|
||||
<glyph unicode="‰" horiz-adv-x="809" d="M35 459v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM64 0l386 663h33l-388 -663h-31zM125 462q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM288 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5 t-79.5 -29.5t-79.5 29t-31.5 90zM378 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM552 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM642 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98z" />
|
||||
<glyph unicode="‹" horiz-adv-x="190" d="M15 331l123 212h31l-124 -212l125 -214h-31z" />
|
||||
<glyph unicode="›" horiz-adv-x="190" d="M20 117l124 214l-123 212h31l123 -212l-124 -214h-31z" />
|
||||
<glyph unicode=" " horiz-adv-x="251" />
|
||||
<glyph unicode="€" horiz-adv-x="496" d="M0 279v26h54v56h-54v26h54v77q0 109 58.5 164t145.5 55q89 0 147 -57.5t57 -168.5h-159q3 59 -45 59q-45 0 -45 -59v-70h179v-26h-179v-56h179v-26h-179v-76q0 -57 45 -57q48 0 45 57h159q2 -113 -56 -168t-148 -55q-89 0 -146.5 52.5t-57.5 164.5v82h-54z" />
|
||||
<glyph unicode="™" horiz-adv-x="604" d="M15 637v26h204v-26h-90v-307h-26v307h-88zM266 330v333h37l105 -296l106 296h36v-333h-26v286l-104 -286h-26l-102 282v-282h-26z" />
|
||||
<glyph unicode="−" horiz-adv-x="400" d="M27 319v24h346v-24h-346z" />
|
||||
<glyph unicode="≠" horiz-adv-x="400" d="M29 245v26h126l55 122h-181v26h193l39 86h27l-39 -86h122v-26h-133l-55 -122h188v-26h-200l-39 -88h-28l39 88h-114z" />
|
||||
<glyph unicode="◊" horiz-adv-x="947" d="M20 228l544 544l363 -364l-544 -544zM26 228l357 -358l538 538l-357 358zM33 227l177 177l3 -3l-177 -177zM40 220l177 177l3 -3l-177 -177zM47 213l177 177l3 -3l-177 -177zM54 206l177 177l3 -3l-177 -177zM61 199l177 177l3 -3l-177 -177zM69 192l176 177l3 -3 l-176 -177zM76 185l176 177l3 -3l-176 -177zM83 178l176 177l3 -3l-176 -177zM90 171l176 177l3 -3l-176 -177zM97 163l177 177l3 -3l-177 -177zM104 156l177 177l3 -3l-177 -177zM111 149l177 177l3 -3l-177 -177zM118 142l177 177l3 -3l-177 -177zM125 135l177 177l3 -3 l-177 -177zM132 128l177 177l3 -3l-177 -177zM139 121l177 177l3 -3l-177 -177zM146 114l177 177l3 -3l-177 -177zM153 107l177 177l3 -3l-177 -177zM160 100l177 177l3 -3l-177 -177zM168 93l176 177l3 -3l-176 -177zM175 86l176 177l3 -3l-176 -177zM182 79l176 177l3 -3 l-176 -177zM189 72l176 177l3 -3l-176 -177zM196 65l177 176l3 -3l-177 -176zM203 57l177 177l3 -3l-177 -177zM210 50l177 177l3 -3l-177 -177zM217 43l177 177l3 -3l-177 -177zM224 36l177 177l3 -3l-177 -177zM231 29l177 177l3 -3l-177 -177zM238 22l177 177l3 -3 l-177 -177zM245 15l177 177l3 -3l-177 -177zM252 8l177 177l3 -3l-177 -177zM259 1l177 177l3 -3l-177 -177zM266 -6l177 177l3 -3l-177 -177zM274 -13l176 177l3 -3l-176 -177zM281 -20l176 177l3 -3l-176 -177zM288 -27l176 177l3 -3l-176 -177zM295 -34l177 176l3 -3 l-177 -176zM302 -42l177 177l3 -3l-177 -177zM309 -49l177 177l3 -3l-177 -177zM316 -56l177 177l3 -3l-177 -177zM323 -63l177 177l3 -3l-177 -177zM330 -70l177 177l3 -3l-177 -177zM337 -77l177 177l3 -3l-177 -177zM344 -84l177 177l3 -3l-177 -177zM351 -91l177 177 l3 -3l-177 -177zM358 -98l177 177l3 -3l-177 -177zM365 -105l177 177l3 -3l-177 -177zM373 -112l176 177l3 -3l-176 -177zM380 -119l176 177l3 -3l-176 -177zM391 586l3 3l351 -351l-3 -3zM398 593l3 3l351 -350l-3 -3zM405 600l3 3l351 -350l-3 -3zM412 608l3 3l351 -351 l-3 -3zM419 615l3 3l351 -351l-3 -3zM426 622l3 3l351 -351l-3 -3zM433 629l3 3l351 -351l-3 -3zM440 636l3 3l351 -351l-3 -3zM448 643l3 3l350 -351l-3 -3zM455 650l3 3l350 -351l-3 -3zM462 657l3 3l351 -351l-3 -3zM469 664l3 3l351 -351l-3 -3zM476 671l3 3l351 -351 l-3 -3zM483 678l3 3l351 -351l-3 -3zM490 685l3 3l351 -351l-3 -3zM497 692l3 3l351 -350l-3 -3zM504 699l3 3l351 -350l-3 -3zM511 707l3 3l351 -351l-3 -3zM518 714l3 3l351 -351l-3 -3zM525 721l3 3l351 -351l-3 -3zM532 728l3 3l351 -351l-3 -3zM539 735l3 3l351 -351 l-3 -3zM547 742l3 3l350 -351l-3 -3zM554 749l3 3l350 -351l-3 -3zM561 756l3 3l350 -351l-3 -3z" />
|
||||
<glyph horiz-adv-x="290" d="M100 -169l50 102h29l-51 -102h-28z" />
|
||||
<glyph horiz-adv-x="260" d="M50 0v663h160v-663h-160z" />
|
||||
<glyph horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
|
||||
<glyph horiz-adv-x="290" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 72 KiB |
BIN
assets/fonts/jeanluc/jeanlucweb-thin.woff
Normal file
23
assets/fonts/jeanluc/stylesheet.css
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
@charset "UTF-8";
|
||||
|
||||
|
||||
/* @font-face declarations */
|
||||
|
||||
@font-face {
|
||||
font-family: 'JeanLucWeb-Bold';
|
||||
src: url('jeanlucweb-bold.eot');
|
||||
src: local('☺'), url("jeanlucweb-bold.woff") format("woff"), url("jeanlucweb-bold.otf") format("opentype"), url("jeanlucweb-bold#webfontup15foyj") format("svg");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'JeanLucWeb-Thin';
|
||||
src: url('jeanlucweb-bold.eot');
|
||||
src: local('☺'), url("jeanlucweb-thin.woff") format("woff"), url("jeanlucweb-thin.otf") format("opentype"), url("jeanlucweb-thin#webfontdsa4toug") format("svg");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
The Jean-Luc typeface was designed and made by Atelier Carvalho Bernau on the occasion of the 80th birthday of Jean-Luc Godard. It is available free of charge from http://www.carvalho-bernau.com/jlg/
|
||||
|
||||
Jean-Luc typeface Copyright (c) 2010 Atelier Carvalho Bernau
|
||||
*/
|
||||
BIN
assets/fonts/spungold/spungold.eot
Normal file
245
assets/fonts/spungold/spungold.svg
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="spun_goldregular" horiz-adv-x="493" >
|
||||
<font-face units-per-em="2048" ascent="1522" descent="-526" />
|
||||
<missing-glyph horiz-adv-x="500" />
|
||||
<glyph />
|
||||
<glyph />
|
||||
<glyph horiz-adv-x="682" />
|
||||
<glyph unicode="
" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="!" horiz-adv-x="520" d="M162 63q0 25 19 44.5t44 19.5q26 0 45 -19.5t19 -44.5q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5zM162 1333q0 26 19 45t44 19q26 0 45 -19t19 -45l-25 -971q-2 -15 -13 -26.5t-26 -11.5q-16 0 -26.5 11t-12.5 27q-3 110 -9.5 307.5t-10.5 359t-4 304.5z" />
|
||||
<glyph unicode=""" horiz-adv-x="706" d="M92 1034v299q0 26 19 45t45 19q25 0 44 -19t19 -45v-299q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5zM344 1034v299q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-299q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5z" />
|
||||
<glyph unicode="#" horiz-adv-x="1138" d="M80 434q0 25 13.5 41t39.5 20.5t46.5 5.5t51.5 -1t37 -2l29 401q-6 0 -36.5 -2t-49.5 -1t-43.5 6t-37.5 20.5t-13 40.5t14 41t39.5 20.5t46.5 5t52 -1.5t38 -2l25 311q2 25 19 42.5t40 17.5q26 0 45 -19t19 -45q0 -77 -23 -307h197l22 311q2 25 20 42.5t44 17.5 q24 0 43.5 -19t19.5 -45q0 -57 -10 -168.5t-12 -138.5q7 0 36.5 2t49 1.5t44 -5t37.5 -20.5t13 -41t-14 -41t-40.5 -20.5t-47 -5.5t-52 1t-37.5 2l-28 -401q6 0 36.5 2t49.5 1t43.5 -6t37.5 -20.5t13 -40.5t-14 -40.5t-39.5 -20t-46.5 -5t-51.5 2t-38.5 2.5l-25 -314 q-1 -25 -18.5 -41t-40.5 -16q-27 0 -45.5 17.5t-18.5 43.5q0 75 23 310h-197l-23 -314q-2 -25 -19.5 -41t-43.5 -16q-24 0 -42.5 17.5t-18.5 43.5q0 44 3.5 94t10 119t8.5 97q-8 0 -37.5 -2t-49 -1.5t-43.5 5t-37 19.5t-13 40zM395 498h195l31 401h-197z" />
|
||||
<glyph unicode="$" horiz-adv-x="1130" d="M45 289q0 25 19 43t45 18q31 0 51 -26q67 -86 127.5 -131.5t152.5 -61.5v551q-67 17 -128 49t-111.5 77.5t-80.5 108t-30 132.5q0 134 104.5 229t245.5 115q0 8 -2.5 38t-2 51t5 46.5t19.5 39t40 13.5t41 -13.5t20.5 -39t5 -46t-1.5 -51.5t-2 -38q109 -15 206 -83.5 t140 -166.5q9 -23 9 -31q0 -24 -19.5 -42.5t-44.5 -18.5q-37 0 -57 34q-82 151 -234 179v-478q73 -17 141.5 -51.5t126 -84.5t92.5 -119t35 -146q0 -101 -58.5 -186t-147 -134.5t-189.5 -62.5q0 -8 2 -38t1.5 -50.5t-5 -45.5t-20.5 -38.5t-41 -13.5t-40 13.5t-19.5 38.5 t-5 45.5t2 50.5t2.5 38q-116 15 -218.5 82.5t-164.5 167.5q-12 18 -12 37zM217 1049q0 -83 66.5 -144t156.5 -92v451q-88 -17 -155.5 -75t-67.5 -140zM563 131q105 17 186.5 86t81.5 168q0 96 -82 169t-186 101v-524z" />
|
||||
<glyph unicode="%" horiz-adv-x="1683" d="M98 1016q0 92 38.5 178t114 143.5t169.5 57.5q95 0 171 -58t114 -143.5t38 -177.5q0 -93 -38 -179t-114 -144t-171 -58q-94 0 -169.5 58t-114 144.5t-38.5 178.5zM221 1016q0 -58 23 -115t70 -98t106 -41t106 41t69.5 98t22.5 115q0 91 -55.5 172.5t-142.5 81.5 t-143 -81.5t-56 -172.5zM356 63q0 20 13 33l782 1270q22 29 53 29q25 0 43.5 -18t18.5 -44q0 -21 -9 -33l-784 -1269q-18 -29 -53 -29q-27 0 -45.5 17.5t-18.5 43.5zM881 381q0 93 38.5 179t114.5 144t170 58t170 -58t115 -144t39 -179q0 -92 -39 -178t-115 -143.5 t-170 -57.5q-71 0 -133 34t-103 88t-64 121.5t-23 135.5zM1006 381q0 -91 55.5 -172.5t142.5 -81.5t142 81.5t55 172.5q0 58 -22.5 115t-69 98t-105.5 41t-106 -41t-69.5 -98t-22.5 -115z" />
|
||||
<glyph unicode="&" horiz-adv-x="1290" d="M113 362q0 41 8.5 78.5t20.5 66.5t34.5 59t42 51t52 47.5t55 42.5t60.5 43t60 43q-7 9 -31 40.5t-30.5 41.5t-24 36.5t-23.5 41.5t-15 40t-12 49t-3 52q0 116 73.5 208.5t186.5 92.5q77 0 138.5 -46t92.5 -115t31 -144q0 -60 -13.5 -105.5t-47 -86t-61 -64t-84.5 -66.5 l258 -338q4 15 8 51.5t8 62t20 47t44 21.5q25 0 44 -18.5t19 -44.5q0 -126 -55 -236q176 -206 176 -250q0 -26 -18.5 -43.5t-45.5 -17.5q-28 0 -49 25l-133 174q-79 -93 -191.5 -147.5t-232.5 -51.5q-152 5 -257 107t-105 253zM240 362q0 -98 70 -166.5t167 -68.5 q100 0 192 48t152 130l-299 389l-186 -139q-96 -74 -96 -193zM430 1087q0 -26 6 -49.5t21 -48t25.5 -39t34.5 -43t32 -39.5q7 5 30 21.5t30 22.5t25.5 21.5t25 24.5t18.5 25.5t16.5 31t8.5 34t4 41.5q0 64 -39.5 122t-100.5 58q-59 0 -98 -59t-39 -124z" />
|
||||
<glyph unicode="'" horiz-adv-x="516" d="M158 1034v299q0 27 17.5 45.5t43.5 18.5t44 -19t18 -45v-299q0 -26 -18 -44.5t-44 -18.5t-43.5 18.5t-17.5 44.5z" />
|
||||
<glyph unicode="(" horiz-adv-x="727" d="M102 698q0 235 82 467q39 104 103 215.5t131 178.5q19 22 47 22q25 0 44 -18.5t19 -44.5q0 -22 -14 -39q-144 -190 -215.5 -375t-71.5 -406t71.5 -405.5t215.5 -374.5q14 -18 14 -39q0 -26 -19 -44.5t-44 -18.5q-28 0 -47 22q-67 67 -131 178t-103 215q-82 232 -82 467z " />
|
||||
<glyph unicode=")" horiz-adv-x="727" d="M203 -121q0 24 12 39q144 190 215.5 374.5t71.5 405.5t-71.5 406t-215.5 375q-12 15 -12 39q0 26 17.5 44.5t43.5 18.5q28 0 47 -22q66 -67 129.5 -179t102.5 -215q82 -232 82 -467t-82 -467q-39 -103 -102.5 -214t-129.5 -179q-19 -22 -47 -22q-26 0 -43.5 18.5 t-17.5 44.5z" />
|
||||
<glyph unicode="*" horiz-adv-x="851" d="M53 1165q0 26 18.5 45t43.5 19q20 0 49 -8.5t72.5 -25.5t48.5 -19v157q0 26 18 45t43 19q26 0 45 -19t19 -45v-157q8 3 37.5 14.5t48 18.5t43 13.5t39.5 6.5q25 0 43 -19t18 -45q0 -20 -11 -36.5t-30 -22.5l-149 -49q4 -6 25 -31.5t36.5 -45t29 -44.5t13.5 -41 q0 -26 -19.5 -45t-44.5 -19q-29 0 -49 27l-94 127l-92 -127q-20 -27 -49 -27q-26 0 -45 19t-19 45q0 13 8 30.5t22.5 38t26 35.5t28.5 34.5t20 23.5l-150 49q-43 16 -43 59z" />
|
||||
<glyph unicode="+" horiz-adv-x="811" d="M57 455q0 26 18.5 44.5t43.5 18.5h180v180q0 26 19 45t44 19q26 0 45 -19t19 -45v-180h180q25 0 43.5 -18.5t18.5 -44.5q0 -25 -18.5 -44.5t-43.5 -19.5h-180v-176q0 -27 -18.5 -45t-45.5 -18q-25 0 -44 18t-19 45v176h-180q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="," horiz-adv-x="628" d="M92 -121q0 12 29 56t65.5 95t44.5 64q20 33 56 33q25 0 44 -19.5t19 -44.5q0 -28 -54.5 -105t-92.5 -120q-19 -22 -47 -22q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="-" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="." horiz-adv-x="583" d="M182 63q0 25 19 44.5t45 19.5q25 0 44 -19.5t19 -44.5q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="/" horiz-adv-x="968" d="M168 63q0 25 190.5 523t296.5 770q18 41 60 41q26 0 44.5 -19t18.5 -45q0 -16 -110 -306t-240.5 -628t-138.5 -358q-6 -17 -22.5 -29t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="0" horiz-adv-x="1165" d="M127 698q0 83 15.5 174t51.5 185.5t87 169.5t130 122.5t173 47.5q93 0 171 -47.5t129 -122.5t87 -169.5t51.5 -185.5t15.5 -174t-15.5 -174t-51.5 -185.5t-87 -169t-129 -122t-171 -47.5q-94 0 -173 47.5t-130 122t-87 169t-51.5 185.5t-15.5 174zM252 698 q0 -60 10.5 -131t36.5 -150t62.5 -143t94.5 -105.5t128 -41.5q69 0 126.5 41.5t94 105.5t62 143t36 150t10.5 131t-10.5 131t-36 150.5t-62 143t-94 105.5t-126.5 42q-70 0 -128 -42t-94.5 -105.5t-62.5 -143t-36.5 -150.5t-10.5 -131z" />
|
||||
<glyph unicode="1" horiz-adv-x="1097" d="M303 1149q0 26 17.5 40.5t40 19t50.5 13.5t42 23q15 16 23.5 44.5t12.5 51.5t19 40t43 16q27 -2 45 -20t18 -44v-1270q0 -26 -18.5 -44.5t-44.5 -18.5t-44 18.5t-18 44.5v1055q-64 -33 -124 -33q-25 0 -43.5 18.5t-18.5 45.5z" />
|
||||
<glyph unicode="2" horiz-adv-x="1167" d="M141 63q0 81 31.5 162t87.5 137l555 558q53 50 53 129q0 66 -46.5 118t-111 77.5t-128.5 25.5q-193 0 -293 -176q-21 -35 -56 -35q-26 0 -43.5 18.5t-17.5 44.5q0 17 6 29q53 112 166 179t238 67q100 0 193.5 -42t155.5 -123.5t62 -182.5q0 -131 -90 -218l-553 -557 q-58 -58 -78 -147h689q24 0 42.5 -19.5t18.5 -44.5q0 -26 -18 -44.5t-43 -18.5h-756q-25 0 -44.5 18.5t-19.5 44.5z" />
|
||||
<glyph unicode="3" horiz-adv-x="1165" d="M127 289q0 25 18 43t43 18q19 0 43 -23t53 -56t67 -66.5t98.5 -56.5t134.5 -23q55 0 112 18t106 50t80 82.5t31 109.5q0 49 -22 93t-56.5 75t-80 56t-90 39.5t-89.5 23.5q-24 3 -39.5 20t-15.5 41q0 18 15 37q11 18 40 25q51 12 98 31.5t94 49.5t75 75t28 98 q0 66 -46.5 118t-111 77.5t-128.5 25.5q-186 0 -293 -176q-18 -35 -58 -35q-25 0 -43 18t-18 45q0 15 6 27q53 112 167 180t239 68q99 0 192 -42t155 -123.5t62 -182.5q0 -189 -211 -312q113 -58 184.5 -147.5t71.5 -204.5q0 -85 -41 -159t-106.5 -122.5t-145.5 -76 t-161 -27.5q-135 0 -255.5 68t-191.5 184q-10 20 -10 37z" />
|
||||
<glyph unicode="4" horiz-adv-x="1243" d="M131 434q0 18 10 35l598 899q22 29 52 29q27 0 45 -18.5t18 -45.5v-835q6 0 37 2t51.5 1t46.5 -5.5t39.5 -20.5t13.5 -41t-14 -40.5t-39 -20t-46.5 -5t-51 2t-37.5 2.5v-310q0 -27 -18 -45t-45 -18q-25 0 -42.5 18.5t-17.5 44.5v310h-538q-26 0 -44 17.5t-18 43.5z M309 498h422v628z" />
|
||||
<glyph unicode="5" horiz-adv-x="1165" d="M117 389q0 26 20 45t45 19q27 0 43.5 -18.5t18.5 -45.5q5 -80 55 -141.5t121.5 -91t150.5 -29.5q136 0 243.5 86.5t107.5 218.5q0 87 -52 158.5t-132 109t-167 37.5q-53 0 -99.5 -13.5t-77 -32t-55 -37.5t-44 -32.5t-33.5 -13.5q-26 0 -44.5 19t-18.5 45v8l43 655 q2 26 19.5 43t43.5 17h623q26 0 44.5 -18t18.5 -44t-18.5 -44.5t-44.5 -18.5h-566l-30 -467q112 59 239 59q121 0 230.5 -54t178.5 -154t69 -222q0 -92 -40.5 -173.5t-107.5 -137t-153.5 -87.5t-176.5 -32q-111 0 -213.5 46t-171.5 136.5t-69 204.5z" />
|
||||
<glyph unicode="6" horiz-adv-x="1165" d="M109 432q0 135 33 271.5t100.5 261t159.5 221t220 154t273 57.5q25 0 44 -19t19 -45q0 -25 -19 -44t-44 -19q-107 0 -205.5 -41t-174 -111.5t-133 -159.5t-91.5 -190q129 94 293 94q121 0 229 -54t176 -154t68 -222q0 -123 -68 -223.5t-176.5 -154.5t-230.5 -54 q-121 0 -229 54t-176 154.5t-68 223.5zM233 432q0 -132 106.5 -218.5t242.5 -86.5q86 0 165 37t131 108.5t52 159.5q0 131 -105.5 218t-240.5 87q-87 0 -167 -37.5t-132 -109t-52 -158.5z" />
|
||||
<glyph unicode="7" horiz-adv-x="1165" d="M127 1333q0 27 17.5 45.5t43.5 18.5h787q25 0 44 -19t19 -45q0 -18 -18 -43q-235 -285 -352 -580t-117 -647q0 -27 -18.5 -45t-45.5 -18q-25 0 -43 18.5t-18 44.5q0 327 106.5 638t307.5 569h-652q-26 0 -43.5 19t-17.5 44z" />
|
||||
<glyph unicode="8" horiz-adv-x="1165" d="M127 385q0 114 72.5 206.5t185.5 145.5q-215 117 -215 312q0 101 63 182.5t156.5 123.5t192.5 42t192.5 -42t156 -123.5t62.5 -182.5q0 -193 -215 -312q113 -53 186.5 -145.5t73.5 -206.5q0 -113 -70 -203t-173.5 -136t-214.5 -46q-81 0 -161 27.5t-145.5 76t-106 122.5 t-40.5 159zM252 385q0 -78 53 -139.5t127 -91t148 -29.5q75 0 149.5 29.5t128 91t53.5 139.5q0 87 -65 152q-46 46 -126.5 89.5t-137.5 43.5t-138 -43.5t-127 -89.5q-65 -65 -65 -152zM297 1049q0 -66 47.5 -122.5t110.5 -87.5t127 -42q64 11 126.5 42t110 87.5t47.5 122.5 q0 97 -91 159t-193 62q-64 0 -128 -25.5t-110.5 -77.5t-46.5 -118z" />
|
||||
<glyph unicode="9" horiz-adv-x="1165" d="M109 965q0 123 68.5 223.5t177 154.5t229.5 54t229 -54t176 -154.5t68 -223.5q0 -135 -33 -271.5t-100.5 -261t-160 -221t-220.5 -154t-273 -57.5q-25 0 -44 18.5t-19 44.5q0 25 19 44.5t44 19.5q107 0 205.5 41t174 111.5t133 159.5t91.5 190q-129 -94 -292 -94 q-121 0 -229 54t-176 154t-68 222zM233 965q0 -131 107 -218.5t242 -87.5q86 0 165 37.5t131 109.5t52 159q0 88 -51 159.5t-129.5 108.5t-165.5 37q-136 0 -243.5 -86.5t-107.5 -218.5z" />
|
||||
<glyph unicode=":" horiz-adv-x="468" d="M125 63q0 25 18.5 44.5t42.5 19.5q26 0 45 -19.5t19 -44.5q0 -27 -18.5 -45t-45.5 -18q-25 0 -43 18t-18 45zM125 848q0 25 18 43t43 18q26 0 45 -18t19 -43q0 -26 -19 -45t-45 -19q-25 0 -43 19t-18 45z" />
|
||||
<glyph unicode=";" horiz-adv-x="575" d="M117 -121q0 12 29 56t65.5 95t44.5 64q20 33 55 33q25 0 44.5 -19.5t19.5 -44.5q0 -28 -55.5 -108t-90.5 -117q-19 -22 -49 -22q-25 0 -44 18.5t-19 44.5zM248 848q0 26 18.5 43.5t44.5 17.5q25 0 44.5 -17.5t19.5 -43.5t-19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44z " />
|
||||
<glyph unicode="<" horiz-adv-x="1155" d="M102 455q0 21 10.5 38t28.5 23q25 8 228 80.5t383.5 135.5t195.5 63q26 0 45 -17.5t19 -42.5q0 -21 -12 -38t-31 -23l-617 -219l617 -217q19 -8 31 -24t12 -36q0 -26 -19 -44.5t-45 -18.5q-21 0 -355.5 119t-451.5 163q-18 6 -28.5 22t-10.5 36z" />
|
||||
<glyph unicode="=" horiz-adv-x="833" d="M63 330q0 25 19 42t45 17h483q26 0 45 -17t19 -42q0 -27 -18.5 -45.5t-45.5 -18.5h-483q-27 0 -45.5 18.5t-18.5 45.5zM63 584q0 25 19 44t45 19h483q27 0 45.5 -19t18.5 -44q0 -27 -18.5 -45.5t-45.5 -18.5h-483q-26 0 -45 19t-19 45z" />
|
||||
<glyph unicode=">" horiz-adv-x="1116" d="M90 178q0 44 41 60l617 217l-617 219q-19 6 -30 22.5t-11 38.5q0 25 18 42.5t44 17.5q15 0 195 -63t383 -135.5t228 -80.5q18 -6 29.5 -23t11.5 -38q0 -19 -11.5 -35.5t-29.5 -22.5q-118 -45 -451.5 -163.5t-354.5 -118.5q-26 0 -44 18.5t-18 44.5z" />
|
||||
<glyph unicode="?" horiz-adv-x="1161" d="M70 1108q0 19 12 37q71 115 190 183.5t252 68.5q82 0 163 -28t146.5 -76.5t106.5 -122.5t41 -158q0 -113 -67 -201.5t-175 -120.5q-66 -20 -108.5 -76.5t-42.5 -126.5v-125q0 -25 -18.5 -44t-45.5 -19q-25 0 -40 13.5t-19.5 38.5t-5 46t1.5 51.5t2 38.5q0 112 67 201 t175 121q66 20 108.5 76.5t42.5 126.5q0 77 -53.5 138t-128.5 90.5t-150 29.5q-72 0 -132.5 -23.5t-97.5 -56.5t-66 -66t-52.5 -56.5t-42.5 -23.5q-26 0 -44.5 19.5t-18.5 44.5zM463 63q0 25 18.5 44.5t42.5 19.5q27 0 45.5 -19.5t18.5 -44.5q0 -27 -18 -45t-46 -18 q-25 0 -43 18.5t-18 44.5z" />
|
||||
<glyph unicode="@" horiz-adv-x="1458" d="M80 455q0 121 45.5 232.5t123.5 193t187.5 130t231.5 48.5t231.5 -48.5t187.5 -130t124 -193t46 -232.5q0 -54 -8 -102t-28 -97t-61 -77.5t-99 -28.5q-72 0 -134 40t-93 107q-112 -147 -279 -147q-103 0 -176.5 73t-73.5 174q0 150 106.5 256.5t256.5 106.5h209 q33 0 49 -27t17 -69.5t-3 -94.5t-4.5 -104t7.5 -94.5t37 -69.5t79 -27q71 0 71 181q0 128 -60.5 238.5t-167.5 176.5t-234 66q-128 0 -235.5 -66t-168.5 -176.5t-61 -238.5q0 -127 61 -237t168.5 -176.5t235.5 -66.5q51 0 124.5 22.5t84.5 22.5q25 0 43 -18.5t18 -44.5 q0 -30 -32 -53t-79 -34t-88 -16.5t-71 -5.5q-162 0 -298 83.5t-213 223t-77 300.5zM430 399q0 -56 38 -90.5t93 -34.5q63 0 113.5 36t79.5 91.5t44 116t15 117.5h-145q-97 0 -167.5 -69t-70.5 -167z" />
|
||||
<glyph unicode="A" horiz-adv-x="1452" d="M168 63q0 10 45.5 134t115 307t135.5 355t125 325.5t66 171.5q6 17 23.5 29t36.5 12q20 0 35.5 -11.5t21.5 -29.5q74 -185 282 -728t208 -565q0 -26 -18 -44.5t-44 -18.5q-20 0 -35.5 11.5t-21.5 29.5l-172 446h-510l-172 -446q-6 -18 -22.5 -29.5t-37.5 -11.5 q-25 0 -43 18.5t-18 44.5zM508 610h416l-209 547z" />
|
||||
<glyph unicode="B" horiz-adv-x="1257" d="M127 63v1270q0 26 17 45t42 19h451q150 0 256 -106.5t106 -256.5q0 -88 -40 -167t-111 -130q88 -54 138 -144.5t50 -193.5q0 -165 -117 -282t-282 -117h-451q-25 0 -42 18.5t-17 44.5zM250 127h387q114 0 193 79t79 193q0 111 -79.5 192t-192.5 81h-387v-545zM250 795 h387q98 0 167.5 70.5t69.5 168.5q0 99 -70 167.5t-169 68.5h-385v-475z" />
|
||||
<glyph unicode="C" horiz-adv-x="1296" d="M45 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41q138 0 261.5 -75t184.5 -198q8 -20 8 -26q0 -28 -18.5 -46t-44.5 -18q-35 0 -55 33q-63 100 -143.5 151.5t-192.5 51.5q-84 0 -158.5 -35t-128.5 -93t-93.5 -132t-59 -154.5t-19.5 -157.5q0 -97 32 -196.5 t88.5 -183t145.5 -136.5t193 -53q113 0 194 51.5t142 151.5q22 32 55 32q27 0 45 -18t18 -45q0 -7 -8 -27q-61 -123 -184.5 -197.5t-261.5 -74.5q-130 0 -242.5 63t-186 163.5t-115.5 223.5t-42 246z" />
|
||||
<glyph unicode="D" horiz-adv-x="1288" d="M113 63v1268q0 27 17.5 45.5t43.5 18.5h315q105 0 199 -41t163.5 -111t120.5 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5h-318q-26 0 -43.5 17.5t-17.5 45.5zM238 125h254q83 0 157 35t127.5 93t93 132t59 154 t19.5 157t-19.5 157.5t-59 154.5t-93.5 132t-128.5 93t-158.5 35h-251v-1143z" />
|
||||
<glyph unicode="E" horiz-adv-x="1169" d="M117 63v1270q0 26 19 45t44 19h787q26 0 43.5 -18.5t17.5 -45.5q0 -25 -17.5 -44t-43.5 -19h-723v-475h536q26 0 45 -17.5t19 -42.5q0 -27 -18.5 -45t-45.5 -18h-536v-545h723q26 0 43.5 -19.5t17.5 -44.5q0 -26 -17.5 -44.5t-43.5 -18.5h-787q-25 0 -44 18.5t-19 44.5z " />
|
||||
<glyph unicode="F" horiz-adv-x="1095" d="M80 63v1270q0 26 18 45t43 19h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-609q0 -26 -19 -44.5t-45 -18.5q-25 0 -43 18.5t-18 44.5z" />
|
||||
<glyph unicode="G" horiz-adv-x="1368" d="M84 698q0 124 42 247.5t115.5 224.5t186 164t242.5 63q138 0 261.5 -75t184.5 -198q8 -20 8 -28q0 -26 -18.5 -45t-44.5 -19q-35 0 -55 33q-63 101 -143.5 153t-192.5 52q-84 0 -158.5 -35t-129 -93.5t-94 -132.5t-59.5 -154t-20 -157t20 -157.5t59.5 -154.5t94 -132 t129 -92.5t158.5 -34.5q157 0 268 110t111 267v168h-287q-26 0 -45 18.5t-19 44.5q0 25 19 43.5t45 18.5h348q26 0 45 -18.5t19 -43.5v-231q0 -137 -68 -253t-184 -183.5t-252 -67.5q-130 0 -242.5 63t-186 164t-115.5 224.5t-42 246.5z" />
|
||||
<glyph unicode="H" horiz-adv-x="1280" d="M133 63v1270q0 26 19 45t45 19q25 0 44 -19t19 -45v-538h658v538q0 26 18.5 45t44.5 19q25 0 43 -19t18 -45v-1270q0 -26 -18 -44.5t-43 -18.5q-26 0 -44.5 18.5t-18.5 44.5v609h-658v-609q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="I" d="M133 63v1270q0 26 18 45t44 19t43.5 -18.5t17.5 -45.5v-1270q0 -26 -17.5 -44.5t-43.5 -18.5t-44 18.5t-18 44.5z" />
|
||||
<glyph unicode="J" horiz-adv-x="1177" d="M39 166q0 26 18.5 44.5t44.5 18.5q10 0 38.5 -16t62.5 -35t88.5 -35t109.5 -16q173 0 297.5 123.5t124.5 296.5v786q0 26 18.5 45t43.5 19q26 0 44.5 -19t18.5 -45v-786q0 -148 -73.5 -274t-199.5 -199.5t-274 -73.5q-34 0 -92.5 12t-119.5 32.5t-105.5 53t-44.5 68.5z " />
|
||||
<glyph unicode="K" horiz-adv-x="1120" d="M96 63v1270q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-633l678 676q18 21 43 21q27 0 45.5 -18.5t18.5 -45.5q0 -22 -19 -45l-450 -450l458 -742q11 -14 11 -33q0 -27 -18 -45t-46 -18q-30 0 -51 31l-444 717l-226 -226v-459q0 -26 -18.5 -44.5t-44.5 -18.5 q-25 0 -44.5 18.5t-19.5 44.5z" />
|
||||
<glyph unicode="L" horiz-adv-x="1124" d="M80 63v1270q0 26 18 45t43 19q26 0 45 -19t19 -45v-1206h721q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-25 0 -43 18.5t-18 44.5z" />
|
||||
<glyph unicode="M" horiz-adv-x="1605" d="M133 63v1270q0 26 19 45t45 19q27 0 51 -27l502 -713l505 713q20 27 52 27q26 0 44.5 -19t18.5 -45v-1270q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5v1072l-440 -623q-19 -25 -53 -25q-31 0 -50 25l-440 623v-1072q0 -26 -19 -44.5t-44 -18.5 q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="N" horiz-adv-x="1394" d="M133 63v1270q0 27 18.5 45.5t45.5 18.5q29 0 49 -27l786 -1108v1071q0 26 19 45t45 19q25 0 43 -19t18 -45v-1270q0 -26 -18 -44.5t-43 -18.5q-34 0 -54 27l-786 1108v-1072q0 -26 -17 -44.5t-42 -18.5q-27 0 -45.5 18t-18.5 45z" />
|
||||
<glyph unicode="O" horiz-adv-x="1464" d="M84 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q105 0 199 -41t163 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t93.5 -132t128.5 -92.5t157.5 -34.5t157.5 34.5t128 92.5t93.5 132t59.5 153.5t19.5 156.5t-19.5 157.5t-59.5 154.5t-93.5 132t-128 93t-157.5 35t-157.5 -35t-128.5 -93t-93.5 -132t-59.5 -154.5t-20 -157.5z" />
|
||||
<glyph unicode="P" horiz-adv-x="1271" d="M172 63v1270q0 26 17 45t42 19h451q164 0 281.5 -118t117.5 -282q0 -78 -30.5 -151.5t-85.5 -128.5q-56 -56 -130 -86.5t-153 -30.5h-387v-537q0 -27 -18.5 -45t-45.5 -18q-25 0 -42 18.5t-17 44.5zM295 725h387q114 0 193 79.5t79 192.5q0 114 -79 193.5t-193 79.5h-387 v-545z" />
|
||||
<glyph unicode="Q" horiz-adv-x="1472" d="M86 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -137 -47.5 -267t-136.5 -234q2 -3 54 -51.5t83 -86t31 -59.5q0 -26 -18.5 -45t-44.5 -19q-13 0 -34 13.5t-46 37.5t-44 43.5t-42.5 46 t-28.5 31.5q-133 -106 -309 -106q-130 0 -242.5 62.5t-186 162.5t-115.5 223.5t-42 247.5zM211 696q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q125 0 219 70q-1 1 -20 17.5t-29.5 26t-30 28.5t-32 32.5t-26 30t-20 30t-6.5 23.5q0 26 19 45t45 19 q16 0 45.5 -22t53 -46.5t54.5 -58t37 -39.5q147 179 147 413q0 77 -19.5 157.5t-59 154.5t-93 132t-127.5 93t-157 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5z" />
|
||||
<glyph unicode="R" horiz-adv-x="1263" d="M135 63v1270q0 27 18.5 45.5t45.5 18.5h448q165 0 281 -117.5t116 -282.5q0 -135 -83 -243t-213 -142q6 -10 43.5 -76t76.5 -136t81 -145.5t68.5 -128.5t26.5 -63q0 -26 -18 -44.5t-43 -18.5q-34 0 -55 35l-318 565h-348v-537q0 -26 -19 -44.5t-44 -18.5q-27 0 -45.5 18 t-18.5 45zM262 725h385q113 0 193 80t80 192q0 114 -80 193.5t-193 79.5h-385v-545z" />
|
||||
<glyph unicode="S" horiz-adv-x="1245" d="M109 289q0 25 17.5 43t43.5 18q17 0 37 -16.5t39.5 -41.5t50 -54.5t64.5 -54.5t87 -41.5t115 -16.5q55 0 112.5 18t106.5 50t80 82.5t31 109.5q0 58 -32.5 110.5t-83.5 87.5t-108 58t-112 31q-93 12 -174 55q-231 126 -231 322q0 101 62.5 182.5t156 123.5t192.5 42 q129 0 242.5 -69.5t165.5 -184.5q8 -20 8 -31q0 -25 -18.5 -43t-45.5 -18q-36 0 -57 34q-108 185 -295 185q-102 0 -193 -62t-91 -159q0 -67 49 -124.5t114 -88.5t131 -41q80 -12 157.5 -45.5t143 -84t106 -124t40.5 -156.5q0 -113 -69.5 -203t-173 -136t-214.5 -46 q-101 0 -195.5 39t-162.5 111q-1 2 -11.5 12.5t-15 16t-15 17.5t-16.5 19.5t-14.5 19t-12.5 20t-7.5 18t-3.5 16.5z" />
|
||||
<glyph unicode="T" horiz-adv-x="1411" d="M125 1333q0 26 19 45t44 19h969q26 0 45 -19t19 -45q0 -25 -19 -44t-45 -19h-420v-1207q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5v1207h-422q-25 0 -44 19t-19 44z" />
|
||||
<glyph unicode="U" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 26 17 45t42 19q27 0 45 -18.5t18 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253z" />
|
||||
<glyph unicode="V" horiz-adv-x="1390" d="M172 1333q0 26 19 45t45 19q20 0 35.5 -12t21.5 -31l393 -1102l389 1102q6 18 23.5 30.5t36.5 12.5q25 0 43 -19t18 -45q0 -21 -178 -522t-275 -768q-6 -19 -22 -31t-35 -12q-20 0 -37.5 12t-23.5 31q-9 25 -128.5 359t-222 625t-102.5 306z" />
|
||||
<glyph unicode="W" horiz-adv-x="1722" d="M190 1333q0 26 18 45t44 19q22 0 39.5 -13.5t21.5 -35.5l240 -1012l238 1012q6 22 22.5 35.5t38.5 13.5q20 0 37.5 -13.5t23.5 -35.5l238 -1012l240 1012q5 22 21.5 35.5t39.5 13.5q25 0 43 -19t18 -45q0 -20 -68 -309t-147 -616.5t-86 -358.5q-4 -22 -21.5 -35.5 t-39.5 -13.5t-38 13.5t-21 35.5l-240 1010l-240 -1010q-4 -21 -21 -35t-38 -14q-23 0 -40.5 13.5t-20.5 35.5q-3 14 -41.5 172t-78.5 323.5t-83.5 348t-71 305t-27.5 135.5z" />
|
||||
<glyph unicode="X" horiz-adv-x="1300" d="M186 63q0 18 9 33l372 602l-372 602q-9 15 -9 33q0 26 19 45t45 19q30 0 51 -31l340 -549l338 549q21 31 55 31q25 0 43.5 -19t18.5 -45q0 -11 -9 -33l-372 -602l372 -602q9 -22 9 -33q0 -26 -18.5 -44.5t-43.5 -18.5q-34 0 -55 31l-338 549l-340 -549q-21 -31 -51 -31 q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="Y" horiz-adv-x="1273" d="M178 1333q0 26 17.5 45t42.5 19q41 0 57 -37l338 -670l336 670q16 37 55 37q26 0 44.5 -19t18.5 -45q0 -12 -36 -89.5t-91 -187t-108 -214t-101.5 -197.5t-56.5 -110v-472q0 -26 -18 -44.5t-43 -18.5q-27 0 -45.5 18t-18.5 45v472q-8 15 -56.5 109.5t-101 198t-107.5 214 t-90.5 187.5t-35.5 89z" />
|
||||
<glyph unicode="Z" horiz-adv-x="1116" d="M29 63q0 21 10 33l725 1174h-672q-25 0 -44 19t-19 44q0 26 19 45t44 19h785q25 0 44 -19t19 -45q0 -21 -10 -33l-725 -1173h672q25 0 44 -19.5t19 -44.5q0 -26 -19 -44.5t-44 -18.5h-785q-25 0 -44 18.5t-19 44.5z" />
|
||||
<glyph unicode="[" horiz-adv-x="757" d="M272 -121v1639q0 26 19 44.5t45 18.5h147q27 0 45.5 -18.5t18.5 -44.5q0 -23 -9.5 -37t-30 -19.5t-33.5 -7t-42 0t-33 1.5v-1515q4 0 33 1.5t42 0t33.5 -7t30 -19.5t9.5 -37q0 -27 -18.5 -45t-45.5 -18h-147q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="\" horiz-adv-x="968" d="M168 1333q0 26 18.5 45t44.5 19q19 0 35.5 -12t22.5 -29q7 -19 138.5 -357.5t241 -628.5t109.5 -307q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -35.5 12t-24.5 29q-6 16 -137.5 357t-240.5 630t-109 305z" />
|
||||
<glyph unicode="]" horiz-adv-x="757" d="M225 -121q0 17 5.5 29t16 18.5t22 10.5t27.5 5t27.5 1t28 -1t23.5 -1v1515q-7 0 -23.5 -1t-28 -1t-27.5 1t-27.5 5t-22 10.5t-16 18.5t-5.5 29q0 26 18.5 44.5t43.5 18.5h151q26 0 45 -18.5t19 -44.5v-1639q0 -26 -19 -44.5t-45 -18.5h-151q-25 0 -43.5 18.5t-18.5 44.5z " />
|
||||
<glyph unicode="^" horiz-adv-x="788" d="M72 1034q0 17 16 41q101 130 176 277q17 39 55 39q40 0 60 -39q72 -147 176 -277q14 -21 14 -41q0 -26 -18 -44.5t-43 -18.5q-12 0 -27 9t-31 26t-30 34.5t-31 42.5t-26.5 40t-23.5 38t-17 27l-3 2v-2q-128 -217 -184 -217q-25 0 -44 18.5t-19 44.5z" />
|
||||
<glyph unicode="_" horiz-adv-x="999" d="M156 63q0 25 17.5 44.5t43.5 19.5h488q24 0 41.5 -19.5t17.5 -44.5q0 -26 -17 -44.5t-42 -18.5h-488q-26 0 -43.5 18.5t-17.5 44.5z" />
|
||||
<glyph unicode="`" horiz-adv-x="559" d="M131 1239q0 27 18.5 45.5t45.5 18.5q33 0 53 -33q6 -10 44.5 -63.5t66.5 -96.5t28 -55q0 -26 -18.5 -45t-44.5 -19q-25 0 -48 23q-42 50 -93.5 123.5t-51.5 101.5z" />
|
||||
<glyph unicode="a" horiz-adv-x="929" d="M94 248q0 150 106.5 256t254.5 106h147v52q0 51 -36.5 87.5t-86.5 36.5q-53 0 -102.5 -18t-82.5 -36.5t-44 -18.5q-27 0 -45.5 17.5t-18.5 43.5q0 32 35 59t84.5 42.5t96 24.5t75.5 9q103 0 175.5 -71.5t72.5 -175.5v-599q0 -26 -17.5 -44.5t-43.5 -18.5q-15 0 -26 3.5 t-17.5 12.5t-11 15.5t-6 22t-2 21.5t0 24.5t0.5 21.5q-111 -121 -260 -121q-102 0 -175 73t-73 175zM219 250q0 -55 37.5 -89t95.5 -34q67 0 126 49t91.5 118.5t32.5 135.5v57h-147q-96 0 -166 -69.5t-70 -167.5z" />
|
||||
<glyph unicode="b" horiz-adv-x="983" d="M174 63v1270q0 26 19 44t45 18q25 0 43 -18t18 -44v-475q77 51 178 51q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -109 -45.5 -211.5t-135.5 -172t-204 -69.5q-95 0 -180 51q-3 -23 -20 -37t-39 -14q-27 0 -45.5 17.5t-18.5 43.5zM299 252q0 -52 61.5 -88.5t116.5 -36.5 q78 0 139.5 53t91 126.5t29.5 148.5q0 44 -11 90t-33 89t-52.5 77t-73 54.5t-90.5 20.5q-56 0 -117 -37t-61 -90v-407z" />
|
||||
<glyph unicode="c" horiz-adv-x="999" d="M117 455q0 110 46.5 213t136.5 172t202 69q94 0 177 -49t124 -131q6 -12 6 -29q0 -25 -19 -44t-45 -19q-21 0 -43.5 23.5t-42.5 51t-61.5 51t-95.5 23.5q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5q0 -74 29.5 -148t90.5 -127t138 -53q44 0 79 15t56.5 37t38.5 43.5 t34 36.5t35 15q26 0 45 -18.5t19 -44.5q0 -9 -8 -29q-39 -82 -122 -131t-177 -49q-111 0 -201.5 69.5t-137 172t-46.5 211.5z" />
|
||||
<glyph unicode="d" horiz-adv-x="999" d="M74 455q0 111 46 213.5t136 171.5t203 69q101 0 178 -51v475q0 26 18.5 44t44.5 18q25 0 44.5 -18t19.5 -44v-1270q0 -26 -19.5 -43.5t-44.5 -17.5q-22 0 -40.5 14t-22.5 37q-79 -51 -178 -51q-85 0 -159 40.5t-122.5 106t-76 145.5t-27.5 161zM201 455q0 -55 17.5 -112 t49.5 -105.5t82 -79.5t109 -31q55 0 116.5 36.5t61.5 88.5v407q0 53 -61 90t-117 37q-59 0 -109 -31t-82 -80t-49.5 -106.5t-17.5 -113.5z" />
|
||||
<glyph unicode="e" horiz-adv-x="1015" d="M80 455q0 111 46 213.5t136.5 171.5t204.5 69q109 0 196.5 -64t133 -162t45.5 -206q0 -25 -19 -44t-45 -19h-571q8 -69 40 -132.5t90.5 -109t129.5 -45.5q51 0 91.5 21.5t61.5 47t44 47t43 21.5q27 0 45 -19t18 -44q0 -17 -10 -37q-48 -74 -127 -119t-166 -45 q-114 0 -204.5 69.5t-136.5 172.5t-46 213zM215 541h494q-16 97 -82.5 170t-159.5 73t-160.5 -72.5t-91.5 -170.5z" />
|
||||
<glyph unicode="f" horiz-adv-x="677" d="M61 848q0 15 3 25.5t12 17t14.5 11t21 6t20.5 2t23.5 0t20.5 -0.5v238q0 104 72 176t176 72q32 0 71 -10t73 -35t34 -58q0 -25 -18.5 -43t-44.5 -18q-18 0 -50 19.5t-65 19.5q-53 0 -87 -36.5t-34 -88.5v-236q8 0 37 2.5t50 2t45.5 -5t38 -20t13.5 -40.5t-13.5 -40 t-38.5 -20t-45 -5.5t-50 1.5t-37 2v-723q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5t-18.5 43.5v723h-14.5h-16t-15 0.5t-15.5 1.5t-13.5 3.5t-13.5 5.5t-10.5 7.5t-9.5 10.5t-5 14.5t-2 18.5z" />
|
||||
<glyph unicode="g" horiz-adv-x="1013" d="M98 -262q0 26 19 44.5t45 18.5q18 0 36 -16.5t37 -39.5t42.5 -46.5t62.5 -40t88 -16.5q96 0 166 68.5t70 164.5v178q-80 -53 -181 -53q-111 0 -201.5 70t-137 173t-46.5 212q0 110 46.5 213t136.5 172t202 69q106 0 183 -51q3 21 21 36t40 15q25 0 44.5 -17.5t19.5 -43.5 v-969q0 -151 -106 -257.5t-257 -106.5q-99 0 -189 53t-135 141q-6 12 -6 29zM225 455q0 -74 29.5 -148t90.5 -127t138 -53q69 0 125 39t56 104v369q0 67 -56 107t-125 40q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5z" />
|
||||
<glyph unicode="h" horiz-adv-x="1001" d="M158 63v1270q0 26 18.5 45t44.5 19q25 0 44.5 -19t19.5 -45v-504q112 80 258 80q102 0 175 -72t73 -175v-599q0 -26 -19 -44.5t-45 -18.5q-25 0 -43 18.5t-18 44.5v599q0 51 -36 87.5t-87 36.5q-74 0 -143.5 -33.5t-114.5 -93.5v-596q0 -26 -19.5 -44.5t-44.5 -18.5 q-26 0 -44.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="i" horiz-adv-x="536" d="M174 1333q0 29 21 49.5t49 20.5q30 0 51.5 -20.5t21.5 -49.5q0 -30 -21.5 -50.5t-51.5 -20.5q-28 0 -49 20.5t-21 50.5zM182 63v785q0 26 18.5 43.5t43.5 17.5q26 0 44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -43.5t-44.5 -17.5q-25 0 -43.5 17.5t-18.5 43.5z" />
|
||||
<glyph unicode="j" horiz-adv-x="673" d="M-223 -358q0 26 17.5 44.5t43.5 18.5q14 0 40 -15.5t65 -31.5t82 -16q97 0 166 69.5t69 167.5v971q0 25 18 42t46 17q25 0 44 -17.5t19 -41.5v-971q0 -150 -107 -257t-255 -107q-38 0 -93.5 13.5t-105 44t-49.5 69.5zM252 1333q0 29 20.5 49.5t49.5 20.5t50 -20.5 t21 -49.5q0 -30 -20.5 -50.5t-50.5 -20.5t-50 20t-20 51z" />
|
||||
<glyph unicode="k" horiz-adv-x="940" d="M123 63v1270q0 26 17 45t42 19q27 0 45.5 -18.5t18.5 -45.5v-819l379 379q19 16 45 16t44.5 -17.5t18.5 -43.5q0 -29 -20 -43l-264 -266q8 -13 44 -68t73.5 -114t77 -123t64.5 -111t25 -60q0 -26 -18.5 -44.5t-44.5 -18.5q-33 0 -54 31l-258 418l-112 -111v-275 q0 -27 -18 -45t-46 -18q-25 0 -42 18.5t-17 44.5z" />
|
||||
<glyph unicode="l" horiz-adv-x="681" d="M188 250v1083q0 26 19 44t45 18q25 0 43 -18t18 -44v-1081q0 -47 19.5 -73.5t46.5 -35.5t54.5 -15t47 -21t19.5 -44q0 -26 -18.5 -43.5t-45.5 -17.5q-102 0 -175 73t-73 175z" />
|
||||
<glyph unicode="m" horiz-adv-x="1243" d="M168 63v785q0 26 17.5 43.5t43.5 17.5q23 0 41 -14.5t21 -36.5q69 51 158 51h10q103 0 166 -82q39 39 93 61q52 21 104 21h5q87 -2 146 -58.5t59 -143.5v-644q0 -26 -18.5 -43.5t-44.5 -17.5q-25 0 -44.5 17.5t-19.5 43.5v644q0 32 -23 55.5t-55 23.5q-67 0 -115 -48.5 t-48 -116.5v-558q0 -26 -19.5 -43.5t-44.5 -17.5q-26 0 -44.5 17.5t-18.5 43.5v644q0 32 -23.5 55.5t-54.5 23.5q-70 0 -119 -49.5t-49 -120.5v-553q0 -26 -18 -43.5t-44 -17.5t-43.5 17.5t-17.5 43.5z" />
|
||||
<glyph unicode="n" horiz-adv-x="1015" d="M170 63v785q0 26 18.5 43.5t44.5 17.5q62 0 62 -80q118 80 260 80q102 0 175 -72t73 -175v-599q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5v599q0 51 -35 87.5t-84 36.5q-77 0 -146 -33.5t-116 -93.5v-596q0 -26 -18.5 -44.5t-43.5 -18.5q-26 0 -44.5 18.5 t-18.5 44.5z" />
|
||||
<glyph unicode="o" horiz-adv-x="978" d="M82 455q0 111 45.5 213.5t135.5 171.5t204 69q112 0 202 -69t136.5 -172t46.5 -213t-46.5 -213t-137 -172.5t-201.5 -69.5q-113 0 -203.5 70t-136 173t-45.5 212zM207 455q0 -74 30 -148t91.5 -127t138.5 -53q59 0 109 31t81 79.5t48.5 105.5t17.5 112q0 56 -17.5 113 t-48.5 105.5t-81 79.5t-109 31q-79 0 -140 -53t-90.5 -126.5t-29.5 -149.5z" />
|
||||
<glyph unicode="p" horiz-adv-x="1050" d="M176 -422v1270q0 26 18.5 43.5t45.5 17.5q22 0 39 -14.5t20 -36.5q80 51 180 51q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -109 -45.5 -211.5t-135.5 -172t-204 -69.5q-94 0 -178 49v-473q0 -25 -18 -44t-43 -19q-26 0 -45 19t-19 44zM301 252q0 -52 62 -88.5 t116 -36.5q78 0 139.5 53t91 127t29.5 148q0 75 -29.5 149.5t-91 128t-139.5 53.5q-54 0 -116 -37t-62 -90v-407z" />
|
||||
<glyph unicode="q" horiz-adv-x="1011" d="M94 455q0 111 46 213.5t136 171.5t201 69q103 0 180 -51q3 22 22 36.5t42 14.5q25 0 40.5 -14.5t20 -42.5t5.5 -50v-15q0 -18 -1 -41q-2 -35 -2 -44v-1124q0 -25 -18.5 -44t-44.5 -19q-25 0 -44.5 19t-19.5 44v473q-84 -49 -180 -49q-111 0 -201 69.5t-136 172t-46 211.5 zM219 455q0 -74 29.5 -148t90.5 -127t138 -53q57 0 118.5 36.5t61.5 88.5v407q0 36 -32 66.5t-72.5 45.5t-75.5 15q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5z" />
|
||||
<glyph unicode="r" horiz-adv-x="819" d="M160 63v785q0 26 18.5 43.5t44.5 17.5q62 0 62 -86q103 86 237 86q25 0 39.5 -0.5t44 -4t46.5 -11t31.5 -22.5t14.5 -37q0 -25 -19 -43.5t-44 -18.5q-18 0 -55.5 7t-57.5 7q-98 0 -170 -69q-67 -70 -67 -174v-480q0 -26 -18.5 -43.5t-43.5 -17.5q-26 0 -44.5 17.5 t-18.5 43.5z" />
|
||||
<glyph unicode="s" horiz-adv-x="917" d="M88 203q0 26 19.5 43.5t44.5 17.5q20 0 43.5 -21.5t44.5 -47t62 -47t93 -21.5q63 0 121.5 37.5t58.5 97.5q0 61 -61 102t-129 50q-105 17 -185.5 86.5t-80.5 171.5q0 103 84.5 170t191.5 67q87 0 164 -46t111 -124q6 -18 6 -26q0 -26 -18.5 -45t-43.5 -19q-18 0 -34.5 14 t-31.5 34.5t-33.5 40.5t-49 34t-70.5 14q-53 0 -103 -32t-50 -82t53 -87t108 -46q74 -12 139 -46t110.5 -95t45.5 -136q0 -114 -93.5 -188t-209.5 -74q-88 0 -166.5 45t-128.5 121q-12 20 -12 37z" />
|
||||
<glyph unicode="t" horiz-adv-x="745" d="M119 848q0 15 3 25.5t12 17t14.5 11t21.5 6t21 2t24 0.5t21 -1q0 9 -2.5 39t-2 51.5t5 46.5t20 38.5t40.5 13.5t40.5 -13.5t20 -39t5.5 -46t-1 -52t-2 -38.5q8 0 37 2.5t50 2t46 -5t38.5 -20t13.5 -40.5t-13.5 -40t-38.5 -20t-45.5 -5.5t-50.5 1.5t-37 2v-606 q0 -22 14.5 -37.5t37.5 -15.5q14 0 37 6t34 6q25 0 43.5 -18t18.5 -45t-24 -45.5t-52 -24.5t-57 -6q-74 2 -125 53.5t-51 124.5v608h-15h-16.5t-15 0.5t-16 1.5t-14 3.5t-13.5 5.5t-10.5 7.5t-9.5 10.5t-5 14.5t-2 18.5z" />
|
||||
<glyph unicode="u" horiz-adv-x="989" d="M129 248v602q0 25 17.5 44t41.5 19q27 0 45.5 -19t18.5 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 144 33t116 92v596q0 26 17.5 43.5t43.5 17.5q28 0 46 -17.5t18 -43.5v-785q0 -27 -18 -45t-46 -18q-61 0 -61 82q-118 -82 -258 -82q-102 0 -175 73t-73 175z" />
|
||||
<glyph unicode="v" horiz-adv-x="972" d="M125 848q0 26 19 43.5t44 17.5q44 0 60 -39l217 -618l219 618q6 18 22.5 28.5t36.5 10.5q25 0 43.5 -17.5t18.5 -43.5q0 -10 -25.5 -87t-65 -189t-77 -217t-72 -200.5t-39.5 -109.5q-6 -19 -23 -32t-38 -13q-20 0 -35.5 12t-21.5 31q-40 103 -161.5 442.5t-121.5 362.5z " />
|
||||
<glyph unicode="w" horiz-adv-x="1146" d="M113 850q0 24 19 41.5t44 17.5q23 0 40.5 -12.5t21.5 -34.5l122 -524l125 524q4 22 21.5 34.5t40.5 12.5q22 0 38.5 -12.5t20.5 -34.5l125 -524l123 524q4 21 21.5 34t39.5 13q26 0 45 -17t19 -42q0 -17 -42 -196.5t-90 -378t-54 -226.5q-6 -22 -23 -35.5t-39 -13.5 t-39.5 13.5t-21.5 35.5l-123 526l-125 -526q-5 -22 -22 -35.5t-40 -13.5q-22 0 -38 13.5t-21 35.5q-4 16 -27 110t-48.5 199t-52 215.5t-43.5 188t-17 88.5z" />
|
||||
<glyph unicode="x" horiz-adv-x="933" d="M137 63q0 13 8 33l224 359l-224 360q-8 20 -8 33q0 26 18.5 43.5t43.5 17.5q36 0 55 -28l188 -306l187 306q22 28 55 28q25 0 44.5 -17.5t19.5 -43.5q0 -19 -11 -33l-223 -360l223 -359q11 -14 11 -33q0 -26 -19 -44.5t-45 -18.5q-30 0 -51 31l-191 305l-188 -305 q-21 -31 -55 -31q-25 0 -43.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="y" horiz-adv-x="970" d="M37 -422q0 29 17.5 43t46 19.5t59 13.5t62 34t50.5 72q24 57 61.5 166t47.5 137q-275 754 -275 787q0 25 19 42t45 17q19 0 35 -10.5t22 -28.5l219 -618l220 618q6 18 22 28.5t35 10.5q27 0 45 -17t18 -42q0 -17 -2 -23l-393 -1103q-32 -93 -114 -151t-181 -58 q-24 0 -41.5 19t-17.5 44z" />
|
||||
<glyph unicode="z" horiz-adv-x="919" d="M133 63q0 20 8 33l426 690h-372q-26 0 -44 18t-18 44t18 43.5t44 17.5h485q26 0 43.5 -17.5t17.5 -43.5q0 -20 -8 -33l-426 -688h373q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-483q-27 0 -45.5 18t-18.5 45z" />
|
||||
<glyph unicode="{" horiz-adv-x="745" d="M178 698q0 28 19 42.5t46 21t54 15.5t46 35t19 71v450q0 102 73 175t175 73q25 0 44.5 -18.5t19.5 -44.5q0 -27 -19.5 -41.5t-47 -21t-54.5 -15.5t-46.5 -35.5t-19.5 -71.5v-450q0 -110 -81 -185q81 -75 81 -184v-451q0 -45 19.5 -71t46.5 -35.5t54.5 -15.5t47 -20.5 t19.5 -41.5q0 -26 -19.5 -44.5t-44.5 -18.5q-103 0 -175.5 72t-72.5 175v451q0 45 -19 71t-46 34.5t-54 15t-46 21t-19 42.5z" />
|
||||
<glyph unicode="|" horiz-adv-x="538" d="M158 -121v1639q0 27 18 45t45 18q25 0 43.5 -18.5t18.5 -44.5v-1639q0 -26 -18.5 -44.5t-43.5 -18.5q-27 0 -45 18t-18 45z" />
|
||||
<glyph unicode="}" horiz-adv-x="745" d="M86 -121q0 27 19 41.5t46 20.5t54 15.5t46 35.5t19 71v451q0 107 84 184q-84 77 -84 185v450q0 45 -19 71.5t-46 35.5t-54 15.5t-46 21t-19 41.5q0 26 19 44.5t45 18.5q102 0 174.5 -73t72.5 -175v-450q0 -45 19 -71t46.5 -35t54.5 -15.5t46 -21t19 -42.5t-19 -42.5 t-46 -21t-54.5 -15t-46.5 -34.5t-19 -71v-451q0 -103 -72 -175t-175 -72q-26 0 -45 18.5t-19 44.5z" />
|
||||
<glyph unicode="~" horiz-adv-x="831" d="M63 455q0 33 34 60.5t75.5 40.5t73.5 13q47 0 84.5 -15.5t57.5 -34.5t47 -34.5t54 -15.5q37 0 68.5 24.5t52.5 24.5q26 0 44 -18t18 -45q0 -47 -65 -80t-118 -33q-47 0 -84.5 16t-57.5 35t-47 35t-54 16q-37 0 -68.5 -24.5t-52.5 -24.5q-26 0 -44 17.5t-18 42.5z" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="¡" horiz-adv-x="481" d="M127 -422q0 145 3.5 305t10 361.5t9.5 304.5q2 16 12 27.5t26 11.5q15 0 27 -12t12 -27q2 -114 13.5 -450.5t11.5 -520.5q0 -25 -19 -44t-45 -19q-25 0 -43 19t-18 44zM127 850q0 25 18 44t43 19q26 0 45 -19t19 -44q0 -26 -19 -45t-45 -19q-25 0 -43 19t-18 45z" />
|
||||
<glyph unicode="¢" horiz-adv-x="968" d="M72 455q0 100 37.5 194.5t113 166t172.5 89.5q0 7 -2.5 37.5t-1.5 52.5t5.5 48t20 40.5t40.5 14.5t41 -14.5t20.5 -40.5t5 -47.5t-1.5 -52.5t-2 -38q43 -7 98.5 -37.5t99.5 -77.5t44 -90q0 -25 -18 -44t-44 -19q-17 0 -31.5 11t-28 28.5t-28.5 36t-39 35.5t-53 26v-639 q32 10 60.5 34t45 46t35.5 39.5t37 17.5q28 0 46 -17.5t18 -45.5q0 -63 -85.5 -126t-156.5 -77q0 -7 2 -38t1.5 -52t-5 -46.5t-20.5 -39.5t-41 -14t-40.5 14t-20 39.5t-5.5 46.5t1.5 51.5t2.5 38.5q-96 19 -171.5 91t-113.5 166.5t-38 191.5zM199 455q0 -63 22 -127.5 t68 -118.5t106 -74v639q-60 -18 -106 -71t-68 -118t-22 -130z" />
|
||||
<glyph unicode="£" horiz-adv-x="1089" d="M0 63q0 26 18.5 44t44.5 18q98 0 168 69.5t70 167.5v187v237h-123q-26 0 -44.5 19t-18.5 45t18.5 43.5t44.5 17.5h123v238q0 103 72.5 176.5t175.5 73.5h2q146 -3 264 -86q22 -15 25.5 -40.5t-11.5 -47.5t-40.5 -26t-47.5 11q-83 62 -192 62h-2q-50 0 -85.5 -36 t-35.5 -87v-238h123q26 0 44.5 -17.5t18.5 -43.5t-18.5 -45t-44.5 -19h-123v-237v-187q0 -131 -88 -237h512q26 0 43.5 -18t17.5 -44t-17.5 -44.5t-43.5 -18.5h-787q-26 0 -44.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="¤" horiz-adv-x="864" d="M74 455q0 10 2.5 19t9 17.5t11 13.5t14.5 14t14 13q-51 71 -51 166t51 166q-3 3 -13.5 13t-14.5 15t-11 13.5t-9.5 17.5t-2.5 19q0 25 18 43.5t43 18.5q13 0 25 -5.5t18 -11t17.5 -18.5t15.5 -17q76 52 168 52q93 0 166 -52q4 4 13.5 14t14.5 14.5t13.5 11t17.5 9.5t19 3 q25 0 43 -18.5t18 -43.5q0 -12 -5.5 -24t-11 -19t-17 -18.5t-15.5 -16.5q49 -73 49 -166t-49 -166q4 -5 15.5 -16.5t17 -18t11 -18.5t5.5 -24q0 -25 -18.5 -44.5t-42.5 -19.5q-16 0 -28 6.5t-30 24.5l-20 20q-76 -51 -166 -51q-89 0 -168 51q-4 -4 -19.5 -20.5t-27.5 -23.5 t-29 -7q-24 0 -42.5 19.5t-18.5 44.5zM199 698q0 -74 52.5 -127t127.5 -53q73 0 126.5 53t53.5 127t-53.5 127.5t-126.5 53.5q-75 0 -127.5 -53.5t-52.5 -127.5z" />
|
||||
<glyph unicode="¥" horiz-adv-x="1091" d="M-8 1333q0 26 18 45t43 19q39 0 56 -31l337 -580l338 580q17 31 54 31q26 0 44.5 -19t18.5 -45q0 -13 -30.5 -71.5t-80.5 -144t-93.5 -158t-90.5 -150.5t-51 -84q8 0 29.5 1t36 1.5t34.5 -2.5t32 -9.5t21 -20t9 -33.5q0 -25 -19 -43.5t-45 -18.5h-143v-174h143 q26 0 45 -19t19 -45q0 -25 -19 -44t-45 -19h-143v-236q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5v236h-143q-26 0 -45 19t-19 44q0 26 19 45t45 19h143v174h-143q-26 0 -45 18.5t-19 43.5q0 20 9 33.5t21 20t32 9.5t34.5 2.5t35.5 -1.5t28 -1l-50 83 q-51 83 -91.5 152t-91.5 157t-81 145.5t-30 70.5z" />
|
||||
<glyph unicode="¦" />
|
||||
<glyph unicode="§" horiz-adv-x="1083" d="M96 823q0 71 28 136t79 112q-49 76 -49 174q0 139 98.5 237.5t236.5 98.5q92 0 174 -49.5t123 -132.5q7 -14 7 -27q0 -27 -17.5 -45t-42.5 -18q-18 0 -35.5 15t-34.5 36.5t-38 43.5t-56.5 37t-79.5 15q-86 0 -148 -62.5t-62 -148.5q0 -54 26 -99t68 -76t96.5 -63 t110.5 -58.5t110.5 -63.5t96.5 -77.5t68 -101.5t26 -135q0 -69 -28 -133t-79 -110q51 -77 51 -176q0 -139 -99 -237.5t-237 -98.5q-93 0 -175 49t-121 131q-9 12 -9 29q0 26 19.5 44.5t44.5 18.5q18 0 35 -15t33.5 -37t37.5 -43.5t56 -36.5t79 -15q86 0 147.5 62.5 t61.5 148.5q0 61 -33 110.5t-86.5 84t-117.5 67t-128 69t-117.5 80.5t-86.5 110.5t-33 149.5zM221 823q0 -57 29.5 -107t79.5 -79l327 -195q6 -4 17.5 -11t17.5 -11q64 61 64 155q0 56 -29 106t-78 79l-330 194q-5 4 -16 11.5t-16 11.5q-66 -63 -66 -154z" />
|
||||
<glyph unicode="¨" horiz-adv-x="675" d="M111 1147q0 27 18 45t45 18q26 0 45 -18t19 -45q0 -26 -19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44zM369 1147q0 27 19 45t44 18q27 0 45.5 -18t18.5 -45q0 -26 -19 -44t-45 -18q-25 0 -44 18t-19 44z" />
|
||||
<glyph unicode="©" horiz-adv-x="1097" d="M86 698q0 175 124.5 299.5t299.5 124.5t298.5 -124.5t123.5 -299.5t-123.5 -299.5t-298.5 -124.5q-176 0 -300 124.5t-124 299.5zM150 698q0 -149 105.5 -254.5t254.5 -105.5q148 0 254 105.5t106 254.5t-106 255t-254 106q-149 0 -254.5 -106t-105.5 -255zM301 698 q0 94 59 170t150 76q46 0 105 -34t59 -76q0 -13 -9.5 -22t-21.5 -9q-10 0 -23 12.5t-24.5 27.5t-34 27.5t-51.5 12.5q-63 0 -104 -59t-41 -126t41 -125.5t104 -58.5q29 0 51.5 12.5t34 27.5t24.5 27.5t23 12.5q12 0 21.5 -9t9.5 -22q0 -42 -59.5 -76t-104.5 -34 q-91 0 -150 76t-59 169z" />
|
||||
<glyph unicode="ª" />
|
||||
<glyph unicode="«" />
|
||||
<glyph unicode="¬" />
|
||||
<glyph unicode="­" />
|
||||
<glyph unicode="®" horiz-adv-x="1099" d="M86 698q0 175 124.5 299.5t301.5 124.5q174 0 299 -125t125 -299t-125 -299t-299 -125q-177 0 -301.5 124.5t-124.5 299.5zM150 698q0 -149 105.5 -254.5t256.5 -105.5q149 0 254.5 105.5t105.5 254.5t-105.5 255t-254.5 106q-150 0 -256 -105.5t-106 -255.5zM336 444 v508q0 13 9.5 23t21.5 10h180q69 0 118.5 -49.5t49.5 -118.5q0 -52 -33 -96.5t-84 -61.5q4 -7 35 -60.5t56.5 -100t25.5 -54.5q0 -13 -9.5 -22.5t-23.5 -9.5q-15 0 -27 16l-125 225h-131v-209q0 -13 -10 -22.5t-22 -9.5t-21.5 9.5t-9.5 22.5zM399 717h148q43 0 73.5 29.5 t30.5 70.5q0 44 -30.5 74.5t-73.5 30.5h-148v-205z" />
|
||||
<glyph unicode="¯" />
|
||||
<glyph unicode="°" horiz-adv-x="565" d="M66 1147q0 67 47.5 114.5t113.5 47.5q67 0 114.5 -47.5t47.5 -114.5q0 -66 -47.5 -113t-114.5 -47q-66 0 -113.5 47t-47.5 113zM164 1147q0 -26 19 -44t44 -18q26 0 45 18t19 44q0 27 -18.5 45t-45.5 18q-25 0 -44 -18t-19 -45z" />
|
||||
<glyph unicode="±" />
|
||||
<glyph unicode="²" />
|
||||
<glyph unicode="³" />
|
||||
<glyph unicode="´" horiz-adv-x="663" d="M233 1055q0 12 29 55.5t67.5 96t45.5 63.5q20 33 53 33q27 0 45.5 -18.5t18.5 -45.5q0 -28 -51.5 -101t-94.5 -124q-20 -23 -49 -23q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode="µ" horiz-adv-x="974" d="M106 -129v979q0 25 19 44t45 19t43.5 -19t17.5 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 144.5 33.5t113.5 91.5v596q0 26 19.5 43.5t44.5 17.5q26 0 44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -44.5t-44.5 -18.5q-64 0 -64 82q-114 -82 -256 -82q-66 0 -125 35v-164 q0 -25 -17.5 -42t-43.5 -17t-45 17t-19 42z" />
|
||||
<glyph unicode="¶" horiz-adv-x="952" d="M63 1149q0 149 106 254.5t257 105.5h229q26 0 44 -17.5t18 -43.5v-1499q0 -26 -18 -45t-44 -19t-44.5 19t-18.5 45v1437h-103v-1437q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45v842q-130 22 -214.5 123.5t-84.5 234.5z" />
|
||||
<glyph unicode="·" />
|
||||
<glyph unicode="¸" />
|
||||
<glyph unicode="¹" />
|
||||
<glyph unicode="º" />
|
||||
<glyph unicode="»" />
|
||||
<glyph unicode="¼" />
|
||||
<glyph unicode="½" />
|
||||
<glyph unicode="¾" />
|
||||
<glyph unicode="¿" horiz-adv-x="864" d="M16 -98q0 112 66.5 200.5t173.5 120.5q68 20 111.5 76.5t42.5 124.5l-2 123q0 27 18 45t45 18q21 0 35 -10.5t20.5 -25.5t9.5 -38t2.5 -40t-2 -40.5t-1.5 -31.5q0 -112 -66.5 -201t-175.5 -121q-68 -22 -110 -76t-42 -124q0 -78 53.5 -139.5t127.5 -91t149 -29.5 q74 0 134.5 23t98 56t66 66.5t52 56.5t42.5 23q26 0 44 -19t18 -45q0 -20 -11 -34q-73 -117 -191.5 -185.5t-252.5 -68.5q-110 0 -213 46.5t-172.5 137t-69.5 203.5zM408 850q0 25 18.5 44t44.5 19q25 0 44.5 -19t19.5 -44q0 -26 -19.5 -45t-44.5 -19q-26 0 -44.5 19 t-18.5 45z" />
|
||||
<glyph unicode="À" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-27 0 -45 18t-18 45zM338 610h418l-209 547zM420 1726q0 25 18 43.5t43 18.5q35 0 56 -31q7 -13 44 -64t66 -95.5t29 -57.5q0 -25 -19 -43t-45 -18q-30 0 -49 22q-34 36 -88.5 116t-54.5 109z" />
|
||||
<glyph unicode="Á" horiz-adv-x="1214" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-27 0 -45 18t-18 45zM338 610h418l-209 547zM420 1540q0 13 28 56.5t66.5 97.5t44.5 63q17 31 53 31q26 0 45 -18.5t19 -43.5q0 -28 -55.5 -108t-90.5 -117q-19 -22 -49 -22q-25 0 -43 18t-18 43z" />
|
||||
<glyph unicode="Â" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 17 22.5 29t35.5 12q21 0 37 -11.5t22 -29.5q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -18.5 -44.5t-43.5 -18.5q-40 0 -61 41l-168 446h-512l-172 -446q-6 -17 -22.5 -29 t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM356 1546q0 23 13 39q79 100 125 176q20 33 53 33q35 0 55 -33q53 -87 123 -176q16 -16 16 -39q0 -26 -18.5 -44.5t-44.5 -18.5q-13 0 -28 9t-30.5 26.5t-26.5 31.5t-26.5 36t-19.5 28q-56 -87 -87 -112 q-23 -19 -42 -19q-26 0 -44 18.5t-18 44.5z" />
|
||||
<glyph unicode="Ã" horiz-adv-x="1286" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q8 18 24 29.5t34 11.5q43 0 61 -41q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-41 0 -59 41l-170 446h-512l-172 -446q-6 -18 -22 -29.5t-36 -11.5 q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM350 1634q0 38 42 62t85 24q34 0 61.5 -13t44.5 -26.5t25 -13.5t26.5 13.5t39.5 13.5q25 0 44 -18t19 -42q0 -40 -43.5 -65t-85.5 -25q-33 0 -60.5 13t-45 26.5t-25.5 13.5t-26 -13t-39 -13q-25 0 -43.5 18t-18.5 45z " />
|
||||
<glyph unicode="Ä" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 17 22.5 29t35.5 12q21 0 37 -11.5t22 -29.5q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM354 1634q0 25 19 43.5t45 18.5q25 0 43 -18.5t18 -43.5q0 -26 -18 -44.5t-43 -18.5q-26 0 -45 18.5t-19 44.5zM614 1634q0 25 19.5 43.5t44.5 18.5q26 0 44.5 -18.5t18.5 -43.5 q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5z" />
|
||||
<glyph unicode="Å" horiz-adv-x="1214" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-20 0 -36.5 11.5t-22.5 29.5l-170 446h-512l-172 -446 q-6 -18 -22 -29.5t-36 -11.5q-26 0 -43.5 18.5t-17.5 44.5zM338 610h418l-209 547zM385 1634q0 65 47.5 113.5t114.5 48.5q65 0 112.5 -48.5t47.5 -113.5q0 -68 -47 -116t-113 -48q-67 0 -114.5 48t-47.5 116zM485 1634q0 -26 18.5 -44.5t43.5 -18.5q26 0 44.5 18.5 t18.5 44.5q0 25 -18.5 43.5t-44.5 18.5q-25 0 -43.5 -18.5t-18.5 -43.5z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="1773" d="M129 63q0 19 58 129t135 247.5t81 144.5l424 780q22 33 58 33h690q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-627v-475h443q26 0 44.5 -17.5t18.5 -42.5q0 -27 -18 -45t-45 -18h-443v-545h627q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-690 q-26 0 -45 18.5t-19 44.5v424h-327l-248 -452q-18 -35 -53 -35q-27 0 -45.5 18t-18.5 45zM561 610h260v475z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="1232" d="M47 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q138 0 263.5 -75t184.5 -198q6 -15 6 -26q0 -28 -18.5 -46t-44.5 -18q-38 0 -55 33q-118 203 -336 203q-103 0 -191.5 -53t-145 -137t-88.5 -184t-32 -198q0 -97 32 -196.5t88.5 -183 t145 -136.5t191.5 -53q215 0 336 203q19 32 55 32q27 0 45 -18t18 -45q0 -12 -6 -27q-53 -113 -163.5 -185.5t-237.5 -84.5l-27 -82h31q77 0 132.5 -47.5t55.5 -122.5q0 -95 -80.5 -165t-177.5 -70q-51 0 -109.5 32t-58.5 80q0 26 17.5 45t42.5 19q26 0 50 -24.5t58 -24.5 q45 0 89 32.5t44 75.5q0 23 -18.5 35t-44.5 12q-36 0 -74.5 -24.5t-54.5 -24.5q-26 0 -45 18t-19 41q0 15 12 55.5t27.5 86.5t18.5 57q-113 19 -209.5 88.5t-158.5 166t-97 210t-35 225.5z" />
|
||||
<glyph unicode="È" horiz-adv-x="1058" d="M82 63v1270q0 27 17.5 45.5t43.5 18.5h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-723v-475h538q26 0 44 -17.5t18 -42.5q0 -27 -17.5 -45t-44.5 -18h-538v-545h723q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-26 0 -43.5 18.5 t-17.5 44.5zM408 1726q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q7 -12 44 -63.5t65.5 -96t28.5 -57.5q0 -25 -17.5 -43t-42.5 -18q-30 0 -49 22q-35 37 -90 117t-55 108z" />
|
||||
<glyph unicode="É" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h785q27 0 45 -18.5t18 -45.5q0 -25 -18 -44t-45 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h721q27 0 45 -19t18 -45q0 -27 -18 -45t-45 -18h-785q-25 0 -43 18.5t-18 44.5zM408 1540q0 13 28.5 57.5t65 96 t43.5 63.5q21 31 55 31q25 0 43.5 -18.5t18.5 -43.5q0 -29 -55 -109t-89 -116q-19 -22 -49 -22q-26 0 -43.5 18t-17.5 43z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h721q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-25 0 -43 18.5t-18 44.5zM340 1540 q0 25 16 41q77 97 123 176q21 31 56 31q36 0 53 -31q51 -82 125 -176q14 -17 14 -41q0 -25 -18 -43t-43 -18q-14 0 -29 9t-31 27t-26.5 30.5t-26 35.5t-18.5 27q-58 -85 -90 -111q-23 -18 -42 -18q-26 0 -44.5 18t-18.5 43z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h787q26 0 43.5 -18.5t17.5 -45.5q0 -25 -17.5 -44t-43.5 -19h-723v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h723q26 0 43.5 -19.5t17.5 -44.5q0 -26 -17.5 -44.5t-43.5 -18.5h-787q-25 0 -43 18.5t-18 44.5z M342 1626q0 28 18 46t46 18q26 0 43.5 -18t17.5 -46q0 -25 -17.5 -44t-43.5 -19q-27 0 -45.5 19t-18.5 44zM602 1626q0 27 18.5 45.5t45.5 18.5q25 0 43 -18.5t18 -45.5q0 -25 -18 -44t-43 -19q-26 0 -45 19t-19 44z" />
|
||||
<glyph unicode="Ì" horiz-adv-x="516" d="M68 1726q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q6 -10 45 -63.5t67 -97t28 -56.5q0 -25 -18.5 -43t-43.5 -18q-31 0 -47 22q-34 34 -90.5 115t-56.5 110zM133 63v1270q0 26 19 45t45 19q25 0 44 -19t19 -45v-1270q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z " />
|
||||
<glyph unicode="Í" horiz-adv-x="516" d="M68 1540q0 13 28.5 57.5t65 96t43.5 63.5q24 31 57 31q25 0 42.5 -18.5t17.5 -43.5q0 -28 -54 -106t-90 -119q-19 -22 -47 -22q-26 0 -44.5 18t-18.5 43zM133 63v1270q0 27 18.5 45.5t45.5 18.5q25 0 44 -19t19 -45v-1270q0 -26 -19 -44.5t-44 -18.5q-27 0 -45.5 18 t-18.5 45z" />
|
||||
<glyph unicode="Î" horiz-adv-x="526" d="M35 1540q0 24 14 41q74 94 125 176q17 31 53 31q35 0 56 -31q46 -79 123 -176q14 -17 14 -41q0 -25 -18.5 -43t-43.5 -18q-8 0 -16.5 3t-17 9.5t-16.5 12.5t-17 17t-15 18t-15 19.5t-13 18t-12 17.5t-9 14q-1 -1 -18.5 -26t-26.5 -36.5t-26 -30.5t-32 -27.5t-28 -8.5 q-25 0 -43 18t-18 43zM164 63v1270q0 26 19 45t44 19q26 0 45 -19t19 -45v-1270q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5z" />
|
||||
<glyph unicode="Ï" horiz-adv-x="544" d="M35 1634q0 25 17.5 43.5t41.5 18.5q27 0 45.5 -18.5t18.5 -43.5q0 -26 -18 -44.5t-46 -18.5q-25 0 -42 18.5t-17 44.5zM162 63v1270q0 26 19 45t44 19q26 0 45 -19t19 -45v-1270q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5zM293 1634q0 25 18.5 43.5t44.5 18.5 q25 0 44.5 -18.5t19.5 -43.5q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="Ð" />
|
||||
<glyph unicode="Ñ" horiz-adv-x="1384" d="M129 63v1270q0 26 19 44t45 18q32 0 51 -25l784 -1108v1071q0 26 18.5 44t43.5 18q26 0 44.5 -18t18.5 -44v-1270q0 -26 -18.5 -43.5t-44.5 -17.5q-33 0 -52 25l-784 1108v-1072q0 -26 -18 -43.5t-43 -17.5q-27 0 -45.5 17.5t-18.5 43.5zM449 1634q0 38 42.5 62t86.5 24 q32 0 59.5 -13t44 -26.5t23.5 -13.5q8 0 27.5 13.5t37.5 13.5q26 0 45 -17.5t19 -42.5q0 -41 -42.5 -65.5t-86.5 -24.5q-33 0 -59.5 13t-43 26.5t-24.5 13.5t-27.5 -13t-38.5 -13q-27 0 -45 18t-18 45z" />
|
||||
<glyph unicode="Ò" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM541 1726q0 25 18 42.5t45 17.5 q37 0 53 -29q7 -12 44.5 -64.5t65.5 -96.5t28 -58q0 -24 -18.5 -41.5t-43.5 -17.5q-32 0 -49 20q-41 48 -92 123t-51 104z" />
|
||||
<glyph unicode="Ó" horiz-adv-x="1464" d="M84 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q105 0 199 -41t163 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t93.5 -132t128.5 -92.5t157.5 -34.5t157.5 34.5t128 92.5t93.5 132t59.5 153.5t19.5 156.5t-19.5 157.5t-59.5 154.5t-93.5 132t-128 93t-157.5 35t-157.5 -35t-128.5 -93t-93.5 -132t-59.5 -154.5t-20 -157.5zM541 1538q0 14 28.5 58.5 t64.5 95.5t44 65q16 29 55 29q25 0 43.5 -17.5t18.5 -42.5q0 -29 -51 -103t-93 -124q-20 -20 -49 -20q-26 0 -43.5 17t-17.5 42z" />
|
||||
<glyph unicode="Ô" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41t197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5t-198 41t-163.5 111t-121 159t-77.5 188.5t-26 196.5zM209 696q0 -77 20 -156.5 t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM475 1538q0 24 17 41q76 100 122 178q19 29 56 29 t53 -29q59 -95 125 -178q12 -15 12 -41q0 -25 -18 -42t-45 -17q-13 0 -28 8.5t-31 27t-25.5 30.5t-25.5 35.5t-17 25.5q-4 -5 -19 -26t-26 -34.5t-26.5 -31t-31 -26.5t-28.5 -9q-26 0 -45 17t-19 42z" />
|
||||
<glyph unicode="Õ" horiz-adv-x="1478" d="M86 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5t-198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t60 -153.5t94.5 -132t129 -92.5t157.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35t-157.5 -35t-129 -93t-94.5 -132t-60 -154.5t-20 -157.5zM475 1634q0 38 43 62t86 24q33 0 60.5 -13 t45 -26.5t25.5 -13.5t26.5 13.5t39.5 13.5q25 0 42 -17.5t17 -42.5q0 -40 -41.5 -65t-83.5 -25q-35 0 -62.5 13t-44 26.5t-24.5 13.5t-26 -13t-39 -13q-27 0 -45.5 18t-18.5 45z" />
|
||||
<glyph unicode="Ö" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5q-130 0 -242.5 63t-186 163.5t-115.5 223.5t-42 246zM209 696 q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM475 1634q0 25 19 42.5t45 17.5 q25 0 44 -18t19 -42q0 -27 -19 -45t-44 -18q-27 0 -45.5 18t-18.5 45zM735 1634q0 25 18.5 42.5t43.5 17.5q26 0 44.5 -17.5t18.5 -42.5q0 -27 -18 -45t-45 -18q-25 0 -43.5 18t-18.5 45z" />
|
||||
<glyph unicode="×" />
|
||||
<glyph unicode="Ø" horiz-adv-x="1470" d="M84 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41q160 0 297 -97q2 4 12 23t16 28t17 22.5t23 19.5t26 6q26 0 44.5 -19t18.5 -45q0 -9 -4.5 -22t-13.5 -28t-16 -25.5t-18 -26t-13 -19.5q94 -105 144 -239t50 -277q0 -99 -26 -198.5t-77 -188.5t-120 -158.5 t-162.5 -110t-197.5 -40.5q-165 0 -297 96q-4 -6 -14 -23t-17 -26.5t-18 -22t-23 -18.5t-25 -6q-25 0 -43 18.5t-18 44.5q0 14 10.5 36t29 51t21.5 34q-92 104 -142 238t-50 274zM209 696q0 -219 137 -399l553 895q-102 76 -229 76q-84 0 -158.5 -35t-129 -93t-94 -132 t-59.5 -154.5t-20 -157.5zM436 205q101 -78 234 -78q83 0 157 34.5t128 92.5t93.5 132t59.5 153.5t20 156.5q0 226 -139 404z" />
|
||||
<glyph unicode="Ù" horiz-adv-x="1357" d="M119 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 268 110t111 267v829q0 26 18 45t43 19q26 0 44.5 -19t18.5 -45v-829q0 -137 -67.5 -253t-183.5 -183.5t-252 -67.5q-138 0 -254.5 67.5t-184 183.5t-67.5 253zM496 1726 q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q6 -10 45 -63.5t67 -97t28 -56.5q0 -25 -18.5 -43t-43.5 -18q-31 0 -47 22q-34 34 -90.5 115t-56.5 110z" />
|
||||
<glyph unicode="Ú" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 27 17.5 45.5t43.5 18.5t43.5 -18.5t17.5 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253zM496 1540 q0 13 28.5 57.5t65 96t43.5 63.5q17 31 55 31q25 0 43.5 -18.5t18.5 -43.5q0 -29 -55 -109t-89 -116q-19 -22 -49 -22q-26 0 -43.5 18t-17.5 43z" />
|
||||
<glyph unicode="Û" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 27 17.5 45.5t43.5 18.5t43.5 -18.5t17.5 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253zM430 1540 q0 27 14 41q56 68 123 176q21 31 56 31q36 0 53 -31q51 -82 125 -176q14 -14 14 -41q0 -25 -18.5 -43t-44.5 -18q-13 0 -28 9t-30.5 27t-26 31t-26 35.5t-18.5 26.5q-1 -2 -9 -14t-12 -17.5t-13 -18t-15 -19.5t-15 -18t-17 -17t-16.5 -12.5t-17 -9.5t-16.5 -3q-26 0 -44 18 t-18 43z" />
|
||||
<glyph unicode="Ü" horiz-adv-x="1374" d="M115 504v829q0 26 18.5 45t44.5 19q25 0 44.5 -19t19.5 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 266.5 110t109.5 267v829q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-829q0 -209 -147 -356.5t-356 -147.5q-138 0 -254.5 67.5t-184 183.5t-67.5 253zM426 1634 q0 25 18.5 43.5t44.5 18.5q25 0 44.5 -18.5t19.5 -43.5q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5zM688 1634q0 25 18.5 43.5t43.5 18.5q26 0 44.5 -18.5t18.5 -43.5q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -43.5 18.5t-18.5 44.5z" />
|
||||
<glyph unicode="Ý" />
|
||||
<glyph unicode="Þ" />
|
||||
<glyph unicode="ß" horiz-adv-x="1191" d="M106 63v986q0 101 62.5 182.5t156 123.5t193.5 42q99 0 192 -42t155.5 -123.5t62.5 -182.5q0 -189 -211 -312q113 -58 184.5 -147.5t71.5 -204.5q0 -113 -69.5 -203t-172.5 -136t-213 -46q-182 0 -182 80q0 25 18.5 43t44.5 18q18 0 57 -8t60 -8q55 0 112.5 18t107 50 t81 82.5t31.5 109.5q0 49 -22 92.5t-56 74.5t-80 56t-90 40t-90 24q-25 5 -40 21t-15 40q0 19 14 37q10 18 41 25q51 12 98 31.5t94 49.5t75 75t28 98q0 66 -46.5 118t-111 77.5t-129.5 25.5q-64 0 -128.5 -25.5t-111.5 -77.5t-47 -118v-986q0 -27 -18 -45t-43 -18 q-27 0 -45.5 18t-18.5 45z" />
|
||||
<glyph unicode="à" horiz-adv-x="915" d="M63 248q0 150 106.5 256t256.5 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5 q-19 0 -32 7.5t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -258 -121q-101 0 -174.5 73.5t-73.5 174.5zM188 250q0 -54 38 -88.5t93 -34.5q68 0 127 49t91 118.5t32 135.5v57h-143q-97 0 -167.5 -69.5t-70.5 -167.5zM297 1239q0 27 19 45.5t44 18.5q34 0 54 -33 q7 -11 45.5 -63.5t67 -96t28.5 -55.5q0 -26 -19 -45t-44 -19q-32 0 -48 23q-44 52 -95.5 124.5t-51.5 100.5z" />
|
||||
<glyph unicode="á" horiz-adv-x="917" d="M68 248q0 151 105.5 256.5t256.5 105.5h145v52q0 51 -35.5 87.5t-86.5 36.5q-41 0 -82 -11.5t-66.5 -25t-48.5 -25t-33 -11.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t84.5 42.5t96 24.5t75.5 9q103 0 175 -71.5t72 -175.5v-599q0 -26 -17.5 -44.5t-43.5 -18.5 q-15 0 -26 3.5t-17.5 12.5t-11 15.5t-6 22t-2 21.5t0 24.5t0.5 21.5q-108 -121 -260 -121q-101 0 -174 73.5t-73 174.5zM193 250q0 -55 37.5 -89t93.5 -34q68 0 127.5 49t91.5 118.5t32 135.5v57h-145q-97 0 -167 -69.5t-70 -167.5zM301 1055q0 12 27 54t68.5 100.5 t43.5 60.5q17 33 56 33q26 0 43.5 -18t17.5 -46t-51.5 -101.5t-93.5 -123.5q-16 -23 -47 -23q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode="â" horiz-adv-x="919" d="M66 248q0 150 106 256t256 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -32 7.5 t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -256 -121q-103 0 -176 73t-73 175zM193 250q0 -55 37 -89t92 -34q68 0 127 49t90.5 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM238 1055q0 23 12 41q72 92 125 174q20 33 53 33t53 -33q53 -82 125 -174 q17 -26 17 -41q0 -26 -19.5 -45t-44.5 -19q-10 0 -20.5 4.5t-22 15t-20 19t-20.5 25t-18 24t-17.5 24.5t-12.5 19q-17 -26 -26 -39t-29.5 -39.5t-39.5 -39.5t-36 -13q-25 0 -42 19t-17 45z" />
|
||||
<glyph unicode="ã" horiz-adv-x="913" d="M63 250q0 149 106 254.5t257 105.5h143v52q0 51 -34.5 87.5t-85.5 36.5q-52 0 -102 -18t-83.5 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t85 42.5t96.5 24.5t76.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-13 0 -23.5 4 t-17 8t-11.5 14.5t-7 16t-3.5 20t-1.5 19v21v18.5q-108 -121 -258 -121q-101 0 -174.5 73.5t-73.5 176.5zM188 250q0 -54 38 -88.5t93 -34.5q68 0 127 49t91 118.5t32 135.5v57h-143q-97 0 -167.5 -69.5t-70.5 -167.5zM231 1147q0 40 43 65t86 25q33 0 61 -13.5t45.5 -26.5 t25.5 -13t26 13t39 13q24 0 41.5 -19t17.5 -44q0 -39 -41.5 -64.5t-82.5 -25.5q-34 0 -62 13.5t-45 26.5t-25 13t-26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode="ä" horiz-adv-x="915" d="M66 248q0 151 105.5 256.5t256.5 105.5h143v52q0 51 -34.5 87.5t-85.5 36.5q-52 0 -102 -18t-83.5 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t85 42.5t96.5 24.5t76.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5 q-12 0 -21.5 2t-16 7.5t-11 10.5t-7.5 14.5t-5 15.5t-2.5 18t-0.5 17.5v18.5v17q-108 -121 -258 -121q-101 0 -174 73.5t-73 174.5zM193 250q0 -55 37 -89t92 -34q68 0 127 49t90.5 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM238 1147q0 27 18 45t43 18 q27 0 45 -18t18 -45q0 -26 -18.5 -44t-44.5 -18q-25 0 -43 18t-18 44zM496 1147q0 27 18 45t45 18q26 0 45 -18t19 -45q0 -26 -19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44z" />
|
||||
<glyph unicode="å" horiz-adv-x="919" d="M66 248q0 150 106 256t256 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -32 7.5 t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -256 -121q-103 0 -176 73t-73 175zM193 250q0 -55 37.5 -89t93.5 -34q67 0 125.5 49t90 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM268 1147q0 67 47 114.5t113 47.5q68 0 115 -47.5t47 -114.5 q0 -66 -47.5 -113t-114.5 -47q-66 0 -113 47t-47 113zM365 1147q0 -26 19 -44t44 -18q28 0 46 18t18 44q0 28 -18 45.5t-46 17.5q-25 0 -44 -18t-19 -45z" />
|
||||
<glyph unicode="æ" horiz-adv-x="1531" d="M57 248q0 150 106.5 256t256.5 106h143v52q0 50 -35 86t-84 36q-53 0 -103.5 -18t-84 -35.5t-45.5 -17.5q-25 0 -43 17t-18 42q0 42 60 75.5t125 47.5t107 14q72 0 134.5 -40t93.5 -107q112 147 278 147q109 0 197 -64t134 -162t46 -206q0 -25 -18 -44t-45 -19h-570 q10 -108 81.5 -197.5t174.5 -89.5q42 0 77 14t57 34t40 40.5t35.5 34.5t34.5 14q25 0 44 -19t19 -44q0 -19 -12 -37q-46 -74 -126 -119t-169 -45q-102 0 -183.5 56.5t-137.5 152.5q-54 -96 -135.5 -152.5t-184.5 -56.5t-176.5 73.5t-73.5 174.5zM182 250q0 -56 38 -89.5 t95 -33.5q67 0 128 50.5t93.5 121.5t28.5 135l-2 39v12h-143q-97 0 -167.5 -69.5t-70.5 -165.5zM698 541h496q-19 97 -85.5 170t-160.5 73q-92 0 -160 -73t-90 -170z" />
|
||||
<glyph unicode="ç" horiz-adv-x="937" d="M61 455q0 111 45.5 213.5t135.5 171.5t204 69q92 0 176 -49.5t121 -130.5q7 -14 7 -29q0 -25 -18 -44t-44 -19q-21 0 -43.5 23.5t-42 51t-61 51t-95.5 23.5q-78 0 -139.5 -53.5t-91 -128t-29.5 -149.5q0 -74 29.5 -148t91 -127t139.5 -53q44 0 79 15t56 37t38 43.5 t34 36.5t35 15q26 0 44 -18.5t18 -44.5q0 -66 -89.5 -130.5t-166.5 -76.5l-27 -84h31q78 0 134 -48t56 -122q0 -95 -81.5 -165t-178.5 -70q-53 0 -110.5 32t-57.5 80q0 26 18 45t44 19q25 0 49 -24.5t57 -24.5q44 0 88.5 32.5t44.5 75.5q0 23 -19 35t-44 12q-36 0 -75 -24.5 t-56 -24.5q-25 0 -43.5 17.5t-18.5 41.5q0 16 11.5 55.5t29 91.5t19.5 58q-136 34 -220 165.5t-84 277.5z" />
|
||||
<glyph unicode="è" horiz-adv-x="1017" d="M63 455q0 82 28 162.5t77 145.5t123.5 105.5t159.5 40.5q108 0 195.5 -64t133 -162t45.5 -206q0 -25 -18 -44t-43 -19h-571q10 -108 81.5 -197.5t176.5 -89.5q42 0 76 14t56 34t39.5 40.5t35 34.5t34.5 14q25 0 44.5 -19t19.5 -44q0 -11 -13 -37q-48 -74 -126.5 -119 t-165.5 -45q-85 0 -159.5 41t-123.5 106t-77 146t-28 162zM199 541h495q-16 96 -83 169.5t-160 73.5t-160.5 -72.5t-91.5 -170.5zM317 1239q0 27 18.5 45.5t45.5 18.5q37 0 53 -33q6 -10 43.5 -62.5t65.5 -96.5t28 -56q0 -27 -17.5 -45.5t-43.5 -18.5q-28 0 -47 23 q-38 43 -92 120t-54 105z" />
|
||||
<glyph unicode="é" horiz-adv-x="1017" d="M63 455q0 110 46.5 213t137 172t202.5 69q109 0 197 -64t133.5 -162t45.5 -206q0 -25 -18.5 -44t-44.5 -19h-569q5 -50 24.5 -100t51.5 -92.5t79 -68.5t101 -26q52 0 93 21.5t62 47t44.5 47t43.5 21.5q25 0 44.5 -19t19.5 -44q0 -11 -13 -37q-48 -75 -127 -119.5 t-167 -44.5q-84 0 -158 41t-123 106t-77 146t-28 162zM199 541h495q-19 98 -85 170.5t-160 72.5q-93 0 -160.5 -73t-89.5 -170zM315 1055q0 12 29 56t66.5 96t44.5 63q20 33 55 33q25 0 43 -19t18 -45q0 -29 -54.5 -109t-88.5 -116q-20 -23 -49 -23q-26 0 -45 19t-19 45z " />
|
||||
<glyph unicode="ê" horiz-adv-x="1028" d="M70 455q0 111 46 213.5t136 171.5t203 69q109 0 197 -64t133.5 -162t45.5 -206q0 -25 -18.5 -44t-44.5 -19h-571q12 -108 83.5 -197.5t174.5 -89.5q52 0 92.5 21.5t61.5 47t44.5 47t44.5 21.5q26 0 44 -19t18 -44q0 -19 -12 -37q-46 -74 -126 -119t-167 -45 q-113 0 -203 69.5t-136 172.5t-46 213zM205 541h493q-16 97 -82.5 170t-160.5 73q-93 0 -160.5 -73t-89.5 -170zM262 1055q0 20 14 41q71 87 125 174q20 33 54 33q35 0 55 -33q49 -84 123 -174q16 -19 16 -41q0 -26 -18.5 -45t-44.5 -19q-17 0 -36 13t-39.5 39.5t-29.5 39.5 t-26 39q-1 -1 -18 -27t-26 -37t-25.5 -30.5t-32 -28t-29.5 -8.5q-25 0 -43.5 19t-18.5 45z" />
|
||||
<glyph unicode="ë" horiz-adv-x="1011" d="M59 455q0 111 45.5 213.5t135.5 171.5t204 69q109 0 196.5 -64t133 -162t45.5 -206q0 -25 -18 -44t-43 -19h-574q12 -109 83.5 -198t176.5 -89q50 0 90.5 21.5t62 47t45 47t42.5 21.5q27 0 45.5 -19t18.5 -44q0 -15 -11 -37q-48 -74 -127 -119t-166 -45q-114 0 -204 69.5 t-135.5 172.5t-45.5 213zM195 541h493q-16 97 -83 170t-161 73q-93 0 -160 -73t-89 -170zM250 1147q0 25 18.5 44t44.5 19q25 0 44.5 -19t19.5 -44q0 -26 -19.5 -45t-44.5 -19q-26 0 -44.5 19t-18.5 45zM510 1147q0 25 18 44t43 19q26 0 45 -19t19 -44q0 -26 -19 -45 t-45 -19q-25 0 -43 19t-18 45z" />
|
||||
<glyph unicode="ì" horiz-adv-x="548" d="M70 1239q0 26 18.5 45t44.5 19q33 0 53 -33q7 -11 45.5 -63.5t67.5 -96t29 -55.5q0 -26 -19.5 -45t-44.5 -19q-28 0 -47 23q-39 44 -93 120.5t-54 104.5zM135 63v785q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5 t-18.5 43.5z" />
|
||||
<glyph unicode="í" horiz-adv-x="548" d="M70 1055q0 12 29 56t65.5 95t44.5 64q20 33 55 33q25 0 44.5 -19t19.5 -45q0 -28 -51.5 -99.5t-96.5 -125.5q-23 -23 -47 -23q-26 0 -44.5 19t-18.5 45zM135 63v785q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5 t-18.5 43.5z" />
|
||||
<glyph unicode="î" horiz-adv-x="618" d="M23 1055q0 24 14 41q35 41 123 174q23 33 55 33q38 0 55 -33q70 -112 121 -174q17 -17 17 -41q0 -26 -19 -45t-45 -19q-11 0 -24.5 7.5t-23.5 17t-24.5 27t-21.5 27.5t-20 29.5l-15 22.5l-15 -22.5t-20 -29.5t-21.5 -27.5t-24.5 -27t-23.5 -17t-24.5 -7.5q-26 0 -44.5 19 t-18.5 45zM154 63v785q0 26 17.5 43.5t43.5 17.5t43.5 -17.5t17.5 -43.5v-785q0 -26 -17.5 -43.5t-43.5 -17.5t-43.5 17.5t-17.5 43.5z" />
|
||||
<glyph unicode="ï" horiz-adv-x="612" d="M20 1147q0 25 19 44t45 19q25 0 44 -19t19 -44q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45zM152 63v785q0 26 17 43.5t42 17.5q28 0 45.5 -17.5t17.5 -43.5v-785q0 -26 -17.5 -43.5t-45.5 -17.5q-25 0 -42 17.5t-17 43.5zM279 1147q0 25 18.5 44t44.5 19t43.5 -19 t17.5 -44q0 -27 -17.5 -45.5t-43.5 -18.5t-44.5 19t-18.5 45z" />
|
||||
<glyph unicode="ð" />
|
||||
<glyph unicode="ñ" horiz-adv-x="954" d="M106 63v785q0 26 18.5 43.5t45.5 17.5q61 0 61 -80q118 80 261 80q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5v599q0 51 -34.5 87.5t-85.5 36.5q-75 0 -144.5 -33.5t-116.5 -93.5v-596q0 -26 -18 -43.5t-43 -17.5 q-27 0 -45.5 17.5t-18.5 43.5zM229 1147q0 40 43 65t86 25q32 0 60 -13.5t45 -26.5t24 -13q8 0 27.5 13t38.5 13q25 0 43 -18t18 -45q0 -39 -42 -63.5t-85 -24.5q-33 0 -61 12.5t-44.5 25.5t-23.5 13q-8 0 -26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode="ò" horiz-adv-x="1044" d="M72 455q0 111 46 213.5t136 171.5t203 69t203 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -55 17.5 -112t49.5 -105.5t82 -79.5t109 -31t109 31t82 79.5t49.5 105.5t17.5 112 t-17.5 112.5t-49.5 106t-82 79.5t-109 31t-109 -31t-82 -79.5t-49.5 -106t-17.5 -112.5zM330 1239q0 26 18 45t43 19q35 0 55 -33q6 -10 43.5 -62.5t66 -96.5t28.5 -56q0 -26 -18 -45t-44 -19q-29 0 -49 23q-34 36 -88.5 116t-54.5 109z" />
|
||||
<glyph unicode="ó" horiz-adv-x="1044" d="M72 455q0 111 46 213.5t136 171.5t203 69t203 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -55 17.5 -112t49.5 -105.5t82 -79.5t109 -31t109 31t82 79.5t49.5 105.5t17.5 112 t-17.5 112.5t-49.5 106t-82 79.5t-109 31t-109 -31t-82 -79.5t-49.5 -106t-17.5 -112.5zM330 1055q0 8 11.5 28.5t30 48.5t36 53.5t36 51t23.5 33.5q17 33 55 33q26 0 44 -19t18 -45q0 -28 -51.5 -102t-92.5 -123q-23 -23 -49 -23q-25 0 -43 19t-18 45z" />
|
||||
<glyph unicode="ô" horiz-adv-x="1048" d="M74 455q0 111 46 213.5t136 171.5t201 69q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -110 -45.5 -213t-135.5 -172.5t-204 -69.5q-111 0 -201 70t-136 173t-46 212zM199 455q0 -74 29.5 -148t90.5 -127t138 -53q78 0 139 53t90 126.5t29 148.5q0 56 -17.5 113t-49 105.5 t-81.5 79.5t-110 31q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM266 1055q0 21 13 41q51 59 124 174q18 33 54 33q31 0 57 -33q50 -87 121 -174q16 -16 16 -41q0 -26 -18.5 -45t-44.5 -19q-13 0 -28 9t-30.5 26.5t-26.5 31.5t-26.5 36t-19.5 28q-56 -87 -86 -112 q-23 -19 -41 -19q-27 0 -45.5 18.5t-18.5 45.5z" />
|
||||
<glyph unicode="õ" horiz-adv-x="1036" d="M66 455q0 111 46 213.5t136 171.5t203 69q112 0 202 -69t136.5 -172t46.5 -213t-46.5 -213t-137 -172.5t-201.5 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM193 455q0 -74 29.5 -148t90.5 -127t138 -53q59 0 109 31t81 79.5t48.5 105.5t17.5 112 q0 56 -17.5 113t-48.5 105.5t-81 79.5t-109 31q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM256 1147q0 40 43 65t86 25q34 0 61.5 -13.5t44.5 -26.5t25 -13t26.5 13t39.5 13q25 0 44 -18t19 -45q0 -39 -43.5 -63.5t-85.5 -24.5q-33 0 -60.5 12.5t-45 25.5t-25.5 13 t-26.5 -13.5t-39.5 -13.5q-25 0 -44 19t-19 45z" />
|
||||
<glyph unicode="ö" horiz-adv-x="1036" d="M66 455q0 111 46 213.5t136 171.5t203 69q111 0 201 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-111 0 -201 70t-136 173t-46 212zM188 455q0 -74 30.5 -148t92.5 -127t140 -53q58 0 107.5 31t80.5 79.5t48.5 105.5t17.5 112q0 56 -17.5 113 t-48.5 105.5t-81 79.5t-109 31q-77 0 -138.5 -52.5t-92 -127t-30.5 -149.5zM256 1147q0 25 19 44t44 19q26 0 45 -19t19 -44q0 -26 -19 -45t-45 -19q-25 0 -44 19t-19 45zM516 1147q0 25 18 44t44 19t43.5 -19t17.5 -44q0 -27 -17.5 -45.5t-43.5 -18.5t-44 19t-18 45z" />
|
||||
<glyph unicode="÷" horiz-adv-x="784" d="M47 455q0 26 19 44.5t45 18.5h483q26 0 44.5 -18.5t18.5 -44.5q0 -25 -18.5 -44.5t-44.5 -19.5h-483q-26 0 -45 19.5t-19 44.5zM283 215q0 28 20.5 49t50.5 21q28 0 49 -21t21 -49q0 -29 -21 -51.5t-49 -22.5q-30 0 -50.5 22t-20.5 52zM283 698q0 30 20.5 50t50.5 20 q28 0 49 -20.5t21 -49.5t-21 -49t-49 -20q-31 0 -51 20t-20 49z" />
|
||||
<glyph unicode="ø" horiz-adv-x="1075" d="M82 455q0 111 46 213.5t136 171.5t203 69q97 0 176 -49q25 49 68 49q25 0 42 -17.5t17 -43.5q0 -19 -33 -74q115 -140 115 -319q0 -110 -46 -213t-136 -172.5t-203 -69.5q-95 0 -176 49q-10 -16 -17 -25t-20.5 -16.5t-30.5 -7.5q-26 0 -43.5 18.5t-17.5 44.5q0 6 2 13.5 t4 12.5t6.5 13t7 11.5t8.5 11.5t7 10q-115 136 -115 320zM207 455q0 -113 59 -205l312 502q-49 32 -111 32q-58 0 -108.5 -31t-82.5 -79.5t-50.5 -106t-18.5 -112.5zM356 158q44 -31 111 -31q59 0 109 31t82 79.5t49.5 105.5t17.5 112q0 113 -57 204z" />
|
||||
<glyph unicode="ù" horiz-adv-x="937" d="M88 248v602q0 25 19 44t45 19q25 0 44 -19t19 -44v-602q0 -50 35 -85.5t86 -35.5q75 0 144.5 33.5t113.5 91.5v596q0 26 19 43.5t44 17.5q27 0 45.5 -17.5t18.5 -43.5v-785q0 -26 -19 -44.5t-45 -18.5q-63 0 -63 82q-114 -82 -256 -82q-103 0 -176.5 73.5t-73.5 174.5z M276 1241q0 26 19.5 44t44.5 18q35 0 55 -33q7 -13 43.5 -63t66.5 -94.5t30 -57.5q0 -26 -19.5 -45t-44.5 -19q-29 0 -49 23q-43 51 -94.5 124.5t-51.5 102.5z" />
|
||||
<glyph unicode="ú" horiz-adv-x="952" d="M102 248v602q0 25 18.5 44t43.5 19q26 0 44.5 -19t18.5 -44v-602q0 -50 36 -85.5t87 -35.5q73 0 142 33t116 92v596q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -44.5t-44 -18.5q-64 0 -64 82q-118 -82 -258 -82q-101 0 -174.5 73.5t-73.5 174.5z M291 1055q0 13 28 57t65.5 96t43.5 62q20 33 53 33q28 0 46 -18t18 -44q0 -46 -144 -227q-23 -23 -47 -23q-27 0 -45 18.5t-18 45.5z" />
|
||||
<glyph unicode="û" horiz-adv-x="956" d="M102 248v602q0 25 18.5 44t43.5 19q27 0 45 -19t18 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 143.5 33t114.5 92v596q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -44.5t-44 -18.5q-64 0 -64 82q-114 -82 -256 -82q-103 0 -176.5 73.5t-73.5 174.5z M225 1055q0 21 17 41q75 95 123 174q20 33 55 33q33 0 53 -33q51 -85 125 -174q12 -18 12 -41q0 -27 -17.5 -45.5t-43.5 -18.5q-10 0 -21 5t-22 15t-20 19.5t-20 24.5t-17.5 24.5t-16.5 24t-12 18.5q-5 -6 -25.5 -35t-34 -46t-34.5 -33.5t-37 -16.5q-26 0 -45 19t-19 45z " />
|
||||
<glyph unicode="ü" horiz-adv-x="952" d="M104 248v602q0 25 18 44t44 19t43.5 -19t17.5 -44v-602q0 -49 36.5 -85t86.5 -36q75 0 144 33t116 92v596q0 26 18 43.5t44 17.5t44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -44.5t-44.5 -18.5q-62 0 -62 82q-118 -82 -258 -82q-102 0 -175 73t-73 175zM227 1147 q0 25 19 44t45 19q25 0 44 -19t19 -44q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45zM485 1147q0 25 18.5 44t43.5 19q26 0 44.5 -19t18.5 -44q0 -26 -18.5 -45t-44.5 -19q-25 0 -43.5 19t-18.5 45z" />
|
||||
<glyph unicode="ý" />
|
||||
<glyph unicode="þ" />
|
||||
<glyph unicode="ÿ" />
|
||||
<glyph unicode="Œ" horiz-adv-x="1703" d="M39 696q0 90 21 186t64.5 187.5t103.5 164t147 117t186 44.5t191 -47q6 21 23 34t38 13h692q25 0 44.5 -18t19.5 -44t-19.5 -44.5t-44.5 -18.5h-628v-475h444q25 0 43 -17.5t18 -42.5q0 -27 -18 -45t-43 -18h-444v-545h628q25 0 44.5 -19t19.5 -45t-19.5 -43.5 t-44.5 -17.5h-692q-44 0 -61 45q-86 -47 -191 -47q-83 0 -157.5 31t-131 84.5t-101.5 122.5t-73.5 147t-43.5 157.5t-15 153.5zM162 696q0 -68 15.5 -144t48.5 -152t79 -136.5t113 -98.5t143 -38q110 0 189 70v1001q-83 70 -189 70q-76 0 -143 -38.5t-113 -99.5t-79 -137.5 t-48.5 -152.5t-15.5 -144z" />
|
||||
<glyph unicode="œ" horiz-adv-x="1685" d="M72 455q0 111 46 213.5t136 171.5t203 69q106 0 187.5 -56.5t135.5 -154.5q115 211 322 211q109 0 197 -64t134 -162t46 -206q0 -25 -19.5 -44t-44.5 -19h-569q5 -50 24.5 -100t51.5 -92.5t79 -68.5t101 -26q40 0 74.5 14t57 34t41.5 40.5t37 34.5t34 14q25 0 42 -18 t17 -45q0 -17 -10 -37q-48 -74 -127 -119t-166 -45q-205 0 -322 211q-54 -98 -135.5 -154.5t-187.5 -56.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -74 29.5 -148t90.5 -127t138 -53q78 0 139.5 53t91 127t29.5 148q0 75 -29.5 149t-91 127t-139.5 53 q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM852 541h496q-19 97 -85.5 170t-160.5 73q-93 0 -160.5 -73t-89.5 -170z" />
|
||||
<glyph unicode="Ÿ" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="653" d="M94 1055q0 15 17 41q71 90 122 174q20 33 56 33q33 0 53 -33q53 -82 125 -174q14 -21 14 -41q0 -26 -18 -45t-43 -19q-48 0 -126 123q-3 6 -5 8q-3 -4 -13 -19t-16.5 -24.5t-17.5 -24.5t-20.5 -24.5t-20.5 -19t-22 -14.5t-21 -5q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode="˜" horiz-adv-x="659" d="M98 1147q0 40 43.5 65t85.5 25q34 0 61.5 -13.5t44.5 -26.5t25 -13t26.5 13t39.5 13q25 0 44 -19t19 -44q0 -39 -43.5 -64.5t-85.5 -25.5q-33 0 -60.5 13.5t-45 26.5t-25.5 13t-26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
|
||||
<glyph unicode=" " horiz-adv-x="898" />
|
||||
<glyph unicode=" " horiz-adv-x="1796" />
|
||||
<glyph unicode=" " horiz-adv-x="898" />
|
||||
<glyph unicode=" " horiz-adv-x="1796" />
|
||||
<glyph unicode=" " horiz-adv-x="598" />
|
||||
<glyph unicode=" " horiz-adv-x="449" />
|
||||
<glyph unicode=" " horiz-adv-x="299" />
|
||||
<glyph unicode=" " horiz-adv-x="299" />
|
||||
<glyph unicode=" " horiz-adv-x="224" />
|
||||
<glyph unicode=" " horiz-adv-x="359" />
|
||||
<glyph unicode=" " horiz-adv-x="99" />
|
||||
<glyph unicode="‐" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="‑" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="‒" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="–" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="—" horiz-adv-x="1486" d="M102 455q0 26 18.5 44.5t43.5 18.5h1093q27 0 45.5 -18t18.5 -45q0 -25 -18.5 -44.5t-45.5 -19.5h-1093q-25 0 -43.5 19.5t-18.5 44.5z" />
|
||||
<glyph unicode="‘" horiz-adv-x="649" d="M76 1333q0 26 18.5 45t44.5 19q39 0 56 -39q86 -165 180 -283q16 -19 16 -41q0 -26 -18.5 -44.5t-44.5 -18.5q-30 0 -49 22q-45 52 -124 175t-79 165z" />
|
||||
<glyph unicode="’" horiz-adv-x="649" d="M115 1034q0 20 14 41q97 122 178 283q20 39 60 39q25 0 44 -19t19 -45q0 -42 -80.5 -166t-126.5 -174q-18 -22 -47 -22q-25 0 -43 18.5t-18 44.5z" />
|
||||
<glyph unicode="‚" />
|
||||
<glyph unicode="“" horiz-adv-x="958" d="M94 1333q0 26 19 45t45 19q39 0 59 -39q84 -168 176 -283q17 -20 17 -41q0 -26 -19 -44.5t-45 -18.5q-25 0 -47 22q-45 49 -125 173.5t-80 166.5zM397 1333q0 26 17.5 45t42.5 19q39 0 59 -39q82 -164 180 -283q13 -20 13 -41q0 -26 -18.5 -44.5t-43.5 -18.5 q-29 0 -47 22q-45 52 -124 175t-79 165z" />
|
||||
<glyph unicode="”" horiz-adv-x="958" d="M123 1034q0 17 16 41q107 133 180 283q17 39 56 39q26 0 44.5 -19t18.5 -45q0 -42 -80 -166.5t-125 -173.5q-22 -22 -47 -22t-44 18.5t-19 44.5zM426 1034q0 23 12 41q94 112 180 283q20 39 58 39q25 0 44 -19t19 -45q0 -42 -78.5 -165.5t-123.5 -174.5q-22 -22 -52 -22 q-25 0 -42 18.5t-17 44.5z" />
|
||||
<glyph unicode="„" />
|
||||
<glyph unicode="•" />
|
||||
<glyph unicode="…" />
|
||||
<glyph unicode=" " horiz-adv-x="359" />
|
||||
<glyph unicode="‹" />
|
||||
<glyph unicode="›" />
|
||||
<glyph unicode=" " horiz-adv-x="449" />
|
||||
<glyph unicode="€" horiz-adv-x="1286" d="M29 547q0 21 10.5 35.5t25.5 21t37.5 9t40 1.5t40.5 -2.5t32 -1.5v176q-8 0 -38.5 -2t-51 -1.5t-45.5 5.5t-38 20t-13 40t13.5 40.5t38.5 20t46 5t51 -2t39 -2.5q23 208 180 348t365 140q47 0 129 -19t157.5 -59.5t75.5 -87.5q0 -26 -18.5 -45t-44.5 -19 q-10 0 -52.5 25.5t-109.5 51.5t-137 26q-156 0 -275.5 -102.5t-142.5 -258.5h533q25 0 44 -17.5t19 -43.5t-19 -44t-44 -18h-537v-176h532q26 0 45 -18t19 -45q0 -25 -19.5 -43.5t-44.5 -18.5h-528q23 -155 142.5 -256.5t275.5 -101.5q55 0 109.5 16t88.5 35t62.5 35 t38.5 16q26 0 44.5 -18.5t18.5 -44.5q0 -47 -75.5 -87.5t-157.5 -59.5t-129 -19q-208 0 -364.5 139.5t-178.5 345.5q-8 0 -39.5 -2t-52 -1.5t-46 5.5t-39 20t-13.5 40z" />
|
||||
<glyph unicode="™" horiz-adv-x="649" d="M35 1333q0 12 9.5 22.5t21.5 10.5h229q13 0 23 -10.5t10 -22.5q0 -14 -9 -22t-25 -10t-30 -1.5t-31 2t-22 1.5v-269q0 -13 -8.5 -21.5t-22.5 -8.5q-12 0 -21 8.5t-9 21.5v269q-4 0 -21 -1.5t-31 -2t-29.5 1.5t-24.5 10t-9 22zM373 1034v299q0 13 8.5 23t21.5 10 q16 0 25 -14l107 -150l104 150q19 14 27 14q12 0 21 -10.5t9 -22.5v-299q0 -13 -9 -21.5t-21 -8.5q-13 0 -23 8.5t-10 21.5v201q-3 -4 -17 -27t-25.5 -40.5t-27.5 -33.5t-28 -16q-13 0 -29.5 16t-28.5 33t-26.5 41t-16.5 27v-201q0 -13 -9.5 -21.5t-21.5 -8.5q-13 0 -21.5 8 t-8.5 22z" />
|
||||
<glyph unicode="" horiz-adv-x="911" d="M0 0v911h911v-911h-911z" />
|
||||
<glyph unicode="fi" horiz-adv-x="825" />
|
||||
<glyph unicode="fl" horiz-adv-x="962" />
|
||||
<glyph unicode="ffi" horiz-adv-x="1124" />
|
||||
<glyph unicode="ffl" horiz-adv-x="1261" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 76 KiB |
BIN
assets/fonts/spungold/spungold.ttf
Normal file
BIN
assets/fonts/spungold/spungold.woff
Normal file
8
assets/html2opendocument/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
composer.phar
|
||||
composer.lock
|
||||
/vendor/
|
||||
.idea
|
||||
|
||||
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
|
||||
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
|
||||
# composer.lock
|
||||
195
assets/html2opendocument/Base.php
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @link https://github.com/CatoTH/html2opendocument
|
||||
* @author Tobias Hößl <tobias@hoessl.eu>
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
namespace CatoTH\HTML2OpenDocument;
|
||||
|
||||
abstract class Base
|
||||
{
|
||||
const NS_OFFICE = 'urn:oasis:names:tc:opendocument:xmlns:office:1.0';
|
||||
const NS_TEXT = 'urn:oasis:names:tc:opendocument:xmlns:text:1.0';
|
||||
const NS_FO = 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0';
|
||||
const NS_STYLE = 'urn:oasis:names:tc:opendocument:xmlns:style:1.0';
|
||||
const NS_TABLE = 'urn:oasis:names:tc:opendocument:xmlns:table:1.0';
|
||||
const NS_CALCTEXT = 'urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0';
|
||||
const NS_XLINK = 'http://www.w3.org/1999/xlink';
|
||||
|
||||
|
||||
/** @var \DOMDocument */
|
||||
protected $doc = null;
|
||||
|
||||
/** @var bool */
|
||||
protected $DEBUG = false;
|
||||
protected $trustHtml = false;
|
||||
|
||||
/** @var string */
|
||||
protected $tmpPath = '/tmp/';
|
||||
|
||||
/** @var \ZipArchive */
|
||||
private $zip;
|
||||
|
||||
/** @var @string */
|
||||
private $tmpZipFile;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $templateFile
|
||||
* @param array $options
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($templateFile, $options = [])
|
||||
{
|
||||
$template = file_get_contents($templateFile);
|
||||
if (isset($options['tmpPath']) && $options['tmpPath'] != '') {
|
||||
$this->tmpPath = $options['tmpPath'];
|
||||
}
|
||||
if (isset($options['trustHtml'])) {
|
||||
$this->trustHtml = ($options['trustHtml'] == true);
|
||||
}
|
||||
|
||||
if(!file_exists($this->tmpPath)){
|
||||
mkdir($this->tmpPath);
|
||||
}
|
||||
|
||||
$this->tmpZipFile = $this->tmpPath . uniqid('zip-');
|
||||
file_put_contents($this->tmpZipFile, $template);
|
||||
|
||||
$this->zip = new \ZipArchive();
|
||||
if ($this->zip->open($this->tmpZipFile) !== true) {
|
||||
throw new \Exception("cannot open <$this->tmpZipFile>\n");
|
||||
}
|
||||
|
||||
$content = $this->zip->getFromName('content.xml');
|
||||
|
||||
$this->doc = new \DOMDocument();
|
||||
$this->doc->loadXML($content);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function finishAndGetDocument()
|
||||
{
|
||||
$content = $this->create();
|
||||
|
||||
$this->zip->deleteName('content.xml');
|
||||
$this->zip->addFromString('content.xml', $content);
|
||||
$this->zip->close();
|
||||
|
||||
$content = file_get_contents($this->tmpZipFile);
|
||||
unlink($this->tmpZipFile);
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
abstract function create();
|
||||
|
||||
/**
|
||||
* @param string $html
|
||||
* @param array $config
|
||||
* @return string
|
||||
*/
|
||||
protected function purifyHTML($html, $config)
|
||||
{
|
||||
$configInstance = \HTMLPurifier_Config::create($config);
|
||||
$configInstance->autoFinalize = false;
|
||||
$purifier = \HTMLPurifier::instance($configInstance);
|
||||
$purifier->config->set('Cache.SerializerPath', $this->tmpPath);
|
||||
|
||||
return $purifier->purify($html);
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $html
|
||||
* @return \DOMNode
|
||||
*/
|
||||
public function html2DOM($html)
|
||||
{
|
||||
if (!$this->trustHtml) {
|
||||
$html = $this->purifyHTML(
|
||||
$html,
|
||||
[
|
||||
'HTML.Doctype' => 'HTML 4.01 Transitional',
|
||||
'HTML.Trusted' => true,
|
||||
'CSS.Trusted' => true,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$src_doc = new \DOMDocument();
|
||||
$src_doc->loadHTML('<html><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
</head><body>' . $html . "</body></html>");
|
||||
$bodies = $src_doc->getElementsByTagName('body');
|
||||
|
||||
return $bodies->item(0);
|
||||
}
|
||||
|
||||
/***
|
||||
* @param bool $debug
|
||||
*/
|
||||
public function setDebug($debug)
|
||||
{
|
||||
$this->DEBUG = $debug;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function debugOutput()
|
||||
{
|
||||
$this->doc->preserveWhiteSpace = false;
|
||||
$this->doc->formatOutput = true;
|
||||
echo htmlentities($this->doc->saveXML(), ENT_COMPAT, 'UTF-8');
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param string $family
|
||||
* @param string $element
|
||||
* @param string[] $attributes
|
||||
*/
|
||||
protected function appendStyleNode($styleName, $family, $element, $attributes)
|
||||
{
|
||||
$node = $this->doc->createElementNS(static::NS_STYLE, 'style');
|
||||
$node->setAttribute('style:name', $styleName);
|
||||
$node->setAttribute('style:family', $family);
|
||||
|
||||
$style = $this->doc->createElementNS(static::NS_STYLE, $element);
|
||||
foreach ($attributes as $att_name => $att_val) {
|
||||
$style->setAttribute($att_name, $att_val);
|
||||
}
|
||||
$node->appendChild($style);
|
||||
|
||||
foreach ($this->doc->getElementsByTagNameNS(static::NS_OFFICE, 'automatic-styles') as $element) {
|
||||
/** @var \DOMElement $element */
|
||||
$element->appendChild($node);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param array $attributes
|
||||
*/
|
||||
protected function appendTextStyleNode($styleName, $attributes)
|
||||
{
|
||||
$this->appendStyleNode($styleName, 'text', 'text-properties', $attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param array $attributes
|
||||
*/
|
||||
protected function appendParagraphStyleNode($styleName, $attributes)
|
||||
{
|
||||
$this->appendStyleNode($styleName, 'paragraph', 'paragraph-properties', $attributes);
|
||||
}
|
||||
}
|
||||
21
assets/html2opendocument/LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Tobias Hößl
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
94
assets/html2opendocument/README.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
This is a simple PHP-library to create create OpenDocument Text- and Spreadsheet-files (ODT / ODS) from HTML-formatted text.
|
||||
|
||||
It does not support formulae / calculations in spreadsheets. The focus lies on formatted text.
|
||||
|
||||
|
||||
## Example Scripts
|
||||
|
||||
A demo script for the OpenDocument Text converter using the default template:
|
||||
|
||||
```php
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
|
||||
|
||||
$html = '<p>This is a demo for the converter.</p>
|
||||
<p>The converter supports the following styles:</p>
|
||||
<ul>
|
||||
<li>Lists (UL / OL)</li>
|
||||
<li><strong>STRONG</strong></li>
|
||||
<li><u>U</u> (underlined)</li>
|
||||
<li><s>S</s> (strike-through)</li>
|
||||
<li><em>EM</em> (emphasis / italic)</li>
|
||||
<li><ins>INS</ins> (Inserted text)</li>
|
||||
<li><del>DEL</del> (Deleted text)</li>
|
||||
<li>Line<br>breaks with BR</li>
|
||||
</ul>
|
||||
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
|
||||
|
||||
$html2 = '<p>You might be interested<br>in the fact that this converter<br>
|
||||
also supports<br>line numbering<br>for selected paragraphs</p>
|
||||
<p>Dummy Line<br>Dummy Line<br>Dummy Line<br>
|
||||
Dummy Line<br>Dummy Line</p>';
|
||||
|
||||
$odt = new \CatoTH\HTML2OpenDocument\Text();
|
||||
$odt->addHtmlTextBlock('<h1>Test Page</h1>');
|
||||
$odt->addHtmlTextBlock($html, false);
|
||||
$odt->addHtmlTextBlock('<h2>Line Numbering</h2>');
|
||||
$odt->addHtmlTextBlock($html2, true);
|
||||
$odt->finishAndOutputOdt('demo.odt');
|
||||
```
|
||||
|
||||
|
||||
A demo script for the OpenDocument Spreadsheet converter using the default template:
|
||||
|
||||
```php
|
||||
use CatoTH\HTML2OpenDocument\Spreadsheet;
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
|
||||
|
||||
$ods = new \CatoTH\HTML2OpenDocument\Spreadsheet();
|
||||
|
||||
// Plain text
|
||||
$ods->setCell(0, 0, Spreadsheet::TYPE_TEXT, 'Plain text with native formatting');
|
||||
$ods->setCellStyle(0, 0, [], ['fo:font-weight' => 'bold']);
|
||||
|
||||
// Print a number as an actual number, just a little bit bigger
|
||||
$ods->setCell(1, 0, Spreadsheet::TYPE_NUMBER, 23);
|
||||
$ods->setCellStyle(1, 0, [], [
|
||||
'fo:font-size' => '16pt',
|
||||
'fo:font-weight' => 'bold',
|
||||
]);
|
||||
$ods->setMinRowHeight(1, 1.5);
|
||||
|
||||
// Print a number as text
|
||||
$ods->setCell(2, 0, Spreadsheet::TYPE_TEXT, '42');
|
||||
|
||||
// Draw a border around two of the cells
|
||||
$ods->drawBorder(1, 0, 2, 0, 1);
|
||||
|
||||
|
||||
// Now we use HTML, and we need a bit more space for that
|
||||
$html = '<p>The converter supports the following styles:</p>
|
||||
<ul>
|
||||
<li><strong>STRONG</strong></li>
|
||||
<li><u>U</u> (underlined)</li>
|
||||
<li><s>S</s> (strike-through)</li>
|
||||
<li><em>EM</em> (emphasis / italic)</li>
|
||||
<li><ins>Inserted text</ins></li>
|
||||
<li><del>Deleted text</del></li>
|
||||
<li>Line<br>breaks with BR</li>
|
||||
<li>Lists (UL / OL) cannot be displayed as lists, but will be flattened to paragraphs</li>
|
||||
</ul>
|
||||
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
|
||||
|
||||
$ods->setMinRowHeight(3, 10);
|
||||
$ods->setColumnWidth(1, 20);
|
||||
$ods->setCell(3, 1, Spreadsheet::TYPE_HTML, $html);
|
||||
|
||||
|
||||
$ods->finishAndOutputOds('demo.ods');
|
||||
```
|
||||
|
||||
|
||||
|
||||
## License
|
||||
|
||||
This library is licensed under the [MIT license](http://opensource.org/licenses/MIT)
|
||||
694
assets/html2opendocument/Spreadsheet.php
Normal file
|
|
@ -0,0 +1,694 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @link https://github.com/CatoTH/html2opendocument
|
||||
* @author Tobias Hößl <tobias@hoessl.eu>
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
namespace CatoTH\HTML2OpenDocument;
|
||||
|
||||
class Spreadsheet extends Base
|
||||
{
|
||||
const TYPE_TEXT = 0;
|
||||
const TYPE_NUMBER = 1;
|
||||
const TYPE_HTML = 2;
|
||||
const TYPE_LINK = 3;
|
||||
|
||||
const FORMAT_LINEBREAK = 0;
|
||||
const FORMAT_BOLD = 1;
|
||||
const FORMAT_ITALIC = 2;
|
||||
const FORMAT_UNDERLINED = 3;
|
||||
const FORMAT_STRIKE = 4;
|
||||
const FORMAT_INS = 5;
|
||||
const FORMAT_DEL = 6;
|
||||
const FORMAT_LINK = 7;
|
||||
const FORMAT_INDENTED = 8;
|
||||
const FORMAT_SUP = 9;
|
||||
const FORMAT_SUB = 10;
|
||||
|
||||
public static $FORMAT_NAMES = [
|
||||
0 => 'linebreak',
|
||||
1 => 'bold',
|
||||
2 => 'italic',
|
||||
3 => 'underlined',
|
||||
4 => 'strike',
|
||||
5 => 'ins',
|
||||
6 => 'del',
|
||||
7 => 'link',
|
||||
8 => 'indented',
|
||||
9 => 'sup',
|
||||
10 => 'sub',
|
||||
];
|
||||
|
||||
/** @var \DOMDocument */
|
||||
protected $doc = null;
|
||||
|
||||
/** @var \DOMElement */
|
||||
protected $domTable;
|
||||
|
||||
protected $matrix = [];
|
||||
protected $matrixRows = 0;
|
||||
protected $matrixCols = 0;
|
||||
protected $matrixColWidths = [];
|
||||
protected $matrixRowHeights = [];
|
||||
|
||||
protected $rowNodes = [];
|
||||
protected $cellNodeMatrix = [];
|
||||
protected $cellStylesMatrix = [];
|
||||
|
||||
protected $classCache = [];
|
||||
|
||||
/**
|
||||
* @param array $options
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($options = [])
|
||||
{
|
||||
if (isset($options['templateFile']) && $options['templateFile'] != '') {
|
||||
$templateFile = $options['templateFile'];
|
||||
} else {
|
||||
$templateFile = __DIR__ . DIRECTORY_SEPARATOR . 'default-template.ods';
|
||||
}
|
||||
parent::__construct($templateFile, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filename
|
||||
*/
|
||||
public function finishAndOutputOds($filename = '')
|
||||
{
|
||||
header('Content-Type: application/vnd.oasis.opendocument.spreadsheet');
|
||||
if ($filename != '') {
|
||||
header('Content-disposition: attachment;filename="' . addslashes($filename) . '"');
|
||||
}
|
||||
|
||||
echo $this->finishAndGetDocument();
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param array $cellAttributes
|
||||
* @param array $textAttributes
|
||||
*/
|
||||
protected function appendCellStyleNode($styleName, $cellAttributes, $textAttributes)
|
||||
{
|
||||
$node = $this->doc->createElementNS(static::NS_STYLE, "style");
|
||||
$node->setAttribute("style:name", $styleName);
|
||||
$node->setAttribute("style:family", 'table-cell');
|
||||
$node->setAttribute("style:parent-style-name", "Default");
|
||||
|
||||
if (count($cellAttributes) > 0) {
|
||||
$style = $this->doc->createElementNS(static::NS_STYLE, 'table-cell-properties');
|
||||
foreach ($cellAttributes as $att_name => $att_val) {
|
||||
$style->setAttribute($att_name, $att_val);
|
||||
}
|
||||
$node->appendChild($style);
|
||||
}
|
||||
if (count($textAttributes) > 0) {
|
||||
$style = $this->doc->createElementNS(static::NS_STYLE, 'text-properties');
|
||||
foreach ($textAttributes as $att_name => $att_val) {
|
||||
$style->setAttribute($att_name, $att_val);
|
||||
}
|
||||
$node->appendChild($style);
|
||||
}
|
||||
|
||||
foreach ($this->doc->getElementsByTagNameNS(static::NS_OFFICE, 'automatic-styles') as $element) {
|
||||
/** @var \DOMElement $element */
|
||||
$element->appendChild($node);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param array $attributes
|
||||
*/
|
||||
protected function appendColStyleNode($styleName, $attributes)
|
||||
{
|
||||
$this->appendStyleNode($styleName, 'table-column', 'table-column-properties', $attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $styleName
|
||||
* @param array $attributes
|
||||
*/
|
||||
protected function appendRowStyleNode($styleName, $attributes)
|
||||
{
|
||||
$this->appendStyleNode($styleName, 'table-row', 'table-row-properties', $attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $row
|
||||
*/
|
||||
protected function initRow($row)
|
||||
{
|
||||
if (!isset($this->matrix[$row])) {
|
||||
$this->matrix[$row] = [];
|
||||
}
|
||||
if ($row > $this->matrixRows) {
|
||||
$this->matrixRows = $row;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $row
|
||||
* @param string $col
|
||||
* @param int $contentType
|
||||
* @param string $content
|
||||
* @param null|string $cssClass
|
||||
* @param null|string $styles
|
||||
*/
|
||||
public function setCell($row, $col, $contentType, $content, $cssClass = null, $styles = null)
|
||||
{
|
||||
$this->initRow($row);
|
||||
if ($col > $this->matrixCols) {
|
||||
$this->matrixCols = $col;
|
||||
}
|
||||
$this->matrix[$row][$col] = [
|
||||
'type' => $contentType,
|
||||
'content' => $content,
|
||||
'class' => $cssClass,
|
||||
'styles' => $styles,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $col
|
||||
* @param float $widthInCm
|
||||
*/
|
||||
public function setColumnWidth($col, $widthInCm)
|
||||
{
|
||||
$this->matrixColWidths[$col] = $widthInCm;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $row
|
||||
* @param float $minHeightInCm
|
||||
*/
|
||||
public function setMinRowHeight($row, $minHeightInCm)
|
||||
{
|
||||
$this->initRow($row);
|
||||
$rowHeight = (isset($this->matrixRowHeights[$row]) ? $this->matrixRowHeights[$row] : 1);
|
||||
if ($minHeightInCm > $rowHeight) {
|
||||
$rowHeight = $minHeightInCm;
|
||||
}
|
||||
$this->matrixRowHeights[$row] = $rowHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DOMElement
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function getCleanDomTable()
|
||||
{
|
||||
$domTables = $this->doc->getElementsByTagNameNS(static::NS_TABLE, 'table');
|
||||
if ($domTables->length != 1) {
|
||||
throw new \Exception('Could not parse ODS template');
|
||||
}
|
||||
|
||||
$this->domTable = $domTables->item(0);
|
||||
|
||||
$children = $this->domTable->childNodes;
|
||||
for ($i = $children->length - 1; $i >= 0; $i--) {
|
||||
$this->domTable->removeChild($children->item($i));
|
||||
}
|
||||
return $this->domTable;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
protected function setColStyles()
|
||||
{
|
||||
for ($col = 0; $col <= $this->matrixCols; $col++) {
|
||||
$element = $this->doc->createElementNS(static::NS_TABLE, 'table-column');
|
||||
if (isset($this->matrixColWidths[$col])) {
|
||||
$element->setAttribute('table:style-name', 'Antragsgruen_col_' . $col);
|
||||
$this->appendColStyleNode('Antragsgruen_col_' . $col, [
|
||||
'style:column-width' => $this->matrixColWidths[$col] . 'cm',
|
||||
]);
|
||||
}
|
||||
$this->domTable->appendChild($element);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
protected function setCellContent()
|
||||
{
|
||||
for ($row = 0; $row <= $this->matrixRows; $row++) {
|
||||
$this->cellNodeMatrix[$row] = [];
|
||||
$currentRow = $this->doc->createElementNS(static::NS_TABLE, 'table-row');
|
||||
for ($col = 0; $col <= $this->matrixCols; $col++) {
|
||||
$this->cellNodeMatrix[$row][$col] = [];
|
||||
$currentCell = $this->doc->createElementNS(static::NS_TABLE, 'table-cell');
|
||||
if (isset($this->matrix[$row][$col])) {
|
||||
$cell = $this->matrix[$row][$col];
|
||||
switch ($cell["type"]) {
|
||||
case static::TYPE_TEXT:
|
||||
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
|
||||
$elementP->textContent = $cell['content'];
|
||||
$currentCell->appendChild($elementP);
|
||||
break;
|
||||
case static::TYPE_NUMBER:
|
||||
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
|
||||
$elementP->textContent = $cell['content'];
|
||||
$currentCell->appendChild($elementP);
|
||||
$currentCell->setAttribute('calcext:value-type', 'float');
|
||||
$currentCell->setAttribute('office:value-type', 'float');
|
||||
$currentCell->setAttribute('office:value', (string)$cell['content']);
|
||||
break;
|
||||
case static::TYPE_LINK:
|
||||
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
|
||||
$elementA = $this->doc->createElementNS(static::NS_TEXT, 'a');
|
||||
$elementA->setAttributeNS(static::NS_XLINK, 'xlink:href', $cell['content']['href']);
|
||||
$textNode = $this->doc->createTextNode($cell['content']['text']);
|
||||
$elementA->appendChild($textNode);
|
||||
$elementP->appendChild($elementA);
|
||||
$currentCell->appendChild($elementP);
|
||||
break;
|
||||
case static::TYPE_HTML:
|
||||
$nodes = $this->html2OdsNodes($cell['content']);
|
||||
foreach ($nodes as $node) {
|
||||
$currentCell->appendChild($node);
|
||||
}
|
||||
|
||||
//$this->setMinRowHeight($row, count($ps));
|
||||
$styles = $cell['styles'];
|
||||
if (isset($styles['fo:wrap-option']) && $styles['fo:wrap-option'] == 'no-wrap') {
|
||||
$wrap = 'no-wrap';
|
||||
$height = 1;
|
||||
} else {
|
||||
$wrap = 'wrap';
|
||||
$width = (isset($this->matrixColWidths[$col]) ? $this->matrixColWidths[$col] : 2);
|
||||
$height = (mb_strlen(strip_tags($this->matrix[$row][$col]['content'])) / ($width * 6));
|
||||
}
|
||||
$this->setCellStyle($row, $col, [
|
||||
'fo:wrap-option' => $wrap,
|
||||
], [
|
||||
'fo:hyphenate' => 'true',
|
||||
]);
|
||||
$this->setMinRowHeight($row, $height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$currentRow->appendChild($currentCell);
|
||||
$this->cellNodeMatrix[$row][$col] = $currentCell;
|
||||
}
|
||||
$this->domTable->appendChild($currentRow);
|
||||
$this->rowNodes[$row] = $currentRow;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $row
|
||||
* @param int $col
|
||||
* @param null|array $cellAttributes
|
||||
* @param null|array $textAttributes
|
||||
*/
|
||||
public function setCellStyle($row, $col, $cellAttributes, $textAttributes)
|
||||
{
|
||||
if (!isset($this->cellStylesMatrix[$row])) {
|
||||
$this->cellStylesMatrix[$row] = [];
|
||||
}
|
||||
if (!isset($this->cellStylesMatrix[$row][$col])) {
|
||||
$this->cellStylesMatrix[$row][$col] = ['cell' => [], 'text' => []];
|
||||
}
|
||||
if (is_array($cellAttributes)) {
|
||||
foreach ($cellAttributes as $key => $val) {
|
||||
$this->cellStylesMatrix[$row][$col]['cell'][$key] = $val;
|
||||
}
|
||||
}
|
||||
if (is_array($textAttributes)) {
|
||||
foreach ($textAttributes as $key => $val) {
|
||||
$this->cellStylesMatrix[$row][$col]['text'][$key] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function setCellStyles()
|
||||
{
|
||||
for ($row = 0; $row <= $this->matrixRows; $row++) {
|
||||
for ($col = 0; $col <= $this->matrixCols; $col++) {
|
||||
if (isset($this->cellStylesMatrix[$row]) && isset($this->cellStylesMatrix[$row][$col])) {
|
||||
$cell = $this->cellStylesMatrix[$row][$col];
|
||||
} else {
|
||||
$cell = ['cell' => [], 'text' => []];
|
||||
}
|
||||
|
||||
$styleId = 'Antragsgruen_cell_' . $row . '_' . $col;
|
||||
$cellStyles = array_merge([
|
||||
'style:vertical-align' => 'top'
|
||||
], $cell['cell']);
|
||||
$this->appendCellStyleNode($styleId, $cellStyles, $cell['text']);
|
||||
/** @var \DOMElement $currentCell */
|
||||
$currentCell = $this->cellNodeMatrix[$row][$col];
|
||||
$currentCell->setAttribute('table:style-name', $styleId);
|
||||
}
|
||||
}
|
||||
/*
|
||||
foreach ($this->cellStylesMatrix as $rowNr => $row) {
|
||||
foreach ($row as $colNr => $cell) {
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function setRowStyles()
|
||||
{
|
||||
foreach ($this->matrixRowHeights as $row => $height) {
|
||||
$styleName = 'Antragsgruen_row_' . $row;
|
||||
$this->appendRowStyleNode($styleName, [
|
||||
'style:row-height' => ($height * 0.45) . 'cm',
|
||||
]);
|
||||
|
||||
/** @var \DOMElement $node */
|
||||
$node = $this->rowNodes[$row];
|
||||
$node->setAttribute('table:style-name', $styleName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $fromRow
|
||||
* @param int $fromCol
|
||||
* @param int $toRow
|
||||
* @param int $toCol
|
||||
* @param float $width
|
||||
*/
|
||||
public function drawBorder($fromRow, $fromCol, $toRow, $toCol, $width)
|
||||
{
|
||||
for ($i = $fromRow; $i <= $toRow; $i++) {
|
||||
$this->setCellStyle($i, $fromCol, [
|
||||
'fo:border-left' => $width . 'pt solid #000000',
|
||||
], []);
|
||||
$this->setCellStyle($i, $toCol, [
|
||||
'fo:border-right' => $width . 'pt solid #000000',
|
||||
], []);
|
||||
}
|
||||
|
||||
for ($i = $fromCol; $i <= $toCol; $i++) {
|
||||
$this->setCellStyle($fromRow, $i, [
|
||||
'fo:border-top' => $width . 'pt solid #000000',
|
||||
], []);
|
||||
$this->setCellStyle($toRow, $i, [
|
||||
'fo:border-bottom' => $width . 'pt solid #000000',
|
||||
], []);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DOMElement $node
|
||||
* @param array $currentFormats
|
||||
* @return array
|
||||
*/
|
||||
protected function node2Formatting(\DOMElement $node, $currentFormats)
|
||||
{
|
||||
switch ($node->nodeName) {
|
||||
case 'b':
|
||||
case 'strong':
|
||||
$currentFormats[] = static::FORMAT_BOLD;
|
||||
break;
|
||||
case 'i':
|
||||
case 'em':
|
||||
$currentFormats[] = static::FORMAT_ITALIC;
|
||||
break;
|
||||
case 's':
|
||||
$currentFormats[] = static::FORMAT_STRIKE;
|
||||
break;
|
||||
case 'u':
|
||||
$currentFormats[] = static::FORMAT_UNDERLINED;
|
||||
break;
|
||||
case 'sub':
|
||||
$currentFormats[] = static::FORMAT_SUB;
|
||||
break;
|
||||
case 'sup':
|
||||
$currentFormats[] = static::FORMAT_SUP;
|
||||
break;
|
||||
case 'br':
|
||||
break;
|
||||
case 'p':
|
||||
case 'div':
|
||||
case 'blockquote':
|
||||
if ($node->hasAttribute('class')) {
|
||||
$classes = explode(' ', $node->getAttribute('class'));
|
||||
if (in_array('underline', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_UNDERLINED;
|
||||
}
|
||||
if (in_array('strike', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_STRIKE;
|
||||
}
|
||||
if (in_array('ins', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('inserted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('del', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
if (in_array('deleted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'ul':
|
||||
case 'ol':
|
||||
if ($node->hasAttribute('class')) {
|
||||
$classes = explode(' ', $node->getAttribute('class'));
|
||||
$currentFormats[] = static::FORMAT_INDENTED;
|
||||
if (in_array('ins', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('inserted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('del', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
if (in_array('deleted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'li':
|
||||
break;
|
||||
case 'del':
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
break;
|
||||
case 'ins':
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
break;
|
||||
case 'h1':
|
||||
case 'h2':
|
||||
case 'h3':
|
||||
case 'h4':
|
||||
case 'h5':
|
||||
case 'h6':
|
||||
$currentFormats[] = static::FORMAT_BOLD;
|
||||
break;
|
||||
case 'a':
|
||||
$currentFormats[] = static::FORMAT_LINK;
|
||||
try {
|
||||
$attr = $node->getAttribute('href');
|
||||
if ($attr) {
|
||||
$currentFormats['href'] = $attr;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
break;
|
||||
case 'span':
|
||||
default:
|
||||
if ($node->hasAttribute('class')) {
|
||||
$classes = explode(' ', $node->getAttribute('class'));
|
||||
if (in_array('underline', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_UNDERLINED;
|
||||
}
|
||||
if (in_array('strike', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_STRIKE;
|
||||
}
|
||||
if (in_array('ins', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('inserted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_INS;
|
||||
}
|
||||
if (in_array('del', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
if (in_array('deleted', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_DEL;
|
||||
}
|
||||
if (in_array('superscript', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_SUP;
|
||||
}
|
||||
if (in_array('subscript', $classes)) {
|
||||
$currentFormats[] = static::FORMAT_SUB;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $currentFormats;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DOMNode $node
|
||||
* @param array $currentFormats
|
||||
* @return array
|
||||
*/
|
||||
protected function tokenizeFlattenHtml(\DOMNode $node, $currentFormats)
|
||||
{
|
||||
$return = [];
|
||||
foreach ($node->childNodes as $child) {
|
||||
switch ($child->nodeType) {
|
||||
case XML_ELEMENT_NODE:
|
||||
/** @var \DOMElement $child */
|
||||
$formattings = $this->node2Formatting($child, $currentFormats);
|
||||
$children = $this->tokenizeFlattenHtml($child, $formattings);
|
||||
$return = array_merge($return, $children);
|
||||
if (in_array($child->nodeName, ['br', 'div', 'p', 'li', 'blockquote'])) {
|
||||
$return[] = [
|
||||
'text' => '',
|
||||
'formattings' => [static::FORMAT_LINEBREAK],
|
||||
];
|
||||
}
|
||||
if (in_array($child->nodeName, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])) {
|
||||
$return[] = [
|
||||
'text' => '',
|
||||
'formattings' => [static::FORMAT_LINEBREAK, static::FORMAT_BOLD],
|
||||
];
|
||||
}
|
||||
break;
|
||||
case XML_TEXT_NODE:
|
||||
/** @var \DOMText $child */
|
||||
$return[] = [
|
||||
'text' => $child->data,
|
||||
'formattings' => $currentFormats,
|
||||
];
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $formats
|
||||
* @return string
|
||||
*/
|
||||
protected function getClassByFormats($formats)
|
||||
{
|
||||
sort($formats);
|
||||
$key = implode('_', $formats);
|
||||
if (!isset($this->classCache[$key])) {
|
||||
$name = 'Antragsgruen';
|
||||
$styles = [];
|
||||
foreach ($formats as $format) {
|
||||
if (!isset(static::$FORMAT_NAMES[$format])) {
|
||||
continue;
|
||||
}
|
||||
$name .= '_' . static::$FORMAT_NAMES[$format];
|
||||
switch ($format) {
|
||||
case static::FORMAT_INS:
|
||||
$styles['fo:color'] = '#00ff00';
|
||||
$styles['style:text-underline-style'] = 'solid';
|
||||
$styles['style:text-underline-width'] = 'auto';
|
||||
$styles['style:text-underline-color'] = 'font-color';
|
||||
break;
|
||||
case static::FORMAT_DEL:
|
||||
$styles['fo:color'] = '#ff0000';
|
||||
$styles['style:text-line-through-type'] = 'single';
|
||||
break;
|
||||
case static::FORMAT_BOLD:
|
||||
$styles['fo:font-weight'] = 'bold';
|
||||
$styles['style:font-weight-asian'] = 'bold';
|
||||
$styles['style:font-weight-complex'] = 'bold';
|
||||
break;
|
||||
case static::FORMAT_UNDERLINED:
|
||||
$styles['style:text-underline-width'] = 'auto';
|
||||
$styles['style:text-underline-color'] = 'font-color';
|
||||
$styles['style:text-underline-style'] = 'solid';
|
||||
break;
|
||||
case static::FORMAT_STRIKE:
|
||||
$styles['style:text-line-through-type'] = 'single';
|
||||
break;
|
||||
case static::FORMAT_ITALIC:
|
||||
$styles['fo:font-style'] = 'italic';
|
||||
$styles['style:font-style-asian'] = 'italic';
|
||||
$styles['style:font-style-complex'] = 'italic';
|
||||
break;
|
||||
case static::FORMAT_SUP:
|
||||
$styles['fo:font-size'] = '10pt';
|
||||
$styles['style:text-position'] = '31%';
|
||||
break;
|
||||
case static::FORMAT_SUB:
|
||||
$styles['fo:font-size'] = '10pt';
|
||||
$styles['style:text-position'] = '-31%';
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->appendTextStyleNode($name, $styles);
|
||||
$this->classCache[$key] = $name;
|
||||
}
|
||||
return $this->classCache[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $html
|
||||
* @return array
|
||||
*/
|
||||
public function html2OdsNodes($html)
|
||||
{
|
||||
$body = $this->html2DOM($html);
|
||||
$tokens = $this->tokenizeFlattenHtml($body, []);
|
||||
$nodes = [];
|
||||
$currentP = $this->doc->createElementNS(static::NS_TEXT, 'p');
|
||||
foreach ($tokens as $token) {
|
||||
if (trim($token['text']) != '') {
|
||||
$node = $this->doc->createElement('text:span');
|
||||
if (count($token['formattings']) > 0) {
|
||||
$className = $this->getClassByFormats($token['formattings']);
|
||||
$node->setAttribute('text:style-name', $className);
|
||||
}
|
||||
$textNode = $this->doc->createTextNode($token['text']);
|
||||
$node->appendChild($textNode);
|
||||
$currentP->appendChild($node);
|
||||
}
|
||||
|
||||
if (in_array(static::FORMAT_LINEBREAK, $token['formattings'])) {
|
||||
$nodes[] = $currentP;
|
||||
$currentP = $this->doc->createElementNS(static::NS_TEXT, 'p');
|
||||
}
|
||||
}
|
||||
$nodes[] = $currentP;
|
||||
return $nodes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$this->getCleanDomTable();
|
||||
$this->setColStyles();
|
||||
$this->setCellContent();
|
||||
$this->setRowStyles();
|
||||
$this->setCellStyles();
|
||||
|
||||
$xml = $this->doc->saveXML();
|
||||
|
||||
$rows = explode("\n", $xml);
|
||||
$rows[0] .= "\n";
|
||||
return implode('', $rows) . "\n";
|
||||
}
|
||||
}
|
||||
583
assets/html2opendocument/Text.php
Normal file
|
|
@ -0,0 +1,583 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @link https://github.com/CatoTH/html2opendocument
|
||||
* @author Tobias Hößl <tobias@hoessl.eu>
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
namespace CatoTH\HTML2OpenDocument;
|
||||
|
||||
class Text extends Base
|
||||
{
|
||||
/** @var null|\DOMElement */
|
||||
private $nodeText = null;
|
||||
|
||||
/** @var bool */
|
||||
private $node_template_1_used = false;
|
||||
|
||||
/** @var string[] */
|
||||
private $replaces = [];
|
||||
|
||||
/** @var array */
|
||||
private $textBlocks = [];
|
||||
|
||||
const STYLE_INS = 'ins';
|
||||
const STYLE_DEL = 'del';
|
||||
|
||||
/**
|
||||
* @param array $options
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($options = [])
|
||||
{
|
||||
if (isset($options['templateFile']) && $options['templateFile'] != '') {
|
||||
$templateFile = $options['templateFile'];
|
||||
} else {
|
||||
$templateFile = __DIR__ . DIRECTORY_SEPARATOR . 'default-template.odt';
|
||||
}
|
||||
parent::__construct($templateFile, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filename
|
||||
*/
|
||||
public function finishAndOutputOdt($filename = '')
|
||||
{
|
||||
header('Content-Type: application/vnd.oasis.opendocument.text');
|
||||
if ($filename != '') {
|
||||
header('Content-disposition: attachment;filename="' . addslashes($filename) . '"');
|
||||
}
|
||||
|
||||
echo $this->finishAndGetDocument();
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $search
|
||||
* @param string $replace
|
||||
*/
|
||||
public function addReplace($search, $replace)
|
||||
{
|
||||
$this->replaces[$search] = $replace;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $html
|
||||
* @param bool $lineNumbered
|
||||
*/
|
||||
public function addHtmlTextBlock($html, $lineNumbered = false)
|
||||
{
|
||||
$this->textBlocks[] = ['text' => $html, 'lineNumbered' => $lineNumbered];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DOMElement $element
|
||||
* @return string[]
|
||||
*/
|
||||
protected static function getCSSClasses(\DOMElement $element)
|
||||
{
|
||||
if ($element->hasAttribute('class')) {
|
||||
return explode(' ', $element->getAttribute('class'));
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DOMElement $element
|
||||
* @param string[] $parentStyles
|
||||
* @return string[]
|
||||
*/
|
||||
protected static function getChildStyles(\DOMElement $element, $parentStyles = [])
|
||||
{
|
||||
$classes = static::getCSSClasses($element);
|
||||
$childStyles = $parentStyles;
|
||||
if (in_array('ins', $classes)) {
|
||||
$childStyles[] = static::STYLE_INS;
|
||||
}
|
||||
if (in_array('inserted', $classes)) {
|
||||
$childStyles[] = static::STYLE_INS;
|
||||
}
|
||||
if (in_array('del', $classes)) {
|
||||
$childStyles[] = static::STYLE_DEL;
|
||||
}
|
||||
if (in_array('deleted', $classes)) {
|
||||
$childStyles[] = static::STYLE_DEL;
|
||||
}
|
||||
return array_unique($childStyles);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $classes
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
protected static function cssClassesToInternalClass($classes)
|
||||
{
|
||||
if (in_array('underline', $classes)) {
|
||||
return 'AntragsgruenUnderlined';
|
||||
}
|
||||
if (in_array('strike', $classes)) {
|
||||
return 'AntragsgruenStrike';
|
||||
}
|
||||
if (in_array('ins', $classes)) {
|
||||
return 'AntragsgruenIns';
|
||||
}
|
||||
if (in_array('inserted', $classes)) {
|
||||
return 'AntragsgruenIns';
|
||||
}
|
||||
if (in_array('del', $classes)) {
|
||||
return 'AntragsgruenDel';
|
||||
}
|
||||
if (in_array('deleted', $classes)) {
|
||||
return 'AntragsgruenDel';
|
||||
}
|
||||
if (in_array('superscript', $classes)) {
|
||||
return 'AntragsgruenSup';
|
||||
}
|
||||
if (in_array('subscript', $classes)) {
|
||||
return 'AntragsgruenSub';
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps all child nodes with text:p nodes, if necessary
|
||||
* (it's not necessary for child nodes that are p's themselves or lists)
|
||||
*
|
||||
* @param \DOMElement $parentEl
|
||||
* @param boolean $lineNumbered
|
||||
*
|
||||
* @return \DOMElement
|
||||
*/
|
||||
protected function wrapChildrenWithP(\DOMElement $parentEl, $lineNumbered)
|
||||
{
|
||||
$childNodes = [];
|
||||
while ($parentEl->childNodes->length > 0) {
|
||||
$el = $parentEl->firstChild;
|
||||
$parentEl->removeChild($el);
|
||||
$childNodes[] = $el;
|
||||
}
|
||||
|
||||
$appendNode = null;
|
||||
foreach ($childNodes as $childNode) {
|
||||
if (in_array(strtolower($childNode->nodeName), ['p', 'list'])) {
|
||||
if ($appendNode) {
|
||||
$parentEl->appendChild($appendNode);
|
||||
$appendNode = null;
|
||||
}
|
||||
$parentEl->appendChild($childNode);
|
||||
} else {
|
||||
if (!$appendNode) {
|
||||
$appendNode = $this->getNextNodeTemplate($lineNumbered);
|
||||
}
|
||||
$appendNode->appendChild($childNode);
|
||||
}
|
||||
}
|
||||
if ($appendNode) {
|
||||
$parentEl->appendChild($appendNode);
|
||||
}
|
||||
|
||||
return $parentEl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DOMNode $srcNode
|
||||
* @param bool $lineNumbered
|
||||
* @param bool $inP
|
||||
* @param string[] $parentStyles
|
||||
*
|
||||
* @return \DOMNode[]
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function html2ooNodeInt($srcNode, $lineNumbered, $inP, $parentStyles = [])
|
||||
{
|
||||
switch ($srcNode->nodeType) {
|
||||
case XML_ELEMENT_NODE:
|
||||
/** @var \DOMElement $srcNode */
|
||||
if ($this->DEBUG) {
|
||||
echo "Element - " . $srcNode->nodeName . " / Children: " . $srcNode->childNodes->length . "<br>";
|
||||
}
|
||||
$needsIntermediateP = false;
|
||||
$childStyles = static::getChildStyles($srcNode, $parentStyles);
|
||||
switch ($srcNode->nodeName) {
|
||||
case 'b':
|
||||
case 'strong':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenBold');
|
||||
break;
|
||||
case 'i':
|
||||
case 'em':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenItalic');
|
||||
break;
|
||||
case 's':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenStrike');
|
||||
break;
|
||||
case 'u':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenUnderlined');
|
||||
break;
|
||||
case 'sub':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenSub');
|
||||
break;
|
||||
case 'sup':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenSup');
|
||||
break;
|
||||
case 'br':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'line-break');
|
||||
break;
|
||||
case 'del':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenDel');
|
||||
break;
|
||||
case 'ins':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenIns');
|
||||
break;
|
||||
case 'a':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'a');
|
||||
try {
|
||||
$attr = $srcNode->getAttribute('href');
|
||||
if ($attr) {
|
||||
$dstEl->setAttribute('xlink:href', $attr);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
if ($inP) {
|
||||
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
|
||||
} else {
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
}
|
||||
$intClass = static::cssClassesToInternalClass(static::getCSSClasses($srcNode));
|
||||
if ($intClass) {
|
||||
$dstEl->setAttribute('text:style-name', $intClass);
|
||||
}
|
||||
$inP = true;
|
||||
break;
|
||||
case 'div':
|
||||
// We're basically ignoring DIVs here, as there is no corresponding element in OpenDocument
|
||||
// Therefore no support for styles and classes set on DIVs yet.
|
||||
$dstEl = null;
|
||||
break;
|
||||
case 'blockquote':
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
$class = ($lineNumbered ? 'Blockquote_Linenumbered' : 'Blockquote');
|
||||
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_' . $class);
|
||||
if ($srcNode->childNodes->length == 1) {
|
||||
foreach ($srcNode->childNodes as $child) {
|
||||
if ($child->nodeName == 'p') {
|
||||
$srcNode = $child;
|
||||
}
|
||||
}
|
||||
}
|
||||
$inP = true;
|
||||
break;
|
||||
case 'ul':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list');
|
||||
break;
|
||||
case 'ol':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list');
|
||||
break;
|
||||
case 'li':
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list-item');
|
||||
$needsIntermediateP = true;
|
||||
$inP = true;
|
||||
break;
|
||||
case 'h1':
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H1');
|
||||
$inP = true;
|
||||
break;
|
||||
case 'h2':
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H2');
|
||||
$inP = true;
|
||||
break;
|
||||
case 'h3':
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H3');
|
||||
$inP = true;
|
||||
break;
|
||||
case 'h4':
|
||||
case 'h5':
|
||||
case 'h6':
|
||||
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H4');
|
||||
$inP = true;
|
||||
break;
|
||||
case 'span':
|
||||
default:
|
||||
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
|
||||
$intClass = static::cssClassesToInternalClass(static::getCSSClasses($srcNode));
|
||||
if ($intClass) {
|
||||
$dstEl->setAttribute('text:style-name', $intClass);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if ($dstEl === null) {
|
||||
$ret = [];
|
||||
foreach ($srcNode->childNodes as $child) {
|
||||
/** @var \DOMNode $child */
|
||||
if ($this->DEBUG) {
|
||||
echo "CHILD<br>" . $child->nodeType . "<br>";
|
||||
}
|
||||
|
||||
$dstNodes = $this->html2ooNodeInt($child, $lineNumbered, $inP, $childStyles);
|
||||
foreach ($dstNodes as $dstNode) {
|
||||
$ret[] = $dstNode;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
foreach ($srcNode->childNodes as $child) {
|
||||
/** @var \DOMNode $child */
|
||||
if ($this->DEBUG) {
|
||||
echo "CHILD<br>" . $child->nodeType . "<br>";
|
||||
}
|
||||
|
||||
$dstNodes = $this->html2ooNodeInt($child, $lineNumbered, $inP, $childStyles);
|
||||
foreach ($dstNodes as $dstNode) {
|
||||
$dstEl->appendChild($dstNode);
|
||||
}
|
||||
}
|
||||
|
||||
if ($needsIntermediateP && $dstEl->childNodes->length > 0) {
|
||||
$dstEl = static::wrapChildrenWithP($dstEl, $lineNumbered);
|
||||
}
|
||||
return [$dstEl];
|
||||
case XML_TEXT_NODE:
|
||||
/** @var \DOMText $srcNode */
|
||||
$textnode = new \DOMText();
|
||||
$textnode->data = $srcNode->data;
|
||||
if ($this->DEBUG) {
|
||||
echo 'Text<br>';
|
||||
}
|
||||
if (in_array(static::STYLE_DEL, $parentStyles)) {
|
||||
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenDel');
|
||||
$dstEl->appendChild($textnode);
|
||||
$textnode = $dstEl;
|
||||
}
|
||||
if (in_array(static::STYLE_INS, $parentStyles)) {
|
||||
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
|
||||
$dstEl->setAttribute('text:style-name', 'AntragsgruenIns');
|
||||
$dstEl->appendChild($textnode);
|
||||
$textnode = $dstEl;
|
||||
}
|
||||
return [$textnode];
|
||||
break;
|
||||
case XML_DOCUMENT_TYPE_NODE:
|
||||
if ($this->DEBUG) {
|
||||
echo 'Type Node<br>';
|
||||
}
|
||||
return [];
|
||||
default:
|
||||
if ($this->DEBUG) {
|
||||
echo 'Unknown Node: ' . $srcNode->nodeType . '<br>';
|
||||
}
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $html
|
||||
* @param bool $lineNumbered
|
||||
*
|
||||
* @return \DOMNode[]
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function html2ooNodes($html, $lineNumbered)
|
||||
{
|
||||
if (!is_string($html)) {
|
||||
echo print_r($html, true);
|
||||
echo print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), true);
|
||||
die();
|
||||
}
|
||||
|
||||
$body = $this->html2DOM($html);
|
||||
|
||||
$retNodes = [];
|
||||
for ($i = 0; $i < $body->childNodes->length; $i++) {
|
||||
$child = $body->childNodes->item($i);
|
||||
|
||||
/** @var \DOMNode $child */
|
||||
if ($child->nodeName == 'ul') {
|
||||
// Alle anderen Nodes dieses Aufrufs werden ignoriert
|
||||
if ($this->DEBUG) {
|
||||
echo 'LIST<br>';
|
||||
}
|
||||
$recNewNodes = $this->html2ooNodeInt($child, $lineNumbered, false);
|
||||
} else {
|
||||
if ($child->nodeType == XML_TEXT_NODE) {
|
||||
$new_node = $this->getNextNodeTemplate($lineNumbered);
|
||||
/** @var \DOMText $child */
|
||||
if ($this->DEBUG) {
|
||||
echo $child->nodeName . ' - ' . htmlentities($child->data, ENT_COMPAT, 'UTF-8') . '<br>';
|
||||
}
|
||||
$text = new \DOMText();
|
||||
$text->data = $child->data;
|
||||
$new_node->appendChild($text);
|
||||
$recNewNodes = [$new_node];
|
||||
} else {
|
||||
if ($this->DEBUG) {
|
||||
echo $child->nodeName . '!!!!!!!!!!!!<br>';
|
||||
}
|
||||
$recNewNodes = $this->html2ooNodeInt($child, $lineNumbered, false);
|
||||
}
|
||||
}
|
||||
foreach ($recNewNodes as $recNewNode) {
|
||||
$retNodes[] = $recNewNode;
|
||||
}
|
||||
}
|
||||
|
||||
return $retNodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$this->appendTextStyleNode('AntragsgruenBold', [
|
||||
'fo:font-weight' => 'bold',
|
||||
'style:font-weight-asian' => 'bold',
|
||||
'style:font-weight-complex' => 'bold',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenItalic', [
|
||||
'fo:font-style' => 'italic',
|
||||
'style:font-style-asian' => 'italic',
|
||||
'style:font-style-complex' => 'italic',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenUnderlined', [
|
||||
'style:text-underline-width' => 'auto',
|
||||
'style:text-underline-color' => 'font-color',
|
||||
'style:text-underline-style' => 'solid',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenStrike', [
|
||||
'style:text-line-through-style' => 'solid',
|
||||
'style:text-line-through-type' => 'single',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenIns', [
|
||||
'fo:color' => '#008800',
|
||||
'style:text-underline-style' => 'solid',
|
||||
'style:text-underline-width' => 'auto',
|
||||
'style:text-underline-color' => 'font-color',
|
||||
'fo:font-weight' => 'bold',
|
||||
'style:font-weight-asian' => 'bold',
|
||||
'style:font-weight-complex' => 'bold',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenDel', [
|
||||
'fo:color' => '#880000',
|
||||
'style:text-line-through-style' => 'solid',
|
||||
'style:text-line-through-type' => 'single',
|
||||
'fo:font-style' => 'italic',
|
||||
'style:font-style-asian' => 'italic',
|
||||
'style:font-style-complex' => 'italic',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenSub', [
|
||||
'style:text-position' => 'sub 58%',
|
||||
]);
|
||||
$this->appendTextStyleNode('AntragsgruenSup', [
|
||||
'style:text-position' => 'super 58%',
|
||||
]);
|
||||
|
||||
/** @var \DOMNode[] $nodes */
|
||||
$nodes = [];
|
||||
foreach ($this->doc->getElementsByTagNameNS(static::NS_TEXT, 'span') as $element) {
|
||||
$nodes[] = $element;
|
||||
}
|
||||
foreach ($this->doc->getElementsByTagNameNS(static::NS_TEXT, 'p') as $element) {
|
||||
$nodes[] = $element;
|
||||
}
|
||||
|
||||
|
||||
$searchFor = array_keys($this->replaces);
|
||||
$replaceWith = array_values($this->replaces);
|
||||
foreach ($nodes as $node) {
|
||||
$children = $node->childNodes;
|
||||
foreach ($children as $child) {
|
||||
if ($child->nodeType == XML_TEXT_NODE) {
|
||||
/** @var \DOMText $child */
|
||||
$child->data = preg_replace($searchFor, $replaceWith, $child->data);
|
||||
|
||||
if (preg_match("/\{\{ANTRAGSGRUEN:DUMMY\}\}/siu", $child->data)) {
|
||||
$node->parentNode->removeChild($node);
|
||||
}
|
||||
if (preg_match("/\{\{ANTRAGSGRUEN:TEXT\}\}/siu", $child->data)) {
|
||||
$this->nodeText = $node;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($this->textBlocks as $textBlock) {
|
||||
$newNodes = $this->html2ooNodes($textBlock['text'], $textBlock['lineNumbered']);
|
||||
foreach ($newNodes as $newNode) {
|
||||
$this->nodeText->parentNode->insertBefore($newNode, $this->nodeText);
|
||||
}
|
||||
}
|
||||
|
||||
$this->nodeText->parentNode->removeChild($this->nodeText);
|
||||
|
||||
return $this->doc->saveXML();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $lineNumbers
|
||||
*
|
||||
* @return \DOMNode
|
||||
*/
|
||||
protected function getNextNodeTemplate($lineNumbers)
|
||||
{
|
||||
$node = $this->nodeText->cloneNode();
|
||||
/** @var \DOMElement $node */
|
||||
if ($lineNumbers) {
|
||||
if ($this->node_template_1_used) {
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_Standard');
|
||||
} else {
|
||||
$this->node_template_1_used = true;
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_First');
|
||||
}
|
||||
} else {
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_Standard');
|
||||
}
|
||||
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $nodeType
|
||||
* @param bool $lineNumbers
|
||||
*
|
||||
* @return \DOMElement|\DOMNode
|
||||
*/
|
||||
protected function createNodeWithBaseStyle($nodeType, $lineNumbers)
|
||||
{
|
||||
$node = $this->doc->createElementNS(static::NS_TEXT, $nodeType);
|
||||
if ($lineNumbers) {
|
||||
if ($this->node_template_1_used) {
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_Standard');
|
||||
} else {
|
||||
$this->node_template_1_used = true;
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_First');
|
||||
}
|
||||
} else {
|
||||
$node->setAttribute('text:style-name', 'Antragsgrün_20_Standard');
|
||||
}
|
||||
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
30
assets/html2opendocument/composer.json
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"name": "catoth/html2opendocument",
|
||||
"description": "Converting simple HTML to Opendocument Text (ODT) or Spreadsheets (ODS)",
|
||||
"type": "library",
|
||||
"minimum-stability": "stable",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"opendocument",
|
||||
"html",
|
||||
"odt",
|
||||
"ods"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tobias Hößl",
|
||||
"email": "tobias@hoessl.eu"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.5.0",
|
||||
"ext-zip": "*",
|
||||
"ext-dom": "*",
|
||||
"ezyang/htmlpurifier": "*"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"CatoTH\\HTML2OpenDocument\\": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
assets/html2opendocument/default-template-with-replaces.odt
Normal file
BIN
assets/html2opendocument/default-template.ods
Normal file
BIN
assets/html2opendocument/default-template.odt
Normal file
50
assets/html2opendocument/demo2.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
use CatoTH\HTML2OpenDocument\Spreadsheet;
|
||||
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor/autoload.php');
|
||||
|
||||
|
||||
$ods = new \CatoTH\HTML2OpenDocument\Spreadsheet();
|
||||
|
||||
// Plain text
|
||||
$ods->setCell(0, 0, Spreadsheet::TYPE_TEXT, 'Plain text with native formatting');
|
||||
$ods->setCellStyle(0, 0, [], ['fo:font-weight' => 'bold']);
|
||||
|
||||
// Print a number as an actual number, just a little bit bigger
|
||||
$ods->setCell(1, 0, Spreadsheet::TYPE_NUMBER, 23);
|
||||
$ods->setCellStyle(1, 0, [], [
|
||||
'fo:font-size' => '16pt',
|
||||
'fo:font-weight' => 'bold',
|
||||
]);
|
||||
$ods->setMinRowHeight(1, 1.5);
|
||||
|
||||
// Print a number as text
|
||||
$ods->setCell(2, 0, Spreadsheet::TYPE_TEXT, '42');
|
||||
|
||||
// Draw a border around two of the cells
|
||||
$ods->drawBorder(1, 0, 2, 0, 1);
|
||||
|
||||
|
||||
// Now we use HTML, and we need a bit more space for that
|
||||
$html = '<p>The converter supports the following styles:</p>
|
||||
<ul>
|
||||
<li><strong>STRONG</strong></li>
|
||||
<li><u>U</u> (underlined)</li>
|
||||
<li><s>S</s> (strike-through)</li>
|
||||
<li><em>EM</em> (emphasis / italic)</li>
|
||||
<li><ins>Inserted text</ins></li>
|
||||
<li><del>Deleted text</del></li>
|
||||
<li>Line<br>breaks with BR</li>
|
||||
<li>Lists (UL / OL) cannot be displayed as lists, but will be flattened to paragraphs</li>
|
||||
</ul>
|
||||
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
|
||||
|
||||
$ods->setMinRowHeight(3, 10);
|
||||
$ods->setColumnWidth(1, 20);
|
||||
$ods->setCell(3, 1, Spreadsheet::TYPE_HTML, $html);
|
||||
|
||||
|
||||
$ods->finishAndOutputOds('demo.ods');
|
||||
|
||||
?>
|
||||
9
assets/htmlpurifier/CREDITS
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
CREDITS
|
||||
|
||||
Almost everything written by Edward Z. Yang (Ambush Commander). Lots of thanks
|
||||
to the DevNetwork Community for their help (see docs/ref-devnetwork.html for
|
||||
more details), Feyd especially (namely IPv6 and optimization). Thanks to RSnake
|
||||
for letting me package his fantastic XSS cheatsheet for a smoketest.
|
||||
|
||||
vim: et sw=4 sts=4
|
||||
373
assets/htmlpurifier/INSTALL
Normal file
|
|
@ -0,0 +1,373 @@
|
|||
|
||||
Install
|
||||
How to install HTML Purifier
|
||||
|
||||
HTML Purifier is designed to run out of the box, so actually using the
|
||||
library is extremely easy. (Although... if you were looking for a
|
||||
step-by-step installation GUI, you've downloaded the wrong software!)
|
||||
|
||||
While the impatient can get going immediately with some of the sample
|
||||
code at the bottom of this library, it's well worth reading this entire
|
||||
document--most of the other documentation assumes that you are familiar
|
||||
with these contents.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
1. Compatibility
|
||||
|
||||
HTML Purifier is PHP 5 and PHP 7, and is actively tested from PHP 5.0.5
|
||||
and up. It has no core dependencies with other libraries.
|
||||
|
||||
These optional extensions can enhance the capabilities of HTML Purifier:
|
||||
|
||||
* iconv : Converts text to and from non-UTF-8 encodings
|
||||
* bcmath : Used for unit conversion and imagecrash protection
|
||||
* tidy : Used for pretty-printing HTML
|
||||
|
||||
These optional libraries can enhance the capabilities of HTML Purifier:
|
||||
|
||||
* CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks
|
||||
Note: You should use the modernized fork of CSSTidy available
|
||||
at https://github.com/Cerdic/CSSTidy
|
||||
* Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA
|
||||
Note: This is not necessary for PHP 5.3 or later
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
2. Reconnaissance
|
||||
|
||||
A big plus of HTML Purifier is its inerrant support of standards, so
|
||||
your web-pages should be standards-compliant. (They should also use
|
||||
semantic markup, but that's another issue altogether, one HTML Purifier
|
||||
cannot fix without reading your mind.)
|
||||
|
||||
HTML Purifier can process these doctypes:
|
||||
|
||||
* XHTML 1.0 Transitional (default)
|
||||
* XHTML 1.0 Strict
|
||||
* HTML 4.01 Transitional
|
||||
* HTML 4.01 Strict
|
||||
* XHTML 1.1
|
||||
|
||||
...and these character encodings:
|
||||
|
||||
* UTF-8 (default)
|
||||
* Any encoding iconv supports (with crippled internationalization support)
|
||||
|
||||
These defaults reflect what my choices would be if I were authoring an
|
||||
HTML document, however, what you choose depends on the nature of your
|
||||
codebase. If you don't know what doctype you are using, you can determine
|
||||
the doctype from this identifier at the top of your source code:
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
...and the character encoding from this code:
|
||||
|
||||
<meta http-equiv="Content-type" content="text/html;charset=ENCODING">
|
||||
|
||||
If the character encoding declaration is missing, STOP NOW, and
|
||||
read 'docs/enduser-utf8.html' (web accessible at
|
||||
http://htmlpurifier.org/docs/enduser-utf8.html). In fact, even if it is
|
||||
present, read this document anyway, as many websites specify their
|
||||
document's character encoding incorrectly.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
3. Including the library
|
||||
|
||||
The procedure is quite simple:
|
||||
|
||||
require_once '/path/to/library/HTMLPurifier.auto.php';
|
||||
|
||||
This will setup an autoloader, so the library's files are only included
|
||||
when you use them.
|
||||
|
||||
Only the contents in the library/ folder are necessary, so you can remove
|
||||
everything else when using HTML Purifier in a production environment.
|
||||
|
||||
If you installed HTML Purifier via PEAR, all you need to do is:
|
||||
|
||||
require_once 'HTMLPurifier.auto.php';
|
||||
|
||||
Please note that the usual PEAR practice of including just the classes you
|
||||
want will not work with HTML Purifier's autoloading scheme.
|
||||
|
||||
Advanced users, read on; other users can skip to section 4.
|
||||
|
||||
Autoload compatibility
|
||||
----------------------
|
||||
|
||||
HTML Purifier attempts to be as smart as possible when registering an
|
||||
autoloader, but there are some cases where you will need to change
|
||||
your own code to accomodate HTML Purifier. These are those cases:
|
||||
|
||||
PHP VERSION IS LESS THAN 5.1.2, AND YOU'VE DEFINED __autoload
|
||||
Because spl_autoload_register() doesn't exist in early versions
|
||||
of PHP 5, HTML Purifier has no way of adding itself to the autoload
|
||||
stack. Modify your __autoload function to test
|
||||
HTMLPurifier_Bootstrap::autoload($class)
|
||||
|
||||
For example, suppose your autoload function looks like this:
|
||||
|
||||
function __autoload($class) {
|
||||
require str_replace('_', '/', $class) . '.php';
|
||||
return true;
|
||||
}
|
||||
|
||||
A modified version with HTML Purifier would look like this:
|
||||
|
||||
function __autoload($class) {
|
||||
if (HTMLPurifier_Bootstrap::autoload($class)) return true;
|
||||
require str_replace('_', '/', $class) . '.php';
|
||||
return true;
|
||||
}
|
||||
|
||||
Note that there *is* some custom behavior in our autoloader; the
|
||||
original autoloader in our example would work for 99% of the time,
|
||||
but would fail when including language files.
|
||||
|
||||
AN __autoload FUNCTION IS DECLARED AFTER OUR AUTOLOADER IS REGISTERED
|
||||
spl_autoload_register() has the curious behavior of disabling
|
||||
the existing __autoload() handler. Users need to explicitly
|
||||
spl_autoload_register('__autoload'). Because we use SPL when it
|
||||
is available, __autoload() will ALWAYS be disabled. If __autoload()
|
||||
is declared before HTML Purifier is loaded, this is not a problem:
|
||||
HTML Purifier will register the function for you. But if it is
|
||||
declared afterwards, it will mysteriously not work. This
|
||||
snippet of code (after your autoloader is defined) will fix it:
|
||||
|
||||
spl_autoload_register('__autoload')
|
||||
|
||||
Users should also be on guard if they use a version of PHP previous
|
||||
to 5.1.2 without an autoloader--HTML Purifier will define __autoload()
|
||||
for you, which can collide with an autoloader that was added by *you*
|
||||
later.
|
||||
|
||||
|
||||
For better performance
|
||||
----------------------
|
||||
|
||||
Opcode caches, which greatly speed up PHP initialization for scripts
|
||||
with large amounts of code (HTML Purifier included), don't like
|
||||
autoloaders. We offer an include file that includes all of HTML Purifier's
|
||||
files in one go in an opcode cache friendly manner:
|
||||
|
||||
// If /path/to/library isn't already in your include path, uncomment
|
||||
// the below line:
|
||||
// require '/path/to/library/HTMLPurifier.path.php';
|
||||
|
||||
require 'HTMLPurifier.includes.php';
|
||||
|
||||
Optional components still need to be included--you'll know if you try to
|
||||
use a feature and you get a class doesn't exists error! The autoloader
|
||||
can be used in conjunction with this approach to catch classes that are
|
||||
missing. Simply add this afterwards:
|
||||
|
||||
require 'HTMLPurifier.autoload.php';
|
||||
|
||||
Standalone version
|
||||
------------------
|
||||
|
||||
HTML Purifier has a standalone distribution; you can also generate
|
||||
a standalone file from the full version by running the script
|
||||
maintenance/generate-standalone.php . The standalone version has the
|
||||
benefit of having most of its code in one file, so parsing is much
|
||||
faster and the library is easier to manage.
|
||||
|
||||
If HTMLPurifier.standalone.php exists in the library directory, you
|
||||
can use it like this:
|
||||
|
||||
require '/path/to/HTMLPurifier.standalone.php';
|
||||
|
||||
This is equivalent to including HTMLPurifier.includes.php, except that
|
||||
the contents of standalone/ will be added to your path. To override this
|
||||
behavior, specify a new HTMLPURIFIER_PREFIX where standalone files can
|
||||
be found (usually, this will be one directory up, the "true" library
|
||||
directory in full distributions). Don't forget to set your path too!
|
||||
|
||||
The autoloader can be added to the end to ensure the classes are
|
||||
loaded when necessary; otherwise you can manually include them.
|
||||
To use the autoloader, use this:
|
||||
|
||||
require 'HTMLPurifier.autoload.php';
|
||||
|
||||
For advanced users
|
||||
------------------
|
||||
|
||||
HTMLPurifier.auto.php performs a number of operations that can be done
|
||||
individually. These are:
|
||||
|
||||
HTMLPurifier.path.php
|
||||
Puts /path/to/library in the include path. For high performance,
|
||||
this should be done in php.ini.
|
||||
|
||||
HTMLPurifier.autoload.php
|
||||
Registers our autoload handler HTMLPurifier_Bootstrap::autoload($class).
|
||||
|
||||
You can do these operations by yourself--in fact, you must modify your own
|
||||
autoload handler if you are using a version of PHP earlier than PHP 5.1.2
|
||||
(See "Autoload compatibility" above).
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
4. Configuration
|
||||
|
||||
HTML Purifier is designed to run out-of-the-box, but occasionally HTML
|
||||
Purifier needs to be told what to do. If you answer no to any of these
|
||||
questions, read on; otherwise, you can skip to the next section (or, if you're
|
||||
into configuring things just for the heck of it, skip to 4.3).
|
||||
|
||||
* Am I using UTF-8?
|
||||
* Am I using XHTML 1.0 Transitional?
|
||||
|
||||
If you answered no to any of these questions, instantiate a configuration
|
||||
object and read on:
|
||||
|
||||
$config = HTMLPurifier_Config::createDefault();
|
||||
|
||||
|
||||
4.1. Setting a different character encoding
|
||||
|
||||
You really shouldn't use any other encoding except UTF-8, especially if you
|
||||
plan to support multilingual websites (read section three for more details).
|
||||
However, switching to UTF-8 is not always immediately feasible, so we can
|
||||
adapt.
|
||||
|
||||
HTML Purifier uses iconv to support other character encodings, as such,
|
||||
any encoding that iconv supports <http://www.gnu.org/software/libiconv/>
|
||||
HTML Purifier supports with this code:
|
||||
|
||||
$config->set('Core.Encoding', /* put your encoding here */);
|
||||
|
||||
An example usage for Latin-1 websites (the most common encoding for English
|
||||
websites):
|
||||
|
||||
$config->set('Core.Encoding', 'ISO-8859-1');
|
||||
|
||||
Note that HTML Purifier's support for non-Unicode encodings is crippled by the
|
||||
fact that any character not supported by that encoding will be silently
|
||||
dropped, EVEN if it is ampersand escaped. If you want to work around
|
||||
this, you are welcome to read docs/enduser-utf8.html for a fix,
|
||||
but please be cognizant of the issues the "solution" creates (for this
|
||||
reason, I do not include the solution in this document).
|
||||
|
||||
|
||||
4.2. Setting a different doctype
|
||||
|
||||
For those of you using HTML 4.01 Transitional, you can disable
|
||||
XHTML output like this:
|
||||
|
||||
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
|
||||
|
||||
Other supported doctypes include:
|
||||
|
||||
* HTML 4.01 Strict
|
||||
* HTML 4.01 Transitional
|
||||
* XHTML 1.0 Strict
|
||||
* XHTML 1.0 Transitional
|
||||
* XHTML 1.1
|
||||
|
||||
|
||||
4.3. Other settings
|
||||
|
||||
There are more configuration directives which can be read about
|
||||
here: <http://htmlpurifier.org/live/configdoc/plain.html> They're a bit boring,
|
||||
but they can help out for those of you who like to exert maximum control over
|
||||
your code. Some of the more interesting ones are configurable at the
|
||||
demo <http://htmlpurifier.org/demo.php> and are well worth looking into
|
||||
for your own system.
|
||||
|
||||
For example, you can fine tune allowed elements and attributes, convert
|
||||
relative URLs to absolute ones, and even autoparagraph input text! These
|
||||
are, respectively, %HTML.Allowed, %URI.MakeAbsolute and %URI.Base, and
|
||||
%AutoFormat.AutoParagraph. The %Namespace.Directive naming convention
|
||||
translates to:
|
||||
|
||||
$config->set('Namespace.Directive', $value);
|
||||
|
||||
E.g.
|
||||
|
||||
$config->set('HTML.Allowed', 'p,b,a[href],i');
|
||||
$config->set('URI.Base', 'http://www.example.com');
|
||||
$config->set('URI.MakeAbsolute', true);
|
||||
$config->set('AutoFormat.AutoParagraph', true);
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
5. Caching
|
||||
|
||||
HTML Purifier generates some cache files (generally one or two) to speed up
|
||||
its execution. For maximum performance, make sure that
|
||||
library/HTMLPurifier/DefinitionCache/Serializer is writeable by the webserver.
|
||||
|
||||
If you are in the library/ folder of HTML Purifier, you can set the
|
||||
appropriate permissions using:
|
||||
|
||||
chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer
|
||||
|
||||
If the above command doesn't work, you may need to assign write permissions
|
||||
to group:
|
||||
|
||||
chmod -R 0775 HTMLPurifier/DefinitionCache/Serializer
|
||||
|
||||
You can also chmod files via your FTP client; this option
|
||||
is usually accessible by right clicking the corresponding directory and
|
||||
then selecting "chmod" or "file permissions".
|
||||
|
||||
Starting with 2.0.1, HTML Purifier will generate friendly error messages
|
||||
that will tell you exactly what you have to chmod the directory to, if in doubt,
|
||||
follow its advice.
|
||||
|
||||
If you are unable or unwilling to give write permissions to the cache
|
||||
directory, you can either disable the cache (and suffer a performance
|
||||
hit):
|
||||
|
||||
$config->set('Core.DefinitionCache', null);
|
||||
|
||||
Or move the cache directory somewhere else (no trailing slash):
|
||||
|
||||
$config->set('Cache.SerializerPath', '/home/user/absolute/path');
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
6. Using the code
|
||||
|
||||
The interface is mind-numbingly simple:
|
||||
|
||||
$purifier = new HTMLPurifier($config);
|
||||
$clean_html = $purifier->purify( $dirty_html );
|
||||
|
||||
That's it! For more examples, check out docs/examples/ (they aren't very
|
||||
different though). Also, docs/enduser-slow.html gives advice on what to
|
||||
do if HTML Purifier is slowing down your application.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
7. Quick install
|
||||
|
||||
First, make sure library/HTMLPurifier/DefinitionCache/Serializer is
|
||||
writable by the webserver (see Section 5: Caching above for details).
|
||||
If your website is in UTF-8 and XHTML Transitional, use this code:
|
||||
|
||||
<?php
|
||||
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
|
||||
|
||||
$config = HTMLPurifier_Config::createDefault();
|
||||
$purifier = new HTMLPurifier($config);
|
||||
$clean_html = $purifier->purify($dirty_html);
|
||||
?>
|
||||
|
||||
If your website is in a different encoding or doctype, use this code:
|
||||
|
||||
<?php
|
||||
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
|
||||
|
||||
$config = HTMLPurifier_Config::createDefault();
|
||||
$config->set('Core.Encoding', 'ISO-8859-1'); // replace with your encoding
|
||||
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
|
||||
$purifier = new HTMLPurifier($config);
|
||||
|
||||
$clean_html = $purifier->purify($dirty_html);
|
||||
?>
|
||||
|
||||
vim: et sw=4 sts=4
|
||||
504
assets/htmlpurifier/LICENSE
Normal file
|
|
@ -0,0 +1,504 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
vim: et sw=4 sts=4
|
||||
1176
assets/htmlpurifier/NEWS
Normal file
11
assets/htmlpurifier/library/HTMLPurifier.auto.php
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This is a stub include that automatically configures the include path.
|
||||
*/
|
||||
|
||||
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
|
||||
require_once 'HTMLPurifier/Bootstrap.php';
|
||||
require_once 'HTMLPurifier.autoload.php';
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
27
assets/htmlpurifier/library/HTMLPurifier.autoload.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Convenience file that registers autoload handler for HTML Purifier.
|
||||
* It also does some sanity checks.
|
||||
*/
|
||||
|
||||
if (function_exists('spl_autoload_register') && function_exists('spl_autoload_unregister')) {
|
||||
// We need unregister for our pre-registering functionality
|
||||
HTMLPurifier_Bootstrap::registerAutoload();
|
||||
if (function_exists('__autoload')) {
|
||||
// Be polite and ensure that userland autoload gets retained
|
||||
spl_autoload_register('__autoload');
|
||||
}
|
||||
} elseif (!function_exists('__autoload')) {
|
||||
function __autoload($class)
|
||||
{
|
||||
return HTMLPurifier_Bootstrap::autoload($class);
|
||||
}
|
||||
}
|
||||
|
||||
if (ini_get('zend.ze1_compatibility_mode')) {
|
||||
trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR);
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
4
assets/htmlpurifier/library/HTMLPurifier.composer.php
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?php
|
||||
if (!defined('HTMLPURIFIER_PREFIX')) {
|
||||
define('HTMLPURIFIER_PREFIX', dirname(__FILE__));
|
||||
}
|
||||
25
assets/htmlpurifier/library/HTMLPurifier.func.php
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Defines a function wrapper for HTML Purifier for quick use.
|
||||
* @note ''HTMLPurifier()'' is NOT the same as ''new HTMLPurifier()''
|
||||
*/
|
||||
|
||||
/**
|
||||
* Purify HTML.
|
||||
* @param string $html String HTML to purify
|
||||
* @param mixed $config Configuration to use, can be any value accepted by
|
||||
* HTMLPurifier_Config::create()
|
||||
* @return string
|
||||
*/
|
||||
function HTMLPurifier($html, $config = null)
|
||||
{
|
||||
static $purifier = false;
|
||||
if (!$purifier) {
|
||||
$purifier = new HTMLPurifier();
|
||||
}
|
||||
return $purifier->purify($html, $config);
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
234
assets/htmlpurifier/library/HTMLPurifier.includes.php
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* This file was auto-generated by generate-includes.php and includes all of
|
||||
* the core files required by HTML Purifier. Use this if performance is a
|
||||
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
|
||||
* FILE, changes will be overwritten the next time the script is run.
|
||||
*
|
||||
* @version 4.9.3
|
||||
*
|
||||
* @warning
|
||||
* You must *not* include any other HTML Purifier files before this file,
|
||||
* because 'require' not 'require_once' is used.
|
||||
*
|
||||
* @warning
|
||||
* This file requires that the include path contains the HTML Purifier
|
||||
* library directory; this is not auto-set.
|
||||
*/
|
||||
|
||||
require 'HTMLPurifier.php';
|
||||
require 'HTMLPurifier/Arborize.php';
|
||||
require 'HTMLPurifier/AttrCollections.php';
|
||||
require 'HTMLPurifier/AttrDef.php';
|
||||
require 'HTMLPurifier/AttrTransform.php';
|
||||
require 'HTMLPurifier/AttrTypes.php';
|
||||
require 'HTMLPurifier/AttrValidator.php';
|
||||
require 'HTMLPurifier/Bootstrap.php';
|
||||
require 'HTMLPurifier/Definition.php';
|
||||
require 'HTMLPurifier/CSSDefinition.php';
|
||||
require 'HTMLPurifier/ChildDef.php';
|
||||
require 'HTMLPurifier/Config.php';
|
||||
require 'HTMLPurifier/ConfigSchema.php';
|
||||
require 'HTMLPurifier/ContentSets.php';
|
||||
require 'HTMLPurifier/Context.php';
|
||||
require 'HTMLPurifier/DefinitionCache.php';
|
||||
require 'HTMLPurifier/DefinitionCacheFactory.php';
|
||||
require 'HTMLPurifier/Doctype.php';
|
||||
require 'HTMLPurifier/DoctypeRegistry.php';
|
||||
require 'HTMLPurifier/ElementDef.php';
|
||||
require 'HTMLPurifier/Encoder.php';
|
||||
require 'HTMLPurifier/EntityLookup.php';
|
||||
require 'HTMLPurifier/EntityParser.php';
|
||||
require 'HTMLPurifier/ErrorCollector.php';
|
||||
require 'HTMLPurifier/ErrorStruct.php';
|
||||
require 'HTMLPurifier/Exception.php';
|
||||
require 'HTMLPurifier/Filter.php';
|
||||
require 'HTMLPurifier/Generator.php';
|
||||
require 'HTMLPurifier/HTMLDefinition.php';
|
||||
require 'HTMLPurifier/HTMLModule.php';
|
||||
require 'HTMLPurifier/HTMLModuleManager.php';
|
||||
require 'HTMLPurifier/IDAccumulator.php';
|
||||
require 'HTMLPurifier/Injector.php';
|
||||
require 'HTMLPurifier/Language.php';
|
||||
require 'HTMLPurifier/LanguageFactory.php';
|
||||
require 'HTMLPurifier/Length.php';
|
||||
require 'HTMLPurifier/Lexer.php';
|
||||
require 'HTMLPurifier/Node.php';
|
||||
require 'HTMLPurifier/PercentEncoder.php';
|
||||
require 'HTMLPurifier/PropertyList.php';
|
||||
require 'HTMLPurifier/PropertyListIterator.php';
|
||||
require 'HTMLPurifier/Queue.php';
|
||||
require 'HTMLPurifier/Strategy.php';
|
||||
require 'HTMLPurifier/StringHash.php';
|
||||
require 'HTMLPurifier/StringHashParser.php';
|
||||
require 'HTMLPurifier/TagTransform.php';
|
||||
require 'HTMLPurifier/Token.php';
|
||||
require 'HTMLPurifier/TokenFactory.php';
|
||||
require 'HTMLPurifier/URI.php';
|
||||
require 'HTMLPurifier/URIDefinition.php';
|
||||
require 'HTMLPurifier/URIFilter.php';
|
||||
require 'HTMLPurifier/URIParser.php';
|
||||
require 'HTMLPurifier/URIScheme.php';
|
||||
require 'HTMLPurifier/URISchemeRegistry.php';
|
||||
require 'HTMLPurifier/UnitConverter.php';
|
||||
require 'HTMLPurifier/VarParser.php';
|
||||
require 'HTMLPurifier/VarParserException.php';
|
||||
require 'HTMLPurifier/Zipper.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS.php';
|
||||
require 'HTMLPurifier/AttrDef/Clone.php';
|
||||
require 'HTMLPurifier/AttrDef/Enum.php';
|
||||
require 'HTMLPurifier/AttrDef/Integer.php';
|
||||
require 'HTMLPurifier/AttrDef/Lang.php';
|
||||
require 'HTMLPurifier/AttrDef/Switch.php';
|
||||
require 'HTMLPurifier/AttrDef/Text.php';
|
||||
require 'HTMLPurifier/AttrDef/URI.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Number.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/AlphaValue.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Background.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Border.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Color.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Composite.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Filter.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Font.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Ident.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Length.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Multiple.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/Percentage.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/TextDecoration.php';
|
||||
require 'HTMLPurifier/AttrDef/CSS/URI.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Bool.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Nmtokens.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Class.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Color.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/FrameTarget.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/ID.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Pixels.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/Length.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/LinkTypes.php';
|
||||
require 'HTMLPurifier/AttrDef/HTML/MultiLength.php';
|
||||
require 'HTMLPurifier/AttrDef/URI/Email.php';
|
||||
require 'HTMLPurifier/AttrDef/URI/Host.php';
|
||||
require 'HTMLPurifier/AttrDef/URI/IPv4.php';
|
||||
require 'HTMLPurifier/AttrDef/URI/IPv6.php';
|
||||
require 'HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php';
|
||||
require 'HTMLPurifier/AttrTransform/Background.php';
|
||||
require 'HTMLPurifier/AttrTransform/BdoDir.php';
|
||||
require 'HTMLPurifier/AttrTransform/BgColor.php';
|
||||
require 'HTMLPurifier/AttrTransform/BoolToCSS.php';
|
||||
require 'HTMLPurifier/AttrTransform/Border.php';
|
||||
require 'HTMLPurifier/AttrTransform/EnumToCSS.php';
|
||||
require 'HTMLPurifier/AttrTransform/ImgRequired.php';
|
||||
require 'HTMLPurifier/AttrTransform/ImgSpace.php';
|
||||
require 'HTMLPurifier/AttrTransform/Input.php';
|
||||
require 'HTMLPurifier/AttrTransform/Lang.php';
|
||||
require 'HTMLPurifier/AttrTransform/Length.php';
|
||||
require 'HTMLPurifier/AttrTransform/Name.php';
|
||||
require 'HTMLPurifier/AttrTransform/NameSync.php';
|
||||
require 'HTMLPurifier/AttrTransform/Nofollow.php';
|
||||
require 'HTMLPurifier/AttrTransform/SafeEmbed.php';
|
||||
require 'HTMLPurifier/AttrTransform/SafeObject.php';
|
||||
require 'HTMLPurifier/AttrTransform/SafeParam.php';
|
||||
require 'HTMLPurifier/AttrTransform/ScriptRequired.php';
|
||||
require 'HTMLPurifier/AttrTransform/TargetBlank.php';
|
||||
require 'HTMLPurifier/AttrTransform/TargetNoopener.php';
|
||||
require 'HTMLPurifier/AttrTransform/TargetNoreferrer.php';
|
||||
require 'HTMLPurifier/AttrTransform/Textarea.php';
|
||||
require 'HTMLPurifier/ChildDef/Chameleon.php';
|
||||
require 'HTMLPurifier/ChildDef/Custom.php';
|
||||
require 'HTMLPurifier/ChildDef/Empty.php';
|
||||
require 'HTMLPurifier/ChildDef/List.php';
|
||||
require 'HTMLPurifier/ChildDef/Required.php';
|
||||
require 'HTMLPurifier/ChildDef/Optional.php';
|
||||
require 'HTMLPurifier/ChildDef/StrictBlockquote.php';
|
||||
require 'HTMLPurifier/ChildDef/Table.php';
|
||||
require 'HTMLPurifier/DefinitionCache/Decorator.php';
|
||||
require 'HTMLPurifier/DefinitionCache/Null.php';
|
||||
require 'HTMLPurifier/DefinitionCache/Serializer.php';
|
||||
require 'HTMLPurifier/DefinitionCache/Decorator/Cleanup.php';
|
||||
require 'HTMLPurifier/DefinitionCache/Decorator/Memory.php';
|
||||
require 'HTMLPurifier/HTMLModule/Bdo.php';
|
||||
require 'HTMLPurifier/HTMLModule/CommonAttributes.php';
|
||||
require 'HTMLPurifier/HTMLModule/Edit.php';
|
||||
require 'HTMLPurifier/HTMLModule/Forms.php';
|
||||
require 'HTMLPurifier/HTMLModule/Hypertext.php';
|
||||
require 'HTMLPurifier/HTMLModule/Iframe.php';
|
||||
require 'HTMLPurifier/HTMLModule/Image.php';
|
||||
require 'HTMLPurifier/HTMLModule/Legacy.php';
|
||||
require 'HTMLPurifier/HTMLModule/List.php';
|
||||
require 'HTMLPurifier/HTMLModule/Name.php';
|
||||
require 'HTMLPurifier/HTMLModule/Nofollow.php';
|
||||
require 'HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
|
||||
require 'HTMLPurifier/HTMLModule/Object.php';
|
||||
require 'HTMLPurifier/HTMLModule/Presentation.php';
|
||||
require 'HTMLPurifier/HTMLModule/Proprietary.php';
|
||||
require 'HTMLPurifier/HTMLModule/Ruby.php';
|
||||
require 'HTMLPurifier/HTMLModule/SafeEmbed.php';
|
||||
require 'HTMLPurifier/HTMLModule/SafeObject.php';
|
||||
require 'HTMLPurifier/HTMLModule/SafeScripting.php';
|
||||
require 'HTMLPurifier/HTMLModule/Scripting.php';
|
||||
require 'HTMLPurifier/HTMLModule/StyleAttribute.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tables.php';
|
||||
require 'HTMLPurifier/HTMLModule/Target.php';
|
||||
require 'HTMLPurifier/HTMLModule/TargetBlank.php';
|
||||
require 'HTMLPurifier/HTMLModule/TargetNoopener.php';
|
||||
require 'HTMLPurifier/HTMLModule/TargetNoreferrer.php';
|
||||
require 'HTMLPurifier/HTMLModule/Text.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy.php';
|
||||
require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/Name.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/Proprietary.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/Strict.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/Transitional.php';
|
||||
require 'HTMLPurifier/HTMLModule/Tidy/XHTML.php';
|
||||
require 'HTMLPurifier/Injector/AutoParagraph.php';
|
||||
require 'HTMLPurifier/Injector/DisplayLinkURI.php';
|
||||
require 'HTMLPurifier/Injector/Linkify.php';
|
||||
require 'HTMLPurifier/Injector/PurifierLinkify.php';
|
||||
require 'HTMLPurifier/Injector/RemoveEmpty.php';
|
||||
require 'HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
|
||||
require 'HTMLPurifier/Injector/SafeObject.php';
|
||||
require 'HTMLPurifier/Lexer/DOMLex.php';
|
||||
require 'HTMLPurifier/Lexer/DirectLex.php';
|
||||
require 'HTMLPurifier/Node/Comment.php';
|
||||
require 'HTMLPurifier/Node/Element.php';
|
||||
require 'HTMLPurifier/Node/Text.php';
|
||||
require 'HTMLPurifier/Strategy/Composite.php';
|
||||
require 'HTMLPurifier/Strategy/Core.php';
|
||||
require 'HTMLPurifier/Strategy/FixNesting.php';
|
||||
require 'HTMLPurifier/Strategy/MakeWellFormed.php';
|
||||
require 'HTMLPurifier/Strategy/RemoveForeignElements.php';
|
||||
require 'HTMLPurifier/Strategy/ValidateAttributes.php';
|
||||
require 'HTMLPurifier/TagTransform/Font.php';
|
||||
require 'HTMLPurifier/TagTransform/Simple.php';
|
||||
require 'HTMLPurifier/Token/Comment.php';
|
||||
require 'HTMLPurifier/Token/Tag.php';
|
||||
require 'HTMLPurifier/Token/Empty.php';
|
||||
require 'HTMLPurifier/Token/End.php';
|
||||
require 'HTMLPurifier/Token/Start.php';
|
||||
require 'HTMLPurifier/Token/Text.php';
|
||||
require 'HTMLPurifier/URIFilter/DisableExternal.php';
|
||||
require 'HTMLPurifier/URIFilter/DisableExternalResources.php';
|
||||
require 'HTMLPurifier/URIFilter/DisableResources.php';
|
||||
require 'HTMLPurifier/URIFilter/HostBlacklist.php';
|
||||
require 'HTMLPurifier/URIFilter/MakeAbsolute.php';
|
||||
require 'HTMLPurifier/URIFilter/Munge.php';
|
||||
require 'HTMLPurifier/URIFilter/SafeIframe.php';
|
||||
require 'HTMLPurifier/URIScheme/data.php';
|
||||
require 'HTMLPurifier/URIScheme/file.php';
|
||||
require 'HTMLPurifier/URIScheme/ftp.php';
|
||||
require 'HTMLPurifier/URIScheme/http.php';
|
||||
require 'HTMLPurifier/URIScheme/https.php';
|
||||
require 'HTMLPurifier/URIScheme/mailto.php';
|
||||
require 'HTMLPurifier/URIScheme/news.php';
|
||||
require 'HTMLPurifier/URIScheme/nntp.php';
|
||||
require 'HTMLPurifier/URIScheme/tel.php';
|
||||
require 'HTMLPurifier/VarParser/Flexible.php';
|
||||
require 'HTMLPurifier/VarParser/Native.php';
|
||||
30
assets/htmlpurifier/library/HTMLPurifier.kses.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Emulation layer for code that used kses(), substituting in HTML Purifier.
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/HTMLPurifier.auto.php';
|
||||
|
||||
function kses($string, $allowed_html, $allowed_protocols = null)
|
||||
{
|
||||
$config = HTMLPurifier_Config::createDefault();
|
||||
$allowed_elements = array();
|
||||
$allowed_attributes = array();
|
||||
foreach ($allowed_html as $element => $attributes) {
|
||||
$allowed_elements[$element] = true;
|
||||
foreach ($attributes as $attribute => $x) {
|
||||
$allowed_attributes["$element.$attribute"] = true;
|
||||
}
|
||||
}
|
||||
$config->set('HTML.AllowedElements', $allowed_elements);
|
||||
$config->set('HTML.AllowedAttributes', $allowed_attributes);
|
||||
if ($allowed_protocols !== null) {
|
||||
$config->set('URI.AllowedSchemes', $allowed_protocols);
|
||||
}
|
||||
$purifier = new HTMLPurifier($config);
|
||||
return $purifier->purify($string);
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
11
assets/htmlpurifier/library/HTMLPurifier.path.php
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Convenience stub file that adds HTML Purifier's library file to the path
|
||||
* without any other side-effects.
|
||||
*/
|
||||
|
||||
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
292
assets/htmlpurifier/library/HTMLPurifier.php
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
<?php
|
||||
|
||||
/*! @mainpage
|
||||
*
|
||||
* HTML Purifier is an HTML filter that will take an arbitrary snippet of
|
||||
* HTML and rigorously test, validate and filter it into a version that
|
||||
* is safe for output onto webpages. It achieves this by:
|
||||
*
|
||||
* -# Lexing (parsing into tokens) the document,
|
||||
* -# Executing various strategies on the tokens:
|
||||
* -# Removing all elements not in the whitelist,
|
||||
* -# Making the tokens well-formed,
|
||||
* -# Fixing the nesting of the nodes, and
|
||||
* -# Validating attributes of the nodes; and
|
||||
* -# Generating HTML from the purified tokens.
|
||||
*
|
||||
* However, most users will only need to interface with the HTMLPurifier
|
||||
* and HTMLPurifier_Config.
|
||||
*/
|
||||
|
||||
/*
|
||||
HTML Purifier 4.9.3 - Standards Compliant HTML Filtering
|
||||
Copyright (C) 2006-2008 Edward Z. Yang
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* Facade that coordinates HTML Purifier's subsystems in order to purify HTML.
|
||||
*
|
||||
* @note There are several points in which configuration can be specified
|
||||
* for HTML Purifier. The precedence of these (from lowest to
|
||||
* highest) is as follows:
|
||||
* -# Instance: new HTMLPurifier($config)
|
||||
* -# Invocation: purify($html, $config)
|
||||
* These configurations are entirely independent of each other and
|
||||
* are *not* merged (this behavior may change in the future).
|
||||
*
|
||||
* @todo We need an easier way to inject strategies using the configuration
|
||||
* object.
|
||||
*/
|
||||
class HTMLPurifier
|
||||
{
|
||||
|
||||
/**
|
||||
* Version of HTML Purifier.
|
||||
* @type string
|
||||
*/
|
||||
public $version = '4.9.3';
|
||||
|
||||
/**
|
||||
* Constant with version of HTML Purifier.
|
||||
*/
|
||||
const VERSION = '4.9.3';
|
||||
|
||||
/**
|
||||
* Global configuration object.
|
||||
* @type HTMLPurifier_Config
|
||||
*/
|
||||
public $config;
|
||||
|
||||
/**
|
||||
* Array of extra filter objects to run on HTML,
|
||||
* for backwards compatibility.
|
||||
* @type HTMLPurifier_Filter[]
|
||||
*/
|
||||
private $filters = array();
|
||||
|
||||
/**
|
||||
* Single instance of HTML Purifier.
|
||||
* @type HTMLPurifier
|
||||
*/
|
||||
private static $instance;
|
||||
|
||||
/**
|
||||
* @type HTMLPurifier_Strategy_Core
|
||||
*/
|
||||
protected $strategy;
|
||||
|
||||
/**
|
||||
* @type HTMLPurifier_Generator
|
||||
*/
|
||||
protected $generator;
|
||||
|
||||
/**
|
||||
* Resultant context of last run purification.
|
||||
* Is an array of contexts if the last called method was purifyArray().
|
||||
* @type HTMLPurifier_Context
|
||||
*/
|
||||
public $context;
|
||||
|
||||
/**
|
||||
* Initializes the purifier.
|
||||
*
|
||||
* @param HTMLPurifier_Config|mixed $config Optional HTMLPurifier_Config object
|
||||
* for all instances of the purifier, if omitted, a default
|
||||
* configuration is supplied (which can be overridden on a
|
||||
* per-use basis).
|
||||
* The parameter can also be any type that
|
||||
* HTMLPurifier_Config::create() supports.
|
||||
*/
|
||||
public function __construct($config = null)
|
||||
{
|
||||
$this->config = HTMLPurifier_Config::create($config);
|
||||
$this->strategy = new HTMLPurifier_Strategy_Core();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a filter to process the output. First come first serve
|
||||
*
|
||||
* @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object
|
||||
*/
|
||||
public function addFilter($filter)
|
||||
{
|
||||
trigger_error(
|
||||
'HTMLPurifier->addFilter() is deprecated, use configuration directives' .
|
||||
' in the Filter namespace or Filter.Custom',
|
||||
E_USER_WARNING
|
||||
);
|
||||
$this->filters[] = $filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters an HTML snippet/document to be XSS-free and standards-compliant.
|
||||
*
|
||||
* @param string $html String of HTML to purify
|
||||
* @param HTMLPurifier_Config $config Config object for this operation,
|
||||
* if omitted, defaults to the config object specified during this
|
||||
* object's construction. The parameter can also be any type
|
||||
* that HTMLPurifier_Config::create() supports.
|
||||
*
|
||||
* @return string Purified HTML
|
||||
*/
|
||||
public function purify($html, $config = null)
|
||||
{
|
||||
// :TODO: make the config merge in, instead of replace
|
||||
$config = $config ? HTMLPurifier_Config::create($config) : $this->config;
|
||||
|
||||
// implementation is partially environment dependant, partially
|
||||
// configuration dependant
|
||||
$lexer = HTMLPurifier_Lexer::create($config);
|
||||
|
||||
$context = new HTMLPurifier_Context();
|
||||
|
||||
// setup HTML generator
|
||||
$this->generator = new HTMLPurifier_Generator($config, $context);
|
||||
$context->register('Generator', $this->generator);
|
||||
|
||||
// set up global context variables
|
||||
if ($config->get('Core.CollectErrors')) {
|
||||
// may get moved out if other facilities use it
|
||||
$language_factory = HTMLPurifier_LanguageFactory::instance();
|
||||
$language = $language_factory->create($config, $context);
|
||||
$context->register('Locale', $language);
|
||||
|
||||
$error_collector = new HTMLPurifier_ErrorCollector($context);
|
||||
$context->register('ErrorCollector', $error_collector);
|
||||
}
|
||||
|
||||
// setup id_accumulator context, necessary due to the fact that
|
||||
// AttrValidator can be called from many places
|
||||
$id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context);
|
||||
$context->register('IDAccumulator', $id_accumulator);
|
||||
|
||||
$html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context);
|
||||
|
||||
// setup filters
|
||||
$filter_flags = $config->getBatch('Filter');
|
||||
$custom_filters = $filter_flags['Custom'];
|
||||
unset($filter_flags['Custom']);
|
||||
$filters = array();
|
||||
foreach ($filter_flags as $filter => $flag) {
|
||||
if (!$flag) {
|
||||
continue;
|
||||
}
|
||||
if (strpos($filter, '.') !== false) {
|
||||
continue;
|
||||
}
|
||||
$class = "HTMLPurifier_Filter_$filter";
|
||||
$filters[] = new $class;
|
||||
}
|
||||
foreach ($custom_filters as $filter) {
|
||||
// maybe "HTMLPurifier_Filter_$filter", but be consistent with AutoFormat
|
||||
$filters[] = $filter;
|
||||
}
|
||||
$filters = array_merge($filters, $this->filters);
|
||||
// maybe prepare(), but later
|
||||
|
||||
for ($i = 0, $filter_size = count($filters); $i < $filter_size; $i++) {
|
||||
$html = $filters[$i]->preFilter($html, $config, $context);
|
||||
}
|
||||
|
||||
// purified HTML
|
||||
$html =
|
||||
$this->generator->generateFromTokens(
|
||||
// list of tokens
|
||||
$this->strategy->execute(
|
||||
// list of un-purified tokens
|
||||
$lexer->tokenizeHTML(
|
||||
// un-purified HTML
|
||||
$html,
|
||||
$config,
|
||||
$context
|
||||
),
|
||||
$config,
|
||||
$context
|
||||
)
|
||||
);
|
||||
|
||||
for ($i = $filter_size - 1; $i >= 0; $i--) {
|
||||
$html = $filters[$i]->postFilter($html, $config, $context);
|
||||
}
|
||||
|
||||
$html = HTMLPurifier_Encoder::convertFromUTF8($html, $config, $context);
|
||||
$this->context =& $context;
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters an array of HTML snippets
|
||||
*
|
||||
* @param string[] $array_of_html Array of html snippets
|
||||
* @param HTMLPurifier_Config $config Optional config object for this operation.
|
||||
* See HTMLPurifier::purify() for more details.
|
||||
*
|
||||
* @return string[] Array of purified HTML
|
||||
*/
|
||||
public function purifyArray($array_of_html, $config = null)
|
||||
{
|
||||
$context_array = array();
|
||||
foreach ($array_of_html as $key => $html) {
|
||||
$array_of_html[$key] = $this->purify($html, $config);
|
||||
$context_array[$key] = $this->context;
|
||||
}
|
||||
$this->context = $context_array;
|
||||
return $array_of_html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton for enforcing just one HTML Purifier in your system
|
||||
*
|
||||
* @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
|
||||
* HTMLPurifier instance to overload singleton with,
|
||||
* or HTMLPurifier_Config instance to configure the
|
||||
* generated version with.
|
||||
*
|
||||
* @return HTMLPurifier
|
||||
*/
|
||||
public static function instance($prototype = null)
|
||||
{
|
||||
if (!self::$instance || $prototype) {
|
||||
if ($prototype instanceof HTMLPurifier) {
|
||||
self::$instance = $prototype;
|
||||
} elseif ($prototype) {
|
||||
self::$instance = new HTMLPurifier($prototype);
|
||||
} else {
|
||||
self::$instance = new HTMLPurifier();
|
||||
}
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton for enforcing just one HTML Purifier in your system
|
||||
*
|
||||
* @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
|
||||
* HTMLPurifier instance to overload singleton with,
|
||||
* or HTMLPurifier_Config instance to configure the
|
||||
* generated version with.
|
||||
*
|
||||
* @return HTMLPurifier
|
||||
* @note Backwards compatibility, see instance()
|
||||
*/
|
||||
public static function getInstance($prototype = null)
|
||||
{
|
||||
return HTMLPurifier::instance($prototype);
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
228
assets/htmlpurifier/library/HTMLPurifier.safe-includes.php
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* This file was auto-generated by generate-includes.php and includes all of
|
||||
* the core files required by HTML Purifier. This is a convenience stub that
|
||||
* includes all files using dirname(__FILE__) and require_once. PLEASE DO NOT
|
||||
* EDIT THIS FILE, changes will be overwritten the next time the script is run.
|
||||
*
|
||||
* Changes to include_path are not necessary.
|
||||
*/
|
||||
|
||||
$__dir = dirname(__FILE__);
|
||||
|
||||
require_once $__dir . '/HTMLPurifier.php';
|
||||
require_once $__dir . '/HTMLPurifier/Arborize.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrCollections.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTypes.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrValidator.php';
|
||||
require_once $__dir . '/HTMLPurifier/Bootstrap.php';
|
||||
require_once $__dir . '/HTMLPurifier/Definition.php';
|
||||
require_once $__dir . '/HTMLPurifier/CSSDefinition.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef.php';
|
||||
require_once $__dir . '/HTMLPurifier/Config.php';
|
||||
require_once $__dir . '/HTMLPurifier/ConfigSchema.php';
|
||||
require_once $__dir . '/HTMLPurifier/ContentSets.php';
|
||||
require_once $__dir . '/HTMLPurifier/Context.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCacheFactory.php';
|
||||
require_once $__dir . '/HTMLPurifier/Doctype.php';
|
||||
require_once $__dir . '/HTMLPurifier/DoctypeRegistry.php';
|
||||
require_once $__dir . '/HTMLPurifier/ElementDef.php';
|
||||
require_once $__dir . '/HTMLPurifier/Encoder.php';
|
||||
require_once $__dir . '/HTMLPurifier/EntityLookup.php';
|
||||
require_once $__dir . '/HTMLPurifier/EntityParser.php';
|
||||
require_once $__dir . '/HTMLPurifier/ErrorCollector.php';
|
||||
require_once $__dir . '/HTMLPurifier/ErrorStruct.php';
|
||||
require_once $__dir . '/HTMLPurifier/Exception.php';
|
||||
require_once $__dir . '/HTMLPurifier/Filter.php';
|
||||
require_once $__dir . '/HTMLPurifier/Generator.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLDefinition.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModuleManager.php';
|
||||
require_once $__dir . '/HTMLPurifier/IDAccumulator.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector.php';
|
||||
require_once $__dir . '/HTMLPurifier/Language.php';
|
||||
require_once $__dir . '/HTMLPurifier/LanguageFactory.php';
|
||||
require_once $__dir . '/HTMLPurifier/Length.php';
|
||||
require_once $__dir . '/HTMLPurifier/Lexer.php';
|
||||
require_once $__dir . '/HTMLPurifier/Node.php';
|
||||
require_once $__dir . '/HTMLPurifier/PercentEncoder.php';
|
||||
require_once $__dir . '/HTMLPurifier/PropertyList.php';
|
||||
require_once $__dir . '/HTMLPurifier/PropertyListIterator.php';
|
||||
require_once $__dir . '/HTMLPurifier/Queue.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy.php';
|
||||
require_once $__dir . '/HTMLPurifier/StringHash.php';
|
||||
require_once $__dir . '/HTMLPurifier/StringHashParser.php';
|
||||
require_once $__dir . '/HTMLPurifier/TagTransform.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token.php';
|
||||
require_once $__dir . '/HTMLPurifier/TokenFactory.php';
|
||||
require_once $__dir . '/HTMLPurifier/URI.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIDefinition.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIParser.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme.php';
|
||||
require_once $__dir . '/HTMLPurifier/URISchemeRegistry.php';
|
||||
require_once $__dir . '/HTMLPurifier/UnitConverter.php';
|
||||
require_once $__dir . '/HTMLPurifier/VarParser.php';
|
||||
require_once $__dir . '/HTMLPurifier/VarParserException.php';
|
||||
require_once $__dir . '/HTMLPurifier/Zipper.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Clone.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Enum.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Integer.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Lang.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Switch.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/Text.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Number.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/AlphaValue.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Background.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Border.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Color.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Composite.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Filter.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Font.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/FontFamily.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Ident.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Length.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ListStyle.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Multiple.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Percentage.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/TextDecoration.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/URI.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Bool.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Nmtokens.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Class.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Color.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/FrameTarget.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/ID.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Pixels.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Length.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/LinkTypes.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/MultiLength.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Email.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Host.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI/IPv4.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI/IPv6.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Background.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/BdoDir.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/BgColor.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/BoolToCSS.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Border.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/EnumToCSS.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/ImgRequired.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/ImgSpace.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Input.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Lang.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Length.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Name.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/NameSync.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Nofollow.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeEmbed.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeObject.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeParam.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoopener.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoreferrer.php';
|
||||
require_once $__dir . '/HTMLPurifier/AttrTransform/Textarea.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Custom.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Empty.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/List.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Required.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Optional.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/StrictBlockquote.php';
|
||||
require_once $__dir . '/HTMLPurifier/ChildDef/Table.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache/Null.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache/Serializer.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php';
|
||||
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator/Memory.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Bdo.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/CommonAttributes.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Edit.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Forms.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Hypertext.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Iframe.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Image.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Legacy.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/List.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Name.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Nofollow.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Object.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Presentation.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Proprietary.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Ruby.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeEmbed.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeObject.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeScripting.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Scripting.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/StyleAttribute.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tables.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoopener.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoreferrer.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Text.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Name.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Proprietary.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Strict.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Transitional.php';
|
||||
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/XHTML.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/AutoParagraph.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/DisplayLinkURI.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/Linkify.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/PurifierLinkify.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/RemoveEmpty.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
|
||||
require_once $__dir . '/HTMLPurifier/Injector/SafeObject.php';
|
||||
require_once $__dir . '/HTMLPurifier/Lexer/DOMLex.php';
|
||||
require_once $__dir . '/HTMLPurifier/Lexer/DirectLex.php';
|
||||
require_once $__dir . '/HTMLPurifier/Node/Comment.php';
|
||||
require_once $__dir . '/HTMLPurifier/Node/Element.php';
|
||||
require_once $__dir . '/HTMLPurifier/Node/Text.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/Composite.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/Core.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/FixNesting.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/MakeWellFormed.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/RemoveForeignElements.php';
|
||||
require_once $__dir . '/HTMLPurifier/Strategy/ValidateAttributes.php';
|
||||
require_once $__dir . '/HTMLPurifier/TagTransform/Font.php';
|
||||
require_once $__dir . '/HTMLPurifier/TagTransform/Simple.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/Comment.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/Tag.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/Empty.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/End.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/Start.php';
|
||||
require_once $__dir . '/HTMLPurifier/Token/Text.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternal.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternalResources.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/DisableResources.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/HostBlacklist.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/MakeAbsolute.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/Munge.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIFilter/SafeIframe.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/data.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/file.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/ftp.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/http.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/https.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/mailto.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/news.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/nntp.php';
|
||||
require_once $__dir . '/HTMLPurifier/URIScheme/tel.php';
|
||||
require_once $__dir . '/HTMLPurifier/VarParser/Flexible.php';
|
||||
require_once $__dir . '/HTMLPurifier/VarParser/Native.php';
|
||||
71
assets/htmlpurifier/library/HTMLPurifier/Arborize.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Converts a stream of HTMLPurifier_Token into an HTMLPurifier_Node,
|
||||
* and back again.
|
||||
*
|
||||
* @note This transformation is not an equivalence. We mutate the input
|
||||
* token stream to make it so; see all [MUT] markers in code.
|
||||
*/
|
||||
class HTMLPurifier_Arborize
|
||||
{
|
||||
public static function arborize($tokens, $config, $context) {
|
||||
$definition = $config->getHTMLDefinition();
|
||||
$parent = new HTMLPurifier_Token_Start($definition->info_parent);
|
||||
$stack = array($parent->toNode());
|
||||
foreach ($tokens as $token) {
|
||||
$token->skip = null; // [MUT]
|
||||
$token->carryover = null; // [MUT]
|
||||
if ($token instanceof HTMLPurifier_Token_End) {
|
||||
$token->start = null; // [MUT]
|
||||
$r = array_pop($stack);
|
||||
//assert($r->name === $token->name);
|
||||
//assert(empty($token->attr));
|
||||
$r->endCol = $token->col;
|
||||
$r->endLine = $token->line;
|
||||
$r->endArmor = $token->armor;
|
||||
continue;
|
||||
}
|
||||
$node = $token->toNode();
|
||||
$stack[count($stack)-1]->children[] = $node;
|
||||
if ($token instanceof HTMLPurifier_Token_Start) {
|
||||
$stack[] = $node;
|
||||
}
|
||||
}
|
||||
//assert(count($stack) == 1);
|
||||
return $stack[0];
|
||||
}
|
||||
|
||||
public static function flatten($node, $config, $context) {
|
||||
$level = 0;
|
||||
$nodes = array($level => new HTMLPurifier_Queue(array($node)));
|
||||
$closingTokens = array();
|
||||
$tokens = array();
|
||||
do {
|
||||
while (!$nodes[$level]->isEmpty()) {
|
||||
$node = $nodes[$level]->shift(); // FIFO
|
||||
list($start, $end) = $node->toTokenPair();
|
||||
if ($level > 0) {
|
||||
$tokens[] = $start;
|
||||
}
|
||||
if ($end !== NULL) {
|
||||
$closingTokens[$level][] = $end;
|
||||
}
|
||||
if ($node instanceof HTMLPurifier_Node_Element) {
|
||||
$level++;
|
||||
$nodes[$level] = new HTMLPurifier_Queue();
|
||||
foreach ($node->children as $childNode) {
|
||||
$nodes[$level]->push($childNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
$level--;
|
||||
if ($level && isset($closingTokens[$level])) {
|
||||
while ($token = array_pop($closingTokens[$level])) {
|
||||
$tokens[] = $token;
|
||||
}
|
||||
}
|
||||
} while ($level > 0);
|
||||
return $tokens;
|
||||
}
|
||||
}
|
||||
148
assets/htmlpurifier/library/HTMLPurifier/AttrCollections.php
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Defines common attribute collections that modules reference
|
||||
*/
|
||||
|
||||
class HTMLPurifier_AttrCollections
|
||||
{
|
||||
|
||||
/**
|
||||
* Associative array of attribute collections, indexed by name.
|
||||
* @type array
|
||||
*/
|
||||
public $info = array();
|
||||
|
||||
/**
|
||||
* Performs all expansions on internal data for use by other inclusions
|
||||
* It also collects all attribute collection extensions from
|
||||
* modules
|
||||
* @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
|
||||
* @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members
|
||||
*/
|
||||
public function __construct($attr_types, $modules)
|
||||
{
|
||||
$this->doConstruct($attr_types, $modules);
|
||||
}
|
||||
|
||||
public function doConstruct($attr_types, $modules)
|
||||
{
|
||||
// load extensions from the modules
|
||||
foreach ($modules as $module) {
|
||||
foreach ($module->attr_collections as $coll_i => $coll) {
|
||||
if (!isset($this->info[$coll_i])) {
|
||||
$this->info[$coll_i] = array();
|
||||
}
|
||||
foreach ($coll as $attr_i => $attr) {
|
||||
if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
|
||||
// merge in includes
|
||||
$this->info[$coll_i][$attr_i] = array_merge(
|
||||
$this->info[$coll_i][$attr_i],
|
||||
$attr
|
||||
);
|
||||
continue;
|
||||
}
|
||||
$this->info[$coll_i][$attr_i] = $attr;
|
||||
}
|
||||
}
|
||||
}
|
||||
// perform internal expansions and inclusions
|
||||
foreach ($this->info as $name => $attr) {
|
||||
// merge attribute collections that include others
|
||||
$this->performInclusions($this->info[$name]);
|
||||
// replace string identifiers with actual attribute objects
|
||||
$this->expandIdentifiers($this->info[$name], $attr_types);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes a reference to an attribute associative array and performs
|
||||
* all inclusions specified by the zero index.
|
||||
* @param array &$attr Reference to attribute array
|
||||
*/
|
||||
public function performInclusions(&$attr)
|
||||
{
|
||||
if (!isset($attr[0])) {
|
||||
return;
|
||||
}
|
||||
$merge = $attr[0];
|
||||
$seen = array(); // recursion guard
|
||||
// loop through all the inclusions
|
||||
for ($i = 0; isset($merge[$i]); $i++) {
|
||||
if (isset($seen[$merge[$i]])) {
|
||||
continue;
|
||||
}
|
||||
$seen[$merge[$i]] = true;
|
||||
// foreach attribute of the inclusion, copy it over
|
||||
if (!isset($this->info[$merge[$i]])) {
|
||||
continue;
|
||||
}
|
||||
foreach ($this->info[$merge[$i]] as $key => $value) {
|
||||
if (isset($attr[$key])) {
|
||||
continue;
|
||||
} // also catches more inclusions
|
||||
$attr[$key] = $value;
|
||||
}
|
||||
if (isset($this->info[$merge[$i]][0])) {
|
||||
// recursion
|
||||
$merge = array_merge($merge, $this->info[$merge[$i]][0]);
|
||||
}
|
||||
}
|
||||
unset($attr[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Expands all string identifiers in an attribute array by replacing
|
||||
* them with the appropriate values inside HTMLPurifier_AttrTypes
|
||||
* @param array &$attr Reference to attribute array
|
||||
* @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
|
||||
*/
|
||||
public function expandIdentifiers(&$attr, $attr_types)
|
||||
{
|
||||
// because foreach will process new elements we add, make sure we
|
||||
// skip duplicates
|
||||
$processed = array();
|
||||
|
||||
foreach ($attr as $def_i => $def) {
|
||||
// skip inclusions
|
||||
if ($def_i === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isset($processed[$def_i])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// determine whether or not attribute is required
|
||||
if ($required = (strpos($def_i, '*') !== false)) {
|
||||
// rename the definition
|
||||
unset($attr[$def_i]);
|
||||
$def_i = trim($def_i, '*');
|
||||
$attr[$def_i] = $def;
|
||||
}
|
||||
|
||||
$processed[$def_i] = true;
|
||||
|
||||
// if we've already got a literal object, move on
|
||||
if (is_object($def)) {
|
||||
// preserve previous required
|
||||
$attr[$def_i]->required = ($required || $attr[$def_i]->required);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($def === false) {
|
||||
unset($attr[$def_i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($t = $attr_types->get($def)) {
|
||||
$attr[$def_i] = $t;
|
||||
$attr[$def_i]->required = $required;
|
||||
} else {
|
||||
unset($attr[$def_i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
144
assets/htmlpurifier/library/HTMLPurifier/AttrDef.php
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Base class for all validating attribute definitions.
|
||||
*
|
||||
* This family of classes forms the core for not only HTML attribute validation,
|
||||
* but also any sort of string that needs to be validated or cleaned (which
|
||||
* means CSS properties and composite definitions are defined here too).
|
||||
* Besides defining (through code) what precisely makes the string valid,
|
||||
* subclasses are also responsible for cleaning the code if possible.
|
||||
*/
|
||||
|
||||
abstract class HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* Tells us whether or not an HTML attribute is minimized.
|
||||
* Has no meaning in other contexts.
|
||||
* @type bool
|
||||
*/
|
||||
public $minimized = false;
|
||||
|
||||
/**
|
||||
* Tells us whether or not an HTML attribute is required.
|
||||
* Has no meaning in other contexts
|
||||
* @type bool
|
||||
*/
|
||||
public $required = false;
|
||||
|
||||
/**
|
||||
* Validates and cleans passed string according to a definition.
|
||||
*
|
||||
* @param string $string String to be validated and cleaned.
|
||||
* @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
|
||||
* @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object.
|
||||
*/
|
||||
abstract public function validate($string, $config, $context);
|
||||
|
||||
/**
|
||||
* Convenience method that parses a string as if it were CDATA.
|
||||
*
|
||||
* This method process a string in the manner specified at
|
||||
* <http://www.w3.org/TR/html4/types.html#h-6.2> by removing
|
||||
* leading and trailing whitespace, ignoring line feeds, and replacing
|
||||
* carriage returns and tabs with spaces. While most useful for HTML
|
||||
* attributes specified as CDATA, it can also be applied to most CSS
|
||||
* values.
|
||||
*
|
||||
* @note This method is not entirely standards compliant, as trim() removes
|
||||
* more types of whitespace than specified in the spec. In practice,
|
||||
* this is rarely a problem, as those extra characters usually have
|
||||
* already been removed by HTMLPurifier_Encoder.
|
||||
*
|
||||
* @warning This processing is inconsistent with XML's whitespace handling
|
||||
* as specified by section 3.3.3 and referenced XHTML 1.0 section
|
||||
* 4.7. However, note that we are NOT necessarily
|
||||
* parsing XML, thus, this behavior may still be correct. We
|
||||
* assume that newlines have been normalized.
|
||||
*/
|
||||
public function parseCDATA($string)
|
||||
{
|
||||
$string = trim($string);
|
||||
$string = str_replace(array("\n", "\t", "\r"), ' ', $string);
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method for creating this class from a string.
|
||||
* @param string $string String construction info
|
||||
* @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string
|
||||
*/
|
||||
public function make($string)
|
||||
{
|
||||
// default implementation, return a flyweight of this object.
|
||||
// If $string has an effect on the returned object (i.e. you
|
||||
// need to overload this method), it is best
|
||||
// to clone or instantiate new copies. (Instantiation is safer.)
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work
|
||||
* properly. THIS IS A HACK!
|
||||
* @param string $string a CSS colour definition
|
||||
* @return string
|
||||
*/
|
||||
protected function mungeRgb($string)
|
||||
{
|
||||
$p = '\s*(\d+(\.\d+)?([%]?))\s*';
|
||||
|
||||
if (preg_match('/(rgba|hsla)\(/', $string)) {
|
||||
return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string);
|
||||
}
|
||||
|
||||
return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a possibly escaped CSS string and returns the "pure"
|
||||
* version of it.
|
||||
*/
|
||||
protected function expandCSSEscape($string)
|
||||
{
|
||||
// flexibly parse it
|
||||
$ret = '';
|
||||
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
|
||||
if ($string[$i] === '\\') {
|
||||
$i++;
|
||||
if ($i >= $c) {
|
||||
$ret .= '\\';
|
||||
break;
|
||||
}
|
||||
if (ctype_xdigit($string[$i])) {
|
||||
$code = $string[$i];
|
||||
for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) {
|
||||
if (!ctype_xdigit($string[$i])) {
|
||||
break;
|
||||
}
|
||||
$code .= $string[$i];
|
||||
}
|
||||
// We have to be extremely careful when adding
|
||||
// new characters, to make sure we're not breaking
|
||||
// the encoding.
|
||||
$char = HTMLPurifier_Encoder::unichr(hexdec($code));
|
||||
if (HTMLPurifier_Encoder::cleanUTF8($char) === '') {
|
||||
continue;
|
||||
}
|
||||
$ret .= $char;
|
||||
if ($i < $c && trim($string[$i]) !== '') {
|
||||
$i--;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if ($string[$i] === "\n") {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$ret .= $string[$i];
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
136
assets/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Validates the HTML attribute style, otherwise known as CSS.
|
||||
* @note We don't implement the whole CSS specification, so it might be
|
||||
* difficult to reuse this component in the context of validating
|
||||
* actual stylesheet declarations.
|
||||
* @note If we were really serious about validating the CSS, we would
|
||||
* tokenize the styles and then parse the tokens. Obviously, we
|
||||
* are not doing that. Doing that could seriously harm performance,
|
||||
* but would make these components a lot more viable for a CSS
|
||||
* filtering solution.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* @param string $css
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($css, $config, $context)
|
||||
{
|
||||
$css = $this->parseCDATA($css);
|
||||
|
||||
$definition = $config->getCSSDefinition();
|
||||
$allow_duplicates = $config->get("CSS.AllowDuplicates");
|
||||
|
||||
|
||||
// According to the CSS2.1 spec, the places where a
|
||||
// non-delimiting semicolon can appear are in strings
|
||||
// escape sequences. So here is some dumb hack to
|
||||
// handle quotes.
|
||||
$len = strlen($css);
|
||||
$accum = "";
|
||||
$declarations = array();
|
||||
$quoted = false;
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
$c = strcspn($css, ";'\"", $i);
|
||||
$accum .= substr($css, $i, $c);
|
||||
$i += $c;
|
||||
if ($i == $len) break;
|
||||
$d = $css[$i];
|
||||
if ($quoted) {
|
||||
$accum .= $d;
|
||||
if ($d == $quoted) {
|
||||
$quoted = false;
|
||||
}
|
||||
} else {
|
||||
if ($d == ";") {
|
||||
$declarations[] = $accum;
|
||||
$accum = "";
|
||||
} else {
|
||||
$accum .= $d;
|
||||
$quoted = $d;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($accum != "") $declarations[] = $accum;
|
||||
|
||||
$propvalues = array();
|
||||
$new_declarations = '';
|
||||
|
||||
/**
|
||||
* Name of the current CSS property being validated.
|
||||
*/
|
||||
$property = false;
|
||||
$context->register('CurrentCSSProperty', $property);
|
||||
|
||||
foreach ($declarations as $declaration) {
|
||||
if (!$declaration) {
|
||||
continue;
|
||||
}
|
||||
if (!strpos($declaration, ':')) {
|
||||
continue;
|
||||
}
|
||||
list($property, $value) = explode(':', $declaration, 2);
|
||||
$property = trim($property);
|
||||
$value = trim($value);
|
||||
$ok = false;
|
||||
do {
|
||||
if (isset($definition->info[$property])) {
|
||||
$ok = true;
|
||||
break;
|
||||
}
|
||||
if (ctype_lower($property)) {
|
||||
break;
|
||||
}
|
||||
$property = strtolower($property);
|
||||
if (isset($definition->info[$property])) {
|
||||
$ok = true;
|
||||
break;
|
||||
}
|
||||
} while (0);
|
||||
if (!$ok) {
|
||||
continue;
|
||||
}
|
||||
// inefficient call, since the validator will do this again
|
||||
if (strtolower(trim($value)) !== 'inherit') {
|
||||
// inherit works for everything (but only on the base property)
|
||||
$result = $definition->info[$property]->validate(
|
||||
$value,
|
||||
$config,
|
||||
$context
|
||||
);
|
||||
} else {
|
||||
$result = 'inherit';
|
||||
}
|
||||
if ($result === false) {
|
||||
continue;
|
||||
}
|
||||
if ($allow_duplicates) {
|
||||
$new_declarations .= "$property:$result;";
|
||||
} else {
|
||||
$propvalues[$property] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
$context->destroy('CurrentCSSProperty');
|
||||
|
||||
// procedure does not write the new CSS simultaneously, so it's
|
||||
// slightly inefficient, but it's the only way of getting rid of
|
||||
// duplicates. Perhaps config to optimize it, but not now.
|
||||
|
||||
foreach ($propvalues as $prop => $value) {
|
||||
$new_declarations .= "$prop:$value;";
|
||||
}
|
||||
|
||||
return $new_declarations ? $new_declarations : false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
class HTMLPurifier_AttrDef_CSS_AlphaValue extends HTMLPurifier_AttrDef_CSS_Number
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(false); // opacity is non-negative, but we will clamp it
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $number
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return string
|
||||
*/
|
||||
public function validate($number, $config, $context)
|
||||
{
|
||||
$result = parent::validate($number, $config, $context);
|
||||
if ($result === false) {
|
||||
return $result;
|
||||
}
|
||||
$float = (float)$result;
|
||||
if ($float < 0.0) {
|
||||
$result = '0';
|
||||
}
|
||||
if ($float > 1.0) {
|
||||
$result = '1';
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Validates shorthand CSS property background.
|
||||
* @warning Does not support url tokens that have internal spaces.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* Local copy of component validators.
|
||||
* @type HTMLPurifier_AttrDef[]
|
||||
* @note See HTMLPurifier_AttrDef_Font::$info for a similar impl.
|
||||
*/
|
||||
protected $info;
|
||||
|
||||
/**
|
||||
* @param HTMLPurifier_Config $config
|
||||
*/
|
||||
public function __construct($config)
|
||||
{
|
||||
$def = $config->getCSSDefinition();
|
||||
$this->info['background-color'] = $def->info['background-color'];
|
||||
$this->info['background-image'] = $def->info['background-image'];
|
||||
$this->info['background-repeat'] = $def->info['background-repeat'];
|
||||
$this->info['background-attachment'] = $def->info['background-attachment'];
|
||||
$this->info['background-position'] = $def->info['background-position'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $string
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($string, $config, $context)
|
||||
{
|
||||
// regular pre-processing
|
||||
$string = $this->parseCDATA($string);
|
||||
if ($string === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// munge rgb() decl if necessary
|
||||
$string = $this->mungeRgb($string);
|
||||
|
||||
// assumes URI doesn't have spaces in it
|
||||
$bits = explode(' ', $string); // bits to process
|
||||
|
||||
$caught = array();
|
||||
$caught['color'] = false;
|
||||
$caught['image'] = false;
|
||||
$caught['repeat'] = false;
|
||||
$caught['attachment'] = false;
|
||||
$caught['position'] = false;
|
||||
|
||||
$i = 0; // number of catches
|
||||
|
||||
foreach ($bits as $bit) {
|
||||
if ($bit === '') {
|
||||
continue;
|
||||
}
|
||||
foreach ($caught as $key => $status) {
|
||||
if ($key != 'position') {
|
||||
if ($status !== false) {
|
||||
continue;
|
||||
}
|
||||
$r = $this->info['background-' . $key]->validate($bit, $config, $context);
|
||||
} else {
|
||||
$r = $bit;
|
||||
}
|
||||
if ($r === false) {
|
||||
continue;
|
||||
}
|
||||
if ($key == 'position') {
|
||||
if ($caught[$key] === false) {
|
||||
$caught[$key] = '';
|
||||
}
|
||||
$caught[$key] .= $r . ' ';
|
||||
} else {
|
||||
$caught[$key] = $r;
|
||||
}
|
||||
$i++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$i) {
|
||||
return false;
|
||||
}
|
||||
if ($caught['position'] !== false) {
|
||||
$caught['position'] = $this->info['background-position']->
|
||||
validate($caught['position'], $config, $context);
|
||||
}
|
||||
|
||||
$ret = array();
|
||||
foreach ($caught as $value) {
|
||||
if ($value === false) {
|
||||
continue;
|
||||
}
|
||||
$ret[] = $value;
|
||||
}
|
||||
|
||||
if (empty($ret)) {
|
||||
return false;
|
||||
}
|
||||
return implode(' ', $ret);
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
<?php
|
||||
|
||||
/* W3C says:
|
||||
[ // adjective and number must be in correct order, even if
|
||||
// you could switch them without introducing ambiguity.
|
||||
// some browsers support that syntax
|
||||
[
|
||||
<percentage> | <length> | left | center | right
|
||||
]
|
||||
[
|
||||
<percentage> | <length> | top | center | bottom
|
||||
]?
|
||||
] |
|
||||
[ // this signifies that the vertical and horizontal adjectives
|
||||
// can be arbitrarily ordered, however, there can only be two,
|
||||
// one of each, or none at all
|
||||
[
|
||||
left | center | right
|
||||
] ||
|
||||
[
|
||||
top | center | bottom
|
||||
]
|
||||
]
|
||||
top, left = 0%
|
||||
center, (none) = 50%
|
||||
bottom, right = 100%
|
||||
*/
|
||||
|
||||
/* QuirksMode says:
|
||||
keyword + length/percentage must be ordered correctly, as per W3C
|
||||
|
||||
Internet Explorer and Opera, however, support arbitrary ordering. We
|
||||
should fix it up.
|
||||
|
||||
Minor issue though, not strictly necessary.
|
||||
*/
|
||||
|
||||
// control freaks may appreciate the ability to convert these to
|
||||
// percentages or something, but it's not necessary
|
||||
|
||||
/**
|
||||
* Validates the value of background-position.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* @type HTMLPurifier_AttrDef_CSS_Length
|
||||
*/
|
||||
protected $length;
|
||||
|
||||
/**
|
||||
* @type HTMLPurifier_AttrDef_CSS_Percentage
|
||||
*/
|
||||
protected $percentage;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->length = new HTMLPurifier_AttrDef_CSS_Length();
|
||||
$this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $string
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($string, $config, $context)
|
||||
{
|
||||
$string = $this->parseCDATA($string);
|
||||
$bits = explode(' ', $string);
|
||||
|
||||
$keywords = array();
|
||||
$keywords['h'] = false; // left, right
|
||||
$keywords['v'] = false; // top, bottom
|
||||
$keywords['ch'] = false; // center (first word)
|
||||
$keywords['cv'] = false; // center (second word)
|
||||
$measures = array();
|
||||
|
||||
$i = 0;
|
||||
|
||||
$lookup = array(
|
||||
'top' => 'v',
|
||||
'bottom' => 'v',
|
||||
'left' => 'h',
|
||||
'right' => 'h',
|
||||
'center' => 'c'
|
||||
);
|
||||
|
||||
foreach ($bits as $bit) {
|
||||
if ($bit === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// test for keyword
|
||||
$lbit = ctype_lower($bit) ? $bit : strtolower($bit);
|
||||
if (isset($lookup[$lbit])) {
|
||||
$status = $lookup[$lbit];
|
||||
if ($status == 'c') {
|
||||
if ($i == 0) {
|
||||
$status = 'ch';
|
||||
} else {
|
||||
$status = 'cv';
|
||||
}
|
||||
}
|
||||
$keywords[$status] = $lbit;
|
||||
$i++;
|
||||
}
|
||||
|
||||
// test for length
|
||||
$r = $this->length->validate($bit, $config, $context);
|
||||
if ($r !== false) {
|
||||
$measures[] = $r;
|
||||
$i++;
|
||||
}
|
||||
|
||||
// test for percentage
|
||||
$r = $this->percentage->validate($bit, $config, $context);
|
||||
if ($r !== false) {
|
||||
$measures[] = $r;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$i) {
|
||||
return false;
|
||||
} // no valid values were caught
|
||||
|
||||
$ret = array();
|
||||
|
||||
// first keyword
|
||||
if ($keywords['h']) {
|
||||
$ret[] = $keywords['h'];
|
||||
} elseif ($keywords['ch']) {
|
||||
$ret[] = $keywords['ch'];
|
||||
$keywords['cv'] = false; // prevent re-use: center = center center
|
||||
} elseif (count($measures)) {
|
||||
$ret[] = array_shift($measures);
|
||||
}
|
||||
|
||||
if ($keywords['v']) {
|
||||
$ret[] = $keywords['v'];
|
||||
} elseif ($keywords['cv']) {
|
||||
$ret[] = $keywords['cv'];
|
||||
} elseif (count($measures)) {
|
||||
$ret[] = array_shift($measures);
|
||||
}
|
||||
|
||||
if (empty($ret)) {
|
||||
return false;
|
||||
}
|
||||
return implode(' ', $ret);
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Validates the border property as defined by CSS.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* Local copy of properties this property is shorthand for.
|
||||
* @type HTMLPurifier_AttrDef[]
|
||||
*/
|
||||
protected $info = array();
|
||||
|
||||
/**
|
||||
* @param HTMLPurifier_Config $config
|
||||
*/
|
||||
public function __construct($config)
|
||||
{
|
||||
$def = $config->getCSSDefinition();
|
||||
$this->info['border-width'] = $def->info['border-width'];
|
||||
$this->info['border-style'] = $def->info['border-style'];
|
||||
$this->info['border-top-color'] = $def->info['border-top-color'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $string
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($string, $config, $context)
|
||||
{
|
||||
$string = $this->parseCDATA($string);
|
||||
$string = $this->mungeRgb($string);
|
||||
$bits = explode(' ', $string);
|
||||
$done = array(); // segments we've finished
|
||||
$ret = ''; // return value
|
||||
foreach ($bits as $bit) {
|
||||
foreach ($this->info as $propname => $validator) {
|
||||
if (isset($done[$propname])) {
|
||||
continue;
|
||||
}
|
||||
$r = $validator->validate($bit, $config, $context);
|
||||
if ($r !== false) {
|
||||
$ret .= $r . ' ';
|
||||
$done[$propname] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return rtrim($ret);
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
161
assets/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Validates Color as defined by CSS.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* @type HTMLPurifier_AttrDef_CSS_AlphaValue
|
||||
*/
|
||||
protected $alpha;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $color
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($color, $config, $context)
|
||||
{
|
||||
static $colors = null;
|
||||
if ($colors === null) {
|
||||
$colors = $config->get('Core.ColorKeywords');
|
||||
}
|
||||
|
||||
$color = trim($color);
|
||||
if ($color === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
$lower = strtolower($color);
|
||||
if (isset($colors[$lower])) {
|
||||
return $colors[$lower];
|
||||
}
|
||||
|
||||
if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) {
|
||||
$length = strlen($color);
|
||||
if (strpos($color, ')') !== $length - 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// get used function : rgb, rgba, hsl or hsla
|
||||
$function = $matches[1];
|
||||
|
||||
$parameters_size = 3;
|
||||
$alpha_channel = false;
|
||||
if (substr($function, -1) === 'a') {
|
||||
$parameters_size = 4;
|
||||
$alpha_channel = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allowed types for values :
|
||||
* parameter_position => [type => max_value]
|
||||
*/
|
||||
$allowed_types = array(
|
||||
1 => array('percentage' => 100, 'integer' => 255),
|
||||
2 => array('percentage' => 100, 'integer' => 255),
|
||||
3 => array('percentage' => 100, 'integer' => 255),
|
||||
);
|
||||
$allow_different_types = false;
|
||||
|
||||
if (strpos($function, 'hsl') !== false) {
|
||||
$allowed_types = array(
|
||||
1 => array('integer' => 360),
|
||||
2 => array('percentage' => 100),
|
||||
3 => array('percentage' => 100),
|
||||
);
|
||||
$allow_different_types = true;
|
||||
}
|
||||
|
||||
$values = trim(str_replace($function, '', $color), ' ()');
|
||||
|
||||
$parts = explode(',', $values);
|
||||
if (count($parts) !== $parameters_size) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = false;
|
||||
$new_parts = array();
|
||||
$i = 0;
|
||||
|
||||
foreach ($parts as $part) {
|
||||
$i++;
|
||||
$part = trim($part);
|
||||
|
||||
if ($part === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// different check for alpha channel
|
||||
if ($alpha_channel === true && $i === count($parts)) {
|
||||
$result = $this->alpha->validate($part, $config, $context);
|
||||
|
||||
if ($result === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$new_parts[] = (string)$result;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (substr($part, -1) === '%') {
|
||||
$current_type = 'percentage';
|
||||
} else {
|
||||
$current_type = 'integer';
|
||||
}
|
||||
|
||||
if (!array_key_exists($current_type, $allowed_types[$i])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$type) {
|
||||
$type = $current_type;
|
||||
}
|
||||
|
||||
if ($allow_different_types === false && $type != $current_type) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$max_value = $allowed_types[$i][$current_type];
|
||||
|
||||
if ($current_type == 'integer') {
|
||||
// Return value between range 0 -> $max_value
|
||||
$new_parts[] = (int)max(min($part, $max_value), 0);
|
||||
} elseif ($current_type == 'percentage') {
|
||||
$new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%';
|
||||
}
|
||||
}
|
||||
|
||||
$new_values = implode(',', $new_parts);
|
||||
|
||||
$color = $function . '(' . $new_values . ')';
|
||||
} else {
|
||||
// hexadecimal handling
|
||||
if ($color[0] === '#') {
|
||||
$hex = substr($color, 1);
|
||||
} else {
|
||||
$hex = $color;
|
||||
$color = '#' . $color;
|
||||
}
|
||||
$length = strlen($hex);
|
||||
if ($length !== 3 && $length !== 6) {
|
||||
return false;
|
||||
}
|
||||
if (!ctype_xdigit($hex)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return $color;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Allows multiple validators to attempt to validate attribute.
|
||||
*
|
||||
* Composite is just what it sounds like: a composite of many validators.
|
||||
* This means that multiple HTMLPurifier_AttrDef objects will have a whack
|
||||
* at the string. If one of them passes, that's what is returned. This is
|
||||
* especially useful for CSS values, which often are a choice between
|
||||
* an enumerated set of predefined values or a flexible data type.
|
||||
*/
|
||||
class HTMLPurifier_AttrDef_CSS_Composite extends HTMLPurifier_AttrDef
|
||||
{
|
||||
|
||||
/**
|
||||
* List of objects that may process strings.
|
||||
* @type HTMLPurifier_AttrDef[]
|
||||
* @todo Make protected
|
||||
*/
|
||||
public $defs;
|
||||
|
||||
/**
|
||||
* @param HTMLPurifier_AttrDef[] $defs List of HTMLPurifier_AttrDef objects
|
||||
*/
|
||||
public function __construct($defs)
|
||||
{
|
||||
$this->defs = $defs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $string
|
||||
* @param HTMLPurifier_Config $config
|
||||
* @param HTMLPurifier_Context $context
|
||||
* @return bool|string
|
||||
*/
|
||||
public function validate($string, $config, $context)
|
||||
{
|
||||
foreach ($this->defs as $i => $def) {
|
||||
$result = $this->defs[$i]->validate($string, $config, $context);
|
||||
if ($result !== false) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// vim: et sw=4 sts=4
|
||||