example_test.php 115 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959
  1. <?php
  2. //==============================================================
  3. //==============================================================
  4. //==============================================================
  5. //==============================================================
  6. //==============================================================
  7. set_time_limit(600);
  8. ini_set("memory_limit","256M");
  9. //
  10. $timeo_start = microtime(true);
  11. //
  12. //==============================================================
  13. define('_MPDF_URI','../'); // must be a relative or absolute URI - not a file system path
  14. define('_MPDF_PATH', '../');
  15. //==============================================================
  16. define("_JPGRAPH_PATH", '../../jpgraph_5/jpgraph/'); // must define this before including mpdf.php file
  17. define("_TTF_FONT_NORMAL", 'arial.ttf');
  18. define("_TTF_FONT_BOLD", 'arialbd.ttf');
  19. //==============================================================
  20. require_once __DIR__ . '/../vendor/autoload.php';
  21. //
  22. $timeo_start = microtime(true);
  23. //
  24. //==============================================================
  25. //==============================================================
  26. $lorem = 'Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. Sed et orci non massa venenatis venenatis sit amet non nulla. Fusce condimentum velit urna, sed convallis ligula. Aenean vehicula purus ac dui imperdiet varius. Curabitur justo lorem, vehicula in suscipit sit amet, pharetra ut mi. Ut nunc mauris, dapibus vitae elementum faucibus, posuere sed nisl. Vestibulum et turpis eu enim tempor iaculis. Ut venenatis mattis dolor, nec iaculis tellus malesuada vel. Curabitur eu nibh sit amet sem eleifend interdum ac eu lorem. Sed feugiat, nibh tempus porta pulvinar, nisl sem aliquet odio, idluctus augue eros eget lacus. ';
  27. //==============================================================
  28. //==============================================================
  29. //==============================================================
  30. //==============================================================
  31. //==============================================================
  32. //==============================================================
  33. $mpdf = new mPDF();
  34. //==============================================================
  35. //==============================================================
  36. /*
  37. $mpdf->fonttrans = array_merge($mpdf->fonttrans, array(
  38. 'arial' => 'chelvetica',
  39. 'helvetica' => 'chelvetica',
  40. 'timesnewroman' => 'ctimes',
  41. 'times' => 'ctimes',
  42. 'couriernew' => 'ccourier',
  43. 'courier' => 'ccourier',
  44. 'sans' => 'chelvetica',
  45. 'sans-serif' => 'chelvetica',
  46. 'serif' => 'ctimes',
  47. 'mono' => 'ccourier',
  48. ));
  49. */
  50. //==============================================================
  51. //==============================================================
  52. //==============================================================
  53. //==============================================================
  54. //==============================================================
  55. //==============================================================
  56. //==============================================================
  57. $header = array(
  58. 'L' => array(
  59. ),
  60. 'C' => array(
  61. ),
  62. 'R' => array(
  63. 'content' => '{PAGENO}{nbpg}',
  64. 'font-family' => 'sans',
  65. 'font-style' => '',
  66. 'font-size' => '9', /* gives default */
  67. ),
  68. 'line' => 1, /* 1 or 0 to include line above/below header/footer */
  69. );
  70. //$mpdf->SetHeader($header,'O');
  71. //$mpdf->SetHTMLFooter($footer);
  72. //==============================================================
  73. //$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins (1 or 0)
  74. //$mpdf->showImageErrors = true;
  75. //$mpdf->SetDisplayMode('fullpage');
  76. //$mpdf->useLang = false;
  77. //$mpdf->useAutoFont = true;
  78. //$mpdf->ignore_invalid_utf8 = true;
  79. //$mpdf->keepColumns = true;
  80. //$mpdf->use_kwt = true;
  81. //$mpdf->hyphenate = true;
  82. //$mpdf->SetProtection(array('copy','print','modify','annot-forms'));
  83. //$mpdf->SetProtection(array('copy','print','modify','annot-forms'),'',null,128);
  84. //$mpdf->SetProtection(array('copy','print','modify','annot-forms','fill-forms','extract','assemble','print-highres'),'',null);
  85. //$mpdf->SetTitle("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3");
  86. //$mpdf->SetAuthor("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3");
  87. //$mpdf->SetWatermarkText("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3");
  88. //$mpdf->showWatermarkText = true;
  89. //$mpdf->watermark_font = 'DejaVuSansCondensed';
  90. //$mpdf->SetCompression(false);
  91. //$mpdf->text_input_as_HTML = true;
  92. //$mpdf->annotMargin = -8;
  93. //$mpdf->title2annots = true;
  94. //$mpdf->Annotation('An annotation', 145, 24, 'Comment', "Ian Back", "My Subject", 0.7, array(127, 127, 255));
  95. //$mpdf->collapseBlockMargins = false; // mPDF 4.2 Allows top and bottom margins to collapse between block elements
  96. //$mpdf->allow_charset_conversion = true;
  97. //$mpdf->charset_in = 'win-1251';
  98. //$mpdf->useSubstitutions = true;
  99. //$mpdf->useActiveForms = true;
  100. //$mpdf->simpleTables = true; // Forces all cells to have same border, background etc. Improves performance
  101. //$mpdf->packTableData = true; // Reduce memory usage processing tables (but with increased processing time)
  102. // Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased
  103. // executon time and disk access (read and write)
  104. //$mpdf->cacheTables = true;
  105. //==============================================================
  106. //$mpdf->SetImportUse();
  107. //$mpdf->SetSourceFile('example_all.pdf');
  108. //$tplIdx = $mpdf->ImportPage(9);
  109. //$mpdf->UseTemplate($tplIdx);
  110. //==============================================================
  111. //==============================================================
  112. //$mpdf->debug = true;
  113. //$mpdf->showStats = true;
  114. //==============================================================
  115. //==============================================================
  116. //==============================================================
  117. //==============================================================
  118. //==============================================================
  119. //==============================================================
  120. //==============================================================
  121. //==============================================================
  122. /*
  123. // 4.3.003 TEST
  124. $html = '<div style="width: 170mm; text-align: justify; border: 0.2mm solid #000000;">Browser doesn\'t justify text before a BR <br />Browser does justify text before an IMG <img src="clematis.jpg" style="width:150mm; height: 5;" /></div>
  125. <div style="width: 170mm; text-align: justify; border: 0.2mm solid #000000;">Browser doesn\'t justify text before a HR <hr width="80%"/>Browser does justify text before an IMG<img src="clematis.jpg" style="width:150mm; height: 5;" /></div>
  126. <div style="width: 170mm; text-align: justify; border: 0.2mm solid #000000;">Browser does justify text before a TEXTAREA <textarea name="authors" rows="5" cols="70" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
  127. </div>
  128. <div style="width: 170mm; text-align: justify; border: 0.2mm solid #000000;">Browser does justify text before a SELECT <select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending Incomplete record - pending Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> </div>';
  129. //$html = '<div style="text-align: justify; border: 0.2mm solid #000000;">If you want a single line of text to justify you need to do this<br /></div>';
  130. //$mpdf->justifyB4br = true;
  131. //$mpdf->jSWord = 0.4; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
  132. //$mpdf->jSmaxChar = 0.25; // Maximum spacing to allocate to character spacing. (0 = no maximum)
  133. */
  134. //==============================================================
  135. //==============================================================
  136. //==============================================================
  137. //==============================================================
  138. /*
  139. // CJK Fonts
  140. $fonts = array(
  141. array('gb', 'GB (Chinese Simpl. Adobe)'),
  142. array('big5', 'BIG-5 (Chinese Trad. Adobe)'),
  143. array('sjis', 'SJIS (Japanese Adobe)'),
  144. array('arialunicodems', 'Arial Unicode MS'),
  145. array('cyberbit', 'CyberBit'),
  146. array('sun-exta', 'Sun-ExtA'),
  147. array('hannoma', 'Han Nom A'),
  148. array('mingliu', 'MingLiU'),
  149. array('mingliu_hkscs', 'MingLiU_HKSCS'),
  150. array('arplumingcn', 'AR PL Uming CN'),
  151. array('arpluminghk', 'AR PL Uming HK'),
  152. array('arplumingtw', 'AR PL Uming TW'),
  153. );
  154. $chars = array('34c7','4eca','4ede','4f3b','4fae','508e','50a6','50c7','517e','518f','51b2','5203','520f','5222','55c2','57d2','6b21','87a0','8880','8a03',
  155. '4EE4',
  156. '76F4',
  157. '9AA8',
  158. '9F31',
  159. '2493F',
  160. );
  161. $html .= "
  162. <div style=\"font-family:arialunicodems;\">
  163. <table border=\"1\">
  164. <thead>
  165. <tr style=\"text-rotate:90\">
  166. <th></th>
  167. ";
  168. foreach($fonts AS $f) {
  169. $html .= "<th style=\"vertical-align: bottom;font-family:".$f[0]." ;\">".$f[1]."</th>";
  170. }
  171. $html .= "
  172. </tr>
  173. </thead>
  174. ";
  175. foreach($chars AS $char) {
  176. $html .= "<tr><td>U+".strtoupper($char)."</td>";
  177. foreach($fonts AS $f) {
  178. $html .= "<td style=\"font-family:".$f[0].";\">&#x".$char.";</td>";
  179. }
  180. $html .= "</tr>
  181. ";
  182. }
  183. $html .= "</table>
  184. </div>
  185. ";
  186. */
  187. //==============================================================
  188. //==============================================================
  189. //==============================================================
  190. //==============================================================
  191. //==============================================================
  192. //==============================================================
  193. //==============================================================
  194. //==============================================================
  195. //==============================================================
  196. //==============================================================
  197. //==============================================================
  198. //==============================================================
  199. //==============================================================
  200. //==============================================================
  201. //==============================================================
  202. //==============================================================
  203. //==============================================================
  204. //==============================================================
  205. /*
  206. $html = '
  207. <style>
  208. div.cjk {
  209. font-family: GB;
  210. border:1px solid #888888;
  211. width: 40mm;
  212. margin-bottom: 1em;
  213. }
  214. </style>
  215. mPDF 5.6.40
  216. Bug fix
  217. ';
  218. $mpdf->WriteHTML($html);
  219. $mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  220. $html = '
  221. <div class="cjk" style="">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;</div>
  222. CJKleading Leading characters - Not allowed at end of line &#x3005;<br />
  223. <div class="cjk" style="">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x3005;&#x90e8;</div>
  224. CJKfollowing Following characters - Not allowed at start &#x30a9;<br />
  225. <div class="cjk" style="">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x30a9;</div>
  226. ';
  227. $mpdf->WriteHTML($html);
  228. //==============================================================
  229. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  230. $html = '
  231. CJKfollowing Following characters - Not allowed at start &#x30a9;<br />
  232. <div class="cjk" style="">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x30a9;</div>
  233. <hr />
  234. ';
  235. $mpdf->WriteHTML($html);
  236. //==============================================================
  237. // CJK Line-breaking
  238. $align = 'left';
  239. $mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  240. $mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  241. $html = '
  242. CJKoverflow Characters which are allowed to overflow the right margin &#xff0c;<br />
  243. text-align: '.$align.';
  244. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  245. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  246. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  247. ';
  248. $mpdf->WriteHTML($html);
  249. //==============================================================
  250. // CJK Line-breaking
  251. $align = 'justify';
  252. $mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  253. $mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  254. $html = '
  255. text-align: '.$align.';
  256. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  257. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  258. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  259. ';
  260. $mpdf->WriteHTML($html);
  261. //==============================================================
  262. // CJK Line-breaking
  263. $align = 'left';
  264. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  265. $mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  266. $html = '
  267. text-align: '.$align.';
  268. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  269. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  270. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  271. ';
  272. $mpdf->WriteHTML($html);
  273. //==============================================================
  274. // CJK Line-breaking
  275. $align = 'left';
  276. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  277. $mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  278. $html = '
  279. text-align: '.$align.';
  280. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  281. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  282. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  283. ';
  284. $mpdf->WriteHTML($html);
  285. //==============================================================
  286. // CJK Line-breaking
  287. $align = 'justify';
  288. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  289. $mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  290. $html = '
  291. text-align: '.$align.';
  292. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  293. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  294. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  295. ';
  296. $mpdf->WriteHTML($html);
  297. //==============================================================
  298. // CJK Line-breaking
  299. $align = 'justify';
  300. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  301. $mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  302. $html = '
  303. text-align: '.$align.';
  304. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  305. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  306. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  307. ';
  308. $mpdf->WriteHTML($html);
  309. //==============================================================
  310. // CJK Line-breaking
  311. $align = 'justify';
  312. $mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true]
  313. $mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false]
  314. $mpdf->CJKforceend = true;
  315. $html = '
  316. text-align: '.$align.';
  317. $mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.';
  318. $mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.';
  319. $mpdf->CJKforceend = '.$mpdf->CJKforceend .';
  320. <div class="cjk" style="text-align: '.$align.'; ">&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#xff0c;</div>
  321. ';
  322. $mpdf->WriteHTML($html);
  323. //==============================================================
  324. */
  325. //==============================================================
  326. //==============================================================
  327. //==============================================================
  328. // Tai Tham (Lanna script)
  329. $htmlx = '
  330. <div style="font-family:lannaalif">
  331. <p>&#x1a22;&#x1a76;&#x1a63;&#x1a27;&#x1a6e;&#x1a62;&#x1a76;&#x1a63;&#x1a38;&#x1a6e;&#x1a62;&#x1a60;&#x1a36;&#x1a48;&#x1a63;&#x1a60;&#x1a45;&#x1a29;&#x1a60;&#x1a3f;&#x1a26;&#x1a49;&#x1a60;&#x1a3e;&#x1a72;&#x1a75; &#x1a49;&#x1a60;&#x1a3e;&#x1a6f;&#x1a37;&#x1a74;&#x1a75;&#x1a6c;&#x1a34;&#x1a6e;&#x1a62;&#x1a75;&#x1a63;&#x1a2f;&#x1a72;&#x1a20;&#x1a74;&#x1a76;&#x1a6c;&#x1a27;&#x1a61;&#x1a38;&#x1a6e;&#x1a62;&#x1a60;&#x1a36;&#x1a48;&#x1a63;&#x1a60;&#x1a45;&#x1a43;&#x1a6f;&#x1a76;&#x1a60;&#x1a45; &#x1a32;&#x1a67;&#x1a60;&#x1a26;&#x1a45;&#x1a62;&#x1a60;&#x1a36;&#x1a3e;&#x1a66;&#x1a37;&#x1a75;&#x1a64;&#x1a60;&#x1a45;&#x1a3e;&#x1a63;&#x1a4b;&#x1a6f;&#x1a75;&#x1a60;&#x1a45; &#x1a3e;&#x1a63;&#x1a4b;&#x1a6a;&#x1a76;&#x1a3e;&#x1a63;&#x1a2a;&#x1a6f;&#x1a60;&#x1a45; &#x1a38;&#x1a6e;&#x1a62;&#x1a60;&#x1a36;&#x1a24;&#x1a6b;&#x1a60;&#x1a36;&#x1a43;&#x1a3b;&#x1a6a;&#x1a41;</p>
  332. <p>&#x1a22;&#x1a76;&#x1a63;&#x1a27;&#x1a6e;&#x1a62;&#x1a76;&#x1a63;&#x1a27;&#x1a61;&#x1a6e;&#x1a43;&#x1a65;&#x1a6c;&#x1a20;&#x1a4b;&#x1a6e;&#x1a62;&#x1a63;&#x1a39;&#x1a71; &#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a37;&#x1a75;&#x1a64;&#x1a60;&#x1a45;&#x1a29;&#x1a60;&#x1a3f;&#x1a26;&#x1a41;&#x1a63;&#x1a60;&#x1a3f;&#x1a29;&#x1a68;&#x1a75;&#x1a20;&#x1a6f;&#x1a76;&#x1a60;&#x1a45;&#x1a3e;&#x1a63;&#x1a43;&#x1a6a;&#x1a41; &#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a20;&#x1a6c;&#x1a26;&#x1a24;&#x1a6b;&#x1a60;&#x1a36;&#x1a3b;&#x1a6f;&#x1a75;&#x1a22;&#x1a60;&#x1a3f;&#x1a45;&#x1a28;&#x1a69;&#x1a36; &#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a24;&#x1a74;&#x1a63;&#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a3e;&#x1a6a;&#x1a41; &#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a48;&#x1a6b;&#x1a60;&#x1a3e;&#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a3e;&#x1a66;</p>
  333. <p>&#x1a3b;&#x1a6e;&#x1a65;&#x1a75;&#x1a60;&#x1a36;&#x1a37;&#x1a6c;&#x1a20;&#x1a45;&#x1a75;&#x1a64;&#x1a27;&#x1a61;&#x1a3e;&#x1a63;&#x1a22;&#x1a74;&#x1a6c;&#x1a22;&#x1a76;&#x1a63;&#x1a27;&#x1a6e;&#x1a62;&#x1a76;&#x1a63;&#x1a20;&#x1a74;&#x1a6c;&#x1a41;&#x1a74;&#x1a6c;&#x1a3e;&#x1a63;&#x1a43;&#x1a6f;&#x1a76;&#x1a60;&#x1a45;&#x1a38;&#x1a6e;&#x1a62;&#x1a60;&#x1a36;&#x1a38;&#x1a66; &#x1a3b;&#x1a74;&#x1a75;&#x1a6c;&#x1a3e;&#x1a6f;&#x1a75;&#x1a33;&#x1a76;&#x1a63;&#x1a38;&#x1a6a;&#x1a48;&#x1a41;&#x1a66;&#x1a4b;&#x1a76;&#x1a63;&#x1a60;&#x1a3f;&#x1a37;&#x1a75;&#x1a64;&#x1a60;&#x1a45;&#x1a32;&#x1a6b;&#x1a60;&#x1a45;&#x1a2f;&#x1a66;&#x1a49;&#x1a63;&#x1a60;&#x1a3f;&#x1a2a;&#x1a6f;&#x1a60;&#x1a37;&#x1a49;&#x1a63;&#x1a60;&#x1a3f;&#x1a48;&#x1a6c;&#x1a60;&#x1a3f; &#x1a22;&#x1a76;&#x1a63;&#x1a27;&#x1a6e;&#x1a62;&#x1a76;&#x1a63;&#x1a37;&#x1a74;&#x1a75;&#x1a6c;&#x1a29;&#x1a6e;&#x1a65;&#x1a75;&#x1a6c;&#x1a4b;&#x1a49;&#x1a6f;&#x1a60;&#x1a3e;&#x1a43;&#x1a6f;&#x1a76;&#x1a60;&#x1a45; &#x1a27;&#x1a61;&#x1a32;&#x1a6f;&#x1a75;&#x1a60;&#x1a26;&#x1a20;&#x1a62;&#x1a60;&#x1a37;&#x1a3e;&#x1a6f;&#x1a76;&#x1a60;&#x1a45;&#x1a38;&#x1a71;&#x1a40;&#x1a6a;&#x1a75;&#x1a38;&#x1a56;&#x1a63;&#x1a60;&#x1a3f;&#x1a2f;&#x1a6c;&#x1a60;&#x1a3f;&#x1a22;&#x1a63;&#x1a60;&#x1a3f;&#x1a39;&#x1a76;&#x1a63; &#x1a22;&#x1a63;&#x1a60;&#x1a3f;&#x1a3b;&#x1a6e;&#x1a29;&#x1a60;&#x1a41;&#x1a7a; &#x1a22;&#x1a63;&#x1a60;&#x1a3f;&#x1a3b;&#x1a56;&#x1a6c;&#x1a60;&#x1a3f;&#x1a22;&#x1a63;&#x1a60;&#x1a3f;&#x1a49;&#x1a60;&#x1a45;&#x1a6f;&#x1a41;&#x1a22;&#x1a63;&#x1a60;&#x1a3f;&#x1a48;&#x1a55;&#x1a6c;&#x1a60;&#x1a3f;&#x1a40;&#x1a6a;&#x1a75;&#x1a37;&#x1a6b;&#x1a60;&#x1a36;&#x1a2f;&#x1a6c;&#x1a60;&#x1a3f;&#x1a38;&#x1a69;&#x1a3f;</p>
  334. </div>
  335. ';
  336. //==============================================================
  337. //==============================================================
  338. //==============================================================
  339. //==============================================================
  340. // TEST DOUBLE BORDER
  341. //$mpdf->SetColumns(3);
  342. $htmlx = '
  343. <div style="background-color:#ddddff; padding: 10px;">
  344. <div style="border-left:#ff0000 solid 16pt; border-right: #0000ff double 46pt; border-top: #00ff00 double 26pt; border-bottom: #880088 double 26pt; margin-bottom: 1em;">
  345. Hallo World
  346. </div>
  347. <div style="border-left:#ff0000 double 16pt; border-right: #0000ff solid 16pt; border-top: #00ff00 solid 26pt; border-bottom: #880088 dotted 16pt; margin-bottom: 1em;">
  348. Hallo World
  349. </div>
  350. <div style="border-left:#ff0000 solid 16pt; border-right: #0000ff solid 16pt; border-top: #00ff00 solid 26pt; border-bottom: #880088 solid 26pt; margin-bottom: 1em;">
  351. Hallo World
  352. </div>
  353. <div style="border-left:#ff0000 solid 16pt; border-right: #0000ff solid 16pt; border-top: #00ff00 solid 26pt; border-bottom: none; margin-bottom: 1em;">
  354. Hallo World
  355. </div>
  356. <br />
  357. <div style="border-left:#ff0000 double 16pt; border-right: #0000ff double 16pt; border-top: #00ff00 double 26pt; border-bottom: #880088 solid 26pt; margin-bottom: 1em;">
  358. Hallo World
  359. </div>
  360. <div style="border-left:#ff0000 double 16pt; border-right: #0000ff solid 16pt; border-top: #00ff00 double 26pt; border-bottom: #880088 solid 26pt; margin-bottom: 1em;">
  361. Hallo World
  362. </div>
  363. <div style="border-radius: 35pt; padding: 1em; border-left:#ff0000 double 16pt; border-right: #0000ff double 16pt; border-top: #00ff00 double 26pt; border-bottom: #880088 double 26pt; margin-bottom: 1em;">
  364. Hallo World
  365. </div>
  366. <div style="border-radius: 35pt; padding: 1em; border-left:#ff0000 solid 16pt; border-right: #0000ff solid 16pt; border-top: #00ff00 solid 26pt; border-bottom: #880088 solid 26pt; margin-bottom: 1em;">
  367. Hallo World
  368. </div>
  369. </div>
  370. <div style="background-color:#ffdddd; padding: 0;">
  371. <div style="padding: 1em; margin-bottom: 1em; font-family: arial; border-bottom: 42px double #666; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 36px double #00F; ">Hallo World</div>
  372. <div style="padding: 1em; margin-bottom: 1em; font-family: arial; border-bottom: 42px double #666; border-left: 16px solid #F00; border-top: 28px solid #0F0; border-right: 36px double #00F; ">Hallo World</div>
  373. <div style="padding: 1em; margin-bottom: 1em; font-family: arial; border-bottom: 42px solid #666; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 36px solid #00F; ">Hallo World</div>
  374. </div>
  375. <table style="border-collapse: collapse;"><tr>
  376. <td style="font-family: arial; border-bottom: 42px double #0FF; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 16px double #00F; "> A whole new world </td>
  377. </tr>
  378. </table>
  379. <table style="border-collapse: none;"><tr>
  380. <td style="font-family: arial; border-bottom: 42px double #0FF; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 16px double #00F; "> A whole new world </td>
  381. </tr>
  382. </table>
  383. <table style="border-collapse: none;"><tr>
  384. <td style="font-family: arial; border: 16px double #F00; border-top: 16px double #0F0;"> A whole new world </td>
  385. </tr>
  386. </table>
  387. <div style="background-color:#ffdddd">
  388. <table style="border-collapse: collapse;">
  389. <tr>
  390. <td style="font-family: arial; border-bottom: 42px double #0FF; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 16px double #00F; "> A whole new world </td>
  391. </tr>
  392. <tr>
  393. <td style="font-family: arial; border-bottom: 42px double #0FF; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 16px double #00F; "> A whole new world </td>
  394. </tr>
  395. </table>
  396. <table style="border-collapse: none;"><tr>
  397. <td style="font-family: arial; border-bottom: 42px double #0FF; border-left: 16px double #F00; border-top: 28px double #0F0; border-right: 16px double #00F; "> A whole new world </td>
  398. </tr>
  399. </table>
  400. <table style="border-collapse: none;"><tr>
  401. <td style="font-family: arial; border: 16px double #F00; border-top: 16px double #0F0;"> A whole new world </td>
  402. </tr>
  403. </table>
  404. </div>
  405. <form>
  406. <fieldset style="border: 4px double red; border-radius: 5px; padding-left: 15px; border-right-color: green;">
  407. <legend>Fieldset and legend</legend>
  408. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  409. </fieldset>
  410. </form>
  411. <form>
  412. <fieldset style="border: 4px solid red; border-radius: 5px; padding-left: 15px; border-right-color: green;">
  413. <legend>Fieldset and legend</legend>
  414. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  415. </fieldset>
  416. </form>
  417. <form>
  418. <fieldset style="border: 4px dashed red; border-radius: 5px; padding-left: 15px; border-right-color: green;">
  419. <legend>Fieldset and legend</legend>
  420. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  421. </fieldset>
  422. </form>
  423. <form>
  424. <fieldset style="border: 4px solid red; padding-left: 15px; border-right-color: green;">
  425. <legend style="font-family:dejavusanscondensed; font-kerning:normal">AWAY To War</legend>
  426. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  427. </fieldset>
  428. </form>
  429. <form>
  430. <fieldset style="border: 4px double red; padding-left: 15px; border-right-color: green;">
  431. <legend>Fieldset and legend</legend>
  432. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  433. </fieldset>
  434. </form>
  435. <form>
  436. <fieldset style="border: 4px dashed red; padding-left: 15px; border-right-color: green;">
  437. <legend style="font-family:dejavusanscondensed; font-kerning:normal">AWAY To War</legend>
  438. <p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
  439. </fieldset>
  440. </form>
  441. ';
  442. $mpdf->useKerning = true;
  443. //==============================================================
  444. //==============================================================
  445. //==============================================================
  446. //==============================================================
  447. //==============================================================
  448. //==============================================================
  449. function SVGarcpath($start, $end, $cx = 50, $cy = 50, $r = 48) {
  450. $start = deg2rad($start);
  451. $end = deg2rad($end);
  452. while ($end < $start) { $end += (M_PI*2); }
  453. if (($end - $start) > M_PI) { $largearcflag = 1; }
  454. else { $largearcflag = 0; }
  455. $start = $start-(M_PI/2); // Adjust to start from the top=0 degrees
  456. while ($start < 0) { $start += (M_PI*2); }
  457. $end = $end-(M_PI/2);
  458. while ($end < 0) { $end += (M_PI*2); }
  459. $commands = array('M', $cx, $cy,
  460. 'l', $r * cos($start), $r * sin($start),
  461. 'A', $r, $r, 0, $largearcflag, 1, $cx + ($r * cos($end)), $cy + ($r * sin($end)),
  462. "z");
  463. $c = implode(' ', $commands);
  464. return $c;
  465. }
  466. function SVGpie($segs, $w=30, $backgroundcolor="none", $linecolor="none", $linewidth=0, $seglinecolor="none", $seglinewidth=0) {
  467. // $w is a number (? pixels)
  468. // $seglinewidth is a number (? pixels)
  469. $os = (max($seglinewidth,$linewidth))/2;
  470. $svg = '<svg width="'.$w.'" height="'.$w.'" viewBox="0,0,'.$w.','.$w.'" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'."\n";
  471. if ($backgroundcolor != "none") {
  472. $svg .= '<g stroke="none" fill="'.$backgroundcolor.'"><circle cx="'.($w/2).'" cy="'.($w/2).'" r="'.(($w/2)-$os).'" /></g>'."\n";
  473. }
  474. foreach($segs AS $arc) {
  475. $path = SVGarcpath($arc[0], $arc[1], ($w/2), ($w/2), ($w/2)-$os);
  476. $svg .= '<g stroke="'.$seglinecolor.'" stroke-width="'.$seglinewidth.'" fill="'.$arc[2].'"><path d="'.$path.'" /></g>'."\n";
  477. }
  478. if ($linecolor != "none") {
  479. $svg .= '<g stroke="'.$linecolor.'" stroke-width="'.$linewidth.'" fill="none"><circle cx="'.($w/2).'" cy="'.($w/2).'" r="'.(($w/2)-$os).'" /></g>'."\n";
  480. }
  481. $svg .= '</svg>'."\n";
  482. return $svg;
  483. }
  484. $segs = array(
  485. array(0, 90, "blue"),
  486. );
  487. $segs2 = array(
  488. array(0, intval(0.65*360), "blue"),
  489. );
  490. $svg = SVGpie($segs, 30, "wheat", "none", 0, "none", 0);
  491. $svg2 = SVGpie($segs2, 30, "wheat", "none", 0, "none", 0);
  492. $html_SVG = '<html><body>
  493. <table>
  494. <tr><td style="vertical-align: middle">Normal (25%): </td><td style="vertical-align: middle">'.$svg.'</td></tr>
  495. <tr><td style="vertical-align: middle">Large (65%): </td><td style="vertical-align: middle">'.$svg2.'</td></tr>
  496. </table>
  497. </body></html>';
  498. //==============================================================
  499. //==============================================================
  500. //==============================================================
  501. //==============================================================
  502. //==============================================================
  503. //==============================================================
  504. // Test In-line font characteristics
  505. $htmlx = '
  506. <div style="font-size: 12pt; font-family:Times">
  507. Normal <span style="font-family:Arial">Arial <span style="font-size:16pt">font-size 16 <span style="color: red">red <span style="font-weight:bold">bold <span style="font-style:italic">italic <span style="font-variant:small-caps">Small Caps <span style="text-decoration:underline">underline <span style="text-shadow: 2px 2px #ff0000;">shadow</span> not shadow; </span> not underline; </span> not small-caps; </span> not italic; </span> not bold; </span> not red; </span> not font-size-16; </span> not Arial-font-family; normal
  508. </div>
  509. <table style="border: 1px solid #888888"><tr><td style="font-size: 12pt; font-family:Times">
  510. Normal <span style="font-family:Arial">Arial <span style="font-size:16pt">font-size 16 <span style="color: red">red <span style="font-weight:bold">bold <span style="font-style:italic">italic <span style="font-variant:small-caps">Small Caps <span style="text-decoration:underline">underline <span style="text-shadow: 2px 2px #ff0000;">shadow</span> not shadow; </span> not underline; </span> not small-caps; </span> not italic; </span> not bold; </span> not red; </span> not font-size-16; </span> not Arial-font-family; normal
  511. </td></tr></table>
  512. <div style="font-size: 16pt; font-family:DejaVuSansCondensed">
  513. Normal <span style="font-kerning:normal">kern AWAY To <span style="font-kerning:none">nokern AWAY To </span> not nokern AWAY To; </span> not kern AWAY To; normal <span style="text-outline: 0.03em green">green <span style="text-outline-color: blue">blue </span> not blue; </span> not green; normal
  514. </div>
  515. <table style="border: 1px solid #888888"><tr><td style="font-size: 16pt; font-family:DejaVuSansCondensed">
  516. Normal <span style="font-kerning:normal">kern AWAY To <span style="font-kerning:none">nokern AWAY To </span> not nokern AWAY To; </span> not kern AWAY To; normal <span style="text-outline: 0.03em green">green <span style="text-outline-color: blue">blue </span> not blue; </span> not green; normal
  517. </td></tr></table>
  518. ';
  519. //==============================================================
  520. //==============================================================
  521. // Test In-line font-feature characteristics
  522. $htmlx = '
  523. <table style="border: 1px solid #888888"><tr><td style="font-size: 15pt; font-family:Calibri">
  524. Calibri normal: <br />
  525. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  526. <span style="color:#8888DD;">pnum</span> <span style="font-feature-settings:\'pnum\' on">
  527. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  528. </span>
  529. <br />
  530. <span style="color:#8888DD;">ordn</span> <span style="font-feature-settings:\'ordn\' on">
  531. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  532. </span>
  533. <br />
  534. <span style="color:#8888DD;">onum</span> <span style="font-feature-settings:\'onum\' on">
  535. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  536. <span style="color:#8888DD;">lnum</span> <span style="font-feature-settings:\'lnum\' on">
  537. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  538. <span style="color:#8888DD;">case</span> <span style="font-feature-settings:\'case\' on">
  539. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  540. <span style="color:#8888DD;">salt</span> <span style="font-feature-settings:\'salt\' on">
  541. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  542. <span style="color:#8888DD;">dlig</span> <span style="font-feature-settings:\'dlig\' on">
  543. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  544. <span style="color:#8888DD;">c2sc</span> <span style="font-feature-settings:\'c2sc\' on">
  545. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  546. <span style="color:#8888DD;">smcp</span> <span style="font-feature-settings:\'smcp\' on">
  547. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check <br />
  548. <span style="color:#8888DD;">sups</span> <span style="font-feature-settings:\'sups\' on">
  549. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  550. </span> <br /><span style="color:#DD8888;">sups off:</span>
  551. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  552. </span> <br /><span style="color:#DD8888;">smcp off:</span>
  553. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  554. </span> <br /><span style="color:#DD8888;">c2sc off:</span>
  555. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  556. </span> <br /><span style="color:#DD8888;">dlig off:</span>
  557. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  558. </span> <br /><span style="color:#DD8888;">salt off:</span>
  559. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  560. </span> <br /><span style="color:#DD8888;">case off:</span>
  561. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  562. </span> <br /><span style="color:#DD8888;">lnum off:</span>
  563. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  564. </span> <br /><span style="color:#DD8888;">onum off:</span>
  565. &pound;123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
  566. </td></tr></table>
  567. ';
  568. //==============================================================
  569. //==============================================================
  570. //==============================================================
  571. //==============================================================
  572. //==============================================================
  573. $mpdf->jSmaxChar = 5; // Maximum spacing to allocate to character spacing. (0 = no maximum)
  574. // Test GPOS
  575. $html = '
  576. <div style="font-family:Garuda; font-size: 28pt; font-feature-settings:\'ccmp\' off, \'mark\' 0, \'mkmk\' 0;">
  577. &#xe1c;&#xe39;&#xe49; &#xe04;&#xe39;&#xe48;
  578. </div>
  579. <div style="font-family:Garuda; font-size: 28pt;">
  580. &#xe1c;&#xe39;&#xe49; &#xe04;&#xe39;&#xe48;
  581. </div>
  582. // GSUB 5.2
  583. <div style="font-family:arialunicodems; font-size: 28pt;">
  584. &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6; &#xcb5;&#xcbf;&#xca7;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xcc6;
  585. </div>
  586. // GSUB 7.2
  587. <div style="font-family: arialunicodems; font-size: 36pt; font-feature-settings:\'dist\' 0;">
  588. &#xc95;&#xccd;&#xcb0;&#xccc; Kannada
  589. </div>
  590. <div style="font-family: arialunicodems; font-size: 36pt;">
  591. &#xc95;&#xccd;&#xcb0;&#xccc;
  592. </div>
  593. <div dir="rtl" style="font-family: \'DejaVu Sans\'; font-size: 36pt; font-feature-settings:\'mark\' off;">
  594. &#x5d6;&#x5bc;&#x5b5;&#x5d9;&#x5bc;&#x5b0;&#x5e9;&#x5c2;&#x5b3;&#x5da;&#x5b8;
  595. </div>
  596. <div dir="rtl" style="font-family: \'DejaVu Sans\'; font-size: 36pt">
  597. &#x5d6;&#x5bc;&#x5b5;&#x5d9;&#x5bc;&#x5b0;&#x5e9;&#x5c2;&#x5b3;&#x5da;&#x5b8;
  598. </div>
  599. <div style="border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 36pt;">
  600. <div style="font-family:\'Dejavu Sans Condensed\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi (DejaVu Sans Condensed)
  601. traffic
  602. insufflate</div>
  603. <div style="font-family:\'Arial\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi traffic insufflate (Arial)</div>
  604. <div style="font-family:\'Times New Roman\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi (Times New Roman)</div>
  605. </div>
  606. // Test GPOS 2
  607. <div style="border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 36pt;font-feature-settings:\'kern\';">
  608. <div style="font-family:\'Arial\'; font-size: 36pt;font-feature-settings:\'kern\';">To A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi Wo&#x308; W&#x308; Ta Tu To&#x308; (Arial)<br />
  609. AWAY To WAR</div>
  610. <div style="font-family:\'Dejavu Sans Condensed\';font-feature-settings:\'kern\';">Ta To A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi (DejaVu Sans Condensed)
  611. traffic
  612. insufflate Ta Tu
  613. <br />
  614. AWAY To WAR</div>
  615. <div style="font-family:\'Dejavu Sans Condensed\'; font-size: 16pt;font-feature-settings:\'kern\';">To A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi Wo&#x308; W&#x308; Ta Tu To&#x308; (DejaVu Sans Condensed)
  616. traffic
  617. insufflate</div>
  618. <div style="font-family:\'Times New Roman\';font-feature-settings:\'kern\';">To A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi Wo&#x308; Ta Tu To&#x308; (Times New Roman)<br />
  619. AWAY To WAR</div>
  620. </div>
  621. <div style="font-family:\'Arial\'; font-size: 36pt;font-feature-settings:\'kern\';">To Ta D&#x30F; D&#x323; a&#x309; A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi Wo&#x308; Ta Tu To&#x308; (Arial)<br />
  622. AWAY To WAR</div>
  623. <div style="font-family:\'Arial\'; font-size: 16pt;font-feature-settings:\'kern\';">To D&#x30F; D&#x323; a&#x309; A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; fi Wo&#x308; Ta Tu To&#x308; (Arial)<br />
  624. AWAY To WAR</div>
  625. Kerning = GPOS Lookup Type 2; Mark to base = GOS Lookup Type 4
  626. <div style="font-family:\'Arial\'; font-size: 36pt;">A&#x308;&#x0315;&#x0303; a&#x308;&#x0315;&#x0303; a&#x308;&#x0303;&#x0315; a&#x0303;&#x308;&#x0315; a&#x0315;&#x0303;&#x308; (GPOS Lookup Type 6)</div>
  627. <div style="font-family:DejavuSansCondensed; font-size: 36pt;font-feature-settings:\'mark\' off, \'mkmk\' off;">&#x0e7;&#x325; (GPOS Lookup Type 5)</div>
  628. <div style="font-family:DejavuSansCondensed; font-size: 36pt;">&#x0e7;&#x325; (GPOS Lookup Type 5)</div>
  629. <div style="font-family:ArabicTypesetting; font-size: 46pt;">&#x627;&#x62b;&#x645;&#x643;&#x62d;&#x647;
  630. (Cursive GPOS Lookup Type 3)</div>
  631. <div style="font-family:Arial; font-size: 16pt;">A&#x308; a&#x308; a&#x308; a&#x0303; a&#x0315;</div>
  632. <div style="font-family:Arial; font-size: 16pt;">A&#x308;&#x0315; a&#x308;&#x0315; a&#x308;&#x0303; a&#x0303;&#x308; a&#x0315;&#x0303;</div>
  633. <div style="font-family:Arial; font-size: 16pt;">A&#x308;&#x0315;&#x0303; a&#x308;&#x0315;&#x0303; a&#x308;&#x0303;&#x0315; a&#x0303;&#x308;&#x0315; a&#x0315;&#x0303;&#x308;</div>
  634. <div style="font-family:arabictypesetting; font-size: 28pt;" dir="rtl">&#x627;&#x659;&#x659;&#x647; &#x627;&#x647; &#x647; &#x648;&#x659;&#x647; &#x648;&#x647; &#x647; </div>
  635. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">trA&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To </div>
  636. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">trA&#x308;&#x0315;&#x0303;ffic AWAY To <span>tra&#x308;&#x0315;&#x0303;ffic AWAY To</span> tra&#x308;&#x0315;&#x0303;ffic AWAY To <span>tra&#x308;&#x0315;&#x0303;ffic AWAY To</span> </div>
  637. // TEST GPOS Ligature Position
  638. <div style="font-family:arabictypesetting; font-size: 46pt; font-feature-settings:\'kern\';" dir="rtl">
  639. &#x64a;&#x64e;&#x640;&#x670;&#x653;&#x623;&#x64e;&#x64a;&#x651;&#x64f;&#x647;&#x64e;&#x627; &#x64a;&#x64e;&#x646;&#x62a;&#x64f;&#x645; &#x644;&#x64e;&#x649;&#x670;&#x653; &#x6da;
  640. &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x643;&#x64e;&#x645;&#x64e;&#x627;
  641. &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64f; &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64e; &#x648;&#x64e;&#x644;&#x64e;&#x627;
  642. &#x644;&#x64e;&#x627;
  643. &#x631;&#x651;&#x650;&#x62c;&#x64e;&#x627;&#x644;&#x650;&#x643;&#x64f;&#x645;&#x652; &#x6d6;
  644. &#x62e;&#x652;&#x631;&#x64e;&#x649;&#x670; &#x6da; &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x64a;&#x64e;&#x623;&#x652;&#x628;&#x64e;&#x6da;
  645. &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x62a;&#x64e;&#x633;&#x652;&#x640;&#x654;&#x64e;&#x645;&#x64f;&#x648;&#x653;&#x627;&#x6df; &#x623;&#x64e;&#x648;&#x652; &#x643;&#x64e;&#x628;&#x650;&#x64a;&#x631;&#x64b;&#x627; &#x625;&#x650;&#x644;&#x64e;&#x649;&#x670;&#x653;
  646. &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x650; &#x648;&#x64e;&#x623;&#x64e;&#x62f;&#x652;&#x646;&#x64e;&#x649;&#x670;&#x653; &#x623;&#x64e;&#x644;&#x651;&#x64e;&#x627; &#x625;&#x650;&#x644;&#x651;&#x64e;&#x622;
  647. &#x628;&#x64e;&#x64a;&#x652;&#x646;&#x64e;&#x643;&#x64f;&#x645;&#x652; &#x639;&#x64e;&#x644;&#x64e;&#x64a;&#x652;&#x643;&#x64f;&#x645;&#x652; &#x623;&#x64e;&#x644;&#x651;&#x64e;&#x627;
  648. &#x64a;&#x64e;&#x639;&#x652;&#x62a;&#x64f;&#x645;&#x652; &#x6da; &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x643;&#x64e;&#x627;&#x62a;&#x650;&#x628;&#x64c;&#x6ed;
  649. </div>
  650. // TEST GPOS Ligature Position - TABLES
  651. <table dir="rtl" style="font-family:me_quran; font-size: 26pt;line-height: 2em; "><tr><td style="border:1px solid #888888;text-align:justify; font-feature-settings:\'kern\'; word-spacing: 0.3em;">
  652. &#x64a;&#x64e;&#x640;&#x670;&#x653;&#x623;&#x64e;&#x64a;&#x651;&#x64f;&#x647;&#x64e;&#x627; &#x64a;&#x64e;&#x646;&#x62a;&#x64f;&#x645; &#x644;&#x64e;&#x649;&#x670;&#x653; &#x6da;
  653. &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x643;&#x64e;&#x645;&#x64e;&#x627;
  654. &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64f; &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64e; &#x648;&#x64e;&#x644;&#x64e;&#x627;
  655. &#x644;&#x64e;&#x627;
  656. &#x631;&#x651;&#x650;&#x62c;&#x64e;&#x627;&#x644;&#x650;&#x643;&#x64f;&#x645;&#x652; &#x6d6;
  657. &#x62e;&#x652;&#x631;&#x64e;&#x649;&#x670; &#x6da; &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x64a;&#x64e;&#x623;&#x652;&#x628;&#x64e;&#x6da;
  658. &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x62a;&#x64e;&#x633;&#x652;&#x640;&#x654;&#x64e;&#x645;&#x64f;&#x648;&#x653;&#x627;&#x6df; &#x623;&#x64e;&#x648;&#x652; &#x643;&#x64e;&#x628;&#x650;&#x64a;&#x631;&#x64b;&#x627; &#x625;&#x650;&#x644;&#x64e;&#x649;&#x670;&#x653;
  659. &#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x650; &#x648;&#x64e;&#x623;&#x64e;&#x62f;&#x652;&#x646;&#x64e;&#x649;&#x670;&#x653; &#x623;&#x64e;&#x644;&#x651;&#x64e;&#x627; &#x625;&#x650;&#x644;&#x651;&#x64e;&#x622;
  660. &#x628;&#x64e;&#x64a;&#x652;&#x646;&#x64e;&#x643;&#x64f;&#x645;&#x652; &#x639;&#x64e;&#x644;&#x64e;&#x64a;&#x652;&#x643;&#x64f;&#x645;&#x652; &#x623;&#x64e;&#x644;&#x651;&#x64e;&#x627;
  661. &#x64a;&#x64e;&#x639;&#x652;&#x62a;&#x64f;&#x645;&#x652; &#x6da; &#x648;&#x64e;&#x644;&#x64e;&#x627; &#x643;&#x64e;&#x627;&#x62a;&#x650;&#x628;&#x64c;&#x6ed;
  662. </td></tr></table>
  663. // TEST \'curs\' GPOS
  664. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'curs\' off;">
  665. &#x0640;&#x0649;&#x0766;&#x0640;
  666. &#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;
  667. </div>
  668. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt;">
  669. &#x0640;&#x0649;&#x0766;&#x0640;
  670. &#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;&#xfe8c;
  671. </div>
  672. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'curs\' off;">
  673. &#x633;&#x652;&#x62a;&#x64e;&#x634;&#x652;&#x647;&#x650;&#x62f;&#x64f;
  674. </div>
  675. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'curs\';">
  676. &#x633;&#x652;&#x62a;&#x64e;&#x634;&#x652;&#x647;&#x650;&#x62f;&#x64f;
  677. </div>
  678. // TEST LINE-BREAKING
  679. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  680. trA&#x308;&#x0315;&#x0303;ff AWAY 1a) tra&#x308;&#x0315;&#x0303;ffic AWAY To in<b>suff-er</b>able
  681. tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY</div>
  682. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal;">
  683. trA&#x308;&#x0315;&#x0303;ffic AWAY 1b) tra&#x308;&#x0315;&#x0303;ffic AWAY To
  684. in&shy;suffer&shy;able fra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </div>
  685. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal;">
  686. tr<i>A&#x308;&#x0315;&#x0303;ff</i>icAWAYinsufferable<b>Togra&#x308;&#x0315;&#x0303;ffic</b>AWAYTotra&#x308;&#x0315;&#x0303;ffic2e)i)AWAYTotra&#x308;&#x0315;&#x0303;fficAWAYTotra&#x308;&#x0315;&#x0303;fficA&#x308;WAYTo</div>
  687. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  688. trA&#x308;&#x0315;&#x0303;ffic2e)ii)A)withSHY&shy;suf&shy;ableTotra&#x308;&#x0315;&#x0303;ffic<b>AWAYTo</b>tra&#x308;&#x0315;&#x0303;ffic AWAY To hra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </div>
  689. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal">
  690. trA&#x308;&#x0315;&#x0303;ffic AW 2e)ii)A) tra&#x308;&#x0315;&#x0303;ffic AWAY To
  691. in<b>suffer</b>able tra&#x308;&#x0315;&#x0303;ffic AWAY 3.) tra&#x308;&#x0315;&#x0303;ffic
  692. A&#x308;WAY To tra&#x308;&#x0315;&#x0303;ffic</div>
  693. <div style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  694. trA&#x308;&#x0315;&#x0303;ffic2e)ii)B)sufferableTotra&#x308;&#x0315;&#x0303;ffic<b>AWAYTotra&#x308;&#x0315;&#x0303;ffic</b> AWAY To hra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </div>
  695. // TEST LINE-BREAKING - TABLES
  696. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  697. trA&#x308;&#x0315;&#x0303;ff AWAY 1a) tra&#x308;&#x0315;&#x0303;ffic AWAY To in<b>suff-er</b>able
  698. tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY</td></tr></table>
  699. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal;">
  700. trA&#x308;&#x0315;&#x0303;ffic AWAY 1b) tra&#x308;&#x0315;&#x0303;ffic AWAY To
  701. in&shy;suffer&shy;able fra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </td></tr></table>
  702. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal;">
  703. tr<i>A&#x308;&#x0315;&#x0303;ff</i>icAWAYinsufferable<b>Togra&#x308;&#x0315;&#x0303;ffic</b>AWAYTotra&#x308;&#x0315;&#x0303;ffic2e)i)AWAYTotra&#x308;&#x0315;&#x0303;fficAWAYTotra&#x308;&#x0315;&#x0303;fficA&#x308;WAYTo</td></tr></table>
  704. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  705. trA&#x308;&#x0315;&#x0303;ffic2e)ii)A)withSHY&shy;suf&shy;ableTotra&#x308;&#x0315;&#x0303;ffic<b>AWAYTo</b>tra&#x308;&#x0315;&#x0303;ffic AWAY To hra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </td></tr></table>
  706. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;font-kerning:normal">
  707. trA&#x308;&#x0315;&#x0303;ffic AW 2e)ii)A) tra&#x308;&#x0315;&#x0303;ffic AWAY To
  708. in<b>suffer</b>able tra&#x308;&#x0315;&#x0303;ffic AWAY 3.) tra&#x308;&#x0315;&#x0303;ffic
  709. A&#x308;WAY To tra&#x308;&#x0315;&#x0303;ffic</td></tr></table>
  710. <table><tr><td style="font-family:Arial; font-size: 28pt;border:1px solid #888888;text-align:justify;">
  711. trA&#x308;&#x0315;&#x0303;ffic2e)ii)B)sufferableTotra&#x308;&#x0315;&#x0303;ffic<b>AWAYTotra&#x308;&#x0315;&#x0303;ffic</b> AWAY To hra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic AWAY To tra&#x308;&#x0315;&#x0303;ffic A&#x308;WAY To </td></tr></table>
  712. // CSS control of features
  713. <div style="font-family:DejavuSansCondensed; font-size: 28pt;border:1px solid #888888;text-align:justify;font-feature-settings:\'salt\';">all <span style="font-feature-settings:\'salt\' 0;">all</span> all</div>
  714. <div style="font-family:Trebuchet MS; font-size: 28pt;border:1px solid #888888;text-align:justify;font-variant:small-caps">Small Caps. 1,278 and More.</div>
  715. <div style="font-family:DejavuSansCondensed; font-size: 28pt;border:1px solid #888888;text-align:justify;font-variant:small-caps">Small Caps. 1,278 and More.</div>
  716. <div style="font-family:DejavuSansCondensed; font-size: 28pt;border:1px solid #888888;text-align:justify; ">1st 100 1/2 traffic AWAY feast To</div>
  717. <div style="font-family:DejavuSansCondensed; font-size: 28pt;border:1px solid #888888;text-align:justify; font-feature-settings:\'salt\', \'aalt\', \'dlig\', \'hlig\', \'kern\';">1st 100 1/2 traffic AWAY feast To &#x03B2; &#x03B8; &#x03C6;</div>
  718. <div style="font-family:CambriaMath; font-size: 28pt;border:1px solid #888888;text-align:justify; font-feature-settings:\'frac\', \'zero\', \'ordn\', \'salt\', \'dlig\', \'hist\', \'kern\';">1st 100 1/2 traffic AWAY feast To &#x03B2; &#x03B8; &#x03C6;</div>
  719. <div style="font-family:CambriaMath; font-size: 28pt;border:1px solid #888888;text-align:justify; font-feature-settings:\'sinf\';">C10H16N5O13P3</div>
  720. Cambria:
  721. \'salt\'
  722. \'c2sc\'
  723. \'smcp\'
  724. \'sups\'
  725. \'sinf\'
  726. \'case\'
  727. \'calt\'
  728. \'tnum\'
  729. \'pnum\'
  730. \'onum\'
  731. \'lnum\'
  732. \'numr\'
  733. \'dnom\'
  734. <div style="font-family:Calibri; font-size: 28pt;border:1px solid #888888;text-align:justify; font-feature-settings:\'frac\', \'zero\', \'ordn\', \'salt\', \'aalt\', \'dlig\', \'hist\', \'kern\';">1st 100 1/2 traffic AWAY feast To &#x03B2; &#x03B8; &#x03C6;</div>
  735. Calibri:
  736. \'case\'
  737. \'calt\'
  738. \'numr\'
  739. \'dnom\'
  740. \'subs\'
  741. \'tnum\'
  742. \'pnum\'
  743. \'onum\'
  744. \'lnum\'
  745. \'salt\'
  746. \'c2sc\'
  747. \'smcp\'
  748. \'sups\'
  749. \'ordn\'
  750. \'liga\'
  751. \'dlig\'
  752. <div style="font-family:XBRiyaz; font-size: 28pt;border:1px solid #888888;text-align:justify; font-feature-settings:\'frac\';">1st 100 1/2 traffic AWAY feast To</div>
  753. <div style="font-family:\'Arial Unicode MS\'; font-size: 28pt;border:1px solid #888888; ">1st 100 1/2 traffic AWAY feast To</div>
  754. // TEST GPOS Type 2 Format 1 (abvm)
  755. <div style="font-family:Mangal; font-size: 18pt;">&#x930;&#x94d;&#x935;&#x947;&#x951;</div>
  756. // TEST \'kern\' GPOS in Arabic Typesetting
  757. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  758. &#x06dd;&#x0663;&#x0664;&#x0665;
  759. </div>
  760. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  761. &#x0600;&#x0663;&#x0664;
  762. </div>
  763. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  764. &#x0601;&#x0663;&#x0664;&#x0665;
  765. </div>
  766. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  767. &#x0601;&#x0663;&#x0664;
  768. </div>
  769. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  770. &#x0602;&#x0663;&#x0664;
  771. </div>
  772. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  773. &#x0603;&#x0663;&#x0664;
  774. </div>
  775. This test for reversal of chunks in flowing block, preserving consecutive chunks of LTR in an RTL line
  776. <div dir="rtl" style="font-family:arial; font-size: 18pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  777. &#x627;&#x644;&#x62d;&#x645;&#x62f; <span>These</span> <b>English</b> words and <img src="goto.gif" /> <span style="color:red">not reversed</span> &#x0663;&#x0664;&#x0665; &#x644;&#x644;&#x647;
  778. </div>
  779. <div dir="rtl" class="mpdf_toc" id="mpdf_toc_0" style="font-family:arial; font-size: 18pt">
  780. <div class="mpdf_toc_level_0"><a class="mpdf_toc_a" href="#__mpdfinternallink_1"><span class="mpdf_toc_t_level_0">&#x627;&#x644;&#x642; 1</span></a> .... <a class="mpdf_toc_a" href="#__mpdfinternallink_1"><span class="mpdf_toc_p_level_0">3</span></a></div>
  781. <div class="mpdf_toc_level_0"><a class="mpdf_toc_a" href="#__mpdfinternallink_2"><span class="mpdf_toc_t_level_0">&#x627;&#x644;&#x642;&#x633;&#x645; 2</span></a> <dottab outdent="0" /> <a class="mpdf_toc_a" href="#__mpdfinternallink_2"><span class="mpdf_toc_p_level_0">3</span></a></div>
  782. </div>
  783. <div dir="rtl" style="font-family:\'arabic typesetting\'; font-size: 48pt; font-feature-settings:\'ccmp\', \'curs\', \'kern\';">
  784. &#x627;&#x644;&#x62d;&#x645;&#x62f; &#x06dd;&#x0663;&#x0664;&#x0665; &#x0663;&#x0664;&#x0665; &#x644;&#x644;&#x647;
  785. </div>
  786. <div style="font-family:arial; font-size: 22pt; direction: rtl;">
  787. &#x5d1;&#x5d3;&#x5d9;&#x5e7;&#x5d4; &#x5d1;&#x5d0;&#x5e0;&#x5d2;&#x5dc;&#x5d9;&#x5ea; Latin Text - (&#x5e0;&#x5d9;&#x5e1;&#x5d9;&#x5d5;&#x5df; A)
  788. <br />
  789. &#x5d1;&#x5d3;&#x5d9;&#x5e7;&#x5d4; &#x5d1;&#x5d0;&#x5e0;&#x5d2;&#x5dc;&#x5d9;&#x5ea; Latin Text - (&#x5e0;&#x5d9;&#x5e1;&#x5d9;&#x5d5;&#x5df; 2)
  790. <br />
  791. &#x5d1;&#x5e0;&#x5e7;: 12, &#x5e1;&#x5e0;&#x5d9;&#x5e3;: 11, &#x5de;&#x5e1;\' &#x5d7;&#x5e9;&#x5d1;&#x5d5;&#x5df;: 111, &#x5de;&#x5e1;\' &#x5d4;&#x5de;&#x5d7;&#x5d0;&#x5d4;: 1112
  792. <br />
  793. &#x5e7;&#x5d9;&#x5d6;&#x5d5;&#x5d6; &#x5d9;&#x5de;&#x5d9;&#x5dd; &#x5d1;&#x5d2;&#x5d9;&#x5df; &#x5ea;&#x5d7;&#x5d9;&#x5dc;&#x5ea; &#x5e2;&#x5d1;&#x5d5;&#x5d3;&#x5d4; &#x5de;&#x5ea;&#x5d0;&#x5e8;&#x5d9;&#x5da; 08/01/2013
  794. <br />
  795. &#x5e9;&#x5d9;&#x5e8;&#x5d5;&#x5ea;&#x5d9; Cloud Computing
  796. </div>
  797. <div style="font-family:arial; font-size: 30pt; ">
  798. (&#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64e;) A&#x308;&#x315; a&#x308;&#x315;
  799. </div>
  800. <div style="font-family:arial; font-size: 30pt; ">
  801. A&#x308;&#x315;&#x303; A&#x308;&#x315;a&#x308;&#x315;a&#x308;&#x303; (&#x671;&#x644;&#x644;&#x651;&#x64e;&#x647;&#x64e;) A&#x308;&#x315; a&#x308;&#x315;
  802. </div>
  803. GPOS Type 2 Format 1 "kern"
  804. <div style="direction: rtl; font-family: \'arabic typesetting\'; line-height: 1.8; font-size: 42pt; font-feature-settings:\'curs\', \'kern\'; border: 1px solid #888888;">
  805. &#x643;&#x64e;&#x628;&#x650;&#x64a;&#x631;&#x64b;&#x627; &#x625;&#x650;&#x644;&#x64e;&#x649;&#x670;&#x653;
  806. </div>
  807. ';
  808. //==============================================================
  809. //==============================================================
  810. //==============================================================
  811. $mpdf->debug = true;
  812. //==============================================================
  813. //==============================================================
  814. $htmlx ='
  815. <style>
  816. body, p { font-family: freesans; font-size: 16pt; }
  817. h3 { font-size: 16pt; margin-bottom:0; }
  818. .tamil {
  819. font-family:Latha;
  820. font-size: 16pt;
  821. }
  822. .oriya {
  823. font-family:Kalinga;
  824. font-size: 16pt;
  825. }
  826. .punjabi {
  827. font-family:Raavi;
  828. font-size: 16pt;
  829. }
  830. .gujarati {
  831. font-family:Shruti;
  832. font-size: 16pt;
  833. }
  834. .hindi {
  835. font-family:Mangal;
  836. font-size: 16pt;
  837. }
  838. .nepali {
  839. font-family:Mangal;
  840. font-size: 16pt;
  841. }
  842. .assamese { /* same as bengali */
  843. font-family:vrinda;
  844. font-size: 16pt;
  845. }
  846. .bengali {
  847. font-family:vrinda;
  848. font-size: 16pt;
  849. }
  850. .telugu {
  851. font-family:gautami;
  852. font-size: 16pt;
  853. }
  854. .kannada {
  855. font-family:Tunga;
  856. font-size: 16pt;
  857. }
  858. .malayalam {
  859. font-family:Kartika;
  860. font-size: 16pt;
  861. }
  862. </style>
  863. <p class="bengali">
  864. &#x9ce;&#x9a4;
  865. &#x9ce;&#x9a4;&#x9c7;
  866. &#x9a4;
  867. &#x9a4;&#x9cd;&#x9a4;
  868. &#x9a4;&#x9cd;&#x9a4;&#x9c7;
  869. &#x9a4;&#x9cd;&#x200d;&#x9a4;
  870. &#x9a4;&#x9cd;&#x200d;&#x9a4;&#x9c7;
  871. <br />
  872. &#x9a4;&#x9cd;&#x200d; = Khanda Ta. (U+09CE) character was added in Unicode v 4.1 and prior to this, (U+09A4 U+09CD U+200D) used <br />
  873. </p>
  874. Kannada
  875. <div class="kannada">&#xca4;&#xcae;&#xccd;&#xcae;&#xca6;&#xcc7; &#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xcaf;&#xcca;&#xcac;&#xccd;&#xcac;&#xcb3;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcb8;&#xcbe;&#xcac;&#xcc0;&#xca4;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1; &#xca8;&#xca1;&#xcc6;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1; &#xc87;&#xc82;&#xc97;&#xccd;&#xcb2;&#xcc6;&#xc82;&#xca1;&#xccd; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;&#xcb5;&#xcc1; &#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; &#xcad;&#xcbe;&#xcb5; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xc95;&#xcbe;&#xcb0;&#xccd;&#xca1;&#xcbf;&#xcab;&#xccd; &#xc95;&#xccd;&#xcb0;&#xccc;&#xca8;&#xccd; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;&#xca6;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xc85;&#xcaa;&#xcb0;&#xcbe;&#xca7;&#xcbf;&#xc97;&#xcb3;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xcae;&#xcb2;&#xca4;&#xc82;&#xca6;&#xcc6; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xc85;&#xc95;&#xccd;&#xcb0;&#xcae; &#xcb5;&#xcb2;&#xcb8;&#xcbf;&#xc97;&#xcb0;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1; &#xc85;&#xcb5;&#xcb0;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcad;&#xcbe;&#xcb0;&#xca4;&#xc95;&#xccd;&#xc95;&#xcc6; &#xcae;&#xcbe;&#xca1;&#xcb2;&#xcbe;&#xc97;&#xcc1;&#xca4;&#xccd;&#xca4;&#xca6;&#xcc6;.
  876. <br />
  877. &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; &#xcae;&#xcb2;&#xca4;&#xc82;&#xca6;&#xcc6;&#xc97;&#xcc6; &#xc95;&#xccd;&#xcb0;&#xcae;&#xcb5;&#xcbe;&#xc97;&#xcbf; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1;
  878. <br />
  879. &#xcac;&#xcbe;&#xcb2;&#xc95;&#xcbf;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc7; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xcae;&#xcbe;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcb0;&#xcc1; &#xcb5;&#xcb0;&#xccd;&#xcb7;&#xcb5;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97; &#xc97;&#xcb0;&#xccd;&#xcad;&#xc95;&#xccd;&#xc95;&#xcc6; &#xc95;&#xcbe;&#xcb0;&#xca3;&#xcb5;&#xcbe;&#xc97;&#xcbf;&#xcb0;&#xcc1;&#xcb5;&#xcc1;&#xca6;&#xca8;&#xccd;&#xca8;&#xcc2; &#xcae;&#xcb2; &#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xc85;&#xcb5;&#xca7;&#xcbf;&#xcaf;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xc92;&#xcaa;&#xccd;&#xcaa;&#xcbf;&#xc95;&#xcca;&#xc82;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xca8;&#xcc6; &#xc86;&#xc95;&#xcc6;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc1; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xcae;&#xcbe;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1; &#xcae;&#xc97;&#xcc1;&#xcb5;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97; &#xca4;&#xccb;&#xcb0;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;. &#xc85;&#xcb2;&#xccd;&#xcb2;&#xca6;&#xcc6; &#xcb9;&#xcb2;&#xccd;&#xcb2;&#xcc6; &#xca8;&#xca1;&#xcc6;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;
  880. <br />
  881. &#xcac;&#xcbe;&#xcb2;&#xc95;&#xcbf;&#xcaf;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97;&#xcb2;&#xcc7; &#xc86;&#xcb0;&#xc82;&#xcad;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;&#xca8;&#xccd;&#xca8;&#xcc1; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf; &#xcb9;&#xcca;&#xcb0;&#xc97;&#xcc6;&#xcb3;&#xcc6;&#xca6;&#xcbf;&#xca4;&#xccd;&#xca4;&#xcc1;.
  882. </div>
  883. Telegu
  884. <div class="telugu">&#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f;
  885. <br />
  886. &#xc30;&#xc46;&#xc35;&#xc32;&#xc4d;&#xc2f;&#xc42;&#xc37;&#xc28;&#xc30;&#xc40; &#xc17;&#xc3e;&#xc30;&#xc4d;&#xc21;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b; &#xc2a;&#xc4d;&#xc30;&#xc2e;&#xc41;&#xc16; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b;&#xc38;&#xc39;&#xc3e; &#xc2e;&#xc4a;&#xc24;&#xc4d;&#xc24;&#xc02; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28;&#xc1f;&#xc4d;&#xc32;&#xc41; &#xc32;&#xc4b;&#xc15;&#xc4d;&#x200c;&#xc38;&#xc2d; &#xc38;&#xc4d;&#xc2a;&#xc40;&#xc15;&#xc30;&#xc4d;
  887. <br />
  888. &#xc26;&#xc3e;&#xc21;&#xc41;&#xc32;&#xc4d;&#xc32;&#xc4b; &#xc2d;&#xc26;&#xc4d;&#xc30;&#xc24;&#xc3e;&#xc26;&#xc33;&#xc3e;&#xc32;&#xc15;&#xc41; &#xc36;&#xc41;&#xc36;&#xc3e;&#xc24;&#xc4d;&#xc30;&#xc40;, &#xc2e;&#xc4a;&#xc39;&#xc2e;&#xc4d;&#xc2e;&#xc26;&#xc4d;&#x200c; &#xc24;&#xc26;&#xc3f;&#xc24;&#xc30;&#xc41;&#xc32;&#xc41;&#xc28;&#xc4d;&#xc28;&#xc3e;&#xc30;&#xc28;&#xc3f;, &#xc24;&#xc40;&#xc35;&#xc4d;&#xc30;&#xc17;&#xc3e;&#xc2f;&#xc3e;&#xc32;&#xc2a;&#xc3e;&#xc32;&#xc48;&#xc28;&#xc3e;&#xc30;&#xc28;&#xc3f; &#xc1a;&#xc46;&#xc2a;&#xc4d;&#xc2a;&#xc3e;&#xc30;&#xc41;.
  889. <br />
  890. &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d;&#xc32;&#xc41; &#xc2a;&#xc3e;&#xc15;&#xc3f;&#xc38;&#xc4d;&#xc25;&#xc3e;&#xc28;&#xc4d;&#x200c; &#xc38;&#xc30;&#xc3f;&#xc39;&#xc26;&#xc4d;&#xc26;&#xc41;&#xc32;&#xc4d;&#xc32;&#xc4b;&#xc28;&#xc41;&#xc28;&#xc4d;&#xc28; &#xc2a;&#xc3f;&#xc36;&#xc3f;&#xc28;&#xc4d; &#xc2a;&#xc4d;&#xc30;&#xc3e;&#xc02;&#xc24;&#xc02;&#xc32;&#xc4b; &#xc2a;&#xc3e;&#xc32;&#xc4d;&#xc17;&#xc4a;&#xc28;&#xc47;&#xc02;&#xc26;&#xc41;&#xc15;&#xc41; &#xc26;&#xc47;&#xc30;&#xc3f; &#xc35;&#xc46;&#xc33;&#xc4d;&#xc33;&#xc3e;&#xc30;&#xc28;&#xc3f;
  891. </div>
  892. Oriya
  893. <div class="oriya">&#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15;&#xb41; &#xb38;&#xb4d;&#xb2c;&#xb3e;&#xb17;&#xb24; &#xb0f;&#xb39;&#xb3f; &#xb09;&#xb28;&#xb4d;&#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb07;&#xb23;&#xb4d;&#xb1f;&#xb30;&#xb28;&#xb47;&#xb1f; &#xb2c;&#xb3f;&#xb36;&#xb4d;&#xb2c;&#xb30; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#xb2e;&#xb27;&#xb4d;&#xb5f; &#xb2c;&#xb30;&#xb4d;&#xb26;&#xb4d;&#xb27;&#xb3f;&#xb24; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb0f;&#xb39;&#xb3f; &#xb2a;&#xb43;&#xb37;&#xb4d;&#xb20;&#xb3e;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28; &#xb38;&#xb2e;&#xb38;&#xb4d;&#xb24; &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb32;&#xb3e;&#xb07;&#xb38;&#xb47;&#xb28;&#xb4d;&#xb38;&#xb30; &#xb38;&#xb30;&#xb4d;&#xb24;&#xb4d;&#xb24; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb07;&#xb32;&#xb47;&#xb15;&#xb4d;&#xb1f;&#xb4d;&#xb30;&#xb4b;&#xb28;&#xb3f;&#xb15;&#xb4d;&#xb38; &#xb2a;&#xb4d;&#xb30;&#xb3f;&#xb23;&#xb4d;&#xb1f;&#xb4d; &#xb2a;&#xb30;&#xb4d;&#xb2f;&#xb4d;&#xb5f;&#xb28;&#xb4d;&#xb24; &#xb2a;&#xb4d;&#xb30;&#xb38;&#xb19;&#xb4d;&#xb17;
  894. </div>
  895. Punjabi
  896. <div class="punjabi">&#xa17;&#xa4d;&#xa30;&#xa39;&#xa3f;&#xa2e;&#xa70;&#xa24;&#xa30;&#xa40; &#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa26;&#xa4d;&#xa30;&#xa2e;&#xa41;&#xa15; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa70;&#xa15;&#xa3e;
  897. </div>
  898. Malayalam
  899. <div class="malayalam">&#xd38;&#xd3f;&#xd2a;&#xd3f;&#x200c;&#xd0e;&#xd02;
  900. </div>
  901. Bengali (bn)
  902. <div class="bengali">&#x9b8;&#x9cd;&#x9ac;&#x9c7;&#x99a;&#x9cd;&#x99b;&#x9be;&#x9b8;&#x9c7;&#x9ac;&#x9c0; &#x993; &#x9a4;&#x9cd;&#x9b0;&#x9be;&#x9a3; &#x9a4;&#x9c0;&#x9ac;&#x9cd;&#x9b0;&#x9a4;&#x9be; &#x9b8;&#x9cd;&#x9b0;&#x9cb;&#x9a4; &#x9b8;&#x982;&#x996;&#x9cd;&#x9af;&#x9be; &#x9b8;&#x9cd;&#x9ac;&#x9ad;&#x9be;&#x9ac;&#x9a4;&#x987; &#x986;&#x995;&#x9cd;&#x9b0;&#x9ae;&#x9a3; &#x9aa;&#x9cd;&#x9b0;&#x9ac;&#x9c7;&#x9b6; &#x9a8;&#x9bf;&#x9df;&#x9a8;&#x9cd;&#x9a4;&#x9cd;&#x9b0;&#x9a3; &#x9b8;&#x9be;&#x9b9;&#x9be;&#x9af;&#x9cd;&#x9af;&#x9c7;
  903. </div>
  904. Assamese
  905. <div class="bengali">&#x989;&#x9a6;&#x9cd;&#x9a6;&#x9c7;&#x9b6;&#x9cd;&#x9af; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9aa;&#x9cd;&#x9f0;&#x9a3;&#x9af;&#x9bc;&#x9a8; &#x9b8;&#x9be;&#x9b9;&#x9bf;&#x9a4;&#x9cd;&#x9af;&#x9bf;&#x995;&#x9b8;&#x995;&#x9b2;
  906. &#x997;&#x9cd;&#x9f0;&#x9be;&#x9b9;&#x9cd;&#x9af; &#x997;&#x9cd;&#x9f0;&#x9b9;&#x9a8;
  907. </div>
  908. Misc
  909. <div class="bengali">&#x985;&#x9cd;&#x9af; &#x995; &#x995;&#x9bc; &#x995;&#x9bf; &#x995;&#x9cd; &#x995;&#x9cd;&#x995; &#x995;&#x9cd;&#x9b0; &#x995;&#x9cd;&#x9b0;&#x9cd;&#x995; &#x995;&#x9cd;&#x200c;&#x995; &#x995;&#x9cd;&#x200d;&#x995; &#x9a6;&#x9cd;&#x9af; &#x9a8;&#x9cd;&#x995; &#x9a8;&#x9cd;&#x9a7; &#x9a8;&#x9cd;&#x9ac; &#x9a8;&#x9cd;&#x9af; &#x9a8;&#x9cd;&#x9b0; &#x9a8;&#x9cd;&#x200c;&#x995; &#x9a8;&#x9cd;&#x200c;&#x9a7; &#x9a8;&#x9cd;&#x200c;&#x9ac; &#x9a8;&#x9cd;&#x200c;&#x9b0; &#x9a8;&#x9cd;&#x200d;&#x995; &#x9a8;&#x9cd;&#x200d;&#x9a7; &#x9a8;&#x9cd;&#x200d;&#x9ac; &#x9a8;&#x9cd;&#x200d;&#x9b0; &#x9af;&#x9cd; &#x9b0;&#x9cd;&#x995; &#x9b0;&#x9cd;&#x995;&#x9bf; &#x9b0;&#x9cd;&#x995;&#x9cc; &#x9b0;&#x9cd;&#x9a8;&#x9cd;&#x200d; &#x9b0;&#x9cd;&#x9ac;&#x9cd;&#x9ac; &#x9b6;&#x9cd;&#x9af; &#x9b7;&#x9cd;&#x9af; &#x9b8;&#x9cd;&#x9af; &#x9bf; &#x995;&#x9c7;&#x9be; &#x995;&#x9c7;&#x9d7; &#x995;&#x9cd;&#x9b0;&#x9cd;&#x995; &#x9a8;&#x9cd;&#x200c;&#x995; &#x9a8;&#x9cd;&#x200c;&#x9ac; &#x9a8;&#x9cd;&#x200d;&#x995; &#x9a8;&#x9cd;&#x200d;&#x9ac; &#x9a8;&#x9cd;&#x200d;&#x9b0; &#x9b0;&#x9cd;&#x995;&#x9be;&#x982; &#x9b0;&#x9cd;&#x995;&#x9be;&#x983; &#x9b0;&#x9cd;&#x995;&#x9cc; &#x9b0;&#x9cd;&#x9ad; &#x9f0;&#x9cd;&#x9ad; &#x9f1;&#x9cd;&#x9ad; &#x985;&#x9d7; &#x9a8;&#x9cd;&#x9a4;&#x9cd;&#x9b0; &#x9a4;&#x9cd;&#x9af;&#x9c1; &#x99a;&#x9cd;&#x9af;&#x9cd;&#x9b0;
  910. </div>
  911. Reph
  912. <div class="bengali">&#x9b0;&#x9cd;&#x995; &#x9b0;&#x9cd;&#x995;&#x9be; &#x9b0;&#x9cd;&#x995;&#x9bf; &#x9b0;&#x9cd;&#x995;&#x9c0; &#x9b0;&#x9cd;&#x995;&#x9c1; &#x9b0;&#x9cd;&#x995;&#x9c2; &#x9b0;&#x9cd;&#x995;&#x9c7; &#x9b0;&#x9cd;&#x995;&#x9c8; &#x9b0;&#x9cd;&#x995;&#x9cb; &#x9b0;&#x9cd;&#x995;&#x9cc; &#x9b0;&#x9cd;&#x9af; &#x9b0;&#x9cd;&#x200d;&#x9af; &#x9b0;&#x200d;&#x9cd;&#x9af; &#x9b0;&#x9cd;&#x9b0;&#x200d;&#x9cd;&#x9af;
  913. </div>
  914. CP - Dependent
  915. <div class="bengali">&#x9be; &#x9bf; &#x9c0; &#x9c1; &#x9c2; &#x9c3; &#x9c7; &#x9c8; &#x9cb; &#x9cc;
  916. </div>
  917. GSUB
  918. <div class="bengali">&#x995;&#x9cd;&#x9b0; &#x996;&#x9cd;&#x9b0; &#x997;&#x9cd;&#x9b0; &#x998;&#x9cd;&#x9b0; &#x99c;&#x9cd;&#x9b0; &#x9a4;&#x9cd;&#x9b0; &#x9a6;&#x9cd;&#x9b0; &#x9a7;&#x9cd;&#x9b0; &#x9aa;&#x9cd;&#x9b0; &#x9ae;&#x9cd;&#x9b0; &#x9b6;&#x9cd;&#x9b0; &#x9b8;&#x9cd;&#x9b0; &#x9b9;&#x9cd;&#x9b0; &#x99b;&#x9cd;&#x9b0; &#x99f;&#x9cd;&#x9b0; &#x9a0;&#x9cd;&#x9b0; &#x9a1;&#x9cd;&#x9b0; &#x9a5;&#x9cd;&#x9b0; &#x9ab;&#x9cd;&#x9b0; &#x9ac;&#x9cd;&#x9b0; &#x9ad;&#x9cd;&#x9b0; &#x995;&#x9cd;&#x9af; &#x996;&#x9cd;&#x9af; &#x997;&#x9cd;&#x9af; &#x998;&#x9cd;&#x9af; &#x99a;&#x9cd;&#x9af; &#x99c;&#x9cd;&#x9af; &#x99f;&#x9cd;&#x9af; &#x9a0;&#x9cd;&#x9af; &#x9a1;&#x9cd;&#x9af; &#x9dc;&#x9cd;&#x9af; &#x9a2;&#x9cd;&#x9af; &#x9a4;&#x9cd;&#x9af; &#x9a5;&#x9cd;&#x9af; &#x9a6;&#x9cd;&#x9af; &#x9a7;&#x9cd;&#x9af; &#x9a8;&#x9cd;&#x9af; &#x9aa;&#x9cd;&#x9af; &#x9ab;&#x9cd;&#x9af; &#x9ac;&#x9cd;&#x9af; &#x9ad;&#x9cd;&#x9af; &#x9ae;&#x9cd;&#x9af; &#x9af;&#x9cd;&#x9af; &#x9b0;&#x200d;&#x9cd;&#x9af; &#x9b2;&#x9cd;&#x9af; &#x9b6;&#x9cd;&#x9af; &#x9b7;&#x9cd;&#x9af; &#x9b8;&#x9cd;&#x9af; &#x9b9;&#x9cd;&#x9af;
  919. &#x995;&#x9cd;&#x9b2; &#x997;&#x9cd;&#x9b2; &#x9aa;&#x9cd;&#x9b2; &#x9ae;&#x9cd;&#x9b2; &#x9b2;&#x9cd;&#x9b2; &#x9b6;&#x9cd;&#x9b2; &#x9b8;&#x9cd;&#x9b2; &#x9b9;&#x9cd;&#x9b2; &#x995;&#x9cd;&#x995;
  920. <br />
  921. &#x995;&#x9cd;&#x9ac; &#x99c;&#x9cd;&#x9ac; &#x99f;&#x9cd;&#x9ac; &#x9a4;&#x9cd;&#x9ac; &#x9a6;&#x9cd;&#x9ac; &#x9a7;&#x9cd;&#x9ac; &#x9a8;&#x9cd;&#x9ac; &#x9ac;&#x9cd;&#x9ac; &#x9ae;&#x9cd;&#x9ac; &#x9b2;&#x9cd;&#x9ac; &#x9b6;&#x9cd;&#x9ac; &#x9b7;&#x9cd;&#x9ac; &#x9b8;&#x9cd;&#x9ac; &#x9b9;&#x9cd;&#x9ac;
  922. <br />
  923. &#x9a3;&#x9cd;&#x9a3; &#x9b7;&#x9cd;&#x9a3; &#x9b7;&#x9cd;&#x9a3;&#x9c1; &#x9b9;&#x9cd;&#x9a3; &#x9b9;&#x9cd;&#x9a3;&#x9bf; &#x99c;&#x9cd;&#x99c; &#x99f;&#x9cd;&#x99f; &#x9a4;&#x9cd;&#x9a4; &#x9a6;&#x9cd;&#x9a6; &#x9a8;&#x9cd;&#x9a8; &#x9aa;&#x9cd;&#x9aa; &#x9a4;&#x9cd;&#x9a8; &#x9ae;&#x9cd;&#x9a8; &#x9b8;&#x9cd;&#x9a8; &#x9b9;&#x9cd;&#x9a8; &#x995;&#x9cd;&#x9a8; &#x997;&#x9cd;&#x9a8; &#x997;&#x9cd;&#x9ae; &#x999;&#x9cd;&#x9ae; &#x99f;&#x9cd;&#x9ae; &#x9a3;&#x9cd;&#x9ae; &#x9a4;&#x9cd;&#x9ae; &#x9a6;&#x9cd;&#x9ae; &#x9a7;&#x9cd;&#x9ae; &#x9a8;&#x9cd;&#x9ae; &#x9ae;&#x9cd;&#x9ae; &#x9b2;&#x9cd;&#x9ae; &#x9b6;&#x9cd;&#x9ae; &#x9b7;&#x9cd;&#x9ae; &#x9b9;&#x9cd;&#x9ae; &#x995;&#x9cd;&#x9b7; &#x995;&#x9cd;&#x9a4; &#x997;&#x9cd;&#x9a7; &#x999;&#x9cd;&#x995; &#x999;&#x9cd;&#x996; &#x999;&#x9cd;&#x997; &#x999;&#x9cd;&#x998; &#x99a;&#x9cd;&#x99a; &#x99a;&#x9cd;&#x99b; &#x99a;&#x9cd;&#x99e; &#x99c;&#x9cd;&#x99d; &#x99c;&#x9cd;&#x99e; &#x99e;&#x9cd;&#x99a; &#x99e;&#x9cd;&#x99b; &#x99e;&#x9cd;&#x99c; &#x9a3;&#x9cd;&#x99f; &#x995;&#x9cd;&#x99f; &#x9a3;&#x9cd;&#x9a1; &#x9a8;&#x9cd;&#x9a1; &#x9a6;&#x9cd;&#x997; &#x9a6;&#x9cd;&#x998; &#x9a6;&#x9cd;&#x9a7; &#x9a6;&#x9cd;&#x9ad; &#x9a8;&#x9cd;&#x9a4; &#x9a8;&#x9cd;&#x9a5; &#x9a8;&#x9cd;&#x9a6; &#x9a8;&#x9cd;&#x9a7; &#x9aa;&#x9cd;&#x9a4; &#x9ac;&#x9cd;&#x99c; &#x9ac;&#x9cd;&#x9a6; &#x9ae;&#x9cd;&#x9aa; &#x9ae;&#x9cd;&#x9ab; &#x9ae;&#x9cd;&#x9ad; &#x9b2;&#x9cd;&#x995; &#x9b2;&#x9cd;&#x997; &#x9b2;&#x9cd;&#x9aa; &#x9b2;&#x9cd;&#x9ab; &#x9b6;&#x9cd;&#x99a; &#x9b7;&#x9cd;&#x995; &#x9b7;&#x9cd;&#x99f; &#x9b7;&#x9cd;&#x9a0; &#x9b7;&#x9cd;&#x9aa; &#x9b7;&#x9cd;&#x9ab; &#x9b8;&#x9cd;&#x995; &#x9b8;&#x9cd;&#x996; &#x9b8;&#x9cd;&#x9a4; &#x9b8;&#x9cd;&#x9a5; &#x9b8;&#x9cd;&#x9aa; &#x9b8;&#x9cd;&#x9ab; &#x9ae;&#x9cd;&#x9a5; &#x9b2;&#x9cd;&#x9a4; &#x9b2;&#x9cd;&#x9a7; &#x995;&#x9cd;&#x9ae; &#x995;&#x9cd;&#x9b8; &#x997;&#x9cd;&#x997; &#x998;&#x9cd;&#x9a8; &#x99a;&#x9cd;&#x9a8;
  924. <br />
  925. &#x99b;&#x9cd;&#x9ac;
  926. <br />
  927. &#x99e;&#x9cd;&#x99d; &#x9a1;&#x9cd;&#x9a1; &#x9a1;&#x9cd;&#x9ae; &#x9dc;&#x9cd;&#x997; &#x9a3;&#x9cd;&#x9a0; &#x9a3;&#x9cd;&#x9a2; &#x9a3;&#x9cd;&#x9ac; &#x9a4;&#x9cd;&#x9a5; &#x9a5;&#x9cd;&#x9ac; &#x9a7;&#x9cd;&#x9a8; &#x9a8;&#x9cd;&#x99f; &#x9a8;&#x9cd;&#x9a0; &#x9a8;&#x9cd;&#x9b8; &#x9aa;&#x9cd;&#x99f; &#x9aa;&#x9cd;&#x9a8; &#x9ab;&#x9cd;&#x9b2; &#x9ac;&#x9cd;&#x9a7; &#x9ac;&#x9cd;&#x9b2; &#x9ad;&#x9cd;&#x9b2; &#x9ae;&#x9cd;&#x9a4; &#x9ae;&#x9cd;&#x9a6; &#x9b2;&#x9cd;&#x99f; &#x9b2;&#x9cd;&#x9a1; &#x9b6;&#x9cd;&#x99b; &#x9b6;&#x9cd;&#x9a8; &#x9b6;&#x9cd;&#x9a4; &#x9b8;&#x9cd;&#x99f; &#x9b8;&#x9cd;&#x9ae;
  928. <br />
  929. &#x99a;&#x9cd;&#x99b;&#x9cd;&#x9b0; &#x99a;&#x9cd;&#x99b;&#x9cd;&#x9ac; &#x9a6;&#x9cd;&#x9a6;&#x9cd;&#x9ac; &#x9a6;&#x9cd;&#x9a7;&#x9cd;&#x9ac; &#x9a8;&#x9cd;&#x9a7;&#x9cd;&#x9b0; &#x9ac;&#x9cd;&#x9a6;&#x9cd;&#x9b0;
  930. <br />
  931. &#x995;&#x9cd;&#x9b7;&#x9cd;&#x9a3; &#x995;&#x9cd;&#x9b7;&#x9cd;&#x9ae;
  932. <br />
  933. &#x99c;&#x9cd;&#x99c;&#x9cd;&#x9ac; &#x9a4;&#x9cd;&#x9a4;&#x9cd;&#x9ac; &#x9a4;&#x9cd;&#x9ae;&#x9cd;&#x9af; &#x9a8;&#x9cd;&#x9a4;&#x9cd;&#x9b0; &#x9a8;&#x9cd;&#x9a4;&#x9cd;&#x9ac; &#x9a8;&#x9cd;&#x9a6;&#x9cd;&#x9b0; &#x9a8;&#x9cd;&#x9a7;&#x9cd;&#x9af; &#x9a8;&#x9cd;&#x9a8;&#x9cd;&#x9af; &#x9ae;&#x9cd;&#x9aa;&#x9cd;&#x9b0; &#x9ae;&#x9cd;&#x9ad;&#x9cd;&#x9b0; &#x9b0;&#x9cd;&#x9a7;&#x9cd;&#x9ac; &#x9b0;&#x9cd;&#x9b6;&#x9cd;&#x9ac; &#x9b7;&#x9cd;&#x99f;&#x9cd;&#x9b0; &#x9b7;&#x9cd;&#x9aa;&#x9cd;&#x9b0; &#x9b8;&#x9cd;&#x9a4;&#x9cd;&#x9b0; &#x9b8;&#x9cd;&#x99f;&#x9cd;&#x9b0; &#x9b8;&#x9cd;&#x995;&#x9cd;&#x9b0; &#x995;&#x9cd;&#x99f;&#x9cd;&#x9b0;
  934. &#x9aa;&#x9cd;&#x9b8;
  935. </div>
  936. ';
  937. //==============================================================
  938. //==============================================================
  939. //==============================================================
  940. // ************ FIXES ************
  941. // ************ FIXES ************
  942. $htmlx ='
  943. <style>
  944. body, p { font-size: 15pt;}
  945. h3 { font-size: 15pt; margin-bottom:0; }
  946. .tamil {
  947. font-family:Latha;
  948. font-size: 26pt;
  949. }
  950. .oriya {
  951. font-family:Kalinga;
  952. font-size: 26pt;
  953. }
  954. .punjabi {
  955. font-family:Raavi;
  956. font-size: 26pt;
  957. }
  958. .gujarati {
  959. font-family:Shruti;
  960. font-size: 26pt;
  961. }
  962. .hindi {
  963. font-family:Mangal;
  964. font-size: 26pt;
  965. }
  966. .nepali {
  967. font-family:Mangal;
  968. font-size: 26pt;
  969. }
  970. .assamese { /* same as bengali */
  971. font-family:solaimanlipi;
  972. font-family:vrinda;
  973. font-size: 26pt;
  974. }
  975. .bengali {
  976. font-family:solaimanlipi;
  977. font-family:vrinda;
  978. font-size: 26pt;
  979. }
  980. .telugu {
  981. font-family:gautami;
  982. font-size: 26pt;
  983. }
  984. .kannada {
  985. font-family:Tunga;
  986. font-size: 26pt;
  987. }
  988. .malayalam {
  989. font-family:Kartika;
  990. font-size: 26pt;
  991. }
  992. </style>
  993. FIX OTL (ZZZ93) Kannada: Old spec Lohit-Kannada -
  994. <div style="font-family:\'Lohit Kannada\'; font-size: 22pt;">
  995. &#xca8;&#xccd;&#xca8;&#xcc1; &#xca6;&#xccd;&#xca6;&#xcc1; &#xca8;&#xccd;&#xca8;&#xcc1; &#xca4;&#xccd;&#xca4;&#xcc1; &#xca6;&#xccd;&#xca6;&#xcc1; &#xca6;&#xccd;&#xca6;&#xcc1; &#xca8;&#xccd;&#xca8;&#xcc1; &#xcaa;&#xccd;&#xcaa; &#xc95;&#xccd;&#xcb0;&#xccc; &#xc95;&#xccd;&#xcb0;
  996. </div>
  997. INDIC_FIX_1:
  998. <div class="bengali">&#x9b0;&#x9cd;&#x9a8;&#x9cd;&#x200d; </div>
  999. INDIC_FIX_2:
  1000. <div class="telugu">
  1001. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc3e;
  1002. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc3f;
  1003. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc40;
  1004. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc41;
  1005. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc42;
  1006. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc46;
  1007. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc47;
  1008. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc48;
  1009. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc4a;
  1010. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b;
  1011. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc4c;
  1012. </div>
  1013. INDIC_FIX_3:
  1014. <!-- handled differently in 2 fonts -->
  1015. <div style="font-family:vrinda;font-size: 26pt;">&#x995;&#x9cd;&#x9b0;&#x9cd;&#x995;</div>
  1016. <div style="font-family:freeserif;font-size: 26pt;">&#x995;&#x9cd;&#x9b0;&#x9cd;&#x995;</div>
  1017. INDIC_FIX_4:
  1018. <div class="telugu">&#xc30;&#xc4d;&#xc21;&#xc4d;&#x200c;</div>
  1019. OTL_FIX_1 & OTL_FIX_2:
  1020. <div><span class="oriya">&#xb28;&#xb4d;&#xb2e;&#xb41;</span> <span style="font-family:Arial; font-size: 36pt;">A&#x308;&#x0315;&#x0303;</span> </div>
  1021. OTL_FIX_3:
  1022. <div class="oriya">&#xb15;&#xb4d;&#xb1f;&#xb4d;&#xb30;</div>
  1023. ZKI8 Fix - (NB With this, Indic fix 2 no longer required.)
  1024. <div style="font-family:\'Pothana2000\'; font-size: 22pt;">
  1025. &#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b;
  1026. </div>
  1027. ZZZ96 Fix - GPOS fix in OTL Type 2 (kerning) for XPlacement of first character of pair
  1028. <div style="font-family: tharlon; font-size: 26pt;">
  1029. &#x1000;&#x103c;&#x102d;&#x102f;
  1030. </div>
  1031. Part 2) Kern on by default as needed for repositioning
  1032. <div style="font-family: \'tharlon\'; font-size: 26pt;">
  1033. &#x101e;&#x1014;&#x1039;&#x1010;&#x102c;
  1034. </div>
  1035. LOHIT fonts at :
  1036. https://fedorahosted.org/lohit/wiki
  1037. Version 2 are under development: http://pravin-s.blogspot.in/2013/08/project-creating-standard-and-reusable.html
  1038. Solaiman-Lipi (Bengali): http://www.omicronlab.com/bangla-fonts.html
  1039. Khmer Fix 1
  1040. <div style="font-family:\'daunpenh\'; font-size: 36pt; ">
  1041. &#x1784;&#x17D2;&#x179A;&#x17D2;&#x1782;
  1042. &#x1784;&#x17D2;&#x1782;&#x17D2;&#x179A;
  1043. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1044. &#x1793;&#x17d2;&#x178f;&#x17d2;&#x179a;&#x17b8;
  1045. &#x1784;&#x17d2;&#x179a;&#x17d2;&#x1782;&#x17c4;&#x17c7;
  1046. &#x1784;&#x17d2;&#x1782;&#x17d2;&#x179a;&#x17c4;&#x17c7;
  1047. </div>
  1048. ';
  1049. // ************ FIXES ************
  1050. // INDIC_FIX_1 Indic Initial re-ordering; stops search for base when Halant before ZWJ - this sets the BASE at position of ZWJ
  1051. //define('OMIT_INDIC_FIX_1', 1);
  1052. // INDIC_FIX_2 Indic Initial re-ordering; Indic If C(base) H ZWNJ C2 Matra - and Matra position is POS_BEFORE_SUB,
  1053. // this changes it to correct position after the 2nd C (by changing it to POS_AFTER_SUB)
  1054. // i.e. when ZWNJ prevents C2 from becoming a joined/form
  1055. //define('OMIT_INDIC_FIX_2', 1);
  1056. // INDIC_FIX_3 Indic Initial re-ordering; If C(pre-base) H Ra H C(base) - this allows blwf to be applied to pre-base H-Ra
  1057. // whereas blwf is normally only applied post-base
  1058. // If blwf not substituted, marks for Ra + H to apply 'rphf'
  1059. //define('OMIT_INDIC_FIX_3', 1);
  1060. // INDIC_FIX_4 Indic Initial re-ordering; ZWNJ should block H C from forming blwf post-base (e.g. Ra[base] H C H ZWNJ)
  1061. // need to unmask backwards beyond first consonant arrived at */
  1062. //define('OMIT_INDIC_FIX_4', 1);
  1063. // OTL_FIX_1 GPOS Mark to Mark Attachment - prevent rule being skipped if the "base" mark is not attached to a ligature
  1064. // because it would be skipped as it deems that the marks are attached to different ligs or components of ligs.
  1065. //define('OMIT_OTL_FIX_1', 1);
  1066. // OTL_FIX_2 GPOS Mark to Mark Attachment - sets a BaseWidth for the Mark to attach to
  1067. //define('OMIT_OTL_FIX_2', 1);
  1068. // OTL_FIX_3 GSUB Type 6 substitution, returned value for shift which meant next character was skipped for lookup (x3 lines)
  1069. //define('OMIT_OTL_FIX_3', 1);
  1070. // ZKI6 fixed moving characters using _move_info_pos()
  1071. // ZKI7 fixed old_spec to mark Ra-Halant for pre-base ordering (instead of Halant-Ra)
  1072. // ZKI8 Fix Indic Initial re-ordering: ZWNJ will stop search for base
  1073. // INDIC_FIX_2 no longer required when this is used.
  1074. //==============================================================
  1075. //==============================================================
  1076. //==============================================================
  1077. //==============================================================
  1078. //==============================================================
  1079. //==============================================================
  1080. //==============================================================
  1081. //==============================================================
  1082. //==============================================================
  1083. //==============================================================
  1084. //==============================================================
  1085. //==============================================================
  1086. $htmlx = '
  1087. <style>
  1088. body, p { font-size: 15pt;}
  1089. .khmer {
  1090. font-family:daunpenh;
  1091. font-size: 36pt;
  1092. }
  1093. </style>
  1094. KHMER
  1095. <div class="khmer">
  1096. &#x1784;&#x17D2;&#x179A;&#x17D2;&#x1782;
  1097. &#x1784;&#x17D2;&#x1782;&#x17D2;&#x179A;
  1098. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1099. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1100. &#x1784;&#x17d2;&#x1782;&#x17d2;&#x179a;&#x17c4;&#x17c7;
  1101. </div>
  1102. <div class="khmer">
  1103. &#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17d2;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1794;&#x17b6;&#x1793;&#x200b;&#x179f;&#x17d2;&#x179b;&#x17b6;&#x1794;&#x17cb;&#x200b;&#x178a;&#x17c4;&#x1799;&#x200b;&#x1782;&#x17d2;&#x179a;&#x17b6;&#x1794;&#x17cb;&#x1780;&#x17b6;&#x17c6;&#x1797;&#x17d2;&#x179b;&#x17be;&#x1784;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17b7;&#x1784;&#x200b;&#x1794;&#x17b8;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1795;&#x17d2;&#x179f;&#x17c1;&#x1784;&#x1791;&#x17c0;&#x178f;&#x200b;&#x179a;&#x1784;&#x179a;&#x1794;&#x17bd;&#x179f; &#x1793;&#x17c5;&#x1780;&#x17d2;&#x1793;&#x17bb;&#x1784;&#x200b;&#x1780;&#x17b6;&#x179a;&#x1794;&#x17d2;&#x179a;&#x1788;&#x1798;&#x200b;&#x1798;&#x17bb;&#x1781;&#x200b;&#x178a;&#x17b6;&#x1780;&#x17cb;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x200b;&#x178a;&#x17b6;&#x1785;&#x17cb;&#x178a;&#x17c4;&#x1799;&#x17a1;&#x17c2;&#x1780;&#x200b;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x1798;&#x17bd;&#x1799; &#x179a;&#x179c;&#x17b6;&#x1784;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798;&#x200b;&#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798; &#x1787;&#x17b6;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17c5;&#x200b;&#x1798;&#x17d2;&#x178f;&#x17bb;&#x17c6;&#x200b;&#x179f;&#x17d2;&#x1796;&#x17b6;&#x1793;&#x200b;&#x1780;&#x17d2;&#x1794;&#x17b6;&#x179b;&#x1790;&#x17d2;&#x1793;&#x179b;&#x17cb;&#x17d4; &#x1793;&#x17c1;&#x17c7;&#x200b;&#x1794;&#x17be;&#x178f;&#x17b6;&#x1798;&#x200b;&#x1796;&#x17d0;&#x178f;&#x17cc;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1796;&#x17b8;&#x200b;&#x179b;&#x17c4;&#x1780;&#x200b; &#x1785;&#x17b6;&#x1793;&#x17cb; &#x179f;&#x17b6;&#x179c;&#x17c9;&#x17c1;&#x178f; &#x1798;&#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;&#x200b;&#x179f;&#x17ca;&#x17be;&#x1794;&#x17a2;&#x1784;&#x17d2;&#x1780;&#x17c1;&#x178f;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x17a2;&#x1784;&#x17d2;&#x1782;&#x1780;&#x17b6;&#x179a;&#x200b;&#x179f;&#x17b7;&#x1791;&#x17d2;&#x1792;&#x17b7;&#x1798;&#x1793;&#x17bb;&#x179f;&#x17d2;&#x179f;&#x200b;&#x17a2;&#x17b6;&#x178a;&#x17a0;&#x17bb;&#x1780; &#x178a;&#x17c2;&#x179b;&#x200b;&#x179c;&#x178f;&#x17d2;&#x178f;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1793;&#x17c5;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x17be;&#x178f;&#x17a0;&#x17c1;&#x178f;&#x17bb; &#x1793;&#x17c5;&#x200b;&#x1799;&#x1794;&#x17cb;&#x200b;&#x1790;&#x17d2;&#x1784;&#x17c3;&#x200b;&#x17a2;&#x17b6;&#x1791;&#x17b7;&#x178f;&#x17d2;&#x1799;&#x200b;&#x1791;&#x17b8; &#x17e1;&#x17e5; &#x1780;&#x1789;&#x17d2;&#x1789;&#x17b6;&#x1793;&#x17c1;&#x17c7;&#x17d4;
  1104. </div>
  1105. Khmer OS
  1106. <div style="font-family:\'Khmer OS\'; font-size: 16pt; ">
  1107. &#x1784;&#x17D2;&#x179A;&#x17D2;&#x1782;
  1108. &#x1784;&#x17D2;&#x1782;&#x17D2;&#x179A;
  1109. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1110. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1111. &#x1784;&#x17d2;&#x1782;&#x17d2;&#x179a;&#x17c4;&#x17c7;
  1112. </div>
  1113. <div style="font-family:\'Khmer OS\'; font-size: 16pt; ">
  1114. &#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17d2;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1794;&#x17b6;&#x1793;&#x200b;&#x179f;&#x17d2;&#x179b;&#x17b6;&#x1794;&#x17cb;&#x200b;&#x178a;&#x17c4;&#x1799;&#x200b;&#x1782;&#x17d2;&#x179a;&#x17b6;&#x1794;&#x17cb;&#x1780;&#x17b6;&#x17c6;&#x1797;&#x17d2;&#x179b;&#x17be;&#x1784;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17b7;&#x1784;&#x200b;&#x1794;&#x17b8;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1795;&#x17d2;&#x179f;&#x17c1;&#x1784;&#x1791;&#x17c0;&#x178f;&#x200b;&#x179a;&#x1784;&#x179a;&#x1794;&#x17bd;&#x179f; &#x1793;&#x17c5;&#x1780;&#x17d2;&#x1793;&#x17bb;&#x1784;&#x200b;&#x1780;&#x17b6;&#x179a;&#x1794;&#x17d2;&#x179a;&#x1788;&#x1798;&#x200b;&#x1798;&#x17bb;&#x1781;&#x200b;&#x178a;&#x17b6;&#x1780;&#x17cb;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x200b;&#x178a;&#x17b6;&#x1785;&#x17cb;&#x178a;&#x17c4;&#x1799;&#x17a1;&#x17c2;&#x1780;&#x200b;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x1798;&#x17bd;&#x1799; &#x179a;&#x179c;&#x17b6;&#x1784;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798;&#x200b;&#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798; &#x1787;&#x17b6;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17c5;&#x200b;&#x1798;&#x17d2;&#x178f;&#x17bb;&#x17c6;&#x200b;&#x179f;&#x17d2;&#x1796;&#x17b6;&#x1793;&#x200b;&#x1780;&#x17d2;&#x1794;&#x17b6;&#x179b;&#x1790;&#x17d2;&#x1793;&#x179b;&#x17cb;&#x17d4; &#x1793;&#x17c1;&#x17c7;&#x200b;&#x1794;&#x17be;&#x178f;&#x17b6;&#x1798;&#x200b;&#x1796;&#x17d0;&#x178f;&#x17cc;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1796;&#x17b8;&#x200b;&#x179b;&#x17c4;&#x1780;&#x200b; &#x1785;&#x17b6;&#x1793;&#x17cb; &#x179f;&#x17b6;&#x179c;&#x17c9;&#x17c1;&#x178f; &#x1798;&#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;&#x200b;&#x179f;&#x17ca;&#x17be;&#x1794;&#x17a2;&#x1784;&#x17d2;&#x1780;&#x17c1;&#x178f;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x17a2;&#x1784;&#x17d2;&#x1782;&#x1780;&#x17b6;&#x179a;&#x200b;&#x179f;&#x17b7;&#x1791;&#x17d2;&#x1792;&#x17b7;&#x1798;&#x1793;&#x17bb;&#x179f;&#x17d2;&#x179f;&#x200b;&#x17a2;&#x17b6;&#x178a;&#x17a0;&#x17bb;&#x1780; &#x178a;&#x17c2;&#x179b;&#x200b;&#x179c;&#x178f;&#x17d2;&#x178f;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1793;&#x17c5;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x17be;&#x178f;&#x17a0;&#x17c1;&#x178f;&#x17bb; &#x1793;&#x17c5;&#x200b;&#x1799;&#x1794;&#x17cb;&#x200b;&#x1790;&#x17d2;&#x1784;&#x17c3;&#x200b;&#x17a2;&#x17b6;&#x1791;&#x17b7;&#x178f;&#x17d2;&#x1799;&#x200b;&#x1791;&#x17b8; &#x17e1;&#x17e5; &#x1780;&#x1789;&#x17d2;&#x1789;&#x17b6;&#x1793;&#x17c1;&#x17c7;&#x17d4;
  1115. </div>
  1116. Khmer
  1117. <div style="font-family:\'Khmer\'; font-size: 16pt; ">
  1118. &#x1784;&#x17D2;&#x179A;&#x17D2;&#x1782;
  1119. &#x1784;&#x17D2;&#x1782;&#x17D2;&#x179A;
  1120. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1121. &#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;
  1122. &#x1784;&#x17d2;&#x1782;&#x17d2;&#x179a;&#x17c4;&#x17c7;
  1123. </div>
  1124. <div style="font-family:\'Khmer\'; font-size: 16pt; ">
  1125. &#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17d2;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1794;&#x17b6;&#x1793;&#x200b;&#x179f;&#x17d2;&#x179b;&#x17b6;&#x1794;&#x17cb;&#x200b;&#x178a;&#x17c4;&#x1799;&#x200b;&#x1782;&#x17d2;&#x179a;&#x17b6;&#x1794;&#x17cb;&#x1780;&#x17b6;&#x17c6;&#x1797;&#x17d2;&#x179b;&#x17be;&#x1784;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17b7;&#x1784;&#x200b;&#x1794;&#x17b8;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1795;&#x17d2;&#x179f;&#x17c1;&#x1784;&#x1791;&#x17c0;&#x178f;&#x200b;&#x179a;&#x1784;&#x179a;&#x1794;&#x17bd;&#x179f; &#x1793;&#x17c5;&#x1780;&#x17d2;&#x1793;&#x17bb;&#x1784;&#x200b;&#x1780;&#x17b6;&#x179a;&#x1794;&#x17d2;&#x179a;&#x1788;&#x1798;&#x200b;&#x1798;&#x17bb;&#x1781;&#x200b;&#x178a;&#x17b6;&#x1780;&#x17cb;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x200b;&#x178a;&#x17b6;&#x1785;&#x17cb;&#x178a;&#x17c4;&#x1799;&#x17a1;&#x17c2;&#x1780;&#x200b;&#x1782;&#x17d2;&#x1793;&#x17b6;&#x1798;&#x17bd;&#x1799; &#x179a;&#x179c;&#x17b6;&#x1784;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798;&#x200b;&#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1780;&#x17d2;&#x179a;&#x17bb;&#x1798; &#x1787;&#x17b6;&#x1798;&#x17bd;&#x1799;&#x200b;&#x1794;&#x17c9;&#x17bc;&#x179b;&#x17b7;&#x179f; &#x1793;&#x17c5;&#x200b;&#x1798;&#x17d2;&#x178f;&#x17bb;&#x17c6;&#x200b;&#x179f;&#x17d2;&#x1796;&#x17b6;&#x1793;&#x200b;&#x1780;&#x17d2;&#x1794;&#x17b6;&#x179b;&#x1790;&#x17d2;&#x1793;&#x179b;&#x17cb;&#x17d4; &#x1793;&#x17c1;&#x17c7;&#x200b;&#x1794;&#x17be;&#x178f;&#x17b6;&#x1798;&#x200b;&#x1796;&#x17d0;&#x178f;&#x17cc;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1796;&#x17b8;&#x200b;&#x179b;&#x17c4;&#x1780;&#x200b; &#x1785;&#x17b6;&#x1793;&#x17cb; &#x179f;&#x17b6;&#x179c;&#x17c9;&#x17c1;&#x178f; &#x1798;&#x1793;&#x17d2;&#x179a;&#x17d2;&#x178f;&#x17b8;&#x200b;&#x179f;&#x17ca;&#x17be;&#x1794;&#x17a2;&#x1784;&#x17d2;&#x1780;&#x17c1;&#x178f;&#x200b;&#x179a;&#x1794;&#x179f;&#x17cb;&#x200b;&#x17a2;&#x1784;&#x17d2;&#x1782;&#x1780;&#x17b6;&#x179a;&#x200b;&#x179f;&#x17b7;&#x1791;&#x17d2;&#x1792;&#x17b7;&#x1798;&#x1793;&#x17bb;&#x179f;&#x17d2;&#x179f;&#x200b;&#x17a2;&#x17b6;&#x178a;&#x17a0;&#x17bb;&#x1780; &#x178a;&#x17c2;&#x179b;&#x200b;&#x179c;&#x178f;&#x17d2;&#x178f;&#x1798;&#x17b6;&#x1793;&#x200b;&#x1793;&#x17c5;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x1793;&#x17d2;&#x179b;&#x17c2;&#x1784;&#x200b;&#x1780;&#x17be;&#x178f;&#x17a0;&#x17c1;&#x178f;&#x17bb; &#x1793;&#x17c5;&#x200b;&#x1799;&#x1794;&#x17cb;&#x200b;&#x1790;&#x17d2;&#x1784;&#x17c3;&#x200b;&#x17a2;&#x17b6;&#x1791;&#x17b7;&#x178f;&#x17d2;&#x1799;&#x200b;&#x1791;&#x17b8; &#x17e1;&#x17e5; &#x1780;&#x1789;&#x17d2;&#x1789;&#x17b6;&#x1793;&#x17c1;&#x17c7;&#x17d4;
  1126. </div>
  1127. ';
  1128. //==============================================================
  1129. //==============================================================
  1130. //==============================================================
  1131. //==============================================================
  1132. //==============================================================
  1133. //==============================================================
  1134. //==============================================================
  1135. $htmlx = '
  1136. Thai shaper
  1137. <div style="font-family:\'Cordia New\'; font-size: 28pt;">
  1138. &#x0E14;&#x0E4B;&#x0E33;
  1139. &#x0E14;&#x0E4D;&#x0E4B;&#x0E32;
  1140. </div>
  1141. Lao shaper
  1142. <div style="font-family:\'DokChampa\'; font-size: 28pt;">
  1143. &#x0E94;&#x0ECB;&#x0EB3;
  1144. &#x0E94;&#x0ECD;&#x0ECB;&#x0EB2;
  1145. </div>
  1146. ';
  1147. //==============================================================
  1148. //==============================================================
  1149. //==============================================================
  1150. //==============================================================
  1151. //==============================================================
  1152. //==============================================================
  1153. //==============================================================
  1154. /*
  1155. $html = '
  1156. <style>
  1157. [lang=syr] {
  1158. color: purple;
  1159. }
  1160. div[lang="syr"] {
  1161. color: teal;
  1162. }
  1163. :lang(syr) {
  1164. color: blue;
  1165. }
  1166. div:lang(syr) {
  1167. color: red;
  1168. }
  1169. span :lang("syr") {
  1170. color: green;
  1171. }
  1172. </style>
  1173. SYRIAC - Estrangelo Edessa
  1174. <div lang="syr" class="syriac" style="font-size: 26pt; direction: rtl;">
  1175. &#x718;&#x72c;&#x718;&#x712; &#x710;&#x72c;&#x71f;&#x722;&#x71d;&#x72c; &#x717;&#x715;&#x710; &#x715;&#x71d;&#x72a;&#x710; &#x729;&#x715;&#x71d;&#x72b;&#x72c;&#x710; &#x712;&#x72b;&#x721; &#x729;&#x715;&#x71d;&#x72b;&#x710; &#x725;&#x722;&#x718;&#x71d;&#x710; &#x721;&#x72a;&#x71d; &#x710;&#x718;&#x713;&#x71d;&#x722; &#x715;&#x710;&#x72c;&#x710; &#x717;&#x331;&#x718;&#x710; &#x721;&#x722; &#x721;&#x728;&#x72a;&#x71d;&#x722; &#x706; &#x725;&#x720; &#x712;&#x719;&#x712;&#x722; &#x729;&#x72a;&#x712;&#x710; &#x710;&#x71d;&#x72c;&#x71d;&#x718; &#x715;&#x71d;&#x72a;&#x308;&#x71d;&#x710; <span lang="syr">(&#x710;&#x71d;&#x71f; &#x72c;&#x72b;&#x725;&#x71d;&#x72c;&#x710; &#x72c;&#x718;&#x715;&#x71d;&#x72c;&#x722;&#x71d;&#x72c;&#x710;)</span> &#x71a;&#x715;&#x71f;&#x721;&#x710; &#x713;&#x72a;&#x308;&#x721;&#x710; &#x715;&#x729;&#x715;&#x71d;&#x72b;&#x710; &#x721;&#x722; &#x715;&#x71d;&#x72a;&#x710; &#x715;&#x721;&#x72a;&#x71d; &#x710;&#x718;&#x713;&#x71d;&#x722; &#x712;&#x71b;&#x718;&#x72a;&#x710; &#x715; &#x710;&#x71d;&#x719;&#x720;&#x710; &#x715;&#x722;&#x726;&#x720; &#x712;&#x721;&#x715;&#x712;&#x72a;&#x710; &#x715; &#x722;&#x728;&#x71d;&#x712;&#x71d;&#x722; &#x725;&#x720; &#x72c;&#x71a;&#x718;&#x721;&#x710; &#x715; &#x729;&#x721;&#x72b;&#x720;&#x71d;. &#x718;&#x72c;&#x718;&#x712; &#x710;&#x72c;&#x71f;&#x722;&#x71d;&#x72c; &#x715;&#x71d;&#x72a;&#x710; &#x715; &#x719;&#x725;&#x726;&#x72a;&#x710;&#x722; &#x710;&#x718; &#x71f;&#x718;&#x72a;&#x71f;&#x721;&#x710; &#x712;&#x72b;&#x721; &#x721;&#x72a;&#x71d; (&#x72b;&#x720;&#x71d;&#x721;&#x718;&#x722;) &#x715;&#x71d;&#x72a;&#x71d;&#x710; &#x715;&#x72b;&#x72c;&#x710;&#x723; &#x720;&#x715;&#x71d;&#x72a;&#x710; &#x712;&#x72b;&#x722;&#x72c; 473 &#x721;.
  1176. </div>
  1177. ';
  1178. $mpdf->autoLangToFont = true;
  1179. */
  1180. //==============================================================
  1181. //==============================================================
  1182. //==============================================================
  1183. //==============================================================
  1184. /*
  1185. $html = '<p style="font-family: \'trebuchet ms\';">Distinguishes multiple languages enclosed in same element (tags):
  1186. Arabic &#x642;&#x627;&#x644; &#x627;&#x644;&#x631;&#x626;&#x64a;&#x633;
  1187. English Cat sat on the large mat
  1188. Tamil &#xbb7;&#xbbf;&#xbaf;&#xbbe;
  1189. Hindi &#x92d;&#x93e;&#x930;&#x924; &#x914;&#x930;
  1190. Japanese &#x3044;&#x308d;&#x306f;&#x306b;&#x307b;&#x3078;&#x3068;
  1191. Chinese &#x6765;&#x81ea;&#x5546;&#x52a1;&#x90e8;&#x65b0;&#x95fb;&#x529e;&#x516c;
  1192. Thai &#xe40;&#xe1b;&#xe47;&#xe19;&#xe21;&#xe19;&#xe38;&#xe29;&#xe22;
  1193. Viet M&#xf4;&#x323;t kha&#x309;o sa&#x301;t m&#x1a1;&#x301;i cho bi&#xea;&#x301;t ng&#x1b0;&#x1a1;&#x300;i d&#xe2;n
  1194. English Cat sat on the large mat
  1195. Korean &#xd0a4;&#xc2a4;&#xc758; &#xace0;&#xc720;&#xc870;&#xac74;&#xc740;
  1196. Syriac &#x718;&#x72c;&#x718;&#x712; &#x710;&#x72c;&#x71f;&#x722;&#x71d;&#x72c; &#x717;&#x715;&#x710; &#x715;&#x71d;&#x72a;&#x710;
  1197. Myanmar (Burmese) &#x1019;&#x103c;&#x1014;&#x103a;&#x200b;&#x1019;&#x102c;&#x1021;&#x1001;&#x1031;&#x102b;&#x103a; &#x1010;&#x101b;&#x102c;&#x1038;&#x101d;&#x1004;&#x103a;&#x200b;&#x1021;&#x102c;&#x1038;&#x200b;&#x1016;&#x103c;&#x1004;&#x1037;&#x103a;
  1198. Khmer &#x1799;&#x17bb;&#x179c;&#x1787;&#x1793;&#x200b;&#x1798;&#x17d2;&#x1793;&#x17b6;&#x1780;&#x17cb;&#x200b;&#x1794;&#x17b6;&#x1793;
  1199. NKo &#x7df;&#x7d0;&#x7ec;&#x7dd;&#x7cb;&#x7f2; &#x7d3;&#x7cd;&#x7ef; &#x7df;&#x7ca;&#x7dd;&#x7cb;&#x7f2;
  1200. Thaana &#x78b;&#x7a8;&#x788;&#x7ac;&#x780;&#x7a8; &#x788;&#x7a8;&#x786;&#x7a8;&#x795;&#x7a9;&#x791;&#x7a8;&#x787;&#x7a7;
  1201. Arabic &#x627;&#x644;&#x62d;&#x645;&#x62f; &#x644;&#x644;&#x647; &#x631;&#x628; &#x627;&#x644;&#x639;&#x627;&#x644;&#x645;&#x64a;&#x646;
  1202. Urdu &#x639;&#x632;&#x62a; &#x6a9;&#x6d2; &#x627;&#x639;&#x62a;&#x628;&#x627;&#x631; &#x633;&#x6d2; &#x686;&#x6cc;&#x641; &#x62c;&#x633;&#x679;&#x633;
  1203. Pashto &#x681;&#x627;&#x646;&#x645;&#x631;&#x6af;&#x648; &#x628;&#x631;&#x64a;&#x62f;&#x648;&#x646;&#x648; &#x644;&#x696;
  1204. Farsi &#x6af;&#x6cc;&#x6a9;&#x62f;&#x6cc;&#x6af;&#x631;
  1205. Sindhi &#x62c;&#x64a; &#x6b3;&#x627;&#x644;&#x647;&#x647; &#x6aa;&#x626;&#x64a;
  1206. English Cat sat on the large mat
  1207. </p>
  1208. ';
  1209. $mpdf->autoScriptToLang = true;
  1210. $mpdf->baseScript = 1;
  1211. $mpdf->autoVietnamese = true;
  1212. $mpdf->autoArabic = true;
  1213. $mpdf->autoLangToFont = true;
  1214. */
  1215. //==============================================================
  1216. //==============================================================
  1217. //==============================================================
  1218. // TIBETAN
  1219. $htmlx = '
  1220. <div style="font-family:\'Jomolhari\'; font-size: 36pt; line-height: 1.6;">
  1221. <div>
  1222. &#xf04;&#xf0d;&#xf4f;&#xf51;&#xfb1;&#xf50;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf42;&#xf4f;&#xf7a;&#xf42;&#xf4f;&#xf7a;&#xf54;&#xf71;&#xf62;&#xf42;&#xf4f;&#xf7a;&#xf54;&#xf71;&#xf62;&#xf66;&#xf7e;&#xf42;&#xf4f;&#xf7a;&#xf56;&#xf7c;&#xf52;&#xf72;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;
  1223. &#xf68;&#xf7c;&#xf7e;&#xf58;&#xf74;&#xf53;&#xf72;&#xf58;&#xf74;&#xf53;&#xf72;&#xf58;&#xf67;&#xf71;&#xf58;&#xf74;&#xf53;&#xf72;&#xf61;&#xf7a;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf68;&#xf71;&#xf58;&#xf72;&#xf52;&#xf7a;&#xf5d;&#xf71;&#xf67;&#xfb2;&#xf71;&#xf72;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf58;&#xf4e;&#xf72;&#xf54;&#xf51;&#xfa8;&#xf7a;&#xf67;&#xf71;&#xf74;&#xf7e;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf68;&#xf71;&#xf7f;&#xf67;&#xf71;&#xf74;&#xf7e;&#xf0b;
  1224. &#xf56;&#xf5b;&#xfb2;&#xf42;&#xf74;&#xf62;&#xf74;&#xf54;&#xf51;&#xfa8;&#xf66;&#xf72;&#xf51;&#xfa2;&#xf72;&#xf67;&#xf71;&#xf74;&#xf7e;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf68;&#xf71;&#xf58;&#xf62;&#xf71;&#xf4e;&#xf72;&#xf5b;&#xfb2;&#xf72;&#xf5d;&#xf53;&#xf4f;&#xf72;&#xf61;&#xf7a;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf5d;&#xf42;&#xf72;&#xf64;&#xf71;&#xf62;&#xf72;&#xf58;&#xf74;&#xf7e;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf0b;
  1225. &#xf58;&#xf4e;&#xf72;&#xf54;&#xf51;&#xfa8;&#xf7a;&#xf67;&#xf71;&#xf74;&#xf7e;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf56;&#xf5b;&#xfb2;&#xf54;&#xf71;&#xf53;&#xf72;&#xf67;&#xf71;&#xf74;&#xf7e;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf4f;&#xf71;&#xf62;&#xf7a;&#xf4f;&#xf74;&#xf4f;&#xf9f;&#xf71;&#xf62;&#xf7a;&#xf4f;&#xf74;&#xf62;&#xf7a;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf57;&#xfb2;&#xf71;&#xf74;&#xf7e;&#xf0b;
  1226. &#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf68;&#xf71;&#xf58;&#xfb2;&#xf72;&#xf4f;&#xf71;&#xf68;&#xf71;&#xf61;&#xf74;&#xf62;&#xfa1;&#xf51;&#xf7a;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;&#xf68;&#xf7c;&#xf7e;&#xf58;&#xf62;&#xf72;&#xf59;&#xfb1;&#xf7a;&#xf58;&#xf7e;&#xf66;&#xfad;&#xf71;&#xf67;&#xf71;&#xf0d;
  1227. </div>
  1228. </div>
  1229. ';
  1230. //==============================================================
  1231. //==============================================================
  1232. $htmlx = '
  1233. <div>
  1234. <img src="myanmartest.jpg" />
  1235. </div>
  1236. MYANMAR (Burmese) - Myanmar Text
  1237. <div style="font-family:\'Myanmar Text\'; font-size: 32pt; line-height: 1.5em;">
  1238. &#x1004;&#x103a;&#x1039;&#x1000;&#x1039;&#x1000;&#x103b;&#x103c;&#x103d;&#x103e;&#x1031;&#x102d;&#x102f;&#x1037;&#x103a;&#x102c;&#x103e;&#x102e;&#x1037;&#x1064;&#x1032;&#x1036;&#x1037;&#x1038;&#x108d;
  1239. </div>
  1240. <br />
  1241. ';
  1242. //==============================================================
  1243. //==============================================================
  1244. //==============================================================
  1245. //==============================================================
  1246. // FIXES for kerning/line-justification
  1247. $htmlx = '
  1248. <style>
  1249. body, p { font-size: 15pt;}
  1250. </style>
  1251. <div style="border: 1px solid #888888;">
  1252. // Test of XPlacement/XAdvance at end of line
  1253. <div style="direction: rtl; font-family: \'arabic typesetting\'; line-height: 1.8; font-size: 42pt; text-align:justify;">
  1254. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1255. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1256. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1257. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1258. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1259. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1260. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1261. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1262. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1263. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1264. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1265. &#x648;&#x64e;&#x644;&#x652;&#x64a;&#x64e;&#x643;
  1266. </div>
  1267. <div style="direction: rtl; font-family: xbzar; font-size: 36pt;">
  1268. &#x6a9;&#x627;
  1269. </div>
  1270. GPOS Type 2: Format 2 (THAANA - MV Boli)
  1271. <div style="font-family:\'MV Boli\'; font-size: 38pt; direction: rtl;">
  1272. &#x788;&#x7a8;&#x786;&#x7a8;&#x795;&#x7a9;&#x791;&#x7a8;&#x787;&#x7a7;
  1273. </div>
  1274. GPOS Type 2: Format 2 (ARABIC XB Zar)
  1275. <div style="direction: rtl; font-family: xbzar; font-size: 36pt;">
  1276. &#x6a9;&#x627;
  1277. </div>
  1278. GPOS Type 2: Format 2 (ARABIC XB Zar)
  1279. <div style="direction: rtl; font-family: xbzar; font-size: 36pt">
  1280. &#x62a;&#x648;&#x6af;&#x647;
  1281. </div>
  1282. GPOS Type 2: Format 2 (SYRIAC - Estrangelo Edessa)
  1283. <div style="font-family:\'Estrangelo Edessa\'; font-size: 26pt; direction: rtl;">
  1284. &#x721;&#x728;&#x72a;&#x71d;&#x722;
  1285. </div>
  1286. GPOS Type 2: Format 1 (Tharlon)
  1287. <div style="font-family: tharlon; font-size: 26pt;">&#x1000;&#x103c;&#x102d;&#x102f;</div>
  1288. GPOS Type 2: Format 1 (Arabic Typesetting)
  1289. <div style="direction: rtl; font-family: \'arabic typesetting\'; line-height: 1.8; font-size: 42pt;">
  1290. &#x643;&#x64e;&#x628;&#x650;&#x64a;&#x631;&#x64b;&#x627; &#x625;&#x650;&#x644;&#x64e;&#x649;&#x670;&#x653;
  1291. </div>
  1292. GPOS Type 2: Format 1 (Arial)
  1293. <div style="font-family:arial; font-size: 48pt;font-feature-settings:\'kern\'; ">
  1294. A&#x308;YA&#x308;WAY To&#x308;
  1295. </div>
  1296. </div>
  1297. ';
  1298. //==============================================================
  1299. // WHITESPACE
  1300. $htmlx = '
  1301. <p>
  1302. From Lazamon\'s<i> <a href="http://mesl.itd.umich.edu/b/brut/">Brut</a></i>
  1303. <p>
  1304. <div> Monotonic: <p> <span> Hallo World</span><p> <span> Hallo World</span></div>
  1305. <table cellspacing=0 cellpadding=0> <tr> <td> Monotonic: <p> <span> Hallo World</span><p> <span> Hallo World</span></td></tr> </table>
  1306. <div> Hallo <span> Hallo <span> Hallo </span> Hallo </span> Hallo </div>
  1307. ';
  1308. //==============================================================
  1309. // LANGUAGE TAGS - CYRILLIC
  1310. $htmlx = '
  1311. HTML language tags to distinguish Bulgarian, Russian, and Serbian,
  1312. which have different italic forms for lowercase &#x431;, &#x433;, &#x434;, &#x43f;, and/or &#x442;:
  1313. <table style="font-family:FreeSerif">
  1314. <tr>
  1315. <td><b>Bulgarian</b>: &nbsp;
  1316. <td><span lang=BG>[&nbsp;&#x431;&#x433;&#x434;&#x43f;&#x442;</span>&nbsp;] &nbsp;
  1317. <td><span lang=BG>[&nbsp;<i>&#x431;&#x433;&#x434;&#x43f;&#x442;</i></span>&nbsp;] &nbsp;
  1318. <td><span lang=BG><i> &#x41c;&#x43e;&#x433;&#x430; &#x434;&#x430; &#x44f;&#x43c; &#x441;&#x442;&#x44a;&#x43a;&#x43b;&#x43e; &#x438; &#x43d;&#x435; &#x43c;&#x435; &#x431;&#x43e;&#x43b;&#x438;.</i></span>
  1319. <tr>
  1320. <td><b>Russian</b>:
  1321. <td><span lang=RU>[&nbsp;&#x431;&#x433;&#x434;&#x43f;&#x442;</span>&nbsp;] &nbsp;
  1322. <td><span lang=RU>[&nbsp;<i>&#x431;&#x433;&#x434;&#x43f;&#x442;</i></span>&nbsp;] &nbsp;
  1323. <td><span lang=RU><i>&#x42f; &#x43c;&#x43e;&#x433;&#x443; &#x435;&#x441;&#x442;&#x44c; &#x441;&#x442;&#x435;&#x43a;&#x43b;&#x43e;, &#x44d;&#x442;&#x43e; &#x43c;&#x43d;&#x435; &#x43d;&#x435; &#x432;&#x440;&#x435;&#x434;&#x438;&#x442;.</i></span>
  1324. <tr>
  1325. <td><b>Serbian</b>:
  1326. <td><span lang=SR>[&nbsp;&#x431;&#x433;&#x434;&#x43f;&#x442;</span>&nbsp;] &nbsp;
  1327. <td><span lang=SR>[&nbsp;<i>&#x431;&#x433;&#x434;&#x43f;&#x442;</i></span>&nbsp;] &nbsp;
  1328. <td> <span lang=SR><i>&#x41c;&#x43e;&#x433;&#x443; &#x458;&#x435;&#x441;&#x442;&#x438; &#x441;&#x442;&#x430;&#x43a;&#x43b;&#x43e;
  1329. &#x430;
  1330. &#x434;&#x430; &#x43c;&#x438;
  1331. &#x43d;&#x435;
  1332. &#x448;&#x43a;&#x43e;&#x434;&#x438;.</i></span>
  1333. </table>
  1334. ';
  1335. //==============================================================
  1336. //==============================================================
  1337. //==============================================================
  1338. //==============================================================
  1339. //==============================================================
  1340. //==============================================================
  1341. // BIDI ALGORITHM FOR CHUNKS
  1342. $htmlx = '
  1343. <div style="font-family: xbriyaz">Arabic (<span lang="ar">&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x64a;&#x643;&#x645;</span>)</div>
  1344. <div dir="rtl" style="font-family: xbriyaz">Arabic (<span lang="ar">&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x64a;&#x643;&#x645;</span>)</div>
  1345. <div dir="rtl" style="font-family: xbriyaz">(<span lang="ar">&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x64a;&#x643;&#x645;</span>) Arabic </div>
  1346. ';
  1347. //==============================================================
  1348. // CSS unicode-bidi
  1349. // normal | embed | bidi-override | inherit
  1350. $htmlx = '
  1351. // embed = add LRE (U+202A; for \'direction: ltr\') or RLE (U+202B; for \'direction: rtl\') at the start of element and PDF (U+202C) at the end of element
  1352. <div style="font-family: freesans; direction: ltr;">
  1353. <p>english17 <span>&#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20</span></p>
  1354. <p>english17 <span>&#x202b;&#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20&#x202c;</span></p>
  1355. <p>english17 <span style="direction: rtl; unicode-bidi: embed;">&#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20</span></p>
  1356. </div>
  1357. // bidi-override = LRO (U+202D; for \'direction: ltr\') or RLO (U+202E; for \'direction: rtl\') at the start of the element or at the start of each anonymous child block box, if any, and a PDF (U+202C) at the end of the element
  1358. <div style="font-family: freesans; direction: rtl;">
  1359. <p style="direction: ltr; unicode-bidi:normal;">english17 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20</p>
  1360. <p style="direction: ltr;">&#x202d;english17 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20&#x202c;</p>
  1361. <p style="direction: ltr; unicode-bidi:bidi-override;">english17 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;18 english19 &#x5e2;&#x5d1;&#x5e8;&#x5d9;&#x5ea;20</p>
  1362. </div>
  1363. ';
  1364. //==============================================================
  1365. //==============================================================
  1366. //==============================================================
  1367. // used to determine the aspect value of a font.
  1368. // CSS3 font-aspect: http://www.w3.org/TR/css3-fonts/#propdef-font-size-adjust
  1369. // DejaVuSansCondensed 0.547
  1370. // FreeSerif 0.45
  1371. // Arabic Typesetting 0.278
  1372. // Mondulkiri 0.45
  1373. // Sun-ExtA 0.455
  1374. // XB Riyaz 0.523
  1375. $htmlx = '
  1376. <style>
  1377. p {
  1378. font-family: "XB Riyaz";
  1379. font-size: 400px;
  1380. }
  1381. span {
  1382. border: solid 1px red;
  1383. }
  1384. .adjust {
  1385. font-size-adjust: 0.523;
  1386. }
  1387. .adjust2 {
  1388. font-size-adjust: 0.323;
  1389. }
  1390. </style>
  1391. <p><span>b</span><span class="adjust">b</span></p>
  1392. <p><span>b</span><span class="adjust2">b</span></p>
  1393. ';
  1394. //==============================================================
  1395. //==============================================================
  1396. // Test for alpha transparency in PNG
  1397. $htmlx = '
  1398. <div style="background-color: transparent;">
  1399. <img src="alpha09.png" height="400px" />
  1400. <img src="alpha36.png" height="400px" />
  1401. </div>
  1402. <div style="background-color: white;">
  1403. <img src="alpha09.png" height="400px" />
  1404. <img src="alpha36.png" height="400px" />
  1405. </div>
  1406. <div style="background-color: navy;">
  1407. <img src="alpha09.png" height="400px" />
  1408. <img src="alpha36.png" height="400px" />
  1409. </div>
  1410. <div style="background-color: maroon;">
  1411. <img src="alpha09.png" height="400px" />
  1412. <img src="alpha36.png" height="400px" />
  1413. </div>
  1414. <div style="background-color: black;">
  1415. <img src="alpha09.png" height="400px" />
  1416. <img src="alpha36.png" height="400px" />
  1417. </div>
  1418. ';
  1419. //==============================================================
  1420. //==============================================================
  1421. $htmlx ='
  1422. <style>
  1423. img.smooth {
  1424. image-rendering:auto;
  1425. image-rendering:optimizeQuality;
  1426. -ms-interpolation-mode:bicubic;
  1427. }
  1428. img.crisp {
  1429. image-rendering: -moz-crisp-edges; /* Firefox */
  1430. image-rendering: -o-crisp-edges; /* Opera */
  1431. image-rendering: -webkit-optimize-contrast;/* Webkit (non-standard naming) */
  1432. image-rendering: crisp-edges;
  1433. -ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */
  1434. }
  1435. </style>
  1436. <div>
  1437. <img class="smooth" src="pngtestsuite/bgan6a16.png" width="300px" />
  1438. <span style="image-rendering:-moz-crisp-edges">
  1439. <img class="crisp" src="pngtestsuite/bgan6a162.png" width="300px" />
  1440. </span></div>
  1441. <img src="pngtestsuite/bgan6a162.png" width="300px" />
  1442. ';
  1443. //==============================================================
  1444. //==============================================================
  1445. //==============================================================
  1446. // ICC based Color Profiles in Images + 16-bit Gamma
  1447. $htmlx = '
  1448. PNG (16-bit, Gamma): <div style="background-color: #cc9900; padding: 2em;"><img src="butterfly_ProPhoto.png" ></div>
  1449. PNG (Gamma): <div style="background-color: #cc9900; padding: 2em;"><img src="ColorGammaGradient.png" ></div>
  1450. PNG (ICC Profile): <div style="background-color: #cc9900; padding: 2em;"><img src="colourTestFakeBRG.png" ></div>
  1451. JPEG (ICC Profile):
  1452. <table align="center" cellspacing="4" cellpadding="4">
  1453. <tr>
  1454. <td> Profiles in each quadrant: </td>
  1455. <td> v4 e-sRGB </td>
  1456. <td> v4 YCC-RGB </td>
  1457. </tr>
  1458. <tr>
  1459. <td> </td>
  1460. <td> v2 GBR </td>
  1461. <td> v2 Adobe RGB </td>
  1462. </tr>
  1463. </table>
  1464. <table align="center" width="400"border="0" cellspacing="0" cellpadding="0">
  1465. <tr align="top">
  1466. <td align="right"> <img src="Upper_Left.jpg" width=180> </td>
  1467. <td align="left"> <img src="Upper_Right.jpg" width=171> </td>
  1468. </tr>
  1469. <tr>
  1470. <td align="right"> <img src="Lower_Left.jpg" width=180> </td>
  1471. <td align="left"> <img src="Lower_Right.jpg" width=171> </td>
  1472. </tr>
  1473. </table>
  1474. This should correctly display with the motorbike in green:
  1475. <img src="BGR-Red-Ducati_WCS-Test-TriState.jpg" />
  1476. ';
  1477. //==============================================================
  1478. //==============================================================
  1479. //==============================================================
  1480. // UNDERLINE and LINE-THROUGH - together
  1481. $htmlx ='
  1482. <p style="text-decoration:none">Hallo World
  1483. <span style="text-decoration:underline">Hallo World
  1484. <span style="text-decoration:line-through">Hallo World
  1485. <span style="color: red;">Hallo World</span>
  1486. Hallo World</span>
  1487. Hallo World</span>
  1488. Hallo World</p>
  1489. ';
  1490. //==============================================================
  1491. //==============================================================
  1492. // UNDERLINE and LINE-THROUGH - across spans
  1493. $htmlx ='
  1494. <p style="font-size: 32pt"><span style="text-decoration:underline">1<sup>st</sup></span></p>
  1495. <p style="font-size: 32pt">1<sup><span style="text-decoration:underline">st</span></sup></p>
  1496. ';
  1497. //==============================================================
  1498. //==============================================================
  1499. //==============================================================
  1500. //==============================================================
  1501. //==============================================================
  1502. //==============================================================
  1503. //BUG TABLES - Width > Page - needing to wrap letters or resize
  1504. // KEEP THIS to Illustrate mpdf - ZZZZZe.php Bug fix
  1505. $html = '
  1506. Latin script will resize rather than wrap -
  1507. <table border="1" style="font-family:sun-exta">
  1508. <tr>
  1509. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1510. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1511. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1512. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1513. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1514. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1515. <td>AB</td>
  1516. <td>AB</td>
  1517. <td>AB</td>
  1518. <td>ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB</td>
  1519. </tr>
  1520. </table>
  1521. Can force wrap using overflow: wrap -
  1522. <table border="1" style="font-family:sun-exta;overflow:wrap">
  1523. <tr>
  1524. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1525. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1526. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1527. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1528. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1529. <td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td><td>AB</td>
  1530. <td>AB</td>
  1531. <td>AB</td>
  1532. <td>AB</td>
  1533. <td>ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB</td>
  1534. </tr>
  1535. </table>
  1536. CJK script will wrap characters (this example also resizes to minimum column width). In this case, minimum is 2 characters in last column because of a character which cannot start a line -
  1537. <table border="1" style="font-family:sun-exta">
  1538. <tr>
  1539. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1540. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1541. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1542. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1543. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1544. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1545. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1546. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1547. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1548. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1549. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1550. <td>&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;</td>
  1551. </tr>
  1552. </table>
  1553. Default layout when resizing not required - note wrapping, but balanced column widths -
  1554. <table border="1" style="font-family:sun-exta">
  1555. <tr>
  1556. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1557. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1558. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1559. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1560. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1561. <td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td><td>&#x90e8;&#x90e8;</td>
  1562. <td>&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;&#x90e8;&#x30a9;</td>
  1563. </tr>
  1564. </table>
  1565. ';
  1566. //==============================================================
  1567. //==============================================================
  1568. //==============================================================
  1569. //==============================================================
  1570. //==============================================================
  1571. $html = '
  1572. <style>
  1573. table.table1 { border-spacing: 10px; }
  1574. .table1 td { padding: 10px; }
  1575. </style>
  1576. <table border="0">
  1577. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1578. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1579. </table>
  1580. <table border="0" cellPadding="0" cellSpacing="0">
  1581. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1582. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1583. </table>
  1584. <table border="0" class="table1">
  1585. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1586. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1587. </table>
  1588. <table border="0" class="table1" cellPadding="0" cellSpacing="0">
  1589. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1590. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1591. </table>
  1592. <table border="0" class="table1" style="border-spacing: 20px">
  1593. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1594. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1595. </table>
  1596. <table border="0" class="table1" cellPadding="0" cellSpacing="0" style="border-spacing: 20px">
  1597. <tr><td style="border-top:1px solid #000;">1</td><td style="border-top:1px solid #000;">2</td><td style="border-top:1px solid #000;">3</td></tr>
  1598. <tr><td style="border-top:1px solid #000;">4</td><td style="border-top:1px solid #000;">5</td><td style="border-top:1px solid #000;">6</td></tr>
  1599. </table>
  1600. ';
  1601. //==============================================================
  1602. //==============================================================
  1603. //==============================================================
  1604. //==============================================================
  1605. //==============================================================
  1606. //==============================================================
  1607. //==============================================================
  1608. //==============================================================
  1609. //==============================================================
  1610. //==============================================================
  1611. if (isset($_REQUEST['html'])) { echo $html; exit; }
  1612. if (isset($_REQUEST['source'])) {
  1613. $file = __FILE__;
  1614. header("Content-Type: text/plain");
  1615. header("Content-Length: ". filesize($file));
  1616. header("Content-Disposition: attachment; filename='".$file."'");
  1617. readfile($file);
  1618. exit;
  1619. }
  1620. //==============================================================
  1621. $mpdf->WriteHTML($html);
  1622. // $mpdf->WriteHTML('<div style="font-size: 8pt; margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000;">Generated in '.sprintf('%.2f',(microtime(true) - $mpdf->time0)).' seconds. Peak memory usage '.number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB</div>');
  1623. // echo number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB<br />';
  1624. //==============================================================
  1625. //==============================================================
  1626. // OUTPUT
  1627. //$mpdf->SetCompression(false);
  1628. $mpdf->Output(); exit;
  1629. //$mpdf->Output('test.pdf','D'); exit;
  1630. $s = $mpdf->Output('','S'); echo nl2br(htmlspecialchars($s)); exit;
  1631. exit;
  1632. //==============================================================
  1633. //==============================================================
  1634. //==============================================================
  1635. //==============================================================