HTML5_Data

The WooCommerce PDF Invoices & Packing Slips HTML5 Data class.

Defined (1)

The class is defined in the following location(s).

/lib/dompdf/lib/html5lib/Data.php  
  1. class HTML5_Data 
  2.  
  3. // at some point this should be moved to a .ser file. Another 
  4. // possible optimization is to give UTF-8 bytes, not Unicode 
  5. // codepoints 
  6. // XXX: Not quite sure why it's named this; this is 
  7. // actually the numeric entity dereference table. 
  8. protected static $realCodepointTable = array( 
  9. 0x00 => 0xFFFD, // REPLACEMENT CHARACTER 
  10. 0x0D => 0x000A, // LINE FEED (LF) 
  11. 0x80 => 0x20AC, // EURO SIGN ('*') 
  12. 0x81 => 0x0081, // <control> 
  13. 0x82 => 0x201A, // SINGLE LOW-9 QUOTATION MARK ('*') 
  14. 0x83 => 0x0192, // LATIN SMALL LETTER F WITH HOOK ('*') 
  15. 0x84 => 0x201E, // DOUBLE LOW-9 QUOTATION MARK ('*') 
  16. 0x85 => 0x2026, // HORIZONTAL ELLIPSIS ('*') 
  17. 0x86 => 0x2020, // DAGGER ('*') 
  18. 0x87 => 0x2021, // DOUBLE DAGGER ('*') 
  19. 0x88 => 0x02C6, // MODIFIER LETTER CIRCUMFLEX ACCENT ('*') 
  20. 0x89 => 0x2030, // PER MILLE SIGN ('*') 
  21. 0x8A => 0x0160, // LATIN CAPITAL LETTER S WITH CARON ('*') 
  22. 0x8B => 0x2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK ('*') 
  23. 0x8C => 0x0152, // LATIN CAPITAL LIGATURE OE ('*') 
  24. 0x8D => 0x008D, // <control> 
  25. 0x8E => 0x017D, // LATIN CAPITAL LETTER Z WITH CARON ('*') 
  26. 0x8F => 0x008F, // <control> 
  27. 0x90 => 0x0090, // <control> 
  28. 0x91 => 0x2018, // LEFT SINGLE QUOTATION MARK ('*') 
  29. 0x92 => 0x2019, // RIGHT SINGLE QUOTATION MARK ('*') 
  30. 0x93 => 0x201C, // LEFT DOUBLE QUOTATION MARK ('*') 
  31. 0x94 => 0x201D, // RIGHT DOUBLE QUOTATION MARK ('*') 
  32. 0x95 => 0x2022, // BULLET ('*') 
  33. 0x96 => 0x2013, // EN DASH ('*') 
  34. 0x97 => 0x2014, // EM DASH ('*') 
  35. 0x98 => 0x02DC, // SMALL TILDE ('*') 
  36. 0x99 => 0x2122, // TRADE MARK SIGN ('*') 
  37. 0x9A => 0x0161, // LATIN SMALL LETTER S WITH CARON ('*') 
  38. 0x9B => 0x203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK ('*') 
  39. 0x9C => 0x0153, // LATIN SMALL LIGATURE OE ('*') 
  40. 0x9D => 0x009D, // <control> 
  41. 0x9E => 0x017E, // LATIN SMALL LETTER Z WITH CARON ('*') 
  42. 0x9F => 0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS ('*') 
  43. ); 
  44.  
  45. protected static $namedCharacterReferences; 
  46.  
  47. protected static $namedCharacterReferenceMaxLength; 
  48.  
  49. /** 
  50. * Returns the "real" Unicode codepoint of a malformed character 
  51. * reference. 
  52. */ 
  53. public static function getRealCodepoint($ref) { 
  54. if (!isset(self::$realCodepointTable[$ref])) return false; 
  55. else return self::$realCodepointTable[$ref]; 
  56.  
  57. public static function getNamedCharacterReferences() { 
  58. if (!self::$namedCharacterReferences) { 
  59. self::$namedCharacterReferences = unserialize( 
  60. file_get_contents(dirname(__FILE__) . '/named-character-references.ser')); 
  61. return self::$namedCharacterReferences; 
  62.  
  63. /** 
  64. * Converts a Unicode codepoint to sequence of UTF-8 bytes. 
  65. * @note Shamelessly stolen from HTML Purifier, which is also 
  66. * shamelessly stolen from Feyd (which is in public domain). 
  67. */ 
  68. public static function utf8chr($code) { 
  69. /** We don't care: we live dangerously 
  70. * if($code > 0x10FFFF or $code < 0x0 or 
  71. ($code >= 0xD800 and $code <= 0xDFFF) ) { 
  72. // bits are set outside the "valid" range as defined 
  73. // by UNICODE 4.1.0 
  74. return "\xEF\xBF\xBD"; 
  75. }*/ 
  76.  
  77. $x = $y = $z = $w = 0; 
  78. if ($code < 0x80) { 
  79. // regular ASCII character 
  80. $x = $code; 
  81. } else { 
  82. // set up bits for UTF-8 
  83. $x = ($code & 0x3F) | 0x80; 
  84. if ($code < 0x800) { 
  85. $y = (($code & 0x7FF) >> 6) | 0xC0; 
  86. } else { 
  87. $y = (($code & 0xFC0) >> 6) | 0x80; 
  88. if($code < 0x10000) { 
  89. $z = (($code >> 12) & 0x0F) | 0xE0; 
  90. } else { 
  91. $z = (($code >> 12) & 0x3F) | 0x80; 
  92. $w = (($code >> 18) & 0x07) | 0xF0; 
  93. // set up the actual character 
  94. $ret = ''; 
  95. if($w) $ret .= chr($w); 
  96. if($z) $ret .= chr($z); 
  97. if($y) $ret .= chr($y); 
  98. $ret .= chr($x); 
  99.  
  100. return $ret; 
  101.