| @@ -1,10 +1,30 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | +// mPDF 5.7 | |
| 4 | +// Specify whether to automatically generate bookmarks or ToC entries from h1 - h6 tags | |
| 5 | +$this->h2bookmarks = array(); | |
| 6 | +$this->h2toc = array(); | |
| 7 | +/* Define arrays with e.g. the tag=>ToC-level | |
| 8 | +Remember bookmark and ToC levels start at 0 | |
| 9 | +(does not work inside tables) | |
| 10 | +Only the default ToC will be used if > 1 ToCs are defined for the document | |
| 11 | +H1 - H6 must be uppercase | |
| 12 | +$this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2); | |
| 13 | +$this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2); | |
| 14 | +*/ | |
| 3 | 15 | |
| 16 | +// mPDF 5.7 | |
| 17 | +// Text-align on decimal marks | |
| 18 | +// Allowed characters for alignment on decimal marks. Additional codes must start with D | |
| 19 | +// Non-ASCII characters should be in utf-8 encoding | |
| 20 | +// DM - middot U+00B7 | |
| 21 | +// DA - arabic decimal mark U+066B | |
| 22 | +$this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-'); | |
| 4 | 23 | |
| 5 | 24 | // PAGING |
| 6 | 25 | $this->mirrorMargins = 0; |
| 26 | +$this->restoreBlockPagebreaks = false; | |
| 7 | 27 | $this->forcePortraitMargins = false; |
| 8 | 28 | $this->displayDefaultOrientation = false; |
| 9 | 29 | $this->printers_info = false; // Adds date and page info for printer when using @page and "marks:crop;" |
| 10 | 30 | $this->bleedMargin = 5; |
| @@ -11,24 +31,23 @@ | ||
| 11 | 31 | $this->crossMarkMargin = 5; // Distance of cross mark from margin in mm |
| 12 | 32 | $this->cropMarkMargin = 8; // Distance of crop mark from margin in mm |
| 13 | 33 | $this->cropMarkLength = 18; // Default length in mm of crop line |
| 14 | 34 | $this->nonPrintMargin = 8; // Non-printable border at edge of paper sheet in mm |
| 15 | -$this->defaultPagebreakType = 'cloneall'; // 'slice' or 'cloneall' or 'clonebycss' - for forced pagebreaks using <pagebreak /> | |
| 16 | - // Automatic pagebreaks (flow in text) are always 'slice' | |
| 17 | - | |
| 35 | +// mPDF 5.5 | |
| 18 | 36 | // Avoid just the border/background-color of the end of a block being moved on to next page |
| 19 | 37 | $this->margBuffer = 2; // Allows an (empty) end of block to extend beyond the bottom margin by this amount (mm) |
| 20 | 38 | |
| 39 | + | |
| 21 | 40 | // PAGE NUMBERING |
| 22 | -$this->pagenumPrefix=''; | |
| 23 | -$this->pagenumSuffix=''; | |
| 24 | -$this->nbpgPrefix=''; | |
| 25 | -$this->nbpgSuffix=''; | |
| 26 | -$this->defaultPageNumStyle = '1'; // 1:Decimal, A:uppercase alphabetic etc. (as for list-style shorthands) | |
| 41 | +$this->pagenumPrefix; | |
| 42 | +$this->pagenumSuffix; | |
| 43 | +$this->nbpgPrefix; | |
| 44 | +$this->nbpgSuffix; | |
| 27 | 45 | |
| 46 | + | |
| 28 | 47 | // FONTS, LANGUAGES & CHARACTER SETS |
| 29 | 48 | // Set maximum size of TTF font file to allow non-subsets - in kB |
| 30 | -// Used to avoid a font e.g. Arial Unicode MS (perhaps used for substitutions) ever being fully embedded | |
| 49 | +// Used to avoid e.g. Arial Unicode MS (perhaps used for substitutions) to ever be fully embedded | |
| 31 | 50 | // NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB) |
| 32 | 51 | $this->maxTTFFilesize = 2000; |
| 33 | 52 | |
| 34 | 53 | // this value determines whether to subset or not |
| @@ -36,9 +55,9 @@ | ||
| 36 | 55 | // i.e. if ==40, mPDF will embed whole font if >40% characters in that font |
| 37 | 56 | // or embed subset if <40% characters |
| 38 | 57 | // 0 will force whole file to be embedded (NO subsetting) |
| 39 | 58 | // 100 will force always to subset |
| 40 | -// This value is overridden if you set new mPDF('s') | |
| 59 | +// This value is overridden if you set new mPDF('s) | |
| 41 | 60 | // and/or Can set at runtime |
| 42 | 61 | $this->percentSubset = 30; |
| 43 | 62 | |
| 44 | 63 | $this->useAdobeCJK = false; // Uses Adobe CJK fonts for CJK languages |
| @@ -54,19 +73,11 @@ | ||
| 54 | 73 | |
| 55 | 74 | // Allows automatic character set conversion if "charset=xxx" detected in html header (WriteHTML() ) |
| 56 | 75 | $this->allow_charset_conversion = true; |
| 57 | 76 | $this->biDirectional=false; // automatically determine BIDI text in LTR page |
| 77 | +$this->autoFontGroupSize = 2; // 1: individual words are spanned; 2: words+; 3: as big chunks as possible. | |
| 78 | +$this->useLang = true; // Default changed in mPDF 4.0 | |
| 58 | 79 | |
| 59 | - | |
| 60 | -// AUTOMATIC FONT SELECTION | |
| 61 | -// Based on script and/or language | |
| 62 | -$this->autoScriptToLang = false; // mPDF 6.0 (similar to previously using function SetAutoFont() ) | |
| 63 | -$this->baseScript = 1; // =Latin; to set another base script see constants in classes/ucdn.php | |
| 64 | -$this->autoVietnamese = true; | |
| 65 | -$this->autoArabic = true; | |
| 66 | - | |
| 67 | -$this->autoLangToFont = false; // mPDF 6.0 (similar to old useLang) | |
| 68 | - | |
| 69 | 80 | $this->useSubstitutions = false; // Substitute missing characters in UTF-8(multibyte) documents - from other fonts |
| 70 | 81 | $this->falseBoldWeight = 5; // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max) |
| 71 | 82 | |
| 72 | 83 | // CONFIGURATION |
| @@ -134,9 +145,9 @@ | ||
| 134 | 145 | $this->table_error_report_param = ''; // Parameter which can be passed to show in error report i.e. chapter number being processed// |
| 135 | 146 | |
| 136 | 147 | |
| 137 | 148 | // ANNOTATIONS |
| 138 | -$this->title2annots = false; // Automaticaaly convert title="" properties in tags, to annotations | |
| 149 | +$this->title2annots = false; | |
| 139 | 150 | $this->annotSize = 0.5; // default mm for Adobe annotations - nominal |
| 140 | 151 | $this->annotMargin; // default position for Annotations |
| 141 | 152 | $this->annotOpacity = 0.5; // default opacity for Annotations |
| 142 | 153 | |
| @@ -153,45 +164,11 @@ | ||
| 153 | 164 | ); |
| 154 | 165 | */ |
| 155 | 166 | $this->bookmarkStyles = array(); |
| 156 | 167 | |
| 157 | -// Specify whether to automatically generate bookmarks from h1 - h6 tags | |
| 158 | -$this->h2bookmarks = array(); | |
| 159 | -/* Define arrays with e.g. the tag=>Bookmark-level | |
| 160 | -Remember bookmark levels start at 0 | |
| 161 | -(does not work inside tables) | |
| 162 | -H1 - H6 must be uppercase | |
| 163 | -$this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2); | |
| 164 | -*/ | |
| 165 | 168 | |
| 166 | - | |
| 167 | -// TABLE OF CONTENTS | |
| 168 | -// Specify whether to automatically generate ToC entries from h1 - h6 tags | |
| 169 | -$this->h2toc = array(); | |
| 170 | -/* Define arrays with e.g. the tag=>ToC-level | |
| 171 | -Remember ToC levels start at 0 | |
| 172 | -(does not work inside tables) | |
| 173 | -Only the default ToC will be used if > 1 ToCs are defined for the document | |
| 174 | -H1 - H6 must be uppercase | |
| 175 | -$this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2); | |
| 176 | -*/ | |
| 177 | - | |
| 178 | -// INDEX | |
| 179 | -/* Specifies whether to repeat the main entry for each subEntry (true suppressess this) | |
| 180 | -e.g. Mammal:dog ... Mammal:elephant -> | |
| 181 | -[true] | |
| 182 | -Mammal | |
| 183 | -- dog | |
| 184 | -- elephant | |
| 185 | -[false] | |
| 186 | -Mammal, dog | |
| 187 | -Mammal, elephant | |
| 188 | -*/ | |
| 189 | -$this->indexUseSubentries = true; | |
| 190 | - | |
| 191 | - | |
| 192 | 169 | // CSS & STYLES |
| 193 | -$this->CSSselectMedia='print'; // screen, print, or any other CSS @media type (except "all") | |
| 170 | +$this->CSSselectMedia='print'; // screen, print, or any other CSS @media type (not "all") | |
| 194 | 171 | |
| 195 | 172 | |
| 196 | 173 | // PAGE HEADERS & FOOTERS |
| 197 | 174 | $this->forcePortraitHeaders = false; |
| @@ -203,9 +180,8 @@ | ||
| 203 | 180 | $this->defaultfooterfontstyle = 'BI'; // '', or 'B' or 'I' or 'BI' |
| 204 | 181 | $this->defaultfooterline = 1; // 1 or 0 - line over the footer |
| 205 | 182 | $this->header_line_spacing = 0.25; // spacing between bottom of header and line (if present) - function of fontsize |
| 206 | 183 | $this->footer_line_spacing = 0.25; // spacing between bottom of header and line (if present) - function of fontsize |
| 207 | - | |
| 208 | 184 | // If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text. |
| 209 | 185 | // If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit. |
| 210 | 186 | $this->setAutoTopMargin = false; |
| 211 | 187 | $this->setAutoBottomMargin = false; |
| @@ -215,42 +191,35 @@ | ||
| 215 | 191 | |
| 216 | 192 | // TABLES |
| 217 | 193 | $this->simpleTables = false; // Forces all cells to have same border, background etc. Improves performance |
| 218 | 194 | $this->packTableData = false; // Reduce memory usage processing tables (but with increased processing time) |
| 195 | +// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased | |
| 196 | +// executon time and disk access (read and write) | |
| 197 | +$this->cacheTables = false; | |
| 219 | 198 | |
| 220 | 199 | $this->ignore_table_percents = false; |
| 221 | 200 | $this->ignore_table_widths = false; |
| 222 | -$this->keep_table_proportions = true; // If table width set > page width, force resizing but keep relative sizes | |
| 201 | +$this->keep_table_proportions = false; // If table width set > page width, force resizing but keep relative sizes | |
| 223 | 202 | // Also forces respect of cell widths set by % |
| 224 | 203 | $this->shrink_tables_to_fit = 1.4; // automatically reduce fontsize in table if words would have to split ( not in CJK) |
| 225 | 204 | // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize |
| 226 | 205 | |
| 227 | 206 | $this->tableMinSizePriority = false; // If page-break-inside:avoid but cannot fit on full page without |
| 228 | - // exceeding autosize; setting this value to true will force respect for | |
| 207 | + // exceeding autosize; setting this value to true will force respsect for | |
| 229 | 208 | // autosize, and disable the page-break-inside:avoid |
| 230 | 209 | |
| 231 | -$this->use_kwt = false; // "Keep-with-table" Attempts to keep a <h1> to <h6> tagged heading together | |
| 232 | - // with a table which comes immediately after it. | |
| 210 | +$this->use_kwt = false; // "Keep-with-table" | |
| 233 | 211 | $this->iterationCounter = false; // Set to TRUE to use table Head iteration counter |
| 234 | 212 | $this->splitTableBorderWidth = 0; // Use table border (using this width in mm) when table breaks across pages |
| 235 | 213 | // Recommended to use small value e.g. 0.01 |
| 236 | 214 | |
| 237 | 215 | |
| 238 | -// Allowed characters for text alignment on decimal marks. Additional codes must start with D | |
| 239 | -// DM - middot U+00B7 | |
| 240 | -// DA - arabic decimal mark U+066B | |
| 241 | -$this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-'); | |
| 242 | - | |
| 243 | - | |
| 244 | 216 | // IMAGES |
| 245 | -$this->interpolateImages = false; // if image-rendering=='auto', this defines value for image-rendering | |
| 246 | - // if true, image interpolation shall be performed by a conforming reader | |
| 247 | 217 | $this->img_dpi = 96; // Default dpi to output images if size not defined |
| 248 | 218 | // See also above "dpi" |
| 249 | 219 | |
| 250 | -// TEzXT SPACING & JUSTIFICATION | |
| 251 | -$this->useKerning = false; // Specify whether kerning should be used when CSS font-kerning="auto" used for HTML; | |
| 252 | - // Also whether kerning should be used in any direct writing e.g. $mpdf->Text(); | |
| 220 | +// TEXT SPACING & JUSTIFICATION | |
| 221 | +$this->useKerning = false; // true to use kerning | |
| 253 | 222 | $this->justifyB4br = false; // In justified text, <BR> does not cause the preceding text to be justified in browsers |
| 254 | 223 | // Change to true to force justification (as in MS Word) |
| 255 | 224 | |
| 256 | 225 | $this->tabSpaces = 8; // Number of spaces to replace for a TAB in <pre> sections |
| @@ -259,37 +228,20 @@ | ||
| 259 | 228 | $this->jSmaxChar = 2; // Maximum spacing to allocate to character spacing. (0 = no maximum) |
| 260 | 229 | |
| 261 | 230 | $this->jSmaxCharLast = 1; // Maximum character spacing allowed (carried over) when finishing a last line |
| 262 | 231 | $this->jSmaxWordLast = 2; // Maximum word spacing allowed (carried over) when finishing a last line |
| 232 | +$this->normalLineheight = 1.33; // Value used for line-height when CSS specified as 'normal' (default) | |
| 263 | 233 | |
| 264 | -// LINE SPACING & TEXT BASELINE | |
| 265 | -$this->useFixedNormalLineHeight = false; // Use the fixed factor ($this->normalLineheight) when line-height:normal | |
| 266 | - // Compatible with mPDF versions < 6 | |
| 267 | - | |
| 268 | -$this->useFixedTextBaseline = false; // Use a fixed ratio ($this->baselineC) to set the text baseline | |
| 269 | - // Compatible with mPDF versions < 6 | |
| 270 | - | |
| 271 | -$this->normalLineheight = 1.33; // Default Value used for line-height when CSS specified as 'normal' (default) | |
| 272 | - | |
| 273 | -$this->adjustFontDescLineheight = 1.14; // Correction factor applied to lineheight values derived from 'win', 'mac', 'winTypo' | |
| 274 | - | |
| 275 | - | |
| 276 | 234 | // Small Caps |
| 277 | 235 | $this->smCapsScale = 0.75; // Factor of 1 to scale capital letters |
| 278 | 236 | $this->smCapsStretch = 110; // % to stretch small caps horizontally (i.e. 100 = no stretch) |
| 279 | 237 | |
| 280 | -// Line-breaking | |
| 281 | -// The alternative to these next 2 is the use of U+200B Zero-width space | |
| 282 | -// These are only effective if using OTL for the fonts | |
| 283 | -$this->useDictionaryLBR = true; // Use the dictionaries to determine line-breaking in Lao, Khmer and Thai | |
| 284 | -$this->useTibetanLBR = true; // Use the inbuilt algorithm to determine line-breaking in Tibetan | |
| 285 | - | |
| 286 | 238 | // CJK Line-breaking |
| 287 | 239 | $this->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow |
| 288 | 240 | $this->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) |
| 289 | 241 | $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin mPDF 5.6.40 |
| 290 | 242 | |
| 291 | -// HYPHENATION (using word dictionaries) | |
| 243 | +// HYPHENATION | |
| 292 | 244 | $this->SHYlang = "en"; // Should be one of: 'en','de','es','fi','fr','it','nl','pl','ru','sv' |
| 293 | 245 | $this->SHYleftmin = 2; |
| 294 | 246 | $this->SHYrightmin = 2; |
| 295 | 247 | $this->SHYcharmin = 2; |
| @@ -301,26 +253,12 @@ | ||
| 301 | 253 | $this->ColGap=5; |
| 302 | 254 | |
| 303 | 255 | |
| 304 | 256 | // LISTS |
| 305 | -// mPDF 6 | |
| 306 | -$this->list_auto_mode = 'browser'; // 'mpdf' or 'browser' - Specify whether to use mPDF custom method of automatic | |
| 307 | - // indentation of lists, or standard browser-compatible | |
| 308 | - // custom mPDF method is ignored if list-style-position: inside, or image used for marker (or custom U+) | |
| 309 | -$this->list_indent_default = '40px'; // List Indentation when set to 'auto' if using standard browser-compatible method | |
| 310 | -$this->list_indent_default_mpdf = '0em'; // List Indentation when set to 'auto' if using mPDF custom method | |
| 311 | -$this->list_indent_first_level = 0; // 1/0 yes/no to indent first level of list, if using mPDF custom method | |
| 257 | +$this->list_align_style = 'R'; // Determines alignment of numbers in numbered lists | |
| 258 | +$this->list_indent_first_level = 0; // 1/0 yex/no to indent first level of list | |
| 259 | +$this->list_number_suffix = '.'; // Content to follow a numbered list marker e.g. '.' gives 1. or IV.; ')' gives 1) or a) | |
| 312 | 260 | |
| 313 | -$this->list_number_suffix = '.'; // Content to follow a numbered list marker e.g. '.' gives 1. or IV.; ')' gives 1) or a) | |
| 314 | - | |
| 315 | -// To specify a bullet size and offset proprtional to the list item's font size: | |
| 316 | -//$this->list_marker_offset = '0.45em'; // Offset (CSS length) of list marker bullets (disc/circle/square) | |
| 317 | -//$this->list_symbol_size = '0.31em'; // Size (CSS) of list marker bullets (disc/circle/square) | |
| 318 | -// Browsers use a fixed bullet size and offset | |
| 319 | -$this->list_marker_offset = '5.5pt'; // Offset (CSS length) of list marker bullets (disc/circle/square) | |
| 320 | -$this->list_symbol_size = '3.6pt'; // Size (CSS) of list marker bullets (disc/circle/square) | |
| 321 | - | |
| 322 | - | |
| 323 | 261 | // ACTIVE FORMS |
| 324 | 262 | $this->useActiveForms = false; |
| 325 | 263 | |
| 326 | 264 | // WATERMARKS |
| @@ -351,9 +289,8 @@ | ||
| 351 | 289 | 'TEXT-INDENT' => '0pt', |
| 352 | 290 | 'LINE-HEIGHT' => 'normal', |
| 353 | 291 | 'MARGIN-COLLAPSE' => 'collapse', /* Custom property to collapse top/bottom margins at top/bottom of page - ignored in tables/lists */ |
| 354 | 292 | 'HYPHENS' => 'manual', /* mPDF 5.6.08 */ |
| 355 | - 'FONT-KERNING' => 'auto', /* mPDF 6 */ | |
| 356 | 293 | ), |
| 357 | 294 | 'P' => array( |
| 358 | 295 | 'MARGIN' => '1.12em 0', |
| 359 | 296 | ), |
| @@ -483,16 +420,14 @@ | ||
| 483 | 420 | 'COLOR' => '#0000FF', |
| 484 | 421 | 'TEXT-DECORATION' => 'underline', |
| 485 | 422 | ), |
| 486 | 423 | 'UL' => array( |
| 487 | - 'PADDING' => '0 auto', /* mPDF 6 */ | |
| 488 | - 'MARGIN-TOP' => '0.83em', /* mPDF 6 */ | |
| 489 | - 'MARGIN-BOTTOM' => '0.83em', /* mPDF 6 */ | |
| 424 | + 'MARGIN' => '0.83em 0', /* only applied to top-level of nested lists */ | |
| 425 | + 'TEXT-INDENT' => '1.3em', /* Custom effect - list indent */ | |
| 490 | 426 | ), |
| 491 | 427 | 'OL' => array( |
| 492 | - 'PADDING' => '0 auto', /* mPDF 6 */ | |
| 493 | - 'MARGIN-TOP' => '0.83em', /* mPDF 6 */ | |
| 494 | - 'MARGIN-BOTTOM' => '0.83em', /* mPDF 6 */ | |
| 428 | + 'MARGIN' => '0.83em 0', /* only applied to top-level of nested lists */ | |
| 429 | + 'TEXT-INDENT' => '1.3em', /* Custom effect - list indent */ | |
| 495 | 430 | ), |
| 496 | 431 | 'DL' => array( |
| 497 | 432 | 'MARGIN' => '1.67em 0', |
| 498 | 433 | ), |
| @@ -507,10 +442,8 @@ | ||
| 507 | 442 | 'BORDER-SPACING' => '2px', |
| 508 | 443 | 'EMPTY-CELLS' => 'show', |
| 509 | 444 | 'LINE-HEIGHT' => '1.2', |
| 510 | 445 | 'VERTICAL-ALIGN' => 'middle', |
| 511 | - 'HYPHENS' => 'manual', /* mPDF 6 */ | |
| 512 | - 'FONT-KERNING' => 'auto', /* mPDF 6 */ | |
| 513 | 446 | ), |
| 514 | 447 | 'THEAD' => array( |
| 515 | 448 | ), |
| 516 | 449 | 'TFOOT' => array( |
| @@ -534,9 +467,8 @@ | ||
| 534 | 467 | ), |
| 535 | 468 | 'IMG' => array( |
| 536 | 469 | 'MARGIN' => '0', |
| 537 | 470 | 'VERTICAL-ALIGN' => 'baseline', |
| 538 | - 'IMAGE-RENDERING' => 'auto', | |
| 539 | 471 | ), |
| 540 | 472 | 'INPUT' => array( |
| 541 | 473 | 'FONT-FAMILY' => 'sans-serif', |
| 542 | 474 | 'VERTICAL-ALIGN' => 'middle', |
| @@ -566,55 +498,75 @@ | ||
| 566 | 498 | // Hyphenation |
| 567 | 499 | $this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv'); // existing defined patterns |
| 568 | 500 | |
| 569 | 501 | $this->default_lineheight_correction=1.2; // Value 1 sets lineheight=fontsize height; |
| 570 | - // Value used if line-height not set by CSS (usually is) | |
| 502 | + // Value used if line-height not set by CSS (usuallly is) | |
| 571 | 503 | |
| 572 | 504 | $this->fontsizes = array('XX-SMALL'=>0.7, 'X-SMALL'=>0.77, 'SMALL'=>0.86, 'MEDIUM'=>1, 'LARGE'=>1.2, 'X-LARGE'=>1.5, 'XX-LARGE'=>2); |
| 573 | 505 | |
| 574 | 506 | // CHARACTER PATTERN MATCHES TO DETECT LANGUAGES |
| 575 | 507 | // pattern used to detect RTL characters -> force RTL |
| 576 | - $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0700}-\x{085F}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}"; // 085F to include Mandaic | |
| 508 | + $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0700}-\x{083E}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}"; | |
| 577 | 509 | |
| 510 | + // CJK Chars which require changing and are distinctive of specific charset | |
| 511 | + $this->pregUHCchars = "\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}"; | |
| 512 | + $this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}"; | |
| 513 | + | |
| 578 | 514 | // Chars which distinguish CJK but not between different |
| 579 | 515 | $this->pregCJKchars = "\x{1100}-\x{11FF}\x{2E80}-\x{A4CF}\x{A800}-\x{D7AF}\x{F900}-\x{FAFF}\x{FE30}-\x{FE6F}\x{FF00}-\x{FFEF}\x{20000}-\x{2FA1F}"; |
| 580 | 516 | |
| 581 | - // For CJK Line-breaking - References: | |
| 582 | - // http://en.wikipedia.org/wiki/Line_breaking_rules_in_East_Asian_languages | |
| 583 | - // http://msdn.microsoft.com/en-us/goglobal/bb688158.aspx - listed using charsets | |
| 584 | - // Word wrapping in other langauges - http://msdn.microsoft.com/en-us/goglobal/bb688158.aspx | |
| 585 | - // Word wrapping in Japanese/Korean - http://en.wikipedia.org/wiki/Kinsoku_shori | |
| 586 | - // Unicode character types: http://unicode.org/reports/tr14/ | |
| 587 | - // http://xml.ascc.net/en/utf-8/faq/zhl10n-faq-xsl.html#qb1 | |
| 588 | - // ECMA-376 4th edition Part 1 | |
| 589 | - // http://www.ecma-international.org/publications/standards/Ecma-376.htm | |
| 517 | + // For CJK Line-breaking | |
| 518 | + //Leading characters - Not allowed at end of line | |
| 519 | + $this->CJKleading = "\$\(\*\[\{\x{00a3}\x{00a5}\x{00ab}\x{00b7}\x{2018}\x{201c}\x{2035}\x{3005}\x{3007}\x{3008}\x{300a}\x{300c}\x{300e}\x{3010}\x{3014}\x{3016}\x{3018}\x{301d}\x{fe34}\x{fe57}\x{fe59}\x{fe5b}\x{ff04}\x{ff08}\x{ff0e}\x{ff3b}\x{ff5b}\x{ff5f}\x{ffe1}\x{ffe5}\x{ffe6}"; | |
| 520 | + // Following characters - Not allowed at start | |
| 521 | + $this->CJKfollowing = "!%\),\.:;>\?\]\}\x{00a2}\x{00a8}\x{00b0}\x{00b7}\x{00bb}\x{02c7}\x{02c9}\x{2010}\x{2013}-\x{2016}\x{2019}\x{201d}-\x{201f}\x{2020}-\x{2022}\x{2025}\x{2027}\x{203a}\x{203c}\x{2047}-\x{2049}\x{2103}\x{2236}\x{2574}\x{3001}-\x{3003}\x{3005}\x{3006}\x{3009}\x{300b}\x{300d}\x{300f}\x{3011}\x{3015}\x{3017}\x{3019}\x{301c}\x{301e}\x{301f}\x{303b}\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}\x{3063}\x{3083}\x{3085}\x{3087}\x{308e}\x{3095}\x{3096}\x{30a0}\x{30a1}\x{30a3}\x{30a5}\x{30a7}\x{30a9}\x{30c3}\x{30e3}\x{30e5}\x{30e7}\x{30ee}\x{30f5}\x{30f6}\x{30fb}-\x{30fe}\x{31f0}-\x{31ff}\x{fe30}-\x{fe33}\x{fe50}-\x{fe56}\x{fe58}\x{fe5a}\x{fe5c}\x{ff01}\x{ff02}\x{ff05}\x{ff07}\x{ff09}\x{ff0c}\x{ff0e}\x{ff1a}\x{ff1b}\x{ff1f}\x{ff3d}\x{ff40}\x{ff5c}-\x{ff5e}\x{ff60}\x{ff64}"; | |
| 522 | + // Characters which are allowed to overflow the right margin | |
| 523 | + $this->CJKoverflow = "\.,\x{ff61}\x{ff64}\x{3001}\x{3002}\x{ff0c}\x{ff0e}"; | |
| 590 | 524 | |
| 591 | - //Leading characters - Not allowed at end of line | |
| 592 | - $this->CJKleading = "\$\(\*\[\{\x{00a3}\x{00a5}\x{00ab}\x{00b7}\x{2018}\x{201c}\x{2035}\x{3005}\x{3007}\x{3008}\x{300a}\x{300c}\x{300e}\x{3010}\x{3014}\x{3016}\x{3018}\x{301d}\x{fe34}\x{fe35}\x{fe37}\x{fe39}\x{fe3b}\x{fe3d}\x{fe3f}\x{fe41}\x{fe43}\x{fe57}\x{fe59}\x{fe5b}\x{fe5d}\x{ff04}\x{ff08}\x{ff0e}\x{ff3b}\x{ff5b}\x{ff5f}\x{ff62}\x{ffe1}\x{ffe5}\x{ffe6}"; | |
| 593 | 525 | |
| 594 | - // Following characters - Not allowed at start | |
| 595 | - $this->CJKfollowing = "!%\),\.:;>\?\]\}\x{00a2}\x{00a8}\x{00b0}\x{00b7}\x{00bb}\x{02c7}\x{02c9}\x{2010}\x{2013}-\x{2016}\x{2019}\x{201d}-\x{201f}\x{2020}-\x{2022}\x{2025}-\x{2027}\x{2030}\x{2032}\x{2033}\x{203a}\x{203c}\x{2047}-\x{2049}\x{2103}\x{2236}\x{2574}\x{3001}-\x{3003}\x{3005}\x{3006}\x{3009}\x{300b}\x{300d}\x{300f}\x{3011}\x{3015}\x{3017}\x{3019}\x{301c}\x{301e}\x{301f}\x{303b}\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}\x{3063}\x{3083}\x{3085}\x{3087}\x{308e}\x{3095}\x{3096}\x{309b}-\x{309e}\x{30a0}\x{30a1}\x{30a3}\x{30a5}\x{30a7}\x{30a9}\x{30c3}\x{30e3}\x{30e5}\x{30e7}\x{30ee}\x{30f5}\x{30f6}\x{30fb}-\x{30fd}\x{30fe}\x{31f0}-\x{31ff}\x{fe30}\x{fe31}-\x{fe34}\x{fe36}\x{fe38}\x{fe3a}\x{fe3c}\x{fe3e}\x{fe40}\x{fe42}\x{fe44}\x{fe4f}\x{fe50}-\x{fe58}\x{fe5a}\x{fe5c}-\x{fe5e}\x{ff01}\x{ff02}\x{ff05}\x{ff07}\x{ff09}\x{ff0c}\x{ff0e}\x{ff1a}\x{ff1b}\x{ff1f}\x{ff3d}\x{ff40}\x{ff5c}-\x{ff5e}\x{ff60}\x{ff61}\x{ff63}-\x{ff65}\x{ff9e}\x{ff9f}\x{ffe0}"; | |
| 596 | 526 | |
| 597 | - // Characters which are allowed to overflow the right margin (from CSS3 http://www.w3.org/TR/2012/WD-css3-text-20120814/#hanging-punctuation) | |
| 598 | - $this->CJKoverflow = "\.,\x{ff61}\x{ff64}\x{3001}\x{3002}\x{fe50}-\x{fe52}\x{ff0c}\x{ff0e}"; | |
| 527 | + // ASCII Chars which shouldn't break string | |
| 528 | + // Use for very specific words | |
| 529 | + $this->pregASCIIchars1 = "\x{0021}-\x{002E}\x{0030}-\x{003B}?"; // no [SPACE] | |
| 530 | + // Use for words+ | |
| 531 | + $this->pregASCIIchars2 = "\x{0020}-\x{002E}\x{0030}-\x{003B}?"; // [SPACE] punctuation and 0-9 | |
| 532 | + // Use for chunks > words | |
| 533 | + $this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}"; // all except <> | |
| 534 | + // Vietnamese - specific | |
| 535 | + $this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}"; | |
| 536 | + // Vietnamese - Chars which shouldn't break string | |
| 537 | + $this->pregVIETPluschars = "\x{0000}-\x{003B}\x{003F}-\x{00FF}\x{0300}-\x{036F}\x{0102}\x{0103}\x{0110}\x{0111}\x{0128}\x{0129}\x{0168}\x{0169}\x{1EF1}-\x{1EF9}"; // omits < > | |
| 599 | 538 | |
| 600 | - // mPDF 6 | |
| 601 | - // Used for preventing letter-spacing in cursive scripts | |
| 602 | - // NB The following scripts in Unicode 6 are considered to be cursive scripts, | |
| 603 | - // and do not allow expansion opportunities between their letters: | |
| 604 | - // Arabic, Syriac, Mandaic, Mongolian, N'Ko, Phags Pa | |
| 605 | - $this->pregCURSchars = "\x{0590}-\x{083E}\x{0900}-\x{0DFF}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}"; | |
| 539 | + // Arabic | |
| 540 | + $this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}"; | |
| 541 | + // Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font] | |
| 542 | + $this->pregNonARABICchars = "\x{0671}-\x{067D}\x{067F}-\x{0685}\x{0687}-\x{0697}\x{0699}-\x{06A8}\x{06AA}-\x{06AE}\x{06B0}-\x{06CB}\x{06CD}-\x{06D3}"; | |
| 606 | 543 | |
| 544 | + $this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}"; // Hebrew | |
| 607 | 545 | |
| 546 | + // INDIC | |
| 547 | + $this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}"; // Devanagari (Hindi) minus the common indic punctuation 0964,0965 | |
| 548 | + $this->pregBNchars = "\x{0980}-\x{09FF}"; // Bengali | |
| 549 | + $this->pregPAchars = "\x{0A00}-\x{0A7F}"; // Gurmukhi (Punjabi) | |
| 550 | + $this->pregGUchars = "\x{0A80}-\x{0AFF}"; // Gujarati | |
| 551 | + $this->pregORchars = "\x{0B00}-\x{0B7F}"; // Oriya | |
| 552 | + $this->pregTAchars = "\x{0B80}-\x{0BFF}"; // Tamil | |
| 553 | + $this->pregTEchars = "\x{0C00}-\x{0C7F}"; // Telugu | |
| 554 | + $this->pregKNchars = "\x{0C80}-\x{0CFF}"; // Kannada | |
| 555 | + $this->pregMLchars = "\x{0D00}-\x{0D7F}"; // Malayalam | |
| 556 | + $this->pregSHchars = "\x{0D80}-\x{0DFF}"; // Sinhala | |
| 557 | + | |
| 558 | + $this->pregINDextra = "\x{200B}-\x{200D}\x{0964}\x{0965}\x{0020}-\x{0022}\x{0024}-\x{002E}\x{003A}-\x{003F}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{00A0}"; | |
| 559 | + // 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() ) | |
| 560 | + | |
| 608 | 561 | $this->allowedCSStags = 'DIV|P|H1|H2|H3|H4|H5|H6|FORM|IMG|A|BODY|TABLE|HR|THEAD|TFOOT|TBODY|TH|TR|TD|UL|OL|LI|PRE|BLOCKQUOTE|ADDRESS|DL|DT|DD'; |
| 609 | -$this->allowedCSStags .= '|ARTICLE|ASIDE|FIGURE|FIGCAPTION|FOOTER|HEADER|HGROUP|NAV|SECTION|MAIN|MARK|DETAILS|SUMMARY|METER|PROGRESS|TIME'; | |
| 562 | +$this->allowedCSStags .= '|ARTICLE|ASIDE|FIGURE|FIGCAPTION|FOOTER|HEADER|HGROUP|NAV|SECTION|MARK|DETAILS|SUMMARY|METER|PROGRESS|TIME'; // mPDF 5.5.09 | |
| 610 | 563 | $this->allowedCSStags .= '|SPAN|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|STRIKE|S|U|DEL|INS|Q|FONT'; |
| 611 | -$this->allowedCSStags .= '|SELECT|INPUT|TEXTAREA|CAPTION|FIELDSET|LEGEND'; | |
| 612 | -$this->allowedCSStags .= '|TEXTCIRCLE|DOTTAB|BDO|BDI'; | |
| 564 | +$this->allowedCSStags .= '|SELECT|INPUT|TEXTAREA|CAPTION|FIELDSET|LEGEND'; // mPDF 5.4.18 | |
| 565 | +$this->allowedCSStags .= '|TEXTCIRCLE|DOTTAB'; // mPDF 5.5.23 // mPDF 5.6.33 | |
| 613 | 566 | |
| 614 | -$this->outerblocktags = array('DIV','FORM','CENTER','DL','FIELDSET','ARTICLE','ASIDE','FIGURE','FIGCAPTION', 'FOOTER','HEADER','HGROUP','MAIN','NAV','SECTION','DETAILS','SUMMARY','UL','OL','LI'); | |
| 567 | +$this->outerblocktags = array('DIV','FORM','CENTER','DL','FIELDSET','ARTICLE','ASIDE','FIGURE','FIGCAPTION', 'FOOTER','HEADER','HGROUP','NAV','SECTION','DETAILS','SUMMARY'); // mPDF 5.5.09 // mPDF 5.5.22 | |
| 615 | 568 | $this->innerblocktags = array('P','BLOCKQUOTE','ADDRESS','PRE','H1','H2','H3','H4','H5','H6','DT','DD','CAPTION'); |
| 616 | - | |
| 617 | 569 | |
| 618 | 570 | |
| 619 | 571 | |
| 620 | 572 | ?> |