Explorar o código

[GENERIC] Zend_Barcode:
- add EAN-2 object
- add EAN-5 object
- add EAN-8 object
- add EAN-13 object
- add Postnet object
- add UPC-A object
- add UPC-E object

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20044 44c647ce-9c0f-0410-b52a-842ac1e357ba

mikaelkael %!s(int64=16) %!d(string=hai) anos
pai
achega
4a06058db6
Modificáronse 55 ficheiros con 32074 adicións e 17 borrados
  1. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.ean13.png
  2. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.ean2.png
  3. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.ean5.png
  4. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.ean8.png
  5. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.identcode.png
  6. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.leitcode.png
  7. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.postnet.png
  8. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.upca.png
  9. BIN=BIN
      documentation/manual/en/figures/zend.barcode.objects.details.upce.png
  10. 365 3
      documentation/manual/en/module_specs/Zend_Barcode-Objects_Details.xml
  11. 228 0
      library/Zend/Barcode/Object/Ean13.php
  12. 65 0
      library/Zend/Barcode/Object/Ean2.php
  13. 147 0
      library/Zend/Barcode/Object/Ean5.php
  14. 174 0
      library/Zend/Barcode/Object/Ean8.php
  15. 5 0
      library/Zend/Barcode/Object/ObjectAbstract.php
  16. 139 0
      library/Zend/Barcode/Object/Postnet.php
  17. 171 0
      library/Zend/Barcode/Object/Upca.php
  18. 228 0
      library/Zend/Barcode/Object/Upce.php
  19. 6 14
      library/Zend/Barcode/Renderer/RendererAbstract.php
  20. 17 0
      tests/Zend/Barcode/AllTests.php
  21. 165 0
      tests/Zend/Barcode/Object/Ean13Test.php
  22. 155 0
      tests/Zend/Barcode/Object/Ean2Test.php
  23. 155 0
      tests/Zend/Barcode/Object/Ean5Test.php
  24. 165 0
      tests/Zend/Barcode/Object/Ean8Test.php
  25. 167 0
      tests/Zend/Barcode/Object/PostnetTest.php
  26. 165 0
      tests/Zend/Barcode/Object/UpcaTest.php
  27. 173 0
      tests/Zend/Barcode/Object/UpceTest.php
  28. 1538 0
      tests/Zend/Barcode/Object/_files/Ean13_000123456789_border_instructions.php
  29. 1538 0
      tests/Zend/Barcode/Object/_files/Ean13_000123456789_border_oriented_instructions.php
  30. 1504 0
      tests/Zend/Barcode/Object/_files/Ean13_000123456789_instructions.php
  31. 1504 0
      tests/Zend/Barcode/Object/_files/Ean13_000123456789_oriented_instructions.php
  32. 372 0
      tests/Zend/Barcode/Object/_files/Ean2_43_border_instructions.php
  33. 372 0
      tests/Zend/Barcode/Object/_files/Ean2_43_border_oriented_instructions.php
  34. 338 0
      tests/Zend/Barcode/Object/_files/Ean2_43_instructions.php
  35. 338 0
      tests/Zend/Barcode/Object/_files/Ean2_43_oriented_instructions.php
  36. 836 0
      tests/Zend/Barcode/Object/_files/Ean5_45678_border_instructions.php
  37. 836 0
      tests/Zend/Barcode/Object/_files/Ean5_45678_border_oriented_instructions.php
  38. 802 0
      tests/Zend/Barcode/Object/_files/Ean5_45678_instructions.php
  39. 802 0
      tests/Zend/Barcode/Object/_files/Ean5_45678_oriented_instructions.php
  40. 1173 0
      tests/Zend/Barcode/Object/_files/Ean8_123456_border_instructions.php
  41. 1173 0
      tests/Zend/Barcode/Object/_files/Ean8_123456_border_oriented_instructions.php
  42. 1139 0
      tests/Zend/Barcode/Object/_files/Ean8_123456_instructions.php
  43. 1139 0
      tests/Zend/Barcode/Object/_files/Ean8_123456_oriented_instructions.php
  44. 1140 0
      tests/Zend/Barcode/Object/_files/Postnet_012345_border_instructions.php
  45. 1140 0
      tests/Zend/Barcode/Object/_files/Postnet_012345_border_oriented_instructions.php
  46. 1106 0
      tests/Zend/Barcode/Object/_files/Postnet_012345_instructions.php
  47. 1106 0
      tests/Zend/Barcode/Object/_files/Postnet_012345_oriented_instructions.php
  48. 1523 0
      tests/Zend/Barcode/Object/_files/Upca_00123456789_border_instructions.php
  49. 1523 0
      tests/Zend/Barcode/Object/_files/Upca_00123456789_border_oriented_instructions.php
  50. 1489 0
      tests/Zend/Barcode/Object/_files/Upca_00123456789_instructions.php
  51. 1489 0
      tests/Zend/Barcode/Object/_files/Upca_00123456789_oriented_instructions.php
  52. 883 0
      tests/Zend/Barcode/Object/_files/Upce_1234567_border_instructions.php
  53. 883 0
      tests/Zend/Barcode/Object/_files/Upce_1234567_border_oriented_instructions.php
  54. 849 0
      tests/Zend/Barcode/Object/_files/Upce_1234567_instructions.php
  55. 849 0
      tests/Zend/Barcode/Object/_files/Upce_1234567_oriented_instructions.php

BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.ean13.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.ean2.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.ean5.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.ean8.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.identcode.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.leitcode.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.postnet.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.upca.png


BIN=BIN
documentation/manual/en/figures/zend.barcode.objects.details.upce.png


+ 365 - 3
documentation/manual/en/module_specs/Zend_Barcode-Objects_Details.xml

@@ -145,6 +145,214 @@
         </note>
     </sect3>
 
+    <sect3 id="zend.barcode.objects.details.ean2">
+        <title>Zend_Barcode_Object_Ean2</title>
+
+        <para>
+            <inlinegraphic width="101" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.ean2.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Ean5</classname>
+            (EAN 5), and has the same particulars and options, and adds the following:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> EAN-2
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> only use internally but not displayed
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 2 characters
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 2,
+                <classname>Zend_Barcode_Object_Ean2</classname> will automatically
+                prepend the missing zero to the barcode text.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.barcode.objects.details.ean5">
+        <title>Zend_Barcode_Object_Ean5</title>
+
+        <para>
+            <inlinegraphic width="101" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.ean5.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Ean13</classname>
+            (EAN 13), and has the same particulars and options, and adds the following:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> EAN-5
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> only use internally but not displayed
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 5 characters
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 5,
+                <classname>Zend_Barcode_Object_Ean5</classname> will automatically
+                prepend the missing zero to the barcode text.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.barcode.objects.details.ean8">
+        <title>Zend_Barcode_Object_Ean8</title>
+
+        <para>
+            <inlinegraphic width="101" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.ean8.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Ean13</classname>
+            (EAN 13), and has the same particulars and options, and adds the following:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> EAN-8
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> mandatory (modulo 10)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 8 characters (including checksum)
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 8,
+                <classname>Zend_Barcode_Object_Ean8</classname> will automatically
+                prepend the missing zero to the barcode text.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.barcode.objects.details.ean13">
+        <title>Zend_Barcode_Object_Ean13</title>
+
+        <para>
+            <inlinegraphic width="101" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.ean13.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Ean13</classname>
+            (EAN 13), and has the same particulars and options, and adds the following:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> EAN-13
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> mandatory (modulo 10)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 13 characters (including checksum)
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 13,
+                <classname>Zend_Barcode_Object_Ean13</classname> will automatically
+                prepend the missing zero to the barcode text.
+            </para>
+        </note>
+    </sect3>
+
     <sect3 id="zend.barcode.objects.details.code39">
         <title>Zend_Barcode_Object_Code39</title>
 
@@ -238,7 +446,7 @@
 
         <note>
             <para>
-                If the number of characters is not equal to 12,
+                If the number of characters is lower than 12,
                 <classname>Zend_Barcode_Object_Identcode</classname> will automatically prepend
                 missing zeros to the barcode text.
             </para>
@@ -291,7 +499,7 @@
 
         <note>
             <para>
-                If the number of characters is not equal to 14,
+                If the number of characters is lower than 14,
                 <classname>Zend_Barcode_Object_Itf14</classname> will automatically prepend
                 missing zeros to the barcode text.
             </para>
@@ -344,10 +552,164 @@
 
         <note>
             <para>
-                If the number of characters is not equal to 14,
+                If the number of characters is lower than 14,
                 <classname>Zend_Barcode_Object_Leitcode</classname> will automatically
                 prepend missing zeros to the barcode text.
             </para>
         </note>
     </sect3>
+
+    <sect3 id="zend.barcode.objects.details.postnet">
+        <title>Zend_Barcode_Object_Postnet</title>
+
+        <para>
+            <inlinegraphic width="155" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.postnet.png" format="PNG"/>
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> Postnet
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> mandatory (modulo 10 different from Code25)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 6, 7, 10 or 12 characters (including checksum)
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+    </sect3>
+
+    <sect3 id="zend.barcode.objects.details.upca">
+        <title>Zend_Barcode_Object_Upca</title>
+
+        <para>
+            <inlinegraphic width="155" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.upca.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Ean13</classname>
+            (EAN-13), and inherits some of its capabilities; it also has a few
+            particulars of its own.
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> UPC-A (Universal Product Code)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> mandatory (modulo 10)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 12 characters (including checksum)
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 12,
+                <classname>Zend_Barcode_Object_Upca</classname> will automatically
+                prepend missing zeros to the barcode text.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.barcode.objects.details.upce">
+        <title>Zend_Barcode_Object_Upce</title>
+
+        <para>
+            <inlinegraphic width="155" align="center" valign="middle"
+                fileref="figures/zend.barcode.objects.details.upce.png" format="PNG"/>
+        </para>
+
+        <para>
+            This barcode extends <classname>Zend_Barcode_Object_Upca</classname>
+            (UPC-A), and inherits some of its capabilities; it also has a few
+            particulars of its own. The first character of the text to encode
+            is the system (0 or 1).
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Name:</emphasis> UPC-E (Universal Product Code)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Allowed characters:</emphasis> '0123456789'
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Checksum:</emphasis> mandatory (modulo 10)
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <emphasis>Length:</emphasis> 8 characters (including checksum)
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            There are no particular options for this barcode.
+        </para>
+
+        <note>
+            <para>
+                If the number of characters is lower than 8,
+                <classname>Zend_Barcode_Object_Upce</classname> will automatically
+                prepend missing zeros to the barcode text.
+            </para>
+        </note>
+
+        <note>
+            <para>
+                If the first character of the text to encode is not 0 or 1, 
+                <classname>Zend_Barcode_Object_Upce</classname> will automatically
+                replace it by 0.
+            </para>
+        </note>
+    </sect3>
 </sect2>

+ 228 - 0
library/Zend/Barcode/Object/Ean13.php

@@ -0,0 +1,228 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_ObjectAbstract
+ */
+require_once 'Zend/Barcode/Object/ObjectAbstract.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate Ean13 barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean13 extends Zend_Barcode_Object_ObjectAbstract
+{
+
+    /**
+     * Coding map
+     * - 0 = narrow bar
+     * - 1 = wide bar
+     * @var array
+     */
+    protected $_codingMap = array(
+        'A' => array(
+            0 => "0001101", 1 => "0011001", 2 => "0010011", 3 => "0111101", 4 => "0100011",
+            5 => "0110001", 6 => "0101111", 7 => "0111011", 8 => "0110111", 9 => "0001011"
+        ),
+        'B' => array(
+            0 => "0100111", 1 => "0110011", 2 => "0011011", 3 => "0100001", 4 => "0011101",
+            5 => "0111001", 6 => "0000101", 7 => "0010001", 8 => "0001001", 9 => "0010111"
+        ),
+        'C' => array(
+            0 => "1110010", 1 => "1100110", 2 => "1101100", 3 => "1000010", 4 => "1011100",
+            5 => "1001110", 6 => "1010000", 7 => "1000100", 8 => "1001000", 9 => "1110100"
+        ));
+
+    protected $_parities = array(
+		0 => array('A','A','A','A','A','A'),
+		1 => array('A','A','B','A','B','B'),
+		2 => array('A','A','B','B','A','B'),
+		3 => array('A','A','B','B','B','A'),
+		4 => array('A','B','A','A','B','B'),
+		5 => array('A','B','B','A','A','B'),
+		6 => array('A','B','B','B','A','A'),
+		7 => array('A','B','A','B','A','B'),
+		8 => array('A','B','A','B','B','A'),
+		9 => array('A','B','B','A','B','A')
+	);
+
+    /**
+     * Default options for Postnet barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 13;
+        $this->_mandatoryChecksum = true;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (3 * $this->_barThinWidth) * $this->_factor;
+        $middleCharacter = (5 * $this->_barThinWidth) * $this->_factor;
+        $stopCharacter   = (3 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (7 * $this->_barThinWidth) * $this->_factor * 12;
+        return $quietZone + $startCharacter + $middleCharacter + $encodedData + $stopCharacter + $quietZone;
+    }
+
+    /**
+     * Partial check of interleaved EAN/UPC barcode
+     * @return void
+     */
+    protected function _checkParams()
+    {}
+
+    /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+        $height = ($this->_drawText) ? 1.1 : 1;
+
+        // Start character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+
+        $textTable = str_split($this->getText());
+        $parity = $this->_parities[$textTable[0]];
+
+        // First part
+        for ($i = 1; $i < 7; $i++) {
+            $bars = str_split($this->_codingMap[$parity[$i - 1]][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Middle character (01010)
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+
+        // Second part
+        for ($i = 7; $i < 13; $i++) {
+            $bars = str_split($this->_codingMap['C'][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Stop character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        return $barcodeTable;
+    }
+
+    /**
+     * Get barcode checksum
+     *
+     * @param  string $text
+     * @return int
+     */
+    public function getChecksum($text)
+    {
+        $this->_checkText($text);
+        $factor   = 3;
+        $checksum = 0;
+
+        for ($i = strlen($text); $i > 0; $i --) {
+            $checksum += intval($text{$i - 1}) * $factor;
+            $factor    = 4 - $factor;
+        }
+
+        $checksum = 10 - ($checksum % 10);
+
+        if ($checksum == 10) {
+            $checksum = 0;
+        }
+
+        return $checksum;
+    }
+
+    /**
+     * Partial function to draw text
+     * @return void
+     */
+    protected function _drawText()
+    {
+        if (get_class($this) == 'Zend_Barcode_Object_Ean13') {
+            $this->_drawEan13Text();
+        } else {
+            parent::_drawText();
+        }
+    }
+
+    protected function _drawEan13Text()
+    {
+        if ($this->_drawText) {
+            $text = $this->getTextToDisplay();
+            $characterWidth = (7 * $this->_barThinWidth) * $this->_factor;
+            $leftPosition = $this->getQuietZone() - $characterWidth;
+            for ($i = 0; $i < $this->_barcodeLength; $i ++) {
+                $this->_addText(
+                    $text{$i},
+                    $this->_fontSize * $this->_factor,
+                    $this->_rotate(
+                        $leftPosition,
+                        (int) $this->_withBorder * 2
+                            + $this->_factor * ($this->_barHeight + $this->_fontSize) + 1
+                    ),
+                    $this->_font,
+                    $this->_foreColor,
+                    'left',
+                    - $this->_orientation
+                );
+                switch ($i) {
+                    case 0:
+                        $factor = 3;
+                        break;
+                    case 6:
+                        $factor = 4;
+                        break;
+                    default:
+                        $factor = 0;
+                }
+                $leftPosition = $leftPosition + $characterWidth + ($factor * $this->_barThinWidth * $this->_factor);
+            }
+        }
+    }
+}

+ 65 - 0
library/Zend/Barcode/Object/Ean2.php

@@ -0,0 +1,65 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_Ean5
+ */
+require_once 'Zend/Barcode/Object/Ean5.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate Ean2 barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean2 extends Zend_Barcode_Object_Ean5
+{
+
+    protected $_parities = array(
+        0 => array('A','A'),
+        1 => array('A','B'),
+        2 => array('B','A'),
+        3 => array('B','B')
+    );
+
+    /**
+     * Default options for Ean2 barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 2;
+    }
+
+    protected function _getParity($i)
+    {
+        $modulo = $this->getText() % 4;
+        return $this->_parities[$modulo][$i];
+    }
+}

+ 147 - 0
library/Zend/Barcode/Object/Ean5.php

@@ -0,0 +1,147 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_Ean13
+ */
+require_once 'Zend/Barcode/Object/Ean13.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate Ean5 barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean5 extends Zend_Barcode_Object_Ean13
+{
+
+    protected $_parities = array(
+        0 => array('B','B','A','A','A'),
+        1 => array('B','A','B','A','A'),
+        2 => array('B','A','A','B','A'),
+        3 => array('B','A','A','A','B'),
+        4 => array('A','B','B','A','A'),
+        5 => array('A','A','B','B','A'),
+        6 => array('A','A','A','B','B'),
+        7 => array('A','B','A','B','A'),
+        8 => array('A','B','A','A','B'),
+        9 => array('A','A','B','A','B')
+    );
+
+    /**
+     * Default options for Ean5 barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 5;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (5 * $this->_barThinWidth) * $this->_factor;
+        $middleCharacter = (2 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (7 * $this->_barThinWidth) * $this->_factor;
+        return $quietZone + $startCharacter + ($this->_barcodeLength - 1) * $middleCharacter + $this->_barcodeLength * $encodedData + $quietZone;
+    }
+
+    /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+
+        // Start character (01011)
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+
+        $firstCharacter = true;
+        $textTable = str_split($this->getText());
+
+        // Characters
+        for ($i = 0; $i < $this->_barcodeLength; $i++) {
+            if ($firstCharacter) {
+                $firstCharacter = false;
+            } else {
+                // Intermediate character (01)
+                $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1);
+                $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+            }
+            $bars = str_split($this->_codingMap[$this->_getParity($i)][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        return $barcodeTable;
+    }
+
+    /**
+     * Get barcode checksum
+     *
+     * @param  string $text
+     * @return int
+     */
+    public function getChecksum($text)
+    {
+        $this->_checkText($text);
+        $checksum = 0;
+
+        for ($i = 0 ; $i < $this->_barcodeLength; $i ++) {
+            $checksum += intval($text{$i}) * ($i % 2 ? 9 : 3);
+        }
+
+        return ($checksum % 10);
+    }
+
+    protected function _getParity($i)
+    {
+        $checksum = $this->getChecksum($this->getText());
+        return $this->_parities[$checksum][$i];
+    }
+
+    /**
+     * Retrieve text to encode
+     * @return string
+     */
+    public function getText()
+    {
+        return $this->_addLeadingZeros($this->_text);
+    }
+}

+ 174 - 0
library/Zend/Barcode/Object/Ean8.php

@@ -0,0 +1,174 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_Ean13
+ */
+require_once 'Zend/Barcode/Object/Ean13.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate Ean8 barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean8 extends Zend_Barcode_Object_Ean13
+{
+
+    /**
+     * Default options for Postnet barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 8;
+        $this->_mandatoryChecksum = true;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (3 * $this->_barThinWidth) * $this->_factor;
+        $stopCharacter   = (3 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (7 * $this->_barThinWidth) * $this->_factor * 8;
+        return $quietZone + $startCharacter + $encodedData + $stopCharacter + $quietZone;
+    }
+
+        /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+        $height = ($this->_drawText) ? 1.1 : 1;
+
+        // Start character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+
+        $textTable = str_split($this->getText());
+
+        // First part
+        for ($i = 0; $i < 4; $i++) {
+            $bars = str_split($this->_codingMap['A'][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Middle character (01010)
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+
+        // Second part
+        for ($i = 4; $i < 8; $i++) {
+            $bars = str_split($this->_codingMap['C'][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Stop character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        return $barcodeTable;
+    }
+
+    /**
+     * Partial function to draw text
+     * @return void
+     */
+    protected function _drawText()
+    {
+        if ($this->_drawText) {
+            $text = $this->getTextToDisplay();
+            $characterWidth = (7 * $this->_barThinWidth) * $this->_factor;
+            $leftPosition = $this->getQuietZone() + (3 * $this->_barThinWidth) * $this->_factor;
+            for ($i = 0; $i < $this->_barcodeLength; $i ++) {
+                $this->_addText(
+                    $text{$i},
+                    $this->_fontSize * $this->_factor,
+                    $this->_rotate(
+                        $leftPosition,
+                        (int) $this->_withBorder * 2
+                            + $this->_factor * ($this->_barHeight + $this->_fontSize) + 1
+                    ),
+                    $this->_font,
+                    $this->_foreColor,
+                    'left',
+                    - $this->_orientation
+                );
+                switch ($i) {
+                    case 3:
+                        $factor = 4;
+                        break;
+                    default:
+                        $factor = 0;
+                }
+                $leftPosition = $leftPosition + $characterWidth + ($factor * $this->_barThinWidth * $this->_factor);
+            }
+        }
+    }
+
+    /**
+     * Particular validation for Ean8 barcode objects
+     * (to suppress checksum character substitution)
+     * @param string $value
+     * @param array  $options
+     */
+    protected function _validateText($value, $options = array())
+    {
+        $validator = new Zend_Validate_Barcode(array(
+            'adapter'  => 'ean8',
+            'checksum' => false,
+        ));
+
+        $value = $this->_addLeadingZeros($value, true);
+
+        if (!$validator->isValid($value)) {
+            $message = implode("\n", $validator->getMessages());
+
+            /**
+             * @see Zend_Barcode_Object_Exception
+             */
+            require_once 'Zend/Barcode/Object/Exception.php';
+            throw new Zend_Barcode_Object_Exception($message);
+        }
+    }
+}

+ 5 - 0
library/Zend/Barcode/Object/ObjectAbstract.php

@@ -1203,6 +1203,11 @@ abstract class Zend_Barcode_Object_ObjectAbstract
         $this->_validateText($value);
     }
 
+    /**
+     * Standard validation for most of barcode objects
+     * @param string $value
+     * @param array  $options
+     */
     protected function _validateText($value, $options = array())
     {
         $validatorName = (isset($options['validator'])) ? $options['validator'] : $this->getType();

+ 139 - 0
library/Zend/Barcode/Object/Postnet.php

@@ -0,0 +1,139 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_ObjectAbstract
+ */
+require_once 'Zend/Barcode/Object/ObjectAbstract.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate Postnet barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Postnet extends Zend_Barcode_Object_ObjectAbstract
+{
+
+    /**
+     * Coding map
+     * - 0 = half bar
+     * - 1 = complete bar
+     * @var array
+     */
+    protected $_codingMap = array(
+        0 => "11000",
+        1 => "00011",
+        2 => "00101",
+        3 => "00110",
+        4 => "01001",
+        5 => "01010",
+        6 => "01100",
+        7 => "10001",
+        8 => "10010",
+        9 => "10100"
+    );
+
+    /**
+     * Default options for Postnet barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barThinWidth = 2;
+        $this->_barHeight = 20;
+        $this->_drawText = false;
+        $this->_stretchText = true;
+        $this->_mandatoryChecksum = true;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (2 * $this->_barThinWidth) * $this->_factor;
+        $stopCharacter   = (1 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (10 * $this->_barThinWidth) * $this->_factor * strlen($this->getText());
+        return $quietZone + $startCharacter + $encodedData + $stopCharacter + $quietZone;
+    }
+
+    /**
+     * Partial check of interleaved Postnet barcode
+     * @return void
+     */
+    protected function _checkParams()
+    {}
+
+    /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+
+        // Start character (1)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1);
+
+        // Text to encode
+        $textTable = str_split($this->getText());
+        foreach ($textTable as $char) {
+            $bars = str_split($this->_codingMap[$char]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array(1 , $this->_barThinWidth , 0.5 - $b * 0.5 , 1);
+                $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Stop character (1)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1);
+        return $barcodeTable;
+    }
+
+    /**
+     * Get barcode checksum
+     *
+     * @param  string $text
+     * @return int
+     */
+    public function getChecksum($text)
+    {
+        $this->_checkText($text);
+        $sum = array_sum(str_split($text));
+        $checksum = 10 - ($sum % 10);
+        if ($checksum == 10) {
+            $checksum = 0;
+        }
+        return $checksum;
+    }
+}

+ 171 - 0
library/Zend/Barcode/Object/Upca.php

@@ -0,0 +1,171 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_Ean13
+ */
+require_once 'Zend/Barcode/Object/Ean13.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate UpcA barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Upca extends Zend_Barcode_Object_Ean13
+{
+
+    /**
+     * Default options for Postnet barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 12;
+        $this->_mandatoryChecksum = true;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (3 * $this->_barThinWidth) * $this->_factor;
+        $middleCharacter = (5 * $this->_barThinWidth) * $this->_factor;
+        $stopCharacter   = (3 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (7 * $this->_barThinWidth) * $this->_factor * 12;
+        return $quietZone + $startCharacter + $middleCharacter + $encodedData + $stopCharacter + $quietZone;
+    }
+
+        /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+        $height = ($this->_drawText) ? 1.1 : 1;
+
+        // Start character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+
+        $textTable = str_split($this->getText());
+
+        // First character
+        $bars = str_split($this->_codingMap['A'][$textTable[0]]);
+        foreach ($bars as $b) {
+            $barcodeTable[] = array($b , $this->_barThinWidth , 0 , $height);
+        }
+
+        // First part
+        for ($i = 1; $i < 6; $i++) {
+            $bars = str_split($this->_codingMap['A'][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Middle character (01010)
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+
+        // Second part
+        for ($i = 6; $i < 11; $i++) {
+            $bars = str_split($this->_codingMap['C'][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Last character
+        $bars = str_split($this->_codingMap['C'][$textTable[11]]);
+        foreach ($bars as $b) {
+            $barcodeTable[] = array($b , $this->_barThinWidth , 0 , $height);
+        }
+
+        // Stop character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        return $barcodeTable;
+    }
+
+    /**
+     * Partial function to draw text
+     * @return void
+     */
+    protected function _drawText()
+    {
+        if ($this->_drawText) {
+            $text = $this->getTextToDisplay();
+            $characterWidth = (7 * $this->_barThinWidth) * $this->_factor;
+            $leftPosition = $this->getQuietZone() - $characterWidth;
+            for ($i = 0; $i < $this->_barcodeLength; $i ++) {
+                $fontSize = $this->_fontSize;
+                if ($i == 0 || $i == 11) {
+                    $fontSize *= 0.8;
+                }
+                $this->_addText(
+                    $text{$i},
+                    $fontSize * $this->_factor,
+                    $this->_rotate(
+                        $leftPosition,
+                        (int) $this->_withBorder * 2
+                            + $this->_factor * ($this->_barHeight + $fontSize) + 1
+                    ),
+                    $this->_font,
+                    $this->_foreColor,
+                    'left',
+                    - $this->_orientation
+                );
+                switch ($i) {
+                    case 0:
+                        $factor = 10;
+                        break;
+                    case 5:
+                        $factor = 4;
+                        break;
+                    case 10:
+                        $factor = 11;
+                        break;
+                    default:
+                        $factor = 0;
+                }
+                $leftPosition = $leftPosition + $characterWidth + ($factor * $this->_barThinWidth * $this->_factor);
+            }
+        }
+    }
+}

+ 228 - 0
library/Zend/Barcode/Object/Upce.php

@@ -0,0 +1,228 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage Object
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Barcode_Object_Ean13
+ */
+require_once 'Zend/Barcode/Object/Ean13.php';
+
+/**
+ * @see Zend_Validate_Barcode
+ */
+require_once 'Zend/Validate/Barcode.php';
+
+/**
+ * Class for generate UpcA barcode
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Upce extends Zend_Barcode_Object_Ean13
+{
+
+    protected $_parities = array(
+        0 => array(
+            0 => array('B','B','B','A','A','A'),
+            1 => array('B','B','A','B','A','A'),
+            2 => array('B','B','A','A','B','A'),
+            3 => array('B','B','A','A','A','B'),
+            4 => array('B','A','B','B','A','A'),
+            5 => array('B','A','A','B','B','A'),
+            6 => array('B','A','A','A','B','B'),
+            7 => array('B','A','B','A','B','A'),
+            8 => array('B','A','B','A','A','B'),
+            9 => array('B','A','A','B','A','B')),
+        1 => array(
+            0 => array('A','A','A','B','B','B'),
+            1 => array('A','A','B','A','B','B'),
+            2 => array('A','A','B','B','A','B'),
+            3 => array('A','A','B','B','B','A'),
+            4 => array('A','B','A','A','B','B'),
+            5 => array('A','B','B','A','A','B'),
+            6 => array('A','B','B','B','A','A'),
+            7 => array('A','B','A','B','A','B'),
+            8 => array('A','B','A','B','B','A'),
+            9 => array('A','B','B','A','B','A'))
+    );
+
+    /**
+     * Default options for Postnet barcode
+     * @return void
+     */
+    protected function _getDefaultOptions()
+    {
+        $this->_barcodeLength = 8;
+        $this->_mandatoryChecksum = true;
+    }
+
+    /**
+     * Retrieve text to encode
+     * @return string
+     */
+    public function getText()
+    {
+        $text = parent::getText();
+        if ($text{0} != 1) {
+            $text{0} = 0;
+        }
+        return $text;
+    }
+
+    /**
+     * Width of the barcode (in pixels)
+     * @return integer
+     */
+    protected function _calculateBarcodeWidth()
+    {
+        $quietZone       = $this->getQuietZone();
+        $startCharacter  = (3 * $this->_barThinWidth) * $this->_factor;
+        $middleCharacter = (5 * $this->_barThinWidth) * $this->_factor;
+        $stopCharacter   = (3 * $this->_barThinWidth) * $this->_factor;
+        $encodedData     = (7 * $this->_barThinWidth) * $this->_factor * 12;
+        return $quietZone + $startCharacter + $middleCharacter + $encodedData + $stopCharacter + $quietZone;
+    }
+
+    /**
+     * Prepare array to draw barcode
+     * @return array
+     */
+    protected function _prepareBarcode()
+    {
+        $barcodeTable = array();
+        $height = ($this->_drawText) ? 1.1 : 1;
+
+        // Start character (101)
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+
+        $textTable = str_split($this->getText());
+        $system = 0;
+        if ($textTable[0] == 1) {
+            $system = 1;
+        }
+        $checksum = $textTable[7];
+        $parity = $this->_parities[$system][$checksum];
+
+        for ($i = 1; $i < 7; $i++) {
+            $bars = str_split($this->_codingMap[$parity[$i - 1]][$textTable[$i]]);
+            foreach ($bars as $b) {
+                $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1);
+            }
+        }
+
+        // Stop character (10101)
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , $height);
+        $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , $height);
+        return $barcodeTable;
+    }
+
+    /**
+     * Partial function to draw text
+     * @return void
+     */
+    protected function _drawText()
+    {
+        if ($this->_drawText) {
+            $text = $this->getTextToDisplay();
+            $characterWidth = (7 * $this->_barThinWidth) * $this->_factor;
+            $leftPosition = $this->getQuietZone() - $characterWidth;
+            for ($i = 0; $i < $this->_barcodeLength; $i ++) {
+                $fontSize = $this->_fontSize;
+                if ($i == 0 || $i == 7) {
+                    $fontSize *= 0.8;
+                }
+                $this->_addText(
+                    $text{$i},
+                    $fontSize * $this->_factor,
+                    $this->_rotate(
+                        $leftPosition,
+                        (int) $this->_withBorder * 2
+                            + $this->_factor * ($this->_barHeight + $fontSize) + 1
+                    ),
+                    $this->_font,
+                    $this->_foreColor,
+                    'left',
+                    - $this->_orientation
+                );
+                switch ($i) {
+                    case 0:
+                        $factor = 3;
+                        break;
+                    case 6:
+                        $factor = 5;
+                        break;
+                    default:
+                        $factor = 0;
+                }
+                $leftPosition = $leftPosition + $characterWidth + ($factor * $this->_barThinWidth * $this->_factor);
+            }
+        }
+    }
+
+    /**
+     * Particular validation for Upce barcode objects
+     * (to suppress checksum character substitution)
+     * @param string $value
+     * @param array  $options
+     */
+    protected function _validateText($value, $options = array())
+    {
+        $validator = new Zend_Validate_Barcode(array(
+            'adapter'  => 'upce',
+            'checksum' => false,
+        ));
+
+        $value = $this->_addLeadingZeros($value, true);
+
+        if (!$validator->isValid($value)) {
+            $message = implode("\n", $validator->getMessages());
+
+            /**
+             * @see Zend_Barcode_Object_Exception
+             */
+            require_once 'Zend/Barcode/Object/Exception.php';
+            throw new Zend_Barcode_Object_Exception($message);
+        }
+    }
+
+    /**
+     * Get barcode checksum
+     *
+     * @param  string $text
+     * @return int
+     */
+    public function getChecksum($text)
+    {
+        $text = $this->_addLeadingZeros($text, true);
+        if ($text{0} != 1) {
+            $text{0} = 0;
+        }
+        return parent::getChecksum($text);
+    }
+}

+ 6 - 14
library/Zend/Barcode/Renderer/RendererAbstract.php

@@ -388,9 +388,6 @@ abstract class Zend_Barcode_Renderer_RendererAbstract
         $barcodeHeight = $this->_barcode->getHeight(true) * $this->_moduleSize;
         if ($barcodeHeight != $supportHeight) {
             switch ($this->_verticalPosition) {
-                case 'top':
-                    $this->_topOffset = 0;
-                    break;
                 case 'middle':
                     $this->_topOffset = floor(
                             ($supportHeight - $barcodeHeight) / 2);
@@ -398,19 +395,15 @@ abstract class Zend_Barcode_Renderer_RendererAbstract
                 case 'bottom':
                     $this->_topOffset = $supportHeight - $barcodeHeight;
                     break;
+                case 'top':
                 default:
-                    require_once 'Zend/Barcode/Renderer/Exception.php';
-                    throw new Zend_Barcode_Renderer_Exception(
-                        'Invalid vertical position provided; must be one of "top", "middle", or "bottom"'
-                    );
+                    $this->_topOffset = 0;
+                    break;
             }
         }
         $barcodeWidth = $this->_barcode->getWidth(true) * $this->_moduleSize;
         if ($barcodeWidth != $supportWidth) {
             switch ($this->_horizontalPosition) {
-                case 'left':
-                    $this->_leftOffset = 0;
-                    break;
                 case 'center':
                     $this->_leftOffset = floor(
                             ($supportWidth - $barcodeWidth) / 2);
@@ -418,11 +411,10 @@ abstract class Zend_Barcode_Renderer_RendererAbstract
                 case 'right':
                     $this->_leftOffset = $supportWidth - $barcodeWidth;
                     break;
+                case 'left':
                 default:
-                    require_once 'Zend/Barcode/Renderer/Exception.php';
-                    throw new Zend_Barcode_Renderer_Exception(
-                        'Invalid horizontal position provided; must be one of "left", "center", or "right"'
-                    );
+                    $this->_leftOffset = 0;
+                    break;
             }
         }
     }

+ 17 - 0
tests/Zend/Barcode/AllTests.php

@@ -44,6 +44,15 @@ require_once 'Zend/Barcode/Object/Code25interleavedTest.php';
 require_once 'Zend/Barcode/Object/Itf14Test.php';
 require_once 'Zend/Barcode/Object/IdentcodeTest.php';
 require_once 'Zend/Barcode/Object/LeitcodeTest.php';
+
+require_once 'Zend/Barcode/Object/Ean13Test.php';
+require_once 'Zend/Barcode/Object/Ean2Test.php';
+require_once 'Zend/Barcode/Object/Ean5Test.php';
+require_once 'Zend/Barcode/Object/Ean8Test.php';
+require_once 'Zend/Barcode/Object/PostnetTest.php';
+require_once 'Zend/Barcode/Object/UpcaTest.php';
+require_once 'Zend/Barcode/Object/UpceTest.php';
+
 require_once 'Zend/Barcode/Object/ErrorTest.php';
 
 require_once 'Zend/Barcode/Renderer/ImageTest.php';
@@ -76,6 +85,14 @@ class Zend_Barcode_AllTests
         $suite->addTestSuite('Zend_Barcode_Object_Itf14Test');
         $suite->addTestSuite('Zend_Barcode_Object_IdentcodeTest');
         $suite->addTestSuite('Zend_Barcode_Object_LeitcodeTest');
+
+        $suite->addTestSuite('Zend_Barcode_Object_Ean13Test');
+        $suite->addTestSuite('Zend_Barcode_Object_Ean2Test');
+        $suite->addTestSuite('Zend_Barcode_Object_Ean5Test');
+        $suite->addTestSuite('Zend_Barcode_Object_Ean8Test');
+        $suite->addTestSuite('Zend_Barcode_Object_PostnetTest');
+        $suite->addTestSuite('Zend_Barcode_Object_UpcaTest');
+        $suite->addTestSuite('Zend_Barcode_Object_UpceTest');
         $suite->addTestSuite('Zend_Barcode_Object_ErrorTest');
 
         $suite->addTestSuite('Zend_Barcode_Renderer_ImageTest');

+ 165 - 0
tests/Zend/Barcode/Object/Ean13Test.php

@@ -0,0 +1,165 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Ean13.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean13Test extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Ean13($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('ean13', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(2, $this->_object->getChecksum('012345678901'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('000123456789');
+        $this->assertSame('000123456789', $this->_object->getRawText());
+        $this->assertSame('0001234567895', $this->_object->getText());
+        $this->assertSame('0001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout13Characters()
+    {
+        $this->_object->setText('123456789');
+        $this->assertSame('123456789', $this->_object->getRawText());
+        $this->assertSame('0001234567895', $this->_object->getText());
+        $this->assertSame('0001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('000123456789', $this->_object->getRawText());
+        $this->assertSame('0001234567895', $this->_object->getText());
+        $this->assertSame('0001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 000123456789 ');
+        $this->assertSame('000123456789', $this->_object->getRawText());
+        $this->assertSame('0001234567895', $this->_object->getText());
+        $this->assertSame('0001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('000123456789', $this->_object->getRawText());
+        $this->assertSame('0001234567895', $this->_object->getText());
+        $this->assertSame('0001234567895', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testBadTextDetectedIfChecksumWished()
+    {
+        $this->_object->setText('a');
+        $this->_object->setWithChecksum(true);
+        $this->_object->getText();
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('000123456789');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('000123456789');
+        $this->assertEquals(115, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Ean13_000123456789_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean13_000123456789_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean13_000123456789_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('000123456789');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean13_000123456789_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('000123456789');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 155 - 0
tests/Zend/Barcode/Object/Ean2Test.php

@@ -0,0 +1,155 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Ean2.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean2Test extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Ean2($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('ean2', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(9, $this->_object->getChecksum('43'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('43');
+        $this->assertSame('43', $this->_object->getRawText());
+        $this->assertSame('43', $this->_object->getText());
+        $this->assertSame('43', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout2Characters()
+    {
+        $this->_object->setText('5');
+        $this->assertSame('5', $this->_object->getRawText());
+        $this->assertSame('05', $this->_object->getText());
+        $this->assertSame('05', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('43');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('43', $this->_object->getRawText());
+        $this->assertSame('43', $this->_object->getText());
+        $this->assertSame('43', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 43 ');
+        $this->assertSame('43', $this->_object->getRawText());
+        $this->assertSame('43', $this->_object->getText());
+        $this->assertSame('43', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('43');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('43', $this->_object->getRawText());
+        $this->assertSame('43', $this->_object->getText());
+        $this->assertSame('43', $this->_object->getTextToDisplay());
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('43');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('43');
+        $this->assertEquals(41, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('43');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Ean2_43_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('43');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean2_43_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('43');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean2_43_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('43');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean2_43_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('43');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 155 - 0
tests/Zend/Barcode/Object/Ean5Test.php

@@ -0,0 +1,155 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Ean5.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean5Test extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Ean5($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('ean5', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(2, $this->_object->getChecksum('45678'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('45678');
+        $this->assertSame('45678', $this->_object->getRawText());
+        $this->assertSame('45678', $this->_object->getText());
+        $this->assertSame('45678', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout13Characters()
+    {
+        $this->_object->setText('4567');
+        $this->assertSame('4567', $this->_object->getRawText());
+        $this->assertSame('04567', $this->_object->getText());
+        $this->assertSame('04567', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('45678');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('45678', $this->_object->getRawText());
+        $this->assertSame('45678', $this->_object->getText());
+        $this->assertSame('45678', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 45678 ');
+        $this->assertSame('45678', $this->_object->getRawText());
+        $this->assertSame('45678', $this->_object->getText());
+        $this->assertSame('45678', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('45678');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('45678', $this->_object->getRawText());
+        $this->assertSame('45678', $this->_object->getText());
+        $this->assertSame('45678', $this->_object->getTextToDisplay());
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('45678');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('45678');
+        $this->assertEquals(68, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('45678');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Ean5_45678_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('45678');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean5_45678_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('45678');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean5_45678_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('45678');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean5_45678_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('45678');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 165 - 0
tests/Zend/Barcode/Object/Ean8Test.php

@@ -0,0 +1,165 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Ean8.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_Ean8Test extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Ean8($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('ean8', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(5, $this->_object->getChecksum('2345678'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('0123456');
+        $this->assertSame('0123456', $this->_object->getRawText());
+        $this->assertSame('01234565', $this->_object->getText());
+        $this->assertSame('01234565', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout8Characters()
+    {
+        $this->_object->setText('12345');
+        $this->assertSame('12345', $this->_object->getRawText());
+        $this->assertSame('00123457', $this->_object->getText());
+        $this->assertSame('00123457', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('0123456');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('0123456', $this->_object->getRawText());
+        $this->assertSame('01234565', $this->_object->getText());
+        $this->assertSame('01234565', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 123456 ');
+        $this->assertSame('123456', $this->_object->getRawText());
+        $this->assertSame('01234565', $this->_object->getText());
+        $this->assertSame('01234565', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('123456');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('123456', $this->_object->getRawText());
+        $this->assertSame('01234565', $this->_object->getText());
+        $this->assertSame('01234565', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testBadTextDetectedIfChecksumWished()
+    {
+        $this->_object->setText('a');
+        $this->_object->setWithChecksum(true);
+        $this->_object->getText();
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('123456');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('123456');
+        $this->assertEquals(82, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('123456');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Ean8_123456_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('123456');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean8_123456_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('123456');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean8_123456_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('123456');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Ean8_123456_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('123456');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 167 - 0
tests/Zend/Barcode/Object/PostnetTest.php

@@ -0,0 +1,167 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Postnet.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_PostnetTest extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Postnet($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('postnet', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(5, $this->_object->getChecksum('012345'));
+        $this->assertSame(0, $this->_object->getChecksum('01234'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('012345');
+        $this->assertSame('012345', $this->_object->getRawText());
+        $this->assertSame('0123455', $this->_object->getText());
+        $this->assertSame('0123455', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testSetTextWithoutGoodNumberOfCharacters()
+    {
+        $this->_object->setText('1234');
+        $this->_object->getText();
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('012345');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('012345', $this->_object->getRawText());
+        $this->assertSame('0123455', $this->_object->getText());
+        $this->assertSame('0123455', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 012345 ');
+        $this->assertSame('012345', $this->_object->getRawText());
+        $this->assertSame('0123455', $this->_object->getText());
+        $this->assertSame('0123455', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('012345');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('012345', $this->_object->getRawText());
+        $this->assertSame('0123455', $this->_object->getText());
+        $this->assertSame('0123455', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testBadTextDetectedIfChecksumWished()
+    {
+        $this->_object->setText('a');
+        $this->_object->setWithChecksum(true);
+        $this->_object->getText();
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('012345');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('012345');
+        $this->assertEquals(186, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('012345');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Postnet_012345_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('012345');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Postnet_012345_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('012345');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Postnet_012345_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('012345');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Postnet_012345_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('012345');
+        $this->assertEquals(20, $this->_object->getHeight(true));
+    }
+}

+ 165 - 0
tests/Zend/Barcode/Object/UpcaTest.php

@@ -0,0 +1,165 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Upca.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_UpcaTest extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Upca($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('upca', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(5, $this->_object->getChecksum('01234567890'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('00123456789');
+        $this->assertSame('00123456789', $this->_object->getRawText());
+        $this->assertSame('001234567895', $this->_object->getText());
+        $this->assertSame('001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout13Characters()
+    {
+        $this->_object->setText('123456789');
+        $this->assertSame('123456789', $this->_object->getRawText());
+        $this->assertSame('001234567895', $this->_object->getText());
+        $this->assertSame('001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('00123456789', $this->_object->getRawText());
+        $this->assertSame('001234567895', $this->_object->getText());
+        $this->assertSame('001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 00123456789 ');
+        $this->assertSame('00123456789', $this->_object->getRawText());
+        $this->assertSame('001234567895', $this->_object->getText());
+        $this->assertSame('001234567895', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('00123456789', $this->_object->getRawText());
+        $this->assertSame('001234567895', $this->_object->getText());
+        $this->assertSame('001234567895', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testBadTextDetectedIfChecksumWished()
+    {
+        $this->_object->setText('a');
+        $this->_object->setWithChecksum(true);
+        $this->_object->getText();
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('00123456789');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('00123456789');
+        $this->assertEquals(115, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Upca_00123456789_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upca_00123456789_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upca_00123456789_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('00123456789');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upca_00123456789_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('00123456789');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 173 - 0
tests/Zend/Barcode/Object/UpceTest.php

@@ -0,0 +1,173 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
+
+require_once dirname(__FILE__) . '/TestCommon.php';
+
+require_once 'Zend/Barcode/Object/Upce.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Barcode
+ * @subpackage UnitTests
+ * @group      Zend_Barcode
+ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Barcode_Object_UpceTest extends Zend_Barcode_Object_TestCommon
+{
+
+    protected function _getBarcodeObject($options = null)
+    {
+        return new Zend_Barcode_Object_Upce($options);
+    }
+
+    public function testType()
+    {
+        $this->assertSame('upce', $this->_object->getType());
+    }
+
+    public function testChecksum()
+    {
+        $this->assertSame(9, $this->_object->getChecksum('3456789'));
+    }
+
+    public function testSetText()
+    {
+        $this->_object->setText('1234567');
+        $this->assertSame('1234567', $this->_object->getRawText());
+        $this->assertSame('12345670', $this->_object->getText());
+        $this->assertSame('12345670', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout8Characters()
+    {
+        $this->_object->setText('12345');
+        $this->assertSame('12345', $this->_object->getRawText());
+        $this->assertSame('00123457', $this->_object->getText());
+        $this->assertSame('00123457', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithout0or1AtBeginning()
+    {
+        $this->_object->setText('3234567');
+        $this->assertSame('3234567', $this->_object->getRawText());
+        $this->assertSame('02345673', $this->_object->getText());
+        $this->assertSame('02345673', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithoutChecksumHasNoEffect()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->setWithChecksum(false);
+        $this->assertSame('1234567', $this->_object->getRawText());
+        $this->assertSame('12345670', $this->_object->getText());
+        $this->assertSame('12345670', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithSpaces()
+    {
+        $this->_object->setText(' 1234567 ');
+        $this->assertSame('1234567', $this->_object->getRawText());
+        $this->assertSame('12345670', $this->_object->getText());
+        $this->assertSame('12345670', $this->_object->getTextToDisplay());
+    }
+
+    public function testSetTextWithChecksumNotDisplayed()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->setWithChecksumInText(false);
+        $this->assertSame('1234567', $this->_object->getRawText());
+        $this->assertSame('12345670', $this->_object->getText());
+        $this->assertSame('12345670', $this->_object->getTextToDisplay());
+    }
+
+    /**
+     * @expectedException Zend_Barcode_Object_Exception
+     */
+    public function testBadTextDetectedIfChecksumWished()
+    {
+        $this->_object->setText('a');
+        $this->_object->setWithChecksum(true);
+        $this->_object->getText();
+    }
+
+    public function testCheckGoodParams()
+    {
+        $this->_object->setText('1234567');
+        $this->assertTrue($this->_object->checkParams());
+    }
+
+
+    public function testGetKnownWidthWithoutOrientation()
+    {
+        $this->_object->setText('1234567');
+        $this->assertEquals(115, $this->_object->getWidth());
+    }
+
+    public function testCompleteGeneration()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile('Upce_1234567_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorder()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upce_1234567_border_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithOrientation()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->setOrientation(60);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upce_1234567_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testCompleteGenerationWithBorderWithOrientation()
+    {
+        $this->_object->setText('1234567');
+        $this->_object->setOrientation(60);
+        $this->_object->setWithBorder(true);
+        $this->_object->draw();
+        $instructions = $this->loadInstructionsFile(
+                'Upce_1234567_border_oriented_instructions');
+        $this->assertEquals($instructions, $this->_object->getInstructions());
+    }
+
+    public function testGetDefaultHeight()
+    {
+        // Checksum activated => text needed
+        $this->_object->setText('1234567');
+        $this->assertEquals(62, $this->_object->getHeight(true));
+    }
+}

+ 1538 - 0
tests/Zend/Barcode/Object/_files/Ean13_000123456789_border_instructions.php

@@ -0,0 +1,1538 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 65,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 66,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 66,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 70,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 75,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 75,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 79,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 79,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 85,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 85,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 89,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 89,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 90,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 91,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 91,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 91,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 93,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 93,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 93,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 93,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 96,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 96,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 96,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 96,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 99,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 99,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 100,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 100,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 101,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 101,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 101,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 101,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 103,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 103,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 105,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 105,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 73,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 80,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 87,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  58 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 94,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1538 - 0
tests/Zend/Barcode/Object/_files/Ean13_000123456789_border_oriented_instructions.php

@@ -0,0 +1,1538 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 40,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 40,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 56,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 56,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 57,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 82,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 82,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 57,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 87,
+        1 => 61,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 86,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 86,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 61,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 90,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 90,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 68,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 93,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 93,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 68,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 93,
+        1 => 71,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 96,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 96,
+      ),
+      3 => 
+      array (
+        0 => 93,
+        1 => 71,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 74,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 99,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 99,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 74,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 78,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 103,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 103,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 78,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 104,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 79,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 81,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 106,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 106,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 81,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 83,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 108,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 108,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 83,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 86,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 111,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 111,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 86,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 87,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 112,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 112,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 87,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 87,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 112,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 112,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 87,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 89,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 117,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 117,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 89,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 91,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 118,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 118,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 91,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 0,
+      1 => 34,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 5,
+      1 => 42,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 9,
+      1 => 48,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 12,
+      1 => 54,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 16,
+      1 => 60,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 19,
+      1 => 67,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 23,
+      1 => 73,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 28,
+      1 => 82,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 32,
+      1 => 88,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 35,
+      1 => 94,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 39,
+      1 => 100,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 42,
+      1 => 106,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  58 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 46,
+      1 => 112,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 1504 - 0
tests/Zend/Barcode/Object/_files/Ean13_000123456789_instructions.php

@@ -0,0 +1,1504 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 114,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 114,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 43,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 63,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 63,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 65,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 69,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 69,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 74,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 78,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 78,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 84,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 84,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 88,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 88,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 89,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 89,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 90,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 92,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 92,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 95,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 95,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 98,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 98,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 99,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 99,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 100,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 100,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 102,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 102,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 104,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 104,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 73,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 80,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 87,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 94,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1504 - 0
tests/Zend/Barcode/Object/_files/Ean13_000123456789_oriented_instructions.php

@@ -0,0 +1,1504 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 129,
+      ),
+      3 => 
+      array (
+        0 => 110,
+        1 => 98,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 38,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 38,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 54,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 54,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 55,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 55,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 86,
+        1 => 56,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 56,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 89,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 89,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 67,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 92,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 92,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 67,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 94,
+        1 => 70,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 95,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 95,
+      ),
+      3 => 
+      array (
+        0 => 94,
+        1 => 70,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 72,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 97,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 97,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 72,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 76,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 101,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 101,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 76,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 104,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 79,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 101,
+        1 => 82,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 107,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 107,
+      ),
+      3 => 
+      array (
+        0 => 101,
+        1 => 82,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 84,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 109,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 109,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 84,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 85,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 110,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 110,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 85,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 86,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 111,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 111,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 86,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 88,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 115,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 115,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 88,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 90,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 117,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 117,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 90,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 2,
+      1 => 33,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 7,
+      1 => 41,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 10,
+      1 => 47,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 14,
+      1 => 53,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 17,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 21,
+      1 => 66,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 24,
+      1 => 72,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 30,
+      1 => 81,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 33,
+      1 => 87,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 37,
+      1 => 93,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 40,
+      1 => 99,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 44,
+      1 => 105,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 47,
+      1 => 111,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 372 - 0
tests/Zend/Barcode/Object/_files/Ean2_43_border_instructions.php

@@ -0,0 +1,372 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 14,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 14,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 15,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 15,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  12 => 
+  array (
+    'type' => 'text',
+    'text' => '43',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 21,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => 0,
+  ),
+);

+ 372 - 0
tests/Zend/Barcode/Object/_files/Ean2_43_border_oriented_instructions.php

@@ -0,0 +1,372 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 35,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 35,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 12,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 12,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 13,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 38,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 38,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 13,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  12 => 
+  array (
+    'type' => 'text',
+    'text' => '43',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 9,
+      1 => 50,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => -60,
+  ),
+);

+ 338 - 0
tests/Zend/Barcode/Object/_files/Ean2_43_instructions.php

@@ -0,0 +1,338 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 14,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 14,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'text',
+    'text' => '43',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => 0,
+  ),
+);

+ 338 - 0
tests/Zend/Barcode/Object/_files/Ean2_43_oriented_instructions.php

@@ -0,0 +1,338 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 9,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 34,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 34,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 9,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 12,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 12,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'text',
+    'text' => '43',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 11,
+      1 => 48,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => -60,
+  ),
+);

+ 836 - 0
tests/Zend/Barcode/Object/_files/Ean5_45678_border_instructions.php

@@ -0,0 +1,836 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 69,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 14,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 14,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 15,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 15,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 35,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 35,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 39,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 39,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 69,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '45678',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 35,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => 0,
+  ),
+);

+ 836 - 0
tests/Zend/Barcode/Object/_files/Ean5_45678_border_oriented_instructions.php

@@ -0,0 +1,836 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 92,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 35,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 35,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 12,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 12,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 13,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 38,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 38,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 13,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 30,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 30,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 46,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 71,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 71,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 46,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 92,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '45678',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 16,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => -60,
+  ),
+);

+ 802 - 0
tests/Zend/Barcode/Object/_files/Ean5_45678_instructions.php

@@ -0,0 +1,802 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 67,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 14,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 14,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 38,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 48,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 52,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 52,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 55,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 55,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '45678',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => 0,
+  ),
+);

+ 802 - 0
tests/Zend/Barcode/Object/_files/Ean5_45678_oriented_instructions.php

@@ -0,0 +1,802 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 88,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 9,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 34,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 34,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 9,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 12,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 12,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 35,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 60,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 60,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 35,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 41,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 66,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 66,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 41,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 45,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 72,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '45678',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 17,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'center',
+    'orientation' => -60,
+  ),
+);

+ 1173 - 0
tests/Zend/Barcode/Object/_files/Ean8_123456_border_instructions.php

@@ -0,0 +1,1173 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 83,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 39,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 39,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 47,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 63,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 63,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 71,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 71,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 72,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 72,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 73,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 73,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 75,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 75,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 77,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 77,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 83,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 83,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  36 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  37 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  38 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  39 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  40 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 45,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  41 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 52,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  42 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  43 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1173 - 0
tests/Zend/Barcode/Object/_files/Ean8_123456_border_oriented_instructions.php

@@ -0,0 +1,1173 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 71,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 40,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 40,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 20,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 66,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 66,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 41,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 66,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 66,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 41,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 76,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 76,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 61,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 86,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 86,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 61,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 62,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 87,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 87,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 62,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 63,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 88,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 88,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 63,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 92,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 92,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 91,
+        1 => 67,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 94,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 94,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 67,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 95,
+        1 => 71,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  36 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 5,
+      1 => 42,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  37 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 9,
+      1 => 48,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  38 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 12,
+      1 => 54,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  39 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 16,
+      1 => 60,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  40 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 21,
+      1 => 70,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  41 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 25,
+      1 => 76,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  42 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 28,
+      1 => 82,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  43 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 32,
+      1 => 88,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 1139 - 0
tests/Zend/Barcode/Object/_files/Ean8_123456_instructions.php

@@ -0,0 +1,1139 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 81,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 22,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 35,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 35,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 38,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 48,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 62,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 62,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 70,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 71,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 71,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 72,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 72,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 74,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 76,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 76,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  36 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  37 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  38 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  39 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 45,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  40 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 52,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  41 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  42 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1139 - 0
tests/Zend/Barcode/Object/_files/Ean8_123456_oriented_instructions.php

@@ -0,0 +1,1139 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 100,
+      ),
+      3 => 
+      array (
+        0 => 94,
+        1 => 70,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 38,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 38,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 30,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 30,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 64,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 64,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 39,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 41,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 66,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 66,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 41,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 74,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 78,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 78,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 53,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 60,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 85,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 85,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 60,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 61,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 86,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 86,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 61,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 62,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 87,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 87,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 62,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 91,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 91,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 91,
+        1 => 65,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 93,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 93,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 65,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 7,
+      1 => 41,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  36 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 10,
+      1 => 47,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  37 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 14,
+      1 => 53,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  38 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 17,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  39 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 23,
+      1 => 69,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  40 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 26,
+      1 => 75,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  41 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 30,
+      1 => 81,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  42 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 33,
+      1 => 87,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 1140 - 0
tests/Zend/Barcode/Object/_files/Postnet_012345_border_instructions.php

@@ -0,0 +1,1140 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 23,
+      ),
+      2 => 
+      array (
+        0 => 187,
+        1 => 23,
+      ),
+      3 => 
+      array (
+        0 => 187,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 21,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 62,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 66,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 69,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 73,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 77,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 78,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 81,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 82,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 85,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 86,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 89,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 93,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 93,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 94,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 94,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 97,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 98,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 101,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 101,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 102,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 105,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 106,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 106,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 109,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 109,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 110,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 110,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 113,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 113,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 114,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 114,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 117,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 117,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 118,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 118,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 121,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 121,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 122,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 122,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 125,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 125,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 126,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 126,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 129,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 129,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 130,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 130,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 133,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 133,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 134,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 134,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 137,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 137,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 138,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 138,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 141,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 141,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 142,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 142,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 145,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 145,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 146,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 146,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 149,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 149,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 150,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 150,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 153,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 153,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 154,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 154,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 157,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 157,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 158,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 158,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 161,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 161,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 162,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 162,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 165,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 165,
+        1 => 21,
+      ),
+      2 => 
+      array (
+        0 => 166,
+        1 => 21,
+      ),
+      3 => 
+      array (
+        0 => 166,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 187,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 187,
+        1 => 23,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 23,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+);

+ 1140 - 0
tests/Zend/Barcode/Object/_files/Postnet_012345_border_oriented_instructions.php

@@ -0,0 +1,1140 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 11,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 173,
+      ),
+      3 => 
+      array (
+        0 => 110,
+        1 => 161,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 18,
+      ),
+      1 => 
+      array (
+        0 => 9,
+        1 => 28,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 29,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 28,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 33,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 35,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 26,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 28,
+        1 => 41,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 28,
+        1 => 41,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 44,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 49,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 53,
+      ),
+      3 => 
+      array (
+        0 => 32,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 52,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 60,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 64,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 54,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 61,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 66,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 62,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 65,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 71,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 66,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 52,
+        1 => 63,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 74,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 64,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 72,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 78,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 73,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 70,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 81,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 71,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 79,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 52,
+        1 => 82,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 87,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 88,
+      ),
+      3 => 
+      array (
+        0 => 52,
+        1 => 83,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 81,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 91,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 91,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 81,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 84,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 94,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 95,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 85,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 92,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 97,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 98,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 93,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 96,
+      ),
+      1 => 
+      array (
+        0 => 51,
+        1 => 101,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 97,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 94,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 104,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 105,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 95,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 103,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 108,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 109,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 104,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 106,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 111,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 112,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 107,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 105,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 115,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 116,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 106,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 113,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 118,
+      ),
+      2 => 
+      array (
+        0 => 62,
+        1 => 119,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 114,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 112,
+      ),
+      1 => 
+      array (
+        0 => 63,
+        1 => 122,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 123,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 113,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 120,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 125,
+      ),
+      2 => 
+      array (
+        0 => 66,
+        1 => 126,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 121,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 119,
+      ),
+      1 => 
+      array (
+        0 => 67,
+        1 => 129,
+      ),
+      2 => 
+      array (
+        0 => 68,
+        1 => 130,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 120,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 127,
+      ),
+      1 => 
+      array (
+        0 => 69,
+        1 => 132,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 133,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 128,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 131,
+      ),
+      1 => 
+      array (
+        0 => 71,
+        1 => 136,
+      ),
+      2 => 
+      array (
+        0 => 72,
+        1 => 136,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 131,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 129,
+      ),
+      1 => 
+      array (
+        0 => 73,
+        1 => 139,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 140,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 130,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 138,
+      ),
+      1 => 
+      array (
+        0 => 75,
+        1 => 143,
+      ),
+      2 => 
+      array (
+        0 => 76,
+        1 => 143,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 138,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 94,
+        1 => 136,
+      ),
+      1 => 
+      array (
+        0 => 77,
+        1 => 146,
+      ),
+      2 => 
+      array (
+        0 => 78,
+        1 => 147,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 137,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 144,
+      ),
+      1 => 
+      array (
+        0 => 79,
+        1 => 149,
+      ),
+      2 => 
+      array (
+        0 => 80,
+        1 => 150,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 145,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 143,
+      ),
+      1 => 
+      array (
+        0 => 81,
+        1 => 153,
+      ),
+      2 => 
+      array (
+        0 => 82,
+        1 => 154,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 144,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 110,
+        1 => 161,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 173,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 11,
+      ),
+      4 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+);

+ 1106 - 0
tests/Zend/Barcode/Object/_files/Postnet_012345_instructions.php

@@ -0,0 +1,1106 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 19,
+      ),
+      2 => 
+      array (
+        0 => 185,
+        1 => 19,
+      ),
+      3 => 
+      array (
+        0 => 185,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 28,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 52,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 61,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 68,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 69,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 72,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 73,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 76,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 77,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 80,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 81,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 84,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 85,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 88,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 89,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 92,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 93,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 93,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 96,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 96,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 97,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 100,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 101,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 101,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 104,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 105,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 108,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 108,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 109,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 109,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 112,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 112,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 113,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 113,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 116,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 116,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 117,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 117,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 120,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 120,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 121,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 121,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 124,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 124,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 125,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 125,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 128,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 128,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 129,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 129,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 132,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 132,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 133,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 133,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 136,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 136,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 137,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 137,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 140,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 140,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 141,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 141,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 144,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 144,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 145,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 145,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 148,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 148,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 149,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 149,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 152,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 152,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 153,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 153,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 156,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 156,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 157,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 157,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 160,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 160,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 161,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 161,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 164,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 164,
+        1 => 20,
+      ),
+      2 => 
+      array (
+        0 => 165,
+        1 => 20,
+      ),
+      3 => 
+      array (
+        0 => 165,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+);

+ 1106 - 0
tests/Zend/Barcode/Object/_files/Postnet_012345_oriented_instructions.php

@@ -0,0 +1,1106 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 9,
+      ),
+      2 => 
+      array (
+        0 => 93,
+        1 => 169,
+      ),
+      3 => 
+      array (
+        0 => 109,
+        1 => 160,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 27,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 28,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 18,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 31,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 31,
+        1 => 24,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 34,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 35,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 38,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 28,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 46,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 35,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 47,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 62,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 52,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 60,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 66,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 61,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 63,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 69,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 64,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 62,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 63,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 70,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 76,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 71,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 69,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 70,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 82,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 83,
+      ),
+      3 => 
+      array (
+        0 => 51,
+        1 => 78,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 52,
+        1 => 81,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 86,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 87,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 82,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 89,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 90,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 80,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 83,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 93,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 94,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 84,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 91,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 96,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 97,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 92,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 95,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 100,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 100,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 95,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 93,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 103,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 94,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 101,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 106,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 107,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 102,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 105,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 110,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 111,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 106,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 103,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 113,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 114,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 104,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 112,
+      ),
+      1 => 
+      array (
+        0 => 62,
+        1 => 117,
+      ),
+      2 => 
+      array (
+        0 => 62,
+        1 => 118,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 113,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 110,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 120,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 121,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 111,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 119,
+      ),
+      1 => 
+      array (
+        0 => 66,
+        1 => 124,
+      ),
+      2 => 
+      array (
+        0 => 66,
+        1 => 125,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 120,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 117,
+      ),
+      1 => 
+      array (
+        0 => 68,
+        1 => 127,
+      ),
+      2 => 
+      array (
+        0 => 68,
+        1 => 128,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 118,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 126,
+      ),
+      1 => 
+      array (
+        0 => 70,
+        1 => 131,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 127,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 129,
+      ),
+      1 => 
+      array (
+        0 => 72,
+        1 => 134,
+      ),
+      2 => 
+      array (
+        0 => 72,
+        1 => 135,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 130,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 91,
+        1 => 128,
+      ),
+      1 => 
+      array (
+        0 => 74,
+        1 => 138,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 139,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 129,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 136,
+      ),
+      1 => 
+      array (
+        0 => 76,
+        1 => 141,
+      ),
+      2 => 
+      array (
+        0 => 76,
+        1 => 142,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 137,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 135,
+      ),
+      1 => 
+      array (
+        0 => 78,
+        1 => 145,
+      ),
+      2 => 
+      array (
+        0 => 78,
+        1 => 145,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 135,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 143,
+      ),
+      1 => 
+      array (
+        0 => 80,
+        1 => 148,
+      ),
+      2 => 
+      array (
+        0 => 80,
+        1 => 149,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 144,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 142,
+      ),
+      1 => 
+      array (
+        0 => 82,
+        1 => 152,
+      ),
+      2 => 
+      array (
+        0 => 82,
+        1 => 152,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 142,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+);

+ 1523 - 0
tests/Zend/Barcode/Object/_files/Upca_00123456789_border_instructions.php

@@ -0,0 +1,1523 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 31,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 61,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 65,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 66,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 66,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 68,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 70,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 70,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 75,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 75,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 79,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 79,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 85,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 85,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 89,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 89,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 90,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 91,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 91,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 91,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 91,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 93,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 93,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 93,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 93,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 96,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 96,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 96,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 96,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 99,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 99,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 100,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 100,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 101,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 101,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 101,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 101,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 103,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 103,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 105,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 105,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 73,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 80,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 87,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 105,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1523 - 0
tests/Zend/Barcode/Object/_files/Upca_00123456789_border_oriented_instructions.php

@@ -0,0 +1,1523 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 43,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 26,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 60,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 35,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 64,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 39,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 72,
+      ),
+      3 => 
+      array (
+        0 => 79,
+        1 => 47,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 78,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 55,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 56,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 56,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 57,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 82,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 82,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 57,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 59,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 87,
+        1 => 61,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 86,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 86,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 61,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 90,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 90,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 65,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 68,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 93,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 93,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 68,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 93,
+        1 => 71,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 96,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 96,
+      ),
+      3 => 
+      array (
+        0 => 93,
+        1 => 71,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 74,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 99,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 99,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 74,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 78,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 103,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 103,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 78,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 104,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 79,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 81,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 106,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 106,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 81,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 83,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 111,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 111,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 83,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 86,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 113,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 113,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 86,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 87,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 114,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 114,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 87,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 87,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 115,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 115,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 87,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 89,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 117,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 117,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 89,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 91,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 118,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 118,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 91,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 2,
+      1 => 33,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 9,
+      1 => 48,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 12,
+      1 => 54,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 16,
+      1 => 60,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 19,
+      1 => 67,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 23,
+      1 => 73,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 28,
+      1 => 82,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 32,
+      1 => 88,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 35,
+      1 => 94,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 39,
+      1 => 100,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 42,
+      1 => 106,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  57 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 53,
+      1 => 121,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 1489 - 0
tests/Zend/Barcode/Object/_files/Upca_00123456789_instructions.php

@@ -0,0 +1,1489 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 114,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 114,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 16,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 17,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 30,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 39,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 39,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 42,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 43,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 43,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 44,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 49,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 63,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 63,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 64,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 64,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 65,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 65,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 67,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 69,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 69,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 74,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 74,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 78,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 78,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 81,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 84,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 84,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 84,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 84,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 88,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 88,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 89,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 89,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 89,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 89,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 90,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 90,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 92,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 92,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 95,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 95,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 98,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 98,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 99,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 99,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 100,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 100,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 100,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 100,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 102,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 102,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 104,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 104,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 59,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 66,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 73,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 80,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 87,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 105,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 1489 - 0
tests/Zend/Barcode/Object/_files/Upca_00123456789_oriented_instructions.php

@@ -0,0 +1,1489 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 129,
+      ),
+      3 => 
+      array (
+        0 => 110,
+        1 => 98,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 13,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 14,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 14,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 43,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 68,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 74,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 37,
+      ),
+      1 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      2 => 
+      array (
+        0 => 31,
+        1 => 62,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 37,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 70,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 45,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 76,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  26 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 54,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 54,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  27 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 85,
+        1 => 55,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 85,
+        1 => 55,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  28 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 86,
+        1 => 56,
+      ),
+      1 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      2 => 
+      array (
+        0 => 42,
+        1 => 81,
+      ),
+      3 => 
+      array (
+        0 => 86,
+        1 => 56,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  29 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+      1 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      2 => 
+      array (
+        0 => 43,
+        1 => 83,
+      ),
+      3 => 
+      array (
+        0 => 87,
+        1 => 58,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  30 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+      1 => 
+      array (
+        0 => 44,
+        1 => 84,
+      ),
+      2 => 
+      array (
+        0 => 44,
+        1 => 84,
+      ),
+      3 => 
+      array (
+        0 => 88,
+        1 => 59,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  31 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 89,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 89,
+      ),
+      3 => 
+      array (
+        0 => 90,
+        1 => 64,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  32 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 92,
+        1 => 67,
+      ),
+      1 => 
+      array (
+        0 => 49,
+        1 => 92,
+      ),
+      2 => 
+      array (
+        0 => 49,
+        1 => 92,
+      ),
+      3 => 
+      array (
+        0 => 92,
+        1 => 67,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  33 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 94,
+        1 => 70,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 95,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 95,
+      ),
+      3 => 
+      array (
+        0 => 94,
+        1 => 70,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  34 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 95,
+        1 => 72,
+      ),
+      1 => 
+      array (
+        0 => 52,
+        1 => 97,
+      ),
+      2 => 
+      array (
+        0 => 52,
+        1 => 97,
+      ),
+      3 => 
+      array (
+        0 => 95,
+        1 => 72,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  35 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 97,
+        1 => 76,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 101,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 101,
+      ),
+      3 => 
+      array (
+        0 => 97,
+        1 => 76,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  36 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  37 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 102,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 102,
+      ),
+      3 => 
+      array (
+        0 => 98,
+        1 => 77,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  38 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 99,
+        1 => 79,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 104,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 104,
+      ),
+      3 => 
+      array (
+        0 => 99,
+        1 => 79,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  39 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 101,
+        1 => 82,
+      ),
+      1 => 
+      array (
+        0 => 53,
+        1 => 109,
+      ),
+      2 => 
+      array (
+        0 => 53,
+        1 => 109,
+      ),
+      3 => 
+      array (
+        0 => 101,
+        1 => 82,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  40 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 102,
+        1 => 84,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 112,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 112,
+      ),
+      3 => 
+      array (
+        0 => 102,
+        1 => 84,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  41 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 85,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 113,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 113,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 85,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  42 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 103,
+        1 => 86,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 114,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 114,
+      ),
+      3 => 
+      array (
+        0 => 103,
+        1 => 86,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  43 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 104,
+        1 => 88,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 115,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 115,
+      ),
+      3 => 
+      array (
+        0 => 104,
+        1 => 88,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  44 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 105,
+        1 => 90,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 117,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 117,
+      ),
+      3 => 
+      array (
+        0 => 105,
+        1 => 90,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  45 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 4,
+      1 => 32,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  46 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 10,
+      1 => 47,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  47 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 14,
+      1 => 53,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  48 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 17,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  49 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 21,
+      1 => 66,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  50 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 24,
+      1 => 72,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  51 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 30,
+      1 => 81,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  52 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 33,
+      1 => 87,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  53 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 37,
+      1 => 93,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  54 => 
+  array (
+    'type' => 'text',
+    'text' => '8',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 40,
+      1 => 99,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  55 => 
+  array (
+    'type' => 'text',
+    'text' => '9',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 44,
+      1 => 105,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  56 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 55,
+      1 => 120,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 883 - 0
tests/Zend/Barcode/Object/_files/Upce_1234567_border_instructions.php

@@ -0,0 +1,883 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 11,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 13,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 13,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 16,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 16,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 16,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 16,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 20,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 25,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 25,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 27,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 29,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 29,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 29,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 29,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 34,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 38,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 38,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 41,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 41,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 46,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 46,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 48,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 48,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 51,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 51,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 51,
+      ),
+      3 => 
+      array (
+        0 => 55,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 57,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 59,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+      1 => 
+      array (
+        0 => 61,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 61,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 1,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 116,
+        1 => 0,
+      ),
+      2 => 
+      array (
+        0 => 116,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 0,
+        1 => 65,
+      ),
+      4 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  26 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  29 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  30 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  31 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  32 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 63,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  33 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 60,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 883 - 0
tests/Zend/Barcode/Object/_files/Upce_1234567_border_oriented_instructions.php

@@ -0,0 +1,883 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 11,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 14,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 39,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 39,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 14,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 42,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 17,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 20,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 46,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 21,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 48,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 23,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 25,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 25,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 54,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 29,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 58,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 33,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 36,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 75,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 67,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 42,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 69,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 44,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 73,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 49,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 80,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 80,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 53,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 111,
+        1 => 100,
+      ),
+      2 => 
+      array (
+        0 => 55,
+        1 => 132,
+      ),
+      3 => 
+      array (
+        0 => -2,
+        1 => 32,
+      ),
+      4 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => false,
+  ),
+  26 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 2,
+      1 => 33,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 5,
+      1 => 42,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 9,
+      1 => 48,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  29 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 12,
+      1 => 54,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  30 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 16,
+      1 => 60,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  31 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 19,
+      1 => 67,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  32 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 23,
+      1 => 73,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  33 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 30,
+      1 => 82,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);

+ 849 - 0
tests/Zend/Barcode/Object/_files/Upce_1234567_instructions.php

@@ -0,0 +1,849 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 0,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 61,
+      ),
+      2 => 
+      array (
+        0 => 114,
+        1 => 61,
+      ),
+      3 => 
+      array (
+        0 => 114,
+        1 => 0,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 10,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 10,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 12,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 15,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 15,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 15,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 15,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 18,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 18,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 19,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 21,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 22,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 22,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 23,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 24,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 26,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 28,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 28,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 32,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 33,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 35,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 35,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 36,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 37,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 40,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 40,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 45,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 45,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 47,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 47,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 50,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 50,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      2 => 
+      array (
+        0 => 54,
+        1 => 50,
+      ),
+      3 => 
+      array (
+        0 => 54,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 56,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 56,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 58,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 60,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 60,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 60,
+        1 => 0,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 3,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  26 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 13,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 20,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 27,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  29 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 34,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  30 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 41,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  31 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 48,
+      1 => 61,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+  32 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 60,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => 0,
+  ),
+);

+ 849 - 0
tests/Zend/Barcode/Object/_files/Upce_1234567_oriented_instructions.php

@@ -0,0 +1,849 @@
+<?php
+return
+array (
+  0 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 53,
+        1 => 0,
+      ),
+      1 => 
+      array (
+        0 => 0,
+        1 => 30,
+      ),
+      2 => 
+      array (
+        0 => 57,
+        1 => 129,
+      ),
+      3 => 
+      array (
+        0 => 110,
+        1 => 98,
+      ),
+    ),
+    'color' => 16777215,
+    'filled' => true,
+  ),
+  1 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+      1 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      2 => 
+      array (
+        0 => 11,
+        1 => 36,
+      ),
+      3 => 
+      array (
+        0 => 58,
+        1 => 8,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  2 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+      1 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 12,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 59,
+        1 => 10,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  3 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 61,
+        1 => 12,
+      ),
+      1 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      2 => 
+      array (
+        0 => 17,
+        1 => 37,
+      ),
+      3 => 
+      array (
+        0 => 61,
+        1 => 12,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  4 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 40,
+      ),
+      3 => 
+      array (
+        0 => 62,
+        1 => 15,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  5 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+      1 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      2 => 
+      array (
+        0 => 19,
+        1 => 41,
+      ),
+      3 => 
+      array (
+        0 => 63,
+        1 => 16,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  6 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+      1 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      2 => 
+      array (
+        0 => 20,
+        1 => 43,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 18,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  7 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 64,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 64,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  8 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+      1 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      2 => 
+      array (
+        0 => 21,
+        1 => 44,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 19,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  9 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+      1 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      2 => 
+      array (
+        0 => 22,
+        1 => 45,
+      ),
+      3 => 
+      array (
+        0 => 65,
+        1 => 20,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  10 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+      1 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      2 => 
+      array (
+        0 => 23,
+        1 => 47,
+      ),
+      3 => 
+      array (
+        0 => 66,
+        1 => 22,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  11 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 67,
+        1 => 24,
+      ),
+      1 => 
+      array (
+        0 => 24,
+        1 => 49,
+      ),
+      2 => 
+      array (
+        0 => 24,
+        1 => 49,
+      ),
+      3 => 
+      array (
+        0 => 67,
+        1 => 24,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  12 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 52,
+      ),
+      3 => 
+      array (
+        0 => 69,
+        1 => 27,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  13 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+      1 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      2 => 
+      array (
+        0 => 26,
+        1 => 53,
+      ),
+      3 => 
+      array (
+        0 => 70,
+        1 => 28,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  14 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 30,
+      ),
+      1 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      2 => 
+      array (
+        0 => 27,
+        1 => 55,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 30,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  15 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 56,
+      ),
+      3 => 
+      array (
+        0 => 71,
+        1 => 31,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  16 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+      1 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      2 => 
+      array (
+        0 => 28,
+        1 => 57,
+      ),
+      3 => 
+      array (
+        0 => 72,
+        1 => 32,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  17 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+      1 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      2 => 
+      array (
+        0 => 30,
+        1 => 59,
+      ),
+      3 => 
+      array (
+        0 => 73,
+        1 => 34,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  18 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+      1 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      2 => 
+      array (
+        0 => 32,
+        1 => 63,
+      ),
+      3 => 
+      array (
+        0 => 76,
+        1 => 38,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  19 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+      1 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      2 => 
+      array (
+        0 => 33,
+        1 => 65,
+      ),
+      3 => 
+      array (
+        0 => 77,
+        1 => 40,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  20 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 68,
+      ),
+      3 => 
+      array (
+        0 => 78,
+        1 => 43,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  21 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+      1 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      2 => 
+      array (
+        0 => 37,
+        1 => 71,
+      ),
+      3 => 
+      array (
+        0 => 80,
+        1 => 46,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  22 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+      1 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      2 => 
+      array (
+        0 => 34,
+        1 => 75,
+      ),
+      3 => 
+      array (
+        0 => 81,
+        1 => 48,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  23 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+      1 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      2 => 
+      array (
+        0 => 35,
+        1 => 77,
+      ),
+      3 => 
+      array (
+        0 => 82,
+        1 => 50,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  24 => 
+  array (
+    'type' => 'polygon',
+    'points' => 
+    array (
+      0 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+      1 => 
+      array (
+        0 => 36,
+        1 => 79,
+      ),
+      2 => 
+      array (
+        0 => 36,
+        1 => 79,
+      ),
+      3 => 
+      array (
+        0 => 83,
+        1 => 51,
+      ),
+    ),
+    'color' => 0,
+    'filled' => true,
+  ),
+  25 => 
+  array (
+    'type' => 'text',
+    'text' => '1',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 4,
+      1 => 32,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  26 => 
+  array (
+    'type' => 'text',
+    'text' => '2',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 7,
+      1 => 41,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  27 => 
+  array (
+    'type' => 'text',
+    'text' => '3',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 10,
+      1 => 47,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  28 => 
+  array (
+    'type' => 'text',
+    'text' => '4',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 14,
+      1 => 53,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  29 => 
+  array (
+    'type' => 'text',
+    'text' => '5',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 17,
+      1 => 59,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  30 => 
+  array (
+    'type' => 'text',
+    'text' => '6',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 21,
+      1 => 66,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  31 => 
+  array (
+    'type' => 'text',
+    'text' => '7',
+    'size' => 10,
+    'position' => 
+    array (
+      0 => 24,
+      1 => 72,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+  32 => 
+  array (
+    'type' => 'text',
+    'text' => '0',
+    'size' => 8,
+    'position' => 
+    array (
+      0 => 32,
+      1 => 81,
+    ),
+    'font' => NULL,
+    'color' => 0,
+    'alignment' => 'left',
+    'orientation' => -60,
+  ),
+);