1mPDF 8.0.x
4* Ability to customize User-Agent header in the HTTP requests sent by cURL (@samuelecat, #1229)
5* Add Page Number Myanmar Language Support (@MinKyawNyunt, #1201)
6* new `Mpdf\Exception\FontException` extending base `MpdfException` was introduced and is thrown on Font manipulation
7* A bit cleaner exception messages for font-related errors
8* Use atomic cache writing. (@PATROMO, #1186)
9* Fix: "Undefined index: group" when calling MultiCell when using font without OTL data (@Kekos, #1213, #941)
10* Add C128RAW barcode type to create any barcode (ex: subtype change in middle of barcode) (#1124)
11* Add proxy support to curl
12* Fixed date and time format in the informations dictionary (#1083, @peterdevpl)
13* Checking allowed stream wrappers in CssManager
14* PHP 7.4 support (until final 7.4 release with composer --ignore-platform-reqs)
15* Improve debugging of remote content issues (@ribeirobreno)
16* Added `exposeVersion` configuration variable allowing to hide mPDF version from Producer tag and HTTP headers
17* Added the check for JPEG SOF header 0xFF 0xC1 (extended) (@jamiejones85)
18* Allows setting `none` as zoom mode in `SetDisplayMode` method, so that OpenAction is not written (#602)
19* Allowed image stream whitelist to be customised (#1005, thanks @jakejackson)
20* Fixed parsing of top-left-bottom-right CSS rules with !important (#1009)
21* Fixed skipping ordered list numbering with page-break-inside: avoid (#339)
22* Compound classes selector support, like `.one.two` or `div.message.special` (#538, @peterdevpl)
23* Fixed CMYK colors in text-shadow (#1115, @lexilya)
24* Skip non supported wrappers when resolving paths (#1204, @MarkVaughn)
25* Fixed SVGs using a style tag, has styles ignored ( Requires ext-dom ) (#450, @antman3351)
27mPDF 8.0.0
30### 15/03/2019
32* Updated FPDI dependency to version 2 (thanks a lot, @JanSlabon)
33    - removed `SetImportUse` method
34    - case of `ImportPage` method changed to `importPage`
35    - similarly, case of `setSourceFile` and `useTemplate` was changed to a lowercase first letter.
36    - signature of `importPage` changed
37    - returned value of `useTemplate` changed
38* Moved QRCode generating code portions to external package _mpdf/qrcode_
39    - This reduced package size considerably (ca 6MB)
40* Fraction sizes without leading zeros allowed for font sizes (#973, thanks @peterdevpl)
41* WriteHTML is now strict about used `$mode` parameter (#915, thanks, @tomtomau)
42* Fixed regression in nested tables (#860, thanks, @machour)
43* Scientific notation handling in CSS font sizes (#753, thanks, @peterdevpl)
46mPDF 7.1.x
49* PHAR security issue fixed (thanks, @jakejackson)
50* Font temporary data saved as JSON instead of generating PHP files (thanks, @jakejackson)
51* cURL handling enhancements (thanks, @jakejackson)
52* SVG parsing fixes (thanks, @achretien)
53* Write PDF content with *Writer service classes
54* PHP 7.3 is supported
55* Added myclabs/deepcopy dependency, fixed TOC page numbering (thanks, @jakejackson)
56* Custom color for QR codes
57* Added support for orientation config key
58* Code and tests cleanups and enhancements
59    - PHPUnit dedicated assertions (thanks, @carusogabriel)
60    - WriteHTML part constants (thanks, @tomtomau)
61    - Various notice fixes (kudos to all respective authors)
63mPDF 7.0.x
66* Allow passing file content or file path to `SetAssociatedFiles` (#558)
67* Allowed ^1.4 and ^2.0 of paragon/random_compat to allow wider usage
68* Fix of undefined _getImage function (#539)
69* Code cleanup
70* Better writable rights for temp dir validation (#534)
71* Fix displaying dollar character in footer with core fonts (#520)
72* Fixed missed code2utf call (#531)
73* Refactored and cleaned-up classes and subnamespaces
76mPDF 7.0.0
79### 19/10/2017
81Backward incompatible changes
84- PHP `^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0` is required.
85- Entire project moved under `Mpdf` namespace
86    - Practically all classes renamed to use `PascalCase` and named to be more verbose
87    - Changed directory structure to comply to `PSR-4`
88- Removed explicit require calls, replaced with Composer autoloading
89- Removed configuration files
90    - All configuration now done via `__construct` parameter (see below)
91- Changed `\Mpdf\Mpdf` constructor signature
92    - Class now accepts only single array `$config` parameter
93    - Array keys are former `config.php` and `config_fonts.php` properties
94    - Additionally, former constructor parameters can be used as keys
95- `tempDir` directory now must be writable, otherwise an exception is thrown
96- ICC profile is loaded as entire path to file (to prevent a need to write inside vendor directory)
97- Moved examples to separate repository
98- Moved `TextVars` constants to separate class
99- Moved border constants to separate class
100- `scriptToLang` and `langToFont` in separate interfaced class methods
101- Will now throw an exception when `mbstring.func_overload` is set
102- Moved Glyph operator `GF_` constants in separate `\Mpdf\Fonts\GlyphOperator` class
103- All methods in Barcode class renamed to camelCase including public `dec_to_hex` and `hex_to_dec`
104- Decimal conversion methods (to roman, cjk, etc.) were moved to classes in `\Mpdf\Conversion` namespace
105- Images in PHP variables (`<img src="var:smileyface">`) were moved from direct Mpdf properties to `Mpdf::$imageVars` public property array
106- Removed global `_SVG_AUTOFONT` and `_SVG_CLASSES` constants in favor of `svgAutoFont` and `svgClasses` configuration keys
107- Moved global `_testIntersect`, `_testIntersectCircle` and `calc_bezier_bbox` fucntions inside `Svg` class as private methods.
108    - Changed names to camelCase without underscores and to `computeBezierBoundingBox`
109- Security: Embedded files via `<annotation>` custom tag must be explicitly allowed via `allowAnnotationFiles` configuration key
110- `fontDir` property of Mpdf class is private and must be accessed via configuration variable with array of paths or `AddFontDirectory` method
111- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks
112- cURL is prefered over socket when downloading images.
113- Removed globally defined functions from `functions.php` in favor of `\Mpdf\Utils` classes `PdfDate` and `UtfString`.
114    - Unused global functions were removed entirely.
117Removed features
120- Progressbar support
121- JpGraph support
122- `error_reporting` changes
123- Timezone changes
124- `compress.php` utility
125- `_MPDF_PATH` and `_MPDF_URI` constants
126- `_MPDF_TEMP_PATH` constant in favor of `tempDir` configuration variable
127- `_MPDF_TTFONTDATAPATH` in  favor of `tempDir` configuration variable
128- `_MPDFK` constant in favor of `\Mpdf\Mpdf::SCALE` class constant
129- `FONT_DESCRIPTOR` constant in favor of `fontDescriptor` configuration variable
130- `_MPDF_SYSTEM_TTFONTS` constant in favor of `fontDir` configuration variable with array of paths or `AddFontDirectory` method
131- HTML output of error messages and debugs
132- Formerly deprecated methods
135Fixes and code enhancements
138- Fixed joining arab letters
139- Fixed redeclared `unicode_hex` function
140- Converted arrays to short syntax
141- Refactored and tested color handling with potential conversion fixes in `hsl*()` color definitions
142- Refactored `Barcode` class with separate class in `Mpdf\Barcode` namespace for each barcode type
143- Fixed colsum calculation for different locales (by @flow-control in #491)
144- Image type guessing from content separated to its own class
147New features
150- Refactored caching (custom `Cache` and `FontCache` classes)
151- Implemented `Psr\Log\LoggerAware` interface
152    - All debug and additional messages are now sent to the logger
153    - Messages can be filtered based on `\Mpdf\Log\Context` class constants
154- `FontFileFinder` class allowing to specify multiple paths to search for fonts
155- `MpdfException` now extends `ErrorException` to allow specifying place in code where error occured
156- Generating font metrics moved to separate class
157- Added `\Mpdf\Output\Destination` class with verbose output destination constants
158- Availability to set custom default CSS file
159- Availability to set custom hyphenation dictionary file
160- Refactored code portions to new "separate" classes:
161    - `Mpdf\Color\*` classes
162        - `ColorConvertor`
163        - `ColorModeConvertor`
164        - `ColorSpaceRestrictor`
165    - `Mpdf\SizeConvertor`
166    - `Mpdf\Hyphenator`
167    - `Mpdf\Image\ImageProcessor`
168    - `Mpdf\Image\ImageTypeGuesser`
169    - `Mpdf\Conversion\*` classes
170- Custom watermark angle with `watermarkAngle` configuration variable
171- Custom document properties (idea by @zarubik in #142)
172- PDF/A-3 associated files + additional xmp rdf (by @chab in #130)
173- Additional font directories can be added via `addFontDir` method
174- Introduced `cleanup` method which restores original `mb_` encoding settings (see #421)
175- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks
176- Customizable following of 3xx HTTP redirects, validation of SSL certificates, cURL timeout.
177    - `curlFollowLocation`
178    - `curlAllowUnsafeSslRequests`
179    - `curlTimeout`
180- QR codes can be generated without a border using `disableborder="1"` HTML attribute in `<barcode>` tag
183Git repository enhancements
186- Added contributing guidelines
187- Added Issue template
190mPDF 6.1.0
193### 26/04/2016
195- Composer updates
196    - First release officially supporting Composer
197    - Updated license in composer.json
198    - Chmod 777 on dirs `ttfontdata`, `tmp`, `graph_cache` after composer install
199- Requiring PHP 5.4.0+ with Composer
200- Code style
201    - Reformated (almost) all PHP files to keep basic code style
202    - Removed trailing whitespaces
203    - Converted all txt, php, css, and htm files to utf8
204    - Removed closing PHP tags
205    - Change all else if calls to elseif
206- Added base PHPUnit tests
207- Added Travis CI integration with unit tests
208- Changed all `mPDF::Error` and `die()` calls to throwing `MpdfException`
209- PDF Import changes
210    - FPDI updated to 1.6.0 to fix incompatible licenses
211    - FPDI loaded from Composer or manually only
212- Removed iccprofiles/CMYK directory
213- Renamed example files: change spaces to underscores to make scripting easier
214- Fixed `LEDGER` and `TABLOID` paper sizes
215- Implemented static cache for mpdf function `ConvertColor`.
216- Removed PHP4 style constructors
217- Work with HTML tags separated to `Tag` class
218- Fixed most Strict standards PHP errors
219- Add config constant so we can define custom font data
220- HTML
221    - fax & tel support in href attribute
222    - Check $html in `$mpdf->WriteHTML()` to see if it is an integer, float, string, boolean or
223      a class with `__toString()` and cast to a string, otherwise throw exception.
224- PHP 7
225    - Fix getting image from internal variable in PHP7 (4dcc2b4)
226    - Fix PHP7 Fatal error: `'break' not in the 'loop' or 'switch' context` (002bb8a)
227- Fixed output file name for `D` and `I` output modes (issue #105, f297546)
229mPDF 6.0
232### 20/12/2014
234New features / Improvements
236- Support for OpenTypeLayout tables / features for complex scripts and Advances Typography.
237- Improved bidirectional text handling.
238- Improved line-breaking, including for complex scripts e.g. Lao, Thai and Khmer.
239- Updated page-breaking options.
240- Automatic language mark-up and font selection using autoScriptToLang and autoLangToFont.
241- Kashida for text-justification in arabic scripts.
242- Index collation for non-ASCII characters.
243- Index mark-up allowing control over layout using CSS.
244- `{PAGENO}` and `{nbpg}` can use any of the number types as in list-style e.g. set in `<pagebreak>` using pagenumstyle.
245- CSS support for lists.
246- Default stylesheet - `mpdf.css` - updated.
248Added CSS support
250- lang attribute selector e.g. :lang(fr), [lang="fr"]
251- font-variant-position
252- font-variant-caps
253- font-variant-ligatures
254- font-variant-numeric
255- font-variant-alternates - Only [normal | historical-forms] supported (i.e. most are NOT supported)
256- font-variant - as above, and except for: east-asian-variant-values, east-asian-width-values, ruby
257- font-language-override
258- font-feature-settings
259- text-outline is now supported on TD/TH tags
260- hebrew, khmer, cambodian, lao, and cjk-decimal recognised as values for "list-style-type" in numbered lists and page numbering.
261- list-style-image and list-style-position
262- transform (on `<img>` only)
263- text-decoration:overline
264- image-rendering
265- unicode-bidi (also `<bdi>` tag)
266- vertical-align can use lengths e.g. 0.5em
267- line-stacking-strategy
268- line-stacking-shift
270mPDF 5.7.4
273### 15/12/2014
275Bug Fixes & Minor Additions
277- SVG images now support embedded images e.g. `<image xlink:href="image.png" width="100px" height="100px" />`
278- SVG images now supports `<tspan>` element e.g. `<tspan x,y,dx,dy,text-anchor >`, and also `<tref>`
279- SVG images now can use Autofont (see top of `classes/svg.php` file)
280- SVG images now has limited support for CSS classes (see top of `classes/svg.php` file)
281- SVG images - style inheritance improved
282- SVG images - improved handling of comments and other extraneous code
283- SVG images - fix to ensure opacity is reset before another element
284- SVG images - font-size not resetting after a `<text>` element
285- SVG radial gradients bug (if the focus [fx,fy] lies outside circle defined by [cx,cy] and r) cf. pservers-grad-15-b.svg
286- SVG allows spaces in attribute definitions in `<use>` or `<defs>` e.g. `<use x = "0" y = "0" xlink:href = "#s3" />`
287- SVG text which contains a `<` sign, it will break the text - now processed as `&lt;` (despite the fact that this does not conform to XML spec)
288- SVG images - support automatic font selection and (minimal) use of CSS classes - cf. the defined constants at top of svg.php file
289- SVG images - text-anchor now supported as a CSS style, as well as an HTML attribute
290- CSS support for :nth-child() selector improved to fully support the draft CSS3 spec - http://www.w3.org/TR/selectors/#nth-child-pseudo
291    [NB only works on table columns or rows]
292- text-indent when set as "em" - incorrectly calculated if last text in line in different font size than for block
293- CSS not applying cascaded styles on `<A>` elements - [changed MergeCSS() type to INLINE for 'A', LEGEND, METER and PROGRESS]
294- fix for underline/strikethrough/overline so that line position(s) are based correctly on font-size/font in nested situations
295- Error: Strict warning: Only variables should be passed by reference - in PHP5.5.9
296- bug accessing images from some servers (HTTP 403 Forbidden whn accessed using fopen etc.)
297- Setting page format incorrectly set default twice and missed some options
298- bug fixed in Overwrite() when specifying replacement as a string
299- barcode C93 - updated C93 code from TCPDF because of bug - incorrect checksum character for "153-2-4"
300- Tables - bug when using colspan across columns which may have a cell width specified
301    cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug
302- Tables - cell height (when specified) is not resized when table is shrunk
303- Tables - if table width specified, but narrower than minimum cell wdith, and less than page width - table will expand to
304    minimum cell width(s) as long as $keep_table_proportions = true
305- Tables - if using packTableData, and borders-collapse, wider border is overwriting content of adjacent cell
306    Test case:
307    ```
308    <table style="border-collapse: collapse;">
309    <tr><td style="border-bottom: 42px solid #0FF; "> Hallo world </td></tr>
310    <tr><td style="border-top: 14px solid #0F0; "> Hallo world </td></tr>
311    </table>
312    ```
313- Images - image height is reset proportional to original if width is set to maximum e.g. `<img width="100%" height="20mm">`
314- URL handling changed to work with special characters in path fragments; affects `<a>` links, `<img>` images and
315    CSS url() e.g background-image
316    - also to ignore `../` included as a query value
317- Barcodes with bottom numerals e.g. EAN-13 - incorrect numeral size when using core fonts
321NB Spec. for embedded SVG images:
322as per http://www.w3.org/TR/2003/REC-SVG11-20030114/struct.html#ImageElement
323Attributes supported:
324- x
325- y
326- xlink:href (required) - can be jpeg, png or gif image - not vector (SVG or WMF) image
327- width (required)
328- height (required)
329- preserveAspectRatio
331Note: all attribute names and values are case-sensitive
332width and height cannot be assigned by CSS - must be attributes
334mPDF 5.7.3
337### 24/8/2014
339Bug Fixes & Minor Additions
342- Tables - cellSpacing and cellPadding taking preference over CSS stylesheet
343- Tables - background images in table inside HTML Footer incorrectly positioned
344- Tables - cell in a nested table with a specified width, should determine width of parent table cell
345    (cf. http://www.mpdf1.com/forum/discussion/1648/nested-table-bug-)
346- Tables - colspan (on a row after first row) exceeds number of columns in table
347- Gradients in Imported documents (mPDFI) causing error in some browsers
348- Fatal error after page-break-after:always on root level block element
349- Support for 'https/SSL' if file_get_contents_by_socket required (e.g. getting images with allow_url_fopen turned off)
350- Improved support for specified ports when getting external CSS stylesheets e.g. www.domain.com:80
351- error accessing local .css files with dummy queries (cache-busting) e.g. mpdfstyleA4.css?v=
352- start of end tag in PRE incorrectly changed to &lt;
353- error thrown when open.basedir restriction in effect (deleting temporary files)
354- image which forces pagebreak incorrectly positioned at top of page
355- [changes to avoid warning notices by checking if (isset(x)) before referencing it]
356- text with letter-spacing set inside table which needs to be resixed (shrunk) - letter-spacing was not adjusted
357- nested table incorrectly calculating width and unnecessarily wrapping text
358- vertical-align:super|sub can be nested using `<span>` elements
359- inline elements can be nested e.g. text `<sup>text<sup>13</sup>text</sup>` text
360- CSS vertical-align:0.5em (or %) now supported
361- underline and strikethrough now use the parent inline block baseline/fontsize/color for child inline elements *** change in behaviour
362    (Adjusts line height to take account of superscript and subscript except in tables)
363- nested table incorrectly calculating width and unnecessarily wrapping text
364- tables - font size carrying over from one nested table to the next nested table
365- tables - border set as attribute on `<TABLE>` overrides border set as CSS on `<TD>`
366- tables - if table width set to 100% and one cell/column is empty with no padding/border, sizing incorrectly
367    (http://www.mpdf1.com/forum/discussion/1886/td-fontsize-in-nested-table-bug-#Item_5)
368- `<main>` added as recognised tag
369- CSS style transform supported on `<img>` element (only)
370    All transform functions are supported except matrix() i.e. translate(), translateX(), translateY(), skew(), skewX(), skewY(),
371    scale(), scaleX(), scaleY(), rotate()
372    NB When using Columns or Keep-with-table (use_kwt), cannot use transform
373- CSS background-color now supported on `<img>` element
374- @page :first not recognised unless @page {} has styles set
375- left/right margins not allowed on @page :first
377mPDF 5.7.2
380### 28/12/2013
382Bug Fixes
385- `<tfoot>` not printing at all (since v5.7)
386- list-style incorrectly overriding list-style-type in cascading CSS
387- page-break-after:avoid not taking into account bottom padding and margin when estimating if next line can fit on page
388- images not displayed when using "https://" if images are referenced by src="//domain.com/image"
389- +aCJK incorrectly parsed when instantiating class e.g. new mpDF('ja+aCJK')
390- line-breaking - zero-width object at end of line (e.g. index entry) causing a space left untrimmed at end of line
391- ToC since v5.7 incorrectly handling non-ascii characters, entities or tags
392- cell height miscalculated when using hard-hyphenate
393- border colors set with transparency not working
394- transparency settings for stroke and fill interfering with one another
395- 'float' inside a HTML header/footer - not clearing the float before first line of text
396- error if script run across date change at midnight
397- temporary file name collisions (e.g. when processing images) if numerous users
398- `<watermarkimage>` position attribute not working
399- `<` (less-than sign) inside a PRE element, and NOT start of a valid tag, was incorrectly removed
400- file attachments not opening in Reader XI
401- JPG images not recognised if not containing JFIF or Exif markers
402- instance of preg_replace with /e modifier causing error in PHP 5.5
403- correctly handle CSS URLs with no scheme
404- Index entries causing errors when repeat entries are used within page-break-inside:avoid, rotated tables etc.
405- table with fixed width column and long word in cell set to colspan across this column (adding spare width to all columns)
406- incorrect hyphenation if multiple soft-hyphens on line before break
407- SVG images - objects contained in `<defs>` being displayed
408- SVG images - multiple, or quoted fonts e.g. style="font-family:'lucida grande', verdana" not recognised
409- SVG images - line with opacity=0 still visible (only in some PDF viewers/browsers)
410- text in an SVG image displaying with incorrect font in some PDF viewers/browsers
411- SVG images - fill:RGB(0,0,0) not recognised when uppercase
412- background images using data:image\/(jpeg|gif|png);base64 format - error when reading in stylesheet
414New CSS support
417- added support for style="opacity:0.6;" in SVG images - previously only supported style="fill-opacity:0.6; stroke-opacity: 0.6;"
418- improved PNG image handling for some cases of alpha channel transparency
419- khmer, cambodian and lao recognised as list-style-type for numbered lists
421SVG Images
424- Limited support for `<use>` and `<defs>`
426mPDF 5.7.1
428## 01/09/2013
4301) FILES: mpdf.php
432Bug fix; Dollar sign enclosed by `<pre>` tag causing error.
433Test e.g.: `<pre>Test $1.00 Test</pre> <pre>Test $2.00 Test</pre> <pre>Test $3.00 Test</pre> <pre>Test $4.00 Test</pre>`
4372) FILES: includes/functions.php AND mpdf.php
439Changes to `preg_replace` with `/e` modifier to use `preg_replace_callback`
440(/e depracated from PHP 5.5)
4443) FILES: classes/barcode.php
446Small change to function `barcode_c128()` which allows ASCII 0 - 31 to be used in C128A e.g. chr(13) in:
447`<barcode code="5432&#013;1068" type="C128A" />`
4514) FILES: mpdf.php
453Using $use_kwt ("keep-[heading]-with-table") if `<h4></h4>` before table is on 2 lines and pagebreak occurs after first line
454the first line is displayed at the bottom of the 2nd page.
455Edited so that $use_kwt only works if the HEADING is only one line. Else ignores (but prints correctly)
4595) FILES: mpdf.php
461Clearing old temporary files from `_MPDF_TEMP_PATH` will now ignore "hidden" files e.g. starting with a "`.`" `.htaccess`, `.gitignore` etc.
462and also leave `dummy.txt` alone
465mPDF 5.7
468### 14/07/2013
470Files changed
472- config.php
473- mpdf.php
474- classes/tocontents.php
475- classes/cssmgr.php
476- classes/svg.php
477- includes/functions.php
478- includes/out.php
479- examples/formsubmit.php [Important - Security update]
481Updated Example Files in /examples/
484- All example files
485- mpdfstyleA4.css
491- $this->hyphenateTables
492- $this->hyphenate
493- $this->orphansAllowed
495- "hyphens: manual" - Added to $this->defaultCSS
496- $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB'
498- $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
499- $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
500- $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
501- $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script)
504Backwards compatability
507Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences:
5081) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever
509    you previously used $mpdf->hyphenate=true;
5102) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get:
511    - No indent (previous default of 5mm) - ($tocindent is ignored)
512    - Any font, font-size set ($tocfont or $tocfontsize) will not work
513    - HyperLinks will appear with your default appearance - usually blue and underlined
514    - line spacing will be narrower (can use line-height or margin-top in CSS)
516New features / Improvements
518- Layout of Table of Content ToC now controlled using CSS styles
519- Text alignment on decimal mark inside tables
520- Automatically generated bookmarks and/or ToC entries from H1 - H6 tags
521- Support for unit of "rem" as size e.g. font-size: 1rem;
522- Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip
523- Text-outline controlled by CSS (compatible with CSS3 spec.)
524- Use of `<dottab>` enhanced by custom CSS "outdent" property
525- Image HTML attributes `<img>` added: max-height, max-width, min-height and min-width
526- Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9);
527- Lists - added support for "start" attribute in `<ol>` e.g. `<ol start="5">`
528- Hyphenation controlled using CSS, consistent with CSS3 spec.
529- Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0
530- Line breaking in CJK scripts improved (and ability to force hanging punctuation)
531- Numerals in a CJK script are kept together
532- RTL improved support for phrases containing numerals and \ and /
533- Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A,
535- Support for `<base href="">` in HTML - uses it to SetBasePath for relative URLs.
536- HTML tag - added support for `<wbr>` or `<wbr />` - converted to a soft-hyphen
537- CSS now takes precedence over HTML attribute e.g. `<table bgcolor="black" style="background-color:yellow">`
539Added CSS support
541- max-height, max-width, min-height and min-width for images `<img>`
542- "hyphens: none|manual|auto" as per CSS3 spec.
543- Decimal mark alignment e.g. text-align: "." center;
544- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem
545- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported)
546- background-origin, background-size, background-clip are now supported everywhere except in tables
547- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. `<span>`
548- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec)
549- "z-index" can be used to utilise layers in the PDF document
550- Custom CSS property added: "outdent" - opposite of indent
552The HTML elements `<dottab>` and `<textcircle>` can now have CSS properties applied to them.
554Bug fixes
556- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E)
557- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop
558- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced
559- Tables - Warning notice now given in Table footer or header if `<tfoot>` placed after `<tbody>` and table spans page
560- Columns - block with border-width wider than the length of the border line, line overflows
561- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed
562- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border.
563- TOCpagebreakByArray() when called by function was not adding the pagebreak
564- Border around block element - dashed not showing correctly (not resetting linewidth between different edges)
565- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double
566- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed
567- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser
568    [Inadvertently improves borders in Columns because of change in LineCap]
569- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed
570- Page numbering - Page number total {nbpg} incorrect  - e.g. showing decreasing numbers through document, when ToC present
571- RTL numerals - incorrectly reversing a number followed by a comma
572- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts
573- TOCpagebreak - Not setting TOC-FOOTER
574- TOCpagebreak - toc-even-header-name etc. not working
575- Parsing some relative URLs incorrectly
576- Textcircle - when moved to next page by "page-break-inside: avoid"
577- Bookmarks will now work if jump more than one level e.g. 0,2,1  Inserts a new blank entry at level 1
578- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two /
579- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1)
580- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1)
581- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1)
582- `<dottab>` fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL
583- Table {colsum} summed figures in table header
584- list-style-type (custom) colour not working
585- `<tocpagebreak>` toc-preHTML and toc-postHTML can now contain quotes
587mPDF 5.6
590### 20/01/2013
592Files changed
594- mpdf.php
595- config.php
596- includes/functions.php
597- classes/meter.php
598- classes/directw.php
601config.php changes
604- $this->allowedCSStags - added HTML5 tags + textcircle AND
605- $this->outerblocktags - added HTML5 tags
606- $this->defaultCSS  - added default CSS properties
608New features / Improvements
610CSS support added for for min-height, min-width, max-height and max-width in `<img>`
612Images embedded in CSS
613- `<img src="data:image/gif;base64,....">` improved to make it more robust, and background: `url(data:image...` now added to work
615HTML5 tags supported
616- as generic block elements: `<article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>`
617- as in-line elements: `<mark><time><meter><progress>`
618- `<mark>` has a default CSS set in config.php to yellow highlight
619- `<meter>` and `<progress>` support attributes as for HTML5
620- custom appearances for `<meter>` and `<progress>` can be made by editing `classes/meter.php` file
621- `<meter>` and `<progress>` suppress text inside the tags
624- font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set)
625    NB for this AND ALL CSS on `<textcircle>`: does not inherit CSS styles
626- attribute: divider="[characters including HTML entities]" added
627- `<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular"
628    divider="&nbsp;&bull;&nbsp;" style="font-size: auto" />`
630&raquo; &rsquo; &sbquo; &bdquo; are now included in "orphan"-management at the end of lines
632Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace)
634NB mPDF 5.5 added support for `<fieldset>` and `<legend>` (omitted from ChangeLog)
636Bug fixes
639- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal
640    Only a problem in limited circumstances.
641    *****Need to delete all ttfontdata/ files in order for fix to have effect.
642- `<textCircle>` background white even when set to none/transparent
643- border="0" causing mPDF to add border to table CELLS as well as table
644- iteration counter in THEAD crashed in some circumstances
645- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170);
646- CJK not working in table following changes made in v5.4
647- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src)
648- CSS `<style>` within HTML page crashed if CSS is too large  (? > 32Kb)
649- SVG image nested int eht HTML failed to show if code too large (? > 32Kb)
650- cyrillic character p &#1088; at end of table cell caused cell height to be incorrectly calculated
652mPDF 5.5
655### 02/03/2012
657Files changed
660- mpdf.php
661- classes/ttfontsuni.php
662- classes/svg.php
663- classes/tocontents.php
664- config.php
665- config_fonts.php
666- utils/font_collections.php
667- utils/font_coverage.php
668- utils/font_dump.php
670Files added
675config.php changes
678To avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`)
680`$this->margBuffer = 0; // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)`
682config_fonts.php changes
685Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto
686    'unAGlyphs' => true,
688Arabic text
691Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish
692    Presentation forms added:
693    U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE,
694    U+06B0-U+06B4, U+06B5-U+06B9, U+06BB, U+06BC, U+06BE, U+06BF, U+06C0, U+06CD, U+06CE, U+06D1, U+06D3, U+0678
695    Joining improved:
696    U+0672, U+0675, U+0676, U+0677, U+0679-U+067D, U+067F, U+0680, U+0683, U+0684, U+0687, U+0687, U+0688-U+0692,
697    U+0694, U+0695, U+0697, U+0699, U+068F, U+06A1, U+06A4, U+06A6, U+06A7, U+06A8, U+06AA, U+06BA, U+06C2-U+06CB, U+06CF
699Note - Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters.
700However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).
701    `'unAGlyphs' => true`, added to the config_fonts.php file for appropriate fonts will
703This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi:
704    e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS)
706NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work!
707Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).
709mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
710if the font already utilises these codes (unlikely).
712mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear
713even though some fonts contain glyphs for these characters.
716Other New features / Improvements
718Avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`)
719using configurable variable: `$this->margBuffer`;
722The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF
724This has been moved to a new file: classes/ttfontsuni_analysis.php.
726The 3 utility scripts have been updated to use the new extended class:
728- utils/font_collections.php
729- utils/font_coverage.php
730- utils/font_dump.php
733Bug fixes
735- Border & background when closing 2 blocks (e.g. `</div></div>`) incorrectly being moved to next page because incorrectly
736    calculating how much space required
737- Fixed/Absolute-positioned elements not inheriting letter-spacing style
738- Rotated cell - error if text-rotate set on a table cell, but no text content in cell
739- SVG images, text-anchor not working
740- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately
741- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc
742- SVG setting font-size as percent on successive `<text>` elements gives progressively smaller text
743- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message)
744- not resetting after 2 nested tags of same type e.g. `<b><b>bold</b></b>` still bold
745- When using charset_in other than utf-8, HTML Footers using tags e.g. `<htmlpageheader>` do not decode correctly
746- ToC if nested > 3 levels, line spacing reduces and starts to overlap
748Older changes can be seen [on the documentation site](https://mpdf.github.io/about-mpdf/changelog.html).