Terminology.html 89 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. <!DOCTYPE html>
  2. <html class="writer-html5" lang="en" data-content_root="../">
  3. <head>
  4. <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Terminology &mdash; PHP-QRCode main
  7. Manual</title>
  8. <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
  9. <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
  10. <script src="../_static/jquery.js?v=5d32c60e"></script>
  11. <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
  12. <script src="../_static/documentation_options.js?v=a8da1a53"></script>
  13. <script src="../_static/doctools.js?v=9bcbadda"></script>
  14. <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
  15. <script src="../_static/js/theme.js"></script>
  16. <link rel="index" title="Index" href="../genindex.html" />
  17. <link rel="search" title="Search" href="../search.html" />
  18. <link rel="next" title="Popular content and URI schemes" href="URI-Content.html" />
  19. <link rel="prev" title="QRStringText" href="../Built-In-Output/QRStringText.html" />
  20. </head>
  21. <body class="wy-body-for-nav">
  22. <div class="wy-grid-for-nav">
  23. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  24. <div class="wy-side-scroll">
  25. <div class="wy-side-nav-search" >
  26. <a href="../index.html" class="icon icon-home">
  27. PHP-QRCode
  28. </a>
  29. <div role="search">
  30. <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
  31. <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
  32. <input type="hidden" name="check_keywords" value="yes" />
  33. <input type="hidden" name="area" value="default" />
  34. </form>
  35. </div>
  36. </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
  37. <p class="caption" role="heading"><span class="caption-text">Usage</span></p>
  38. <ul>
  39. <li class="toctree-l1"><a class="reference internal" href="../Usage/Overview.html">Overview</a><ul>
  40. <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#features">Features</a></li>
  41. <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#requirements">Requirements</a></li>
  42. <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#framework-integration">Framework Integration</a></li>
  43. <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#shameless-advertising">Shameless advertising</a></li>
  44. </ul>
  45. </li>
  46. <li class="toctree-l1"><a class="reference internal" href="../Usage/Installation.html">Installation</a><ul>
  47. <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#installation-with-composer">Installation with Composer</a><ul>
  48. <li class="toctree-l3"><a class="reference internal" href="../Usage/Installation.html#composer-json">composer.json</a><ul>
  49. <li class="toctree-l4"><a class="reference internal" href="../Usage/Installation.html#version-switch">Version switch</a></li>
  50. </ul>
  51. </li>
  52. <li class="toctree-l3"><a class="reference internal" href="../Usage/Installation.html#terminal">Terminal</a></li>
  53. </ul>
  54. </li>
  55. <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#manual-installation">Manual installation</a><ul>
  56. <li class="toctree-l3"><a class="reference internal" href="../Usage/Installation.html#can-i-use-this-library-without-using-composer">Can I use this library without using composer?</a></li>
  57. </ul>
  58. </li>
  59. <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#supported-php-versions-extension-requirements">Supported PHP versions &amp; extension requirements</a></li>
  60. <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#imagemagick">ImageMagick</a></li>
  61. </ul>
  62. </li>
  63. <li class="toctree-l1"><a class="reference internal" href="../Usage/Quickstart.html">Quickstart</a><ul>
  64. <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#import-the-library">Import the library</a></li>
  65. <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#create-your-first-qr-code">Create your first QR Code</a><ul>
  66. <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
  67. </ul>
  68. </li>
  69. <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
  70. <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
  71. </ul>
  72. </li>
  73. <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
  74. <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#configuration-via-qroptions">Configuration via <code class="docutils literal notranslate"><span class="pre">QROptions</span></code></a><ul>
  75. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#supply-an-iterable-of-options">Supply an <code class="docutils literal notranslate"><span class="pre">iterable</span></code> of options</a></li>
  76. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#load-and-save-options-from-to-json">Load and save options from/to JSON</a></li>
  77. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#extending-the-qroptions-class">Extending the <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> class</a></li>
  78. </ul>
  79. </li>
  80. <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
  81. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
  82. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
  83. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
  84. </ul>
  85. </li>
  86. <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
  87. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
  88. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
  89. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
  90. <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
  91. </ul>
  92. </li>
  93. </ul>
  94. </li>
  95. <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>
  96. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#version">version</a></li>
  97. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#versionmin">versionMin</a></li>
  98. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#versionmax">versionMax</a></li>
  99. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#ecclevel">eccLevel</a></li>
  100. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#maskpattern">maskPattern</a></li>
  101. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#addquietzone">addQuietzone</a></li>
  102. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#quietzonesize">quietzoneSize</a></li>
  103. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#outputinterface">outputInterface</a></li>
  104. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#returnresource">returnResource</a></li>
  105. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#cachefile">cachefile</a></li>
  106. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#outputbase64">outputBase64</a></li>
  107. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#eol">eol</a></li>
  108. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#bgcolor">bgColor</a></li>
  109. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#invertmatrix">invertMatrix</a></li>
  110. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#drawlightmodules">drawLightModules</a></li>
  111. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#drawcircularmodules">drawCircularModules</a></li>
  112. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#circleradius">circleRadius</a></li>
  113. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#keepassquare">keepAsSquare</a></li>
  114. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#connectpaths">connectPaths</a></li>
  115. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#excludefromconnect">excludeFromConnect</a></li>
  116. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#modulevalues">moduleValues</a></li>
  117. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#addlogospace">addLogoSpace</a></li>
  118. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacewidth">logoSpaceWidth</a></li>
  119. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospaceheight">logoSpaceHeight</a></li>
  120. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacestartx">logoSpaceStartX</a></li>
  121. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacestarty">logoSpaceStartY</a></li>
  122. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#scale">scale</a></li>
  123. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#imagetransparent">imageTransparent</a></li>
  124. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#transparencycolor">transparencyColor</a></li>
  125. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#quality">quality</a></li>
  126. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#gdimageuseupscale">gdImageUseUpscale</a></li>
  127. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#imagickformat">imagickFormat</a></li>
  128. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#cssclass">cssClass</a></li>
  129. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgaddxmlheader">svgAddXmlHeader</a></li>
  130. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgdefs">svgDefs</a></li>
  131. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgpreserveaspectratio">svgPreserveAspectRatio</a></li>
  132. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgusefillattributes">svgUseFillAttributes</a></li>
  133. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#textlinestart">textLineStart</a></li>
  134. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#jsonflags">jsonFlags</a></li>
  135. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#fpdfmeasureunit">fpdfMeasureUnit</a></li>
  136. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#xmlstylesheet">xmlStylesheet</a></li>
  137. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readeruseimagickifavailable">readerUseImagickIfAvailable</a></li>
  138. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readergrayscale">readerGrayscale</a></li>
  139. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerinvertcolors">readerInvertColors</a></li>
  140. <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
  141. </ul>
  142. </li>
  143. </ul>
  144. <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
  145. <ul>
  146. <li class="toctree-l1"><a class="reference internal" href="../Customizing/Module-Values.html">Module values</a><ul>
  147. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#basics">Basics</a></li>
  148. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#assigning-values">Assigning values</a></li>
  149. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#handling-in-your-own-qroutputinterface">Handling in your own <code class="docutils literal notranslate"><span class="pre">QROutputInterface</span></code></a><ul>
  150. <li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#setting-module-values">Setting module values</a></li>
  151. <li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#using-the-module-values">Using the module values</a></li>
  152. </ul>
  153. </li>
  154. </ul>
  155. </li>
  156. <li class="toctree-l1"><a class="reference internal" href="../Customizing/QROutputAbstract.html"><code class="docutils literal notranslate"><span class="pre">QROutputAbstract</span></code></a><ul>
  157. <li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#properties">Properties</a><ul>
  158. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#options-and-matrix"><code class="docutils literal notranslate"><span class="pre">$options</span></code> and <code class="docutils literal notranslate"><span class="pre">$matrix</span></code></a></li>
  159. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulecount-scale-and-length"><code class="docutils literal notranslate"><span class="pre">$moduleCount</span></code>, <code class="docutils literal notranslate"><span class="pre">$scale</span></code> and <code class="docutils literal notranslate"><span class="pre">$length</span></code></a></li>
  160. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulevalues"><code class="docutils literal notranslate"><span class="pre">$moduleValues</span></code></a></li>
  161. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#copies-of-qroptions-values">Copies of <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> values</a></li>
  162. </ul>
  163. </li>
  164. <li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#methods">Methods</a><ul>
  165. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#setmodulevalues"><code class="docutils literal notranslate"><span class="pre">setModuleValues()</span></code></a></li>
  166. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulevalueisvalid"><code class="docutils literal notranslate"><span class="pre">moduleValueIsValid()</span></code></a></li>
  167. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#preparemodulevalue"><code class="docutils literal notranslate"><span class="pre">prepareModuleValue()</span></code></a></li>
  168. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getdefaultmodulevalue"><code class="docutils literal notranslate"><span class="pre">getDefaultModuleValue()</span></code></a></li>
  169. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getmodulevalue-and-getmodulevalueat"><code class="docutils literal notranslate"><span class="pre">getModuleValue()</span></code> and <code class="docutils literal notranslate"><span class="pre">getModuleValueAt()</span></code></a></li>
  170. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#setmatrixdimensions"><code class="docutils literal notranslate"><span class="pre">setMatrixDimensions()</span></code></a></li>
  171. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getoutputdimensions"><code class="docutils literal notranslate"><span class="pre">getOutputDimensions()</span></code></a></li>
  172. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#collectmodules"><code class="docutils literal notranslate"><span class="pre">collectModules()</span></code></a></li>
  173. <li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#savetofile-and-tobase64datauri"><code class="docutils literal notranslate"><span class="pre">saveToFile()</span></code> and <code class="docutils literal notranslate"><span class="pre">toBase64DataURI()</span></code></a></li>
  174. </ul>
  175. </li>
  176. </ul>
  177. </li>
  178. <li class="toctree-l1"><a class="reference internal" href="../Customizing/Custom-output-interface.html">Custom <code class="docutils literal notranslate"><span class="pre">QROutputInterface</span></code></a><ul>
  179. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#class-skeleton">Class skeleton</a></li>
  180. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#module-values">Module values</a></li>
  181. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#transform-the-output">Transform the output</a></li>
  182. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#run-the-custom-output">Run the custom output</a></li>
  183. <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#summary">Summary</a></li>
  184. </ul>
  185. </li>
  186. </ul>
  187. <p class="caption" role="heading"><span class="caption-text">Built-In Output Classes</span></p>
  188. <ul>
  189. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QREps.html">QREps</a><ul>
  190. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#example">Example</a></li>
  191. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#additional-methods">Additional methods</a></li>
  192. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#options-that-affect-this-class">Options that affect this class</a></li>
  193. </ul>
  194. </li>
  195. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRFpdf.html">QRFpdf</a><ul>
  196. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#example">Example</a></li>
  197. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#additional-methods">Additional methods</a></li>
  198. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#options-that-affect-this-class">Options that affect this class</a></li>
  199. </ul>
  200. </li>
  201. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRGdImage.html">QRGdImage</a><ul>
  202. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#example">Example</a></li>
  203. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#additional-methods">Additional methods</a></li>
  204. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#options-that-affect-this-class">Options that affect this class</a></li>
  205. </ul>
  206. </li>
  207. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRImagick.html">QRImagick</a><ul>
  208. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#example">Example</a></li>
  209. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#additional-methods">Additional methods</a></li>
  210. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#options-that-affect-this-class">Options that affect this class</a></li>
  211. </ul>
  212. </li>
  213. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html">QRInterventionImage</a><ul>
  214. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#example">Example</a></li>
  215. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#additional-methods">Additional methods</a></li>
  216. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#options-that-affect-this-class">Options that affect this class</a></li>
  217. </ul>
  218. </li>
  219. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html">QRMarkupHTML</a><ul>
  220. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#example">Example</a></li>
  221. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#additional-methods">Additional methods</a></li>
  222. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#options-that-affect-this-class">Options that affect this class</a></li>
  223. </ul>
  224. </li>
  225. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html">QRMarkupSVG</a><ul>
  226. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#example">Example</a></li>
  227. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#additional-methods">Additional methods</a></li>
  228. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#options-that-affect-this-class">Options that affect this class</a></li>
  229. </ul>
  230. </li>
  231. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html">QRMarkupXML</a><ul>
  232. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#example">Example</a></li>
  233. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#additional-methods">Additional methods</a></li>
  234. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#options-that-affect-this-class">Options that affect this class</a></li>
  235. </ul>
  236. </li>
  237. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html">QRStringJSON</a><ul>
  238. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#example">Example</a></li>
  239. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#previous-functionality">Previous functionality</a></li>
  240. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#additional-methods">Additional methods</a></li>
  241. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#options-that-affect-this-class">Options that affect this class</a></li>
  242. </ul>
  243. </li>
  244. <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringText.html">QRStringText</a><ul>
  245. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#example">Example</a></li>
  246. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#additional-methods">Additional methods</a></li>
  247. <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#options-that-affect-this-class">Options that affect this class</a></li>
  248. </ul>
  249. </li>
  250. </ul>
  251. <p class="caption" role="heading"><span class="caption-text">Appendix</span></p>
  252. <ul class="current">
  253. <li class="toctree-l1 current"><a class="current reference internal" href="#">Terminology</a><ul>
  254. <li class="toctree-l2"><a class="reference internal" href="#qr-code">QR Code</a></li>
  255. <li class="toctree-l2"><a class="reference internal" href="#matrix">Matrix</a><ul>
  256. <li class="toctree-l3"><a class="reference internal" href="#module">Module</a></li>
  257. <li class="toctree-l3"><a class="reference internal" href="#version">Version</a></li>
  258. </ul>
  259. </li>
  260. <li class="toctree-l2"><a class="reference internal" href="#function-patterns">Function Patterns</a><ul>
  261. <li class="toctree-l3"><a class="reference internal" href="#finder-pattern">Finder Pattern</a></li>
  262. <li class="toctree-l3"><a class="reference internal" href="#alignment-pattern">Alignment Pattern</a></li>
  263. <li class="toctree-l3"><a class="reference internal" href="#timing-pattern">Timing Pattern</a></li>
  264. <li class="toctree-l3"><a class="reference internal" href="#separators">Separators</a></li>
  265. <li class="toctree-l3"><a class="reference internal" href="#quiet-zone">Quiet Zone</a></li>
  266. </ul>
  267. </li>
  268. <li class="toctree-l2"><a class="reference internal" href="#encoding-region">Encoding Region</a><ul>
  269. <li class="toctree-l3"><a class="reference internal" href="#data">Data</a></li>
  270. <li class="toctree-l3"><a class="reference internal" href="#version-information">Version Information</a></li>
  271. <li class="toctree-l3"><a class="reference internal" href="#format-information">Format Information</a></li>
  272. <li class="toctree-l3"><a class="reference internal" href="#darkmodule">Darkmodule</a></li>
  273. </ul>
  274. </li>
  275. <li class="toctree-l2"><a class="reference internal" href="#mode">Mode</a><ul>
  276. <li class="toctree-l3"><a class="reference internal" href="#segment">Segment</a></li>
  277. <li class="toctree-l3"><a class="reference internal" href="#extended-channel-interpretation-eci">Extended Channel Interpretation (ECI)</a></li>
  278. <li class="toctree-l3"><a class="reference internal" href="#mixed-mode">Mixed Mode</a></li>
  279. </ul>
  280. </li>
  281. <li class="toctree-l2"><a class="reference internal" href="#ecc-error-correction-coding">ECC (Error Correction Coding)</a><ul>
  282. <li class="toctree-l3"><a class="reference internal" href="#ecc-level">ECC Level</a></li>
  283. <li class="toctree-l3"><a class="reference internal" href="#maximum-data-capacity">Maximum data capacity</a></li>
  284. </ul>
  285. </li>
  286. <li class="toctree-l2"><a class="reference internal" href="#data-masking">Data masking</a><ul>
  287. <li class="toctree-l3"><a class="reference internal" href="#evaluation">Evaluation</a></li>
  288. <li class="toctree-l3"><a class="reference internal" href="#mask-pattern">Mask pattern</a></li>
  289. </ul>
  290. </li>
  291. <li class="toctree-l2"><a class="reference internal" href="#reflectance">Reflectance</a></li>
  292. </ul>
  293. </li>
  294. <li class="toctree-l1"><a class="reference internal" href="URI-Content.html">Popular content and URI schemes</a><ul>
  295. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#url-https">URL <code class="docutils literal notranslate"><span class="pre">https</span></code></a></li>
  296. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#e-mail-mailto">E-Mail <code class="docutils literal notranslate"><span class="pre">mailto</span></code></a></li>
  297. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#phone-numbers-tel">Phone numbers <code class="docutils literal notranslate"><span class="pre">tel</span></code></a></li>
  298. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#geo-coordinates-geo">Geo Coordinates <code class="docutils literal notranslate"><span class="pre">geo</span></code></a></li>
  299. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#mobile-authenticators-otpauth">Mobile Authenticators <code class="docutils literal notranslate"><span class="pre">otpauth</span></code></a></li>
  300. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#wireless-network-configuration">Wireless Network configuration</a></li>
  301. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#contact-information-vcard">Contact information: vCard</a></li>
  302. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#calendar-events-vcalendar-and-icalendar">Calendar Events: vCalendar and iCalendar</a></li>
  303. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#credit-transfer">Credit Transfer</a><ul>
  304. <li class="toctree-l3"><a class="reference internal" href="URI-Content.html#sepa-european-payments-council">SEPA (European Payments Council)</a></li>
  305. <li class="toctree-l3"><a class="reference internal" href="URI-Content.html#pix-banco-central-do-brasil">Pix (Banco Central do Brasil)</a></li>
  306. </ul>
  307. </li>
  308. <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#see-also">See also</a></li>
  309. </ul>
  310. </li>
  311. <li class="toctree-l1"><a class="reference internal" href="Performance-considerations.html">Performance considerations</a><ul>
  312. <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#version">Version</a></li>
  313. <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#ecc-level">Ecc level</a></li>
  314. <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#data-mode">Data mode</a></li>
  315. <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#mask-pattern">Mask pattern</a></li>
  316. <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#output">Output</a></li>
  317. </ul>
  318. </li>
  319. <li class="toctree-l1"><a class="reference internal" href="Contribute.html">How to contribute</a><ul>
  320. <li class="toctree-l2"><a class="reference internal" href="Contribute.html#questions-and-issues">Questions and issues</a></li>
  321. <li class="toctree-l2"><a class="reference internal" href="Contribute.html#bug-reports">Bug reports</a></li>
  322. <li class="toctree-l2"><a class="reference internal" href="Contribute.html#pull-requests-and-bug-fixes">Pull requests and bug fixes</a></li>
  323. <li class="toctree-l2"><a class="reference internal" href="Contribute.html#documentation">Documentation</a></li>
  324. </ul>
  325. </li>
  326. <li class="toctree-l1"><a class="reference internal" href="License.html">License</a></li>
  327. </ul>
  328. </div>
  329. </div>
  330. </nav>
  331. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
  332. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  333. <a href="../index.html">PHP-QRCode</a>
  334. </nav>
  335. <div class="wy-nav-content">
  336. <div class="rst-content">
  337. <div role="navigation" aria-label="Page navigation">
  338. <ul class="wy-breadcrumbs">
  339. <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
  340. <li class="breadcrumb-item active">Terminology</li>
  341. <li class="wy-breadcrumbs-aside">
  342. <a href="https://github.com/chillerlan/php-qrcode/blob/main/docs/Appendix/Terminology.md" class="fa fa-github"> Edit on GitHub</a>
  343. </li>
  344. </ul>
  345. <hr/>
  346. </div>
  347. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  348. <div itemprop="articleBody">
  349. <section id="terminology">
  350. <h1>Terminology<a class="headerlink" href="#terminology" title="Link to this heading"></a></h1>
  351. <section id="qr-code">
  352. <h2>QR Code<a class="headerlink" href="#qr-code" title="Link to this heading"></a></h2>
  353. <p>A <a class="reference external" href="https://en.wikipedia.org/wiki/QR_code"><em>QR code</em></a> (quick-response code) is a type of two-dimensional matrix barcode, invented
  354. in 1994 by Japanese company <a class="reference external" href="https://www.qrcode.com/en/faq.html#patentH2Title">Denso Wave</a> for labelling automobile parts.
  355. The QR labelling system was applied beyond the automobile industry due to its fast readability and greater storage capacity
  356. compared to standard UPC barcodes.
  357. QR Codes, more specifically, the popular <em>Model 2</em>, are internationally standardized in the ISO/IEC 18004.</p>
  358. </section>
  359. <section id="matrix">
  360. <h2>Matrix<a class="headerlink" href="#matrix" title="Link to this heading"></a></h2>
  361. <p>A QR symbol is arranged in a <em>matrix</em> consisting of an array of nominally square modules arranged in an overall square pattern.</p>
  362. <p>For ease of reference, module positions are defined by their row and column coordinates in the symbol, in the form <code class="docutils literal notranslate"><span class="pre">(x,</span> <span class="pre">y)</span></code>
  363. where <code class="docutils literal notranslate"><span class="pre">x</span></code> designates the column (counting from left to right) and <code class="docutils literal notranslate"><span class="pre">y</span></code> the row (counting from the top downwards) in which
  364. the module is located, with counting commencing at 0. Module <code class="docutils literal notranslate"><span class="pre">(0,</span> <span class="pre">0)</span></code> is therefore located in the upper left corner of the symbol.</p>
  365. <section id="module">
  366. <h3>Module<a class="headerlink" href="#module" title="Link to this heading"></a></h3>
  367. <p>A <em>module</em> represents a single square “pixel” in the matrix (not to confuse with pixels in a raster image or screen).
  368. A dark module represents a binary one and a light module represents a binary zero.</p>
  369. </section>
  370. <section id="version">
  371. <h3>Version<a class="headerlink" href="#version" title="Link to this heading"></a></h3>
  372. <p>The <em>version</em> of a QR symbol determines the side length of the matrix (and therefore the maximum capacity of code words),
  373. ranging from 21×21 modules (441 total) at version 1 to 177×177 modules (31329 total) at version 40.
  374. The module count increases in steps of 4 and can be calculated by <code class="docutils literal notranslate"><span class="pre">4</span> <span class="pre">*</span> <span class="pre">version</span> <span class="pre">+</span> <span class="pre">17</span></code>.</p>
  375. <p>The maximum capacity for each version, mode and ECC level can be found in <a class="reference external" href="https://www.qrcode.com/en/about/version.html">this table (qrcode.com)</a>.</p>
  376. </section>
  377. </section>
  378. <section id="function-patterns">
  379. <h2>Function Patterns<a class="headerlink" href="#function-patterns" title="Link to this heading"></a></h2>
  380. <section id="finder-pattern">
  381. <h3>Finder Pattern<a class="headerlink" href="#finder-pattern" title="Link to this heading"></a></h3>
  382. <p>The <em>Finder Pattern</em> shall consist of three identical Position Detection Patterns located at the upper left, upper right
  383. and lower left corners of the symbol.</p>
  384. <p>Each Position Detection Pattern may be viewed as three superimposed concentric squares and is constructed of dark 7×7 modules,
  385. light 5×5 modules and dark 3×3 modules.</p>
  386. <p>The symbol is preferentially encoded so that similar patterns have a low probability of being encountered elsewhere in the symbol,
  387. enabling rapid identification of a possible QR Code symbol in the field of view. Identification of the three Position Detection
  388. Patterns comprising the finder pattern then unambiguously defines the location and orientation of the symbol in the field of view.</p>
  389. <p align="center">
  390. <img alt="Finder pattern" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAE3ElEQVR42u3d200cSxRAUWM5I5MCMREDMZFCOyb85x/am0HV04+atT4RFzN1R1tHR9XD07IsHz8A/uPn0b8AcG4iASSRAJJIAEkkgCQSQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQDSr61/4O/n56Nf0z9/luXT197e3j597fX19ehflZO69f1y9vf9CJMEkEQCSCIBJJEA0uaLy1Xv7/f/N15ednkpzGvzpfYk73uTBJBEAkgiASSRANI+i8s1IwuXPRZCcA8XfN+bJIAkEkASCSCJBJCOW1zCBfhoAZME8AWRAJJIAEkkgPRwi8tHWzqtLd62dsUz3eNcZmGSAJJIAEkkgCQSQDpucXnQY69u0I293lkWfof9P7/gxxyYJIAkEkASCSCJBJD2WVxe8A/n3LrgPPv3bf16t/55s3zfqgu+79eYJIAkEkASCSCJBJCelmX5OPqX4H7OvuDk/EwSQBIJIIkEkEQCSJvfuLz1UeJbl10jjyZbqK2b5XHvsxu51Tli6/e9SQJIIgEkkQCSSADJjUsgmSSAJBJAEgkgiQSQpvmr4h5hhvswSQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEA0ulvXK7dpNzazDcznd8Y52eSAL4gEkASCSCJBJBOv7hcM7Lo2WMRdXbOb8yjnZ9JAkgiASSRAJJIAOmSi8s1PuNyjPMbM/P5mSSAJBJAEgkgiQSQpllczrIkOorzGzPz+ZkkgCQSQBIJIIkEkC65uLzi47Zn4vzGPNr5mSSAJBJAEgkgiQSQ/FVxIJkkgCQSQBIJIIkEkC5543LNzJ8xCEcySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQDS6W9c3nqT0o1LuA+TBJBEAkgiASSRANIui8u1peLWLCnhPkwSQBIJIIkEkEQCSJsvLkduPo4sON24XGdpPMb5mSSAL4gEkEQCSCIBpM0XlyNLmD3+WwvOsde7xyLv7B7t/EwSQBIJIIkEkEQCSJsvLn8/Px/9mv75syyfvvZoS8pbWeiOmfn8TBJAEgkgiQSQRAJI+/xxnvf3+/8bLy83fdvMC6YRzmDMzOdnkgCSSABJJIAkEkA67q+K37hoXLXHInRiV3xc+Uwe7fxMEkASCSCJBJBEAkhPy7J8bPkDVx8VX1s0br24XPl5a4+KA99jkgCSSABJJIAkEkASCSCJBJBEAkgiASSRANJxj4of9Li3z7iE7zFJAEkkgCQSQBIJIO2zuBx5LBw4lEkCSCIBJJEAkkgAafPPuATmYpIAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAEkkgPQXNLQeTUTR7xsAAAAASUVORK5CYII=">
  391. </p>
  392. </section>
  393. <section id="alignment-pattern">
  394. <h3>Alignment Pattern<a class="headerlink" href="#alignment-pattern" title="Link to this heading"></a></h3>
  395. <p>The <em>Alignment Pattern</em> is a fixed reference pattern in defined positions, which enables the decode software to
  396. resynchronise the coordinate mapping of the modules in the event of moderate amounts of distortion of the image.</p>
  397. <p>Each Alignment Pattern may be viewed as three superimposed concentric squares and is constructed of dark 5×5
  398. modules, light 3×3 modules and a single central dark module.</p>
  399. <p>The number of Alignment Patterns depends on the symbol version, and they shall be placed in all Model 2 symbols of
  400. version 2 or larger in positions defined in the specification.</p>
  401. <p align="center">
  402. <img alt="Alignment Pattern" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAE+0lEQVR42u3dwXHiWBRAUTw1GZkUiIkYiIkU5Jg8u9m0+oIt4EvonKWrbePf1K1Xrz7wMU3T9wHgL/4Z/QCAdRMJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJD+ffQPvFwuo/+m/53P57se39y/g8Ph/ufL2p/3S5gkgCQSQBIJIIkEkB6+uJzzisXgmhZHbNOjl9rv8rw3SQBJJIAkEkASCSC9ZHE5Z8nCxQ1JtmqLz3uTBJBEAkgiASSRANKwxSVsgbcWMEkAN4gEkEQCSCIBpN0tLve2dPo8Hp/+O76mafSf+WPeWuB+JgkgiQSQRAJIIgGkYYvLUQtEN+gOh8P1+vvvPZ1GP/qHGPV/vsXnmkkCSCIBJJEAkkgA6SWLyy3eblvyadJr+nd3m1tILlhwrv1cXnHOW3zezzFJAEkkgCQSQBIJIH1M0/Q9+kHwPLMvFX/wjcstvlSc+5kkgCQSQBIJIIkEkB5+4/LeW2avuLW2xZflvsSbvNx77Zbc6lzi0c97kwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkgvc2nivvQHXgOkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJIK3+xuXn8fj03/E1TaP/zKdxfss4P5MEcINIAEkkgCQSQFr94nLW9fr77z2dRj/68ZzfMjs7P5MEkEQCSCIBJJEA0jYXl3PmFkJLFkx74/yWeePzM0kASSSAJBJAEgkgvc/i8k2WRMM4v2Xe+PxMEkASCSCJBJBEAkjbXFxu8OW2q+L8ltnZ+ZkkgCQSQBIJIIkEkHyqOJBMEkASCSCJBJBEAkjbvHE543K5/PG18/k8+mHB5pkkgCQSQBIJIIkEkNy4BJJJAkgiASSRAJJIAMmNSyCZJIAkEkASCSCJBJDcuASSSQJIIgEkkQCSSADJjUsgmSSAJBJAEgkgiQSQ3LgEkkkCSCIBJJEAkkgAyY1LIJkkgCQSQBIJIIkEkNy4BJJJAkgiASSRAJJIAGn1Ny7vvUnpxiU8h0kCSCIBJJEAkkgA6SWLy7ml4qNZUsJzmCSAJBJAEgkgiQSQHr64XHLzccmC043LeZ/H49N/x9c0jf4zn8b5mSSAG0QCSCIBJJEA0u7e43JvC87Zxdv1+vsfeDr98aW1L96WcH4mCeAGkQCSSABJJID0khuXo8wtJN95SbnIzEJt0YJub974/EwSQBIJIIkEkEQCSC95j8tXLAvvXZju7cbl3d5kyTbMG5+fSQJIIgEkkQCSSABp2KeKL7mZadG40NztQO63s/MzSQBJJIAkEkASCSANW1yOsrel59rfP3HtnJ9JArhBJIAkEkASCSCJBJBEAkgiASSRAJJIAGnYjctRNx+9xyX8jEkCSCIBJJEAkkgA6SWLyzV90jjwMyYJIIkEkEQCSCIBpI9pmr5HPwhgvUwSQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJD+AxtDFTzroADgAAAAAElFTkSuQmCC">
  403. </p>
  404. </section>
  405. <section id="timing-pattern">
  406. <h3>Timing Pattern<a class="headerlink" href="#timing-pattern" title="Link to this heading"></a></h3>
  407. <p>The horizontal and vertical Timing Patterns respectively consist of a one module wide row or column of alternating
  408. dark and light modules, commencing and ending with a dark module. The horizontal Timing Pattern runs across
  409. row 6 of the symbol between the separators for the upper Position Detection Patterns; the vertical Timing Pattern
  410. similarly runs down column 6 of the symbol between the separators for the left-hand Position Detection Patterns.
  411. They enable the symbol density and version to be determined and provide datum positions for determining module
  412. coordinates.</p>
  413. <p align="center">
  414. <img alt="Timing Pattern" src="data:image/png;base64,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">
  415. </p>
  416. </section>
  417. <section id="separators">
  418. <h3>Separators<a class="headerlink" href="#separators" title="Link to this heading"></a></h3>
  419. <p>A pattern of all light modules, one module wide, separating the Position Detection Patterns from the rest of the symbol.</p>
  420. <p align="center">
  421. <img alt="Separators" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAFCklEQVR42u3dy1EkRxRAUaGQA2OLfMEEXMAGXGgTxpaSLZiAdtpQutRMFvU9Z0kghk5V3HjxIrt5mqbp4w+A//Hn3r8AcGwiASSRAJJIAEkkgCQSQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQDSX2v/wLe3t71f039+vrx8+trz4/Hpa6+vr3v/qhzU3PO89Lnay9rPs0kCSCIBJJEAkkgAafXF5ZwtFoNHWphyTnPP0Oyz+/6+6Odd5bk3SQBJJIAkEkASCSBtsricM7JwcUOSszrjc2+SAJJIAEkkgCQSQNptcQlnsPSt4ldmkgCSSABJJIAkEkC63eLybrc1t3gr8RnP1EcLLGeSAJJIAEkkgCQSQNptcbnXsmvx5xhe2MjrvcrCb+j/+cLPuFz9392JSQJIIgEkkQCSSABpk8XlGZddSxecR/++tV/v2j/vjN+39K3iZ3zu55gkgCQSQBIJIIkEkJ6mafpY8wf+PXAbbQv//Pix96+wqaMvOM/obs+4SQJIIgEkkQCSSABp9RuXz4/Hou9buuw6419hPrqr3ATcy9LF4MitzhFrP/cmCSCJBJBEAkgiAaTVb1wC12KSAJJIAEkkgCQSQLrMXxX3Fmb4HiYJIIkEkEQCSCIBJDcugWSSAJJIAEkkgCQSQHLjEkgmCSCJBJBEAkgiASQ3LoFkkgCSSABJJIAkEkBy4xJIJgkgiQSQRAJIIgEkNy6BZJIAkkgASSSAJBJAcuMSSCYJIIkEkEQCSCIBJDcugWSSAJJIAEkkgCQSQHLjEkgmCSCJBJBEAkgiASQ3LoFkkgCSSABJJIAkEkA6/I3LuZuUa7vyzUznN8b5mSSAL4gEkEQCSCIBpMMvLueMLHq2WEQdnfMbc7fzM0kASSSAJBJAEgkgnXJxOcdnXI5xfmOufH4mCSCJBJBEAkgiAaTLLC6vsiTai/Mbc+XzM0kASSSAJBJAEgkgnXJxeca32x6J8xtzt/MzSQBJJIAkEkASCSD5q+JAMkkASSSAJBJAEgkgnfLG5Zwrf8Yg7MkkASSRAJJIAEkkgOTGJZBMEkASCSCJBJBEAkhuXALJJAEkkQCSSABJJIDkxiWQTBJAEgkgiQSQRAJIblwCySQBJJEAkkgASSSA5MYlkEwSQBIJIIkEkEQCSG5cAskkASSRAJJIAEkkgOTGJZBMEkASCSCJBJBEAkiHv3G59CalG5fwPUwSQBIJIIkEkEQCSJssLueWimuzpITvYZIAkkgASSSAJBJAWn1xOXLzcWTB6cblPEvjMc7PJAF8QSSAJBJAEgkgrb64/Pny8vmL7++//9/Omfl5S//d58fj09eOvjha28jr3WKRd3R3Oz+TBJBEAkgiASSRANLqi8u5xeBe5paZd1tSLuXG6pgrn59JAkgiASSRAJJIAGmTz7jcYoGz9CbblRdMI5zBmCufn0kCSCIBJJEAkkgAabe/Kj7yltkrL4m2cMa3Kx/J3c7PJAEkkQCSSABJJIC02+JyL3dbet7t9a7N+ZkkgC+IBJBEAkgiASSRAJJIAEkkgCQSQBIJIO1243Kvm2w+4xJ+jUkCSCIBJJEAkkgAaZPF5d0+ExCuxCQBJJEAkkgASSSA9DRN08fevwRwXCYJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkj/AmllMZTO3DMoAAAAAElFTkSuQmCC">
  422. </p>
  423. </section>
  424. <section id="quiet-zone">
  425. <h3>Quiet Zone<a class="headerlink" href="#quiet-zone" title="Link to this heading"></a></h3>
  426. <p>This is a region 4 modules wide which shall be free of all other markings, surrounding the symbol on all four sides.
  427. Its nominal reflectance value shall be equal to that of the light modules.</p>
  428. <p align="center">
  429. <img alt="Quiet Zone" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAE5klEQVR42u3d0W0bRxRAUSlIA64lvaQEtaAa1IJLcAusIbW4BPovCJDNFYNZze4Oz/k0aEIcEReDhyfy9X673V8A/sNvR/8AwLmJBJBEAkgiASSRAJJIAEkkgCQSQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIv+/9hH9+/370a/rb+/v7v/7t4+PjocfBy8vj75etxx3lx9vbrs/nJgEkkQCSSABJJIC0++Byy4zB4JkGR1zT3kPtVd73bhJAEgkgiQSQRAJIUwaXW0YGLjYkuaorvu/dJIAkEkASCSCJBJAOG1zCFfhoATcJ4BMiASSRAJJIAOnpBpfPNnSa8afEVzxTHy3wODcJIIkEkEQCSCIBpMMGl0cNu2zQjb3eVQZ+R/3Or/hec5MAkkgASSSAJBJAmjK4vOKwa+TbpM/0uL1f797Pt8rjHj2DK3KTAJJIAEkkgCQSQHq93273PZ/wr2/fjn5N/MPZB5zs74+fP3d9PjcJIIkEkEQCSCIBpN03Lh/dMpuxtWagtm2VTcCzG9nqHPHj7W3X53OTAJJIAEkkgCQSQLJxCYuxcQlMJRJAEgkgiQSQlvlWcX/CDF/DTQJIIgEkkQCSSADJxiUsxsYlMJVIAEkkgCQSQLJxCSQ3CSCJBJBEAkgiASQbl7AYG5fAVCIBJJEAkkgAycYlkNwkgCQSQBIJIIkEkGxcwmJsXAJTiQSQRAJIIgEkG5dAcpMAkkgASSSAJBJAsnEJi7FxCUwlEkASCSCJBJBsXALJTQJIIgEkkQCSSADJxiUsxsYlMJVIAEkkgCQSQDr9xuXWJuXeVt7MdH5jnJ+bBPAJkQCSSABJJIB0+sHllpFBz4xB1Nk5vzHPdn5uEkASCSCJBJBEAkiXHFxu8RmXY5zfmJXPz00CSCIBJJEAkkgAaZnB5SpDoqM4vzErn5+bBJBEAkgiASSRANIlB5dX/HPbM3F+Y57t/NwkgCQSQBIJIIkEkHyrOCzGt4oDU4kEkEQCSCIBpEtuXG5Z+TMG4UhuEkASCSCJBJBEAkg2LmExNi6BqUQCSCIBJJEAko1LILlJAEkkgCQSQBIJINm4hMXYuASmEgkgiQSQRAJINi6B5CYBJJEAkkgASSSAZOMSFmPjEphKJIAkEkASCSDZuASSmwSQRAJIIgEkkQCSjUtYjI1LYCqRAJJIAEkkgHT6jctHNyltXMLXcJMAkkgASSSAJBJAmjK43Boq7s2QEr6GmwSQRAJIIgEkkQDS7oPLkc3HkQGnjctthsZjnJ+bBPAJkQCSSABJJIC0++ByZAgz4/8acI693hmDvLN7tvNzkwCSSABJJIAkEkCasnF5lK0B07MNKR9loDtm5fNzkwCSSABJJIAkEkCa8hmXMwY4jw5MVx4wjXAGY1Y+PzcJIIkEkEQCSCIBpMO+VXxkM3PlIdEMZ9qKvaJnOz83CSCJBJBEAkgiAaTDBpdHebah57O93r05PzcJ4BMiASSRAJJIAEkkgCQSQBIJIIkEkEQCSIdtXB61yeYzLuH/cZMAkkgASSSAJBJAmjK4fLbPBISVuEkASSSAJBJAEgkgvd5vt/vRPwRwXm4SQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJB+AQVjRhvSjnmvAAAAAElFTkSuQmCC">
  430. </p>
  431. </section>
  432. </section>
  433. <section id="encoding-region">
  434. <h2>Encoding Region<a class="headerlink" href="#encoding-region" title="Link to this heading"></a></h2>
  435. <p>This region shall contain the symbol characters representing data, those representing error correction codewords,
  436. the Version Information and Format Information.</p>
  437. <section id="data">
  438. <h3>Data<a class="headerlink" href="#data" title="Link to this heading"></a></h3>
  439. <p>This region contains the encoded data and error correction code blocks. Data bits are placed starting at the bottom-right of
  440. the matrix and proceeding upward in a column that is 2 modules wide. When the column reaches the top, the next 2-module column
  441. starts immediately to the left of the previous column and continues downward. Whenever the current column reaches the edge of
  442. the matrix, move on to the next 2-module column and change direction. If a function pattern or reserved area is encountered,
  443. the data bit is placed in the next unused module.
  444. (see <a class="reference external" href="https://en.wikipedia.org/wiki/QR_code#Encoding">wikipedia QR code - Encoding</a> and <a class="reference external" href="https://www.thonky.com/qr-code-tutorial/module-placement-matrix#step-6-place-the-data-bits">thonky.com - QR Code Tutorial</a>)</p>
  445. <p align="center">
  446. <img alt="Data" src="data:image/png;base64,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">
  447. </p>
  448. </section>
  449. <section id="version-information">
  450. <h3>Version Information<a class="headerlink" href="#version-information" title="Link to this heading"></a></h3>
  451. <p>The Version Information is an 18 bit sequence containing 6 data bits, with 12 error correction bits calculated using the (18, 6)
  452. <a class="reference external" href="https://en.wikipedia.org/wiki/BCH_code">BCH code</a> which contains the version number.</p>
  453. <p align="center">
  454. <img alt="Version Information" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAE90lEQVR42u3d200jWRRA0WY0GXUMpNCpEAMpkAopVMdCCMzf/LhmU9O3qOdanxZY+MraOjq6Nk/TNH3+APgPf+39BwDHJhJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAEkkgCQSQBIJIP299hO+vr7u/Zr+9fLysujvm/s5ru3nx8eyH3x+fnjo9zQ9PHb09/0IkwSQRAJIIgEkkQDS6ovLOVssBo+0OOKkZpaUP97f//jprvK+N0kASSSAJBJAEgkgbbK4nDOycHFDkrM64/veJAEkkQCSSABJJIC02+ISTmHuFubMR8WvzCQBJJEAkkgASSSAdLvF5d1ua27xUeJTnuncQpJZJgkgiQSQRAJIIgGk3RaXey27/HOesdd7me8SHfjuyhFnfK+ZJIAkEkASCSCJBJA2WVyecdm1dMF59J9b+/Wu/Xx7/dyvt7dVn2/pGZyRSQJIIgEkkQCSSADpaZqmz73/CL7P0RecHJ9JAkgiASSRAJJIAGn1G5dLb5ltcWvNQm3eVW4CHt3ILdERa7/vTRJAEgkgiQSQRAJIblwCySQBJJEAkkgASSSAdJn/Ku4jzPA9TBJAEgkgiQSQRAJIblwCySQBJJEAkkgASSSA5MYlkEwSQBIJIIkEkEQCSG5cAskkASSRAJJIAEkkgOTGJZBMEkASCSCJBJBEAkhuXALJJAEkkQCSSABJJIDkxiWQTBJAEgkgiQSQRAJIblwCySQBJJEAkkgASSSA5MYlkEwSQBIJIIkEkEQCSG5cAskkASSRAJJIAEkkgHT4G5dzNynXduWbmc5vjPMzSQBfEAkgiQSQRAJIh19czhlZ9GyxiDo65zfmbudnkgCSSABJJIAkEkA65eJyju+4HOP8xlz5/EwSQBIJIIkEkEQCSJdZXF5lSbQX5zfmyudnkgCSSABJJIAkEkA65eLyjB+3PRLnN+Zu52eSAJJIAEkkgCQSQPJfxYFkkgCSSABJJIAkEkA65Y3LOVf+jkHYk0kCSCIBJJEAkkgAyY1LIJkkgCQSQBIJIIkEkNy4BJJJAkgiASSRAJJIAMmNSyCZJIAkEkASCSCJBJDcuASSSQJIIgEkkQCSSADJjUsgmSSAJBJAEgkgiQSQ3LgEkkkCSCIBJJEAkkgAyY1LIJkkgCQSQBIJIIkEkFa/cfnz42PdJ3x+fnzs/f3hoV9vbw+PuXEJ40wSQBIJIIkEkEQCSNt8VHxu+bgyS0r4HiYJIIkEkEQCSCIBpPUXlwtvSC7+3YV8x+W8uXNZ25XP2fmZJIAviASQRAJIIgGk1ReXv6fpz3954HeXLn8sOMde7xaLvKO72/mZJIAkEkASCSCJBJBWX1weaTEzt2C625JyKQvdMVc+P5MEkEQCSCIBJJEA0ibfcbnFAmfpwvTKC6YRzmDMlc/PJAEkkQCSSABJJIC0zT/nmTFyM/PKS6ItHOlW7Bnd7fxMEkASCSCJBJBEAki7LS73crel591e79qcn0kC+IJIAEkkgCQSQBIJIIkEkEQCSCIBJJEA0m43Lve6yeY7LuH/MUkASSSAJBJAEgkgbbK4vNt3AsKVmCSAJBJAEgkgiQSQnqZp+tz7jwCOyyQBJJEAkkgASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAOkfq5AfPjhiBy8AAAAASUVORK5CYII=">
  455. </p>
  456. </section>
  457. <section id="format-information">
  458. <h3>Format Information<a class="headerlink" href="#format-information" title="Link to this heading"></a></h3>
  459. <p>The Format Information is a 15 bit sequence containing 5 data bits, with 10 error correction bits calculated using the (15, 5) BCH code.
  460. It contains information on the error correction level applied to the symbol and on the masking pattern used,
  461. essential to enable the remainder of the encoding region to be decoded.</p>
  462. <p align="center">
  463. <img alt="Format Information" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAFGElEQVR42u3d0U3cWBSA4WWVBlILtEAJ2RJogRrSSlqgBVNLSmDf9mW8P45sfG3P9z2OSDRcWb+Oji4zD9M0ffwF8D/+Hv0GgGMTCSCJBJBEAkgiASSRAJJIAEkkgCQSQBIJIIkEkEQCSCIBJJEAkkgASSSAJBJAEgkgiQSQvm39H/78+XP07/Sf19fXm9cen55uXnufptFvlYOae57nnqujP/drmCSAJBJAEgkgiQSQNl9cztl6kTLnSIsjzmnpknKpqzz3JgkgiQSQRAJIIgGkXRaXc9YsXPZYCMFXOONzb5IAkkgASSSAJBJAGra4hDPY+hbmGZkkgCQSQBIJIIkEkO5vcfn2Nvod7GqPPyU+4yLPRwssZ5IAkkgASSSAJBJAGra4HLbsen6+fe3OvpxnzdlfZeE36vk745LXJAEkkQCSSABJJIC0y+LySMuuf378uHltbpW05tukj/RzS436/67yc0vP4IxMEkASCSCJBJBEAkgP0zR9jH4Te3r8/fvmtffv30e/rS9z9AUnx2eSAJJIAEkkgCQSQNr8xuXj09OyH1z6WZNzf9o9Y+4m5a+Xl61/vUu4yk3AUeaW37Pmnt25537hM77U+8YffWCSAJJIAEkkgCQSQLq7G5fAnzFJAEkkgCQSQBIJIF3mW8X9CTN8DZMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSAd/sbl3E3KrV35ZqbzW8f5mSSAT4gEkEQCSCIBpMMvLuesWfTssYg6Oue3zr2dn0kCSCIBJJEAkkgA6ZSLyzk+43Id57fOlc/PJAEkkQCSSABJJIB0mcXlVZZEozi/da58fiYJIIkEkEQCSCIBpFMuLs/457ZH4vzWubfzM0kASSSAJBJAEgkg+VZxIJkkgCQSQBIJIIkEkE5543LOlT9jEEYySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQCSG5dAMkkASSSAJBJAEgkguXEJJJMEkEQCSCIBJJEAkhuXQDJJAEkkgCQSQBIJILlxCSSTBJBEAkgiASSRAJIbl0AySQBJJIAkEkASCSC5cQkkkwSQRAJIIgEkkQDS4W9cLr1J6cYlfA2TBJBEAkgiASSRANIui8u5peLWLCnha5gkgCQSQBIJIIkEkDZfXK65+bhmwenG5TxL43Wcn0kC+IRIAEkkgCQSQNp8cblmCbPHv7XgXPf77rHIO7p7Oz+TBJBEAkgiASSRANIuNy5HmVsw/Xp5uXntffQbPQAL3XWufH4mCSCJBJBEAkgiAaRdPuNyjwXO4oXp8/Pta9O0xzEc2lWWbKNc+fxMEkASCSCJBJBEAkjDvlV8zc3MKy+J9nCkW7FndG/nZ5IAkkgASSSAJBJAGra4HObtbfQ72JUl7zrOzyQBfEIkgCQSQBIJIIkEkEQCSCIBJJEAkkgAadiNy2E32XzGJfwRkwSQRAJIIgEkkQDSLovLe/tMQLgSkwSQRAJIIgEkkQDSwzRNH6PfBHBcJgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAEkkgCQSQBIJIIkEkEQCSP8CTwEkCpt+cz0AAAAASUVORK5CYII=">
  464. </p>
  465. </section>
  466. <section id="darkmodule">
  467. <h3>Darkmodule<a class="headerlink" href="#darkmodule" title="Link to this heading"></a></h3>
  468. <p>The module in position <code class="docutils literal notranslate"><span class="pre">(4</span> <span class="pre">*</span> <span class="pre">version</span> <span class="pre">+</span> <span class="pre">9,</span> <span class="pre">8)</span></code> shall always be dark and does not form part of the Format Information.</p>
  469. <p align="center">
  470. <img alt="Darkmodule" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQkAAAEJCAYAAACHaNJkAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAEuklEQVR42u3dS27UUBBA0QSxI9hb1pC9mTWFGRPM7UbP7c/zOUMUUGJaV6VSpft9WZavN4B/+Hb0NwCcm0gASSSAJBJAEgkgiQSQRAJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAEkkgPR963/w8/Pz6J/pj4+Pj6e+v7Wvg7e3518vZ3/djzBJAEkkgCQSQBIJIG2+uFyzx2LwTIsjrmnrpfYsr3uTBJBEAkgiASSRANIui8s1IwsXF5Jc1RVf9yYJIIkEkEQCSCIBpMMWl3AF3lrAJAE8IBJAEgkgiQSQbre4vNvSaY9fJb7iM/XWAs8zSQBJJIAkEkASCSAdtrg8atnlgm7s551l4XfU//kVX2smCSCJBJBEAkgiAaRdFpdXXHaNfJr0mb5u6593639vlq979hlckUkCSCIBJJEAkkgA6X1Zlq+jvwle5+wLTs7PJAEkkQCSSABJJIC0+cXls1dme1ytWaitm+US8OxGrjpHbP26N0kASSSAJBJAEgkgubgEkkkCSCIBJJEAkkgAaZpPFfcrzPAaJgkgiQSQRAJIIgEkF5dAMkkASSSAJBJAEgkgubgEkkkCSCIBJJEAkkgAycUlkEwSQBIJIIkEkEQCSC4ugWSSAJJIAEkkgCQSQHJxCSSTBJBEAkgiASSRAJKLSyCZJIAkEkASCSCJBJBcXALJJAEkkQCSSABJJIDk4hJIJgkgiQSQRAJIIgEkF5dAMkkASSSAJBJAEgkgnf7icu2ScmszX2Z6fmM8P5ME8IBIAEkkgCQSQDr94nLNyKJnj0XU2Xl+Y+72/EwSQBIJIIkEkEQCSJdcXK7xHpdjPL8xMz8/kwSQRAJIIgEkkQDSNIvLWZZER/H8xsz8/EwSQBIJIIkEkEQCSJdcXF7x123PxPMbc7fnZ5IAkkgASSSAJBJA8qniQDJJAEkkgCQSQBIJIF3y4nLNzO8xCEcySQBJJIAkEkASCSC5uASSSQJIIgEkkQCSSADJxSWQTBJAEgkgiQSQRAJILi6BZJIAkkgASSSAJBJAcnEJJJMEkEQCSCIBJJEAkotLIJkkgCQSQBIJIIkEkFxcAskkASSRAJJIAEkkgOTiEkgmCSCJBJBEAkgiAaTTX1w+e0np4hJewyQBJJEAkkgASSSAtMvicm2puDVLSngNkwSQRAJIIgEkkQDS5ovLkcvHkQWni8t1lsZjPD+TBPCASABJJIAkEkDafHE5soTZ4+/++Pnzrz/7tSxbP4ZTG3nOeyzyzu5uz88kASSRAJJIAEkkgLTLxeVR1hZMd1tSPsvF6piZn59JAkgiASSRAJJIAGmX97jcY4Hz7MJ05gXTCM9gzMzPzyQBJJEAkkgASSSAdNinio9cZs68JNrDma5ir+huz88kASSRAJJIAEkkgHTY4vIod1t63u3n3ZrnZ5IAHhAJIIkEkEQCSCIBJJEAkkgASSSAJBJAOuzi8qhLNu9xCf/HJAEkkQCSSABJJIC0y+Lybu8JCDMxSQBJJIAkEkASCSC9L8vydfQ3AZyXSQJIIgEkkQCSSABJJIAkEkASCSCJBJBEAkgiASSRAJJIAEkkgCQSQBIJIIkEkEQCSCIBJJEA0m+uYiIceAR3NQAAAABJRU5ErkJggg==">
  471. </p>
  472. </section>
  473. </section>
  474. <section id="mode">
  475. <h2>Mode<a class="headerlink" href="#mode" title="Link to this heading"></a></h2>
  476. <p>The <em>mode</em> is the method of representing a defined character set as a bit string, with a <em>mode indicator</em>, a four-bit identifier indicating in which mode the next data sequence is encoded.</p>
  477. <table class="docutils align-default">
  478. <thead>
  479. <tr class="row-odd"><th class="head"><p>Mode</p></th>
  480. <th class="head"><p>Indicator</p></th>
  481. <th class="head"><p>Description</p></th>
  482. </tr>
  483. </thead>
  484. <tbody>
  485. <tr class="row-even"><td><p>Numeric</p></td>
  486. <td><p><code class="docutils literal notranslate"><span class="pre">0001</span></code></p></td>
  487. <td><p>Numeric encoding, 10 bits per 3 digits</p></td>
  488. </tr>
  489. <tr class="row-odd"><td><p>Alphanumeric</p></td>
  490. <td><p><code class="docutils literal notranslate"><span class="pre">0010</span></code></p></td>
  491. <td><p>Alphanumeric encoding, 11 bits per 2 characters</p></td>
  492. </tr>
  493. <tr class="row-even"><td><p>Byte</p></td>
  494. <td><p><code class="docutils literal notranslate"><span class="pre">0100</span></code></p></td>
  495. <td><p>Byte encoding, 8 bits per character</p></td>
  496. </tr>
  497. <tr class="row-odd"><td><p>Kanji</p></td>
  498. <td><p><code class="docutils literal notranslate"><span class="pre">1000</span></code></p></td>
  499. <td><p><a class="reference external" href="https://en.wikipedia.org/wiki/Kanji">Kanji</a> encoding (Japanese, <a class="reference external" href="https://en.wikipedia.org/wiki/Shift_JIS">Shift-JIS</a>), 13 bits per character</p></td>
  500. </tr>
  501. <tr class="row-even"><td><p>Hanzi<sup>*</sup></p></td>
  502. <td><p><code class="docutils literal notranslate"><span class="pre">1101</span></code></p></td>
  503. <td><p><a class="reference external" href="https://en.wikipedia.org/wiki/Chinese_characters">Hanzi</a> encoding (simplified Chinese, <a class="reference external" href="https://en.wikipedia.org/wiki/GB_18030">GB2312/GB18030</a>), 13 bits per character</p></td>
  504. </tr>
  505. <tr class="row-odd"><td><p>Structured append</p></td>
  506. <td><p><code class="docutils literal notranslate"><span class="pre">0011</span></code></p></td>
  507. <td><p>used to split a message across multiple (up to 16) QR symbols</p></td>
  508. </tr>
  509. <tr class="row-even"><td><p>ECI</p></td>
  510. <td><p><code class="docutils literal notranslate"><span class="pre">0111</span></code></p></td>
  511. <td><p><a class="reference external" href="https://en.wikipedia.org/wiki/Extended_Channel_Interpretation">Extended Channel Interpretation</a> (select alternate character set or encoding)</p></td>
  512. </tr>
  513. <tr class="row-odd"><td><p>FNC1 in first position</p></td>
  514. <td><p><code class="docutils literal notranslate"><span class="pre">0101</span></code></p></td>
  515. <td><p>see <a class="reference external" href="https://en.wikipedia.org/wiki/Code_128">Code 128</a>, also <a class="reference external" href="https://github.com/zxing/zxing/issues/1373">zxing/issues/1373</a></p></td>
  516. </tr>
  517. <tr class="row-even"><td><p>FNC1 in second position</p></td>
  518. <td><p><code class="docutils literal notranslate"><span class="pre">1001</span></code></p></td>
  519. <td><p></p></td>
  520. </tr>
  521. <tr class="row-odd"><td><p>Terminator</p></td>
  522. <td><p><code class="docutils literal notranslate"><span class="pre">0000</span></code></p></td>
  523. <td><p>End of message</p></td>
  524. </tr>
  525. </tbody>
  526. </table>
  527. <p><sup>*</sup> Hanzi mode is not part of the ISO specification, but the Chinese standard <a class="reference external" href="https://www.chinesestandard.net/PDF/English.aspx/GBT18284-2000">GB/T 18284</a></p>
  528. <section id="segment">
  529. <h3>Segment<a class="headerlink" href="#segment" title="Link to this heading"></a></h3>
  530. <p>Each segment consists of the 4 bit mode indicator followed by the data bit stream, where the content of the bit stream can vary depending on the mode:</p>
  531. <table class="docutils align-default">
  532. <thead>
  533. <tr class="row-odd"><th class="head"><p>Mode</p></th>
  534. <th class="head"><p>Bit stream contents</p></th>
  535. </tr>
  536. </thead>
  537. <tbody>
  538. <tr class="row-even"><td><p>Numeric</p></td>
  539. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0001</span></code> : 4 ] [ Character Count Indicator : variable ] [ Data Bit Stream : 3 1⁄3 × charcount ]</p></td>
  540. </tr>
  541. <tr class="row-odd"><td><p>Alphanumeric</p></td>
  542. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0010</span></code> : 4 ] [ Character Count Indicator : variable ] [ Data Bit Stream : 5 1⁄2 × charcount ]</p></td>
  543. </tr>
  544. <tr class="row-even"><td><p>Byte</p></td>
  545. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0100</span></code> : 4 ] [ Character Count Indicator : variable ] [ Data Bit Stream : 8 × charcount ]</p></td>
  546. </tr>
  547. <tr class="row-odd"><td><p>Kanji</p></td>
  548. <td><p>[ <code class="docutils literal notranslate"><span class="pre">1000</span></code> : 4 ] [ Character Count Indicator : variable ] [ Data Bit Stream : 13 × charcount ]</p></td>
  549. </tr>
  550. <tr class="row-even"><td><p>Hanzi</p></td>
  551. <td><p>[ <code class="docutils literal notranslate"><span class="pre">1101</span></code> : 4 ] [ Subset Indicator : 4 ] [ Character Count Indicator : variable ] [ Data Bit Stream : 13 × charcount ]</p></td>
  552. </tr>
  553. <tr class="row-odd"><td><p>Structured append</p></td>
  554. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0011</span></code> : 4 ] [ Symbol Position : 4 ] [ Total Symbols : 4 ] [ Parity : 8 ]</p></td>
  555. </tr>
  556. <tr class="row-even"><td><p>ECI</p></td>
  557. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0111</span></code> : 4 ] [ ECI Assignment number : variable ]</p></td>
  558. </tr>
  559. <tr class="row-odd"><td><p>FNC1 in first position</p></td>
  560. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0101</span></code> : 4 ] [ Numeric/Alphanumeric/Byte/Kanji/Hanzi payload : variable ]</p></td>
  561. </tr>
  562. <tr class="row-even"><td><p>FNC1 in second position</p></td>
  563. <td><p>[ <code class="docutils literal notranslate"><span class="pre">1001</span></code> : 4 ] [ Application Indicator : 8 ] [ Numeric/Alphanumeric/Byte/Kanji/Hanzi payload : variable ]</p></td>
  564. </tr>
  565. <tr class="row-odd"><td><p>Terminator</p></td>
  566. <td><p>[ <code class="docutils literal notranslate"><span class="pre">0000</span></code> : 4 ]</p></td>
  567. </tr>
  568. </tbody>
  569. </table>
  570. <p>The lenght of the Character Count Indicator for Numeric/Alphanumeric/Byte/Kanji/Hanzi varies, depending on the version:</p>
  571. <table class="docutils align-default">
  572. <thead>
  573. <tr class="row-odd"><th class="head"><p>Mode</p></th>
  574. <th class="head"><p>Version 1-9</p></th>
  575. <th class="head"><p>Version 10-26</p></th>
  576. <th class="head"><p>Version 27-40</p></th>
  577. </tr>
  578. </thead>
  579. <tbody>
  580. <tr class="row-even"><td><p>Numeric</p></td>
  581. <td><p>10</p></td>
  582. <td><p>12</p></td>
  583. <td><p>14</p></td>
  584. </tr>
  585. <tr class="row-odd"><td><p>Alphanumeric</p></td>
  586. <td><p>9</p></td>
  587. <td><p>11</p></td>
  588. <td><p>13</p></td>
  589. </tr>
  590. <tr class="row-even"><td><p>Byte</p></td>
  591. <td><p>8</p></td>
  592. <td><p>16</p></td>
  593. <td><p>16</p></td>
  594. </tr>
  595. <tr class="row-odd"><td><p>Kanji/Hanzi</p></td>
  596. <td><p>8</p></td>
  597. <td><p>10</p></td>
  598. <td><p>12</p></td>
  599. </tr>
  600. </tbody>
  601. </table>
  602. </section>
  603. <section id="extended-channel-interpretation-eci">
  604. <h3>Extended Channel Interpretation (ECI)<a class="headerlink" href="#extended-channel-interpretation-eci" title="Link to this heading"></a></h3>
  605. <p><a class="reference external" href="https://en.wikipedia.org/wiki/Extended_Channel_Interpretation">Extended Channel Interpretation</a> can be used to indicate an
  606. alternate character encoding for the following Byte segment (by default, ISO-8859-1 “Latin-1”).</p>
  607. <p>An ECI segment starts with the 4 bit indicator <code class="docutils literal notranslate"><span class="pre">0111</span></code> followed by the ECI Assignment number (8, 16 or 24 bits),
  608. followed by a Byte segment (<code class="docutils literal notranslate"><span class="pre">0100</span></code> …) where the contents are encoded according to the preceding ECI ID.</p>
  609. <p>The length of the ECI Assignment number depends on the given encoding ID:</p>
  610. <table class="docutils align-default">
  611. <thead>
  612. <tr class="row-odd"><th class="head"><p>ID</p></th>
  613. <th class="head"><p>length (bits)</p></th>
  614. </tr>
  615. </thead>
  616. <tbody>
  617. <tr class="row-even"><td><p>0 - 127</p></td>
  618. <td><p>8</p></td>
  619. </tr>
  620. <tr class="row-odd"><td><p>128 - 16383</p></td>
  621. <td><p>16</p></td>
  622. </tr>
  623. <tr class="row-even"><td><p>16384 - 999999</p></td>
  624. <td><p>24</p></td>
  625. </tr>
  626. </tbody>
  627. </table>
  628. </section>
  629. <section id="mixed-mode">
  630. <h3>Mixed Mode<a class="headerlink" href="#mixed-mode" title="Link to this heading"></a></h3>
  631. <p>Encoding modes can be mixed as needed within a QR symbol in order to optimize data usage.
  632. Each segment of data is encoded in the appropriate mode, with the basic structure
  633. <em>Mode Indicator / Character Count Indicator / Data</em> and followed immediately by the Mode Indicator commencing the next segment.</p>
  634. <p>[ Mode Indicator 1 ][ Mode bitstream 1 ]<br>
  635. …<br>
  636. [ Mode Indicator n ][ Mode bitstream n ]<br>
  637. …<br>
  638. [ <code class="docutils literal notranslate"><span class="pre">0000</span></code> End of message (Terminator) ]</p>
  639. </section>
  640. </section>
  641. <section id="ecc-error-correction-coding">
  642. <h2>ECC (Error Correction Coding)<a class="headerlink" href="#ecc-error-correction-coding" title="Link to this heading"></a></h2>
  643. <p>QR codes use <a class="reference external" href="https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction">Reed–Solomon error correction</a> that allow QR code readers to detect and correct errors.
  644. A detailed breakdown of the process can be found at <a class="reference external" href="https://www.thonky.com/qr-code-tutorial/error-correction-coding">thonky.com - QR Code Tutorial</a>.</p>
  645. <section id="ecc-level">
  646. <h3>ECC Level<a class="headerlink" href="#ecc-level" title="Link to this heading"></a></h3>
  647. <p>The number of data versus error correction bytes within each block depends on the version of the QR symbol and the error
  648. correction level. The higher the error correction level, the less storage capacity. The following table lists the approximate
  649. error correction capability at each of the four levels:</p>
  650. <table class="docutils align-default">
  651. <thead>
  652. <tr class="row-odd"><th class="head"><p>Level</p></th>
  653. <th class="head"><p>Short</p></th>
  654. <th class="head"><p>Capacity</p></th>
  655. <th class="head"><p>Indicator</p></th>
  656. </tr>
  657. </thead>
  658. <tbody>
  659. <tr class="row-even"><td><p>Low</p></td>
  660. <td><p>L</p></td>
  661. <td><p>7%</p></td>
  662. <td><p><code class="docutils literal notranslate"><span class="pre">01</span></code></p></td>
  663. </tr>
  664. <tr class="row-odd"><td><p>Medium</p></td>
  665. <td><p>M</p></td>
  666. <td><p>15%</p></td>
  667. <td><p><code class="docutils literal notranslate"><span class="pre">00</span></code></p></td>
  668. </tr>
  669. <tr class="row-even"><td><p>Quartile</p></td>
  670. <td><p>Q</p></td>
  671. <td><p>25%</p></td>
  672. <td><p><code class="docutils literal notranslate"><span class="pre">11</span></code></p></td>
  673. </tr>
  674. <tr class="row-odd"><td><p>High</p></td>
  675. <td><p>H</p></td>
  676. <td><p>30%</p></td>
  677. <td><p><code class="docutils literal notranslate"><span class="pre">10</span></code></p></td>
  678. </tr>
  679. </tbody>
  680. </table>
  681. </section>
  682. <section id="maximum-data-capacity">
  683. <h3>Maximum data capacity<a class="headerlink" href="#maximum-data-capacity" title="Link to this heading"></a></h3>
  684. <p>The maximum data capacity of a QR Code at version 40 for each ECC level and mode is shown in the following table:</p>
  685. <table class="docutils align-default">
  686. <thead>
  687. <tr class="row-odd"><th class="head"><p>ECC</p></th>
  688. <th class="head"><p>max. bits</p></th>
  689. <th class="head"><p>Numeric</p></th>
  690. <th class="head"><p>Alphanumeric</p></th>
  691. <th class="head"><p>Binary</p></th>
  692. <th class="head"><p>Kanji/Hanzi <sup>*</sup></p></th>
  693. </tr>
  694. </thead>
  695. <tbody>
  696. <tr class="row-even"><td><p>L</p></td>
  697. <td><p>23648</p></td>
  698. <td><p>7089</p></td>
  699. <td><p>4296</p></td>
  700. <td><p>2953</p></td>
  701. <td><p>1817</p></td>
  702. </tr>
  703. <tr class="row-odd"><td><p>M</p></td>
  704. <td><p>18672</p></td>
  705. <td><p>5596</p></td>
  706. <td><p>3391</p></td>
  707. <td><p>2331</p></td>
  708. <td><p>1435</p></td>
  709. </tr>
  710. <tr class="row-even"><td><p>Q</p></td>
  711. <td><p>13328</p></td>
  712. <td><p>3993</p></td>
  713. <td><p>2420</p></td>
  714. <td><p>1663</p></td>
  715. <td><p>1024</p></td>
  716. </tr>
  717. <tr class="row-odd"><td><p>H</p></td>
  718. <td><p>10208</p></td>
  719. <td><p>3057</p></td>
  720. <td><p>1852</p></td>
  721. <td><p>1273</p></td>
  722. <td><p>784</p></td>
  723. </tr>
  724. </tbody>
  725. </table>
  726. <p><sup>*</sup> Hanzi mode stores one character less than Kanji as it uses an additional subset indicator of 4 bits length.</p>
  727. </section>
  728. </section>
  729. <section id="data-masking">
  730. <h2>Data masking<a class="headerlink" href="#data-masking" title="Link to this heading"></a></h2>
  731. <p>Masking is the process of XORing the bit pattern in the encoding region with a masking pattern to provide a symbol with more
  732. evenly balanced numbers of dark and light modules and reduced occurrence of patterns which would interfere with fast processing of the image.</p>
  733. <section id="evaluation">
  734. <h3>Evaluation<a class="headerlink" href="#evaluation" title="Link to this heading"></a></h3>
  735. <p>The mask pattern evaluation is done for each of the 8 mask patterns, the pattern with the lowest penalty score shall be used for the final output.
  736. During the evaluation, 4 rules are applied to get the penalty score:</p>
  737. <ul class="simple">
  738. <li><p>find repetitive cells with the same color Example: 00000 or 11111 (horizontal and vertical).</p></li>
  739. <li><p>find 2×2 blocks with the same color</p></li>
  740. <li><p>find consecutive runs of 1:1:3:1:1:4 starting with black, or 4:1:1:3:1:1 starting with white</p></li>
  741. <li><p>calculate the ratio of dark cells and give increasing penalty if the ratio is far from 50%</p></li>
  742. </ul>
  743. </section>
  744. <section id="mask-pattern">
  745. <h3>Mask pattern<a class="headerlink" href="#mask-pattern" title="Link to this heading"></a></h3>
  746. <table class="docutils align-default">
  747. <thead>
  748. <tr class="row-odd"><th class="head"><p>Pattern</p></th>
  749. <th class="head"><p>Mask<sup>*</sup></p></th>
  750. <th class="head"><p>Example</p></th>
  751. </tr>
  752. </thead>
  753. <tbody>
  754. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">000</span></code></p></td>
  755. <td><p><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">+</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  756. <td><p><img alt="Mask pattern 000" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACMklEQVR42u2d0W3CMBBAk4oFmAVWYAQ6AitkBlZgBBghK4RZGIH+9cdWe5Ij5x5679M6VOqnky+HnBvP5/N7SMI0TaG4w+tVLp5O5do8h+Key1KsXa/Xrbfjl6+tv4D8j5IAKAmAkgDsaovRA7yF6MFci7s/HmVgsEioxgXZal/MJABKAqAkAEoCsIsGtjyBtxy41c9eLuVaQ8dhqHQcMu2LmQRASQCUBEBJAMKFQypaioSGjsNWmEkAlARASQCUBCB94VD9qaKlSFi549ADMwmAkgAoCYCSAIQLhx6/74f/7vFYrm3UceixL2YSACUBUBIAJQGoFg6ZbhTUvssUvAURjgse/lvti5kEQEkAlARASQDGZVnSXMeMcli54/Dc77f+l/7ETAKgJABKAqAkAGPtPQ61J/Dok/racTV6vMchytodjNpnzSQASgKgJABKAjC+57nsOKx9ayF4WK/dSfiUODMJgJIAKAmAkgCM72EoC4cOh+H37Vas3dd+P8OHxJlJAJQEQEkAlATAjgMgzkwCoCQASgKgJAB2HABxZhIAJQFQEgAlAUh/q6LLrIrkcWYSACUBUBIAJQEYnY6ZP85MAqAkAEoCoCQA6adjVkl0qNtxkGEYlIRASQCUBCD9dMwusyqSx5lJAJQEQEkAlAQg/ZCrLrMqkseZSQCUBEBJAJQEIH3hYMfBTEKgJABKAqAkAE7HBMSZSQCUBEBJAJQEADkd046DpENJAJQEQEkAfgCZwkU4vByFygAAAABJRU5ErkJggg=="></p></td>
  757. </tr>
  758. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">001</span></code></p></td>
  759. <td><p><code class="docutils literal notranslate"><span class="pre">y</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  760. <td><p><img alt="Mask pattern 001" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACFklEQVR42u3d4W2CUBRAYWhcwFl0BUegI7iCM7hKHYEVcBZHsAN4k96EV949er6fplHCyQ34KjBO0/QcirhcLi+vXa/Xl9d+bremn3tfltTn9vLVewP0NyMBGAnASAC76MXoAN5a9sAcbsv5/O/bl96WxqL94iQBGAnASABGAthl/3DNN/A1B9wtVhyGYMWh0n5xkgCMBGAkACMBpE8ceqm04tCLkwRgJAAjARgJoPyJQ+h0avt+K1YctuAkARgJwEgARgJInzhs8f/9SPivinnusi2RLfaLkwRgJAAjARgJIDxxqHRFQeS+36e2OXuVRvbg32u/OEkARgIwEoCRAMZlWcpcjpl1eDyavl90IlKJkwRgJAAjARgJYIzu49D6m3pkzeWYh+Ox6U64J3/j0Hq1IrufnSQAIwEYCcBIAONznrusOETf8luvJLwLJwnASABGAjASwPgchi4nDt/T9PJa8/szvAknCcBIAEYCMBKAKw4AThKAkQCMBGAkAFccAJwkACMBGAnASADlr6oI7+PgnSNVjZEAjARgJIBdpXs2pK/SaH3nyOKcJAAjARgJwEgAPh0TwEkCMBKAkQCMBFD+6ZghVxxUjZEAjARgJADmQ64KPatiC04SgJEAjARgJIDyJw7hjyM/7OoLJwnASABGAjASQPmnY/obBycJwUgARgIwEkD5p2O64uAkIRgJwEgARgL4Bfx5hh9KaZ3CAAAAAElFTkSuQmCC"></p></td>
  761. </tr>
  762. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">010</span></code></p></td>
  763. <td><p><code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">mod</span> <span class="pre">3</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  764. <td><p><img alt="Mask pattern 010" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACAUlEQVR42u3d3Y2CQBRAYdjQgLVoC5ZAC7ZADbSylmALUIsl6Nu+zE32JqMwR8/3SDCYOZmg/PbjOD66RkzTlFrveDqVC2+33EbO52LRuizFsnme9x6OPz97fwH9z0gARgIwEsAQLczuwGu0tGPO2mtcnEkARgIwEoCRAIbsijU7+podbrTd3zcPSu33y8qOizMJwEgARgIwEoCRAIwEYCQAIwEYCcBIAEYCMBKAkQCMBJA+VbHF+X2iLcbFmQRgJAAjARgJIPzh0PqFi9m7IKKd+jyO5XrJ7e41Ls4kACMBGAnASAD9sizN3I4ZCS+OvF7LFV98O2ZLnEkARgIwEoCRAProOQ7hP/UN/m1/23McvKvigxgJwEgARgLoH11XHnGo2AlnP7seDsWy4/3+9u0SP+tMAjASgJEAjASQvjjy1cJTEJfLroPRKmcSgJEAjARgJIDdfjiEh+mzRxy+jDMJwEgARgIwEoBHHACcSQBGAjASgJEAhqo7Cio+Gx1xWIP1Wn/k9BacSQBGAjASgJEAhpae2RD9mAhPaUS3Y34wZxKAkQCMBGAkgObfjukRB2cSgpEAjARgJIDm344pZxKCkQCMBGAkACMBGAnASABGAjASgJEAjARgJAAjARgJoPm3Y3pxpDMJwUgARgIwEkDzb8f04khnEoKRAIwEYCSAJ1IreE4+WeVxAAAAAElFTkSuQmCC"></p></td>
  765. </tr>
  766. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">011</span></code></p></td>
  767. <td><p><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">+</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">3</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  768. <td><p><img alt="Mask pattern 011" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACQElEQVR42u2d0W3CMBBAkyoLMEtZgRHCCKzADKzACGUEVgizMAIdwCfVqt3kXnnv0+IS5KfTObk4Ged5fg1JOJ/PxdjlcinGvm63Mvh+rzvJ4VAMPZal6rxb8bH1H5CfURIAJQFQEoApGowKeG+aCnPDIqE6NmCreTGTACgJgJIAKAnAVPvDlkLfUnDD2OezHOu8SMg0L2YSACUBUBIAJQGoXjhsxRqtiiFoVWTCTAKgJABKAqAkAOkXDuFV+elUF7zRXYjemEkAlARASQCUBKB64bBGf7+JjRYJa8yLmQRASQCUBEBJAMKFQ6YdBdF/CXdfzHP5u93u18fLNC9mEgAlAVASACUBGJdlSbMdMyJ8xqFzq+IRLDAyYSYBUBIAJQFQEoCp+oq+8mq7Jbb2eGvsquh9Z6JlXswkAEoCoCQASgIwvoahvOOwwnsSoqv8z2hB0Pm8xFgzCYCSACgJgJIAjK/7va5V0bloHoNnEsIWBLDQ9441kwAoCYCSACgJQLyrYoWiGT24OOz3f35eYqyZBEBJAJQEQEkANmtVHK/XYqz3Q4//JdZMAqAkAEoCoCQA7qoAxJpJAJQEQEkAlARgyvTOhqaXKSUq9LYq3hAlAVASACUBYH4dM3mh7x1rJgFQEgAlAVASAObXMW1VSDaUBEBJAJQEIP1HrqqfcUhU6G1VvCFKAqAkAEoCkH7hEJK80PeONZMAKAmAkgAoCUD6r2PaqjCTECgJgJIAKAkA8uuYtiokHUoCoCQASgLwDYUj9KHmElU3AAAAAElFTkSuQmCC"></p></td>
  769. </tr>
  770. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">100</span></code></p></td>
  771. <td><p><code class="docutils literal notranslate"><span class="pre">((y</span> <span class="pre">intdiv</span> <span class="pre">2)</span> <span class="pre">+</span> <span class="pre">(x</span> <span class="pre">intdiv</span> <span class="pre">3))</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  772. <td><p><img alt="Mask pattern 100" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACOUlEQVR42u3d623CMBRAYaiyALOUFRghHYEVmIEVGAFGYIUwCyPQAXKrXmET+0Tn+xlVTZQjK0+T7TiOr00nTqfTbNn5fJ4tux6P76/kcJgtekxTar2tfLXeAP3PSABGAjASwBAtjA7gtWUPzOG2PJ8f3770tlQW7RdHEoCRAIwEYCSAIfuHJVfg1Q+4wV2DtPu96qYssV8cSQBGAjASgJEA0icOrYSPKlpv1MIcSQBGAjASgJEAuj9xCJXcNYjuVgTvOPTEkQRgJAAjARgJIH3isMTzfaIl9osjCcBIAEYCMBJAeOLQ04yCyGO3S21zOEtjHOd/l1xvq/3iSAIwEoCRAIwEsJ2mqZvpmJHwHYfb7f1/GDzmiE5EeuJIAjASgJEAjAQwZK/Us9JX/iVX75XfcYjuQtSW3adOx4QyEoCRAIwEsH1tNu/fcSg4gEdX+d/7/cfX22wqZ8F6HUkARgIwEoCRAIZWB8PoKv+a3Rbgwb9kvY4kACMBGAnASADNpmP29IuQvXMkARgJwEgARgJo9qji53KZLUu/9Ai8a+CjipUzEoCRAIwEwJxVUfkjV2meOOgvRgIwEoCRAIaefrMhPZsDePD3HYeVMxKAkQCMBMD8OmbJ7zgAOZIAjARgJAAjAXT/dczwUQXwroGPKlbOSABGAjASQPcfuXL2hSMJwUgARgIwEkD3Jw4h4F0D33FYOSMBGAnASAB+HRPAkQRgJAAjARgJoPuvY/qOgyMJwUgARgIwEsAvrlWV7ncl77wAAAAASUVORK5CYII="></p></td>
  773. </tr>
  774. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">101</span></code></p></td>
  775. <td><p><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">+</span> <span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">3</span> <span class="pre">=</span> <span class="pre">0</span></code><br>or:<br><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">6</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  776. <td><p><img alt="Mask pattern 101" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACTElEQVR42u3d3XHCMBBFYZNxA9QCLVCCUwItUAOtkBJowdRCCeQtL95MFCTkPcn5HhkHOb6zI/ln8WaapseQxOl0Ktput983Hfc2z4vPzufz2ofjy9vaO6CfGRKAIQEYEsAYfVg6gdconZij7S7X6/MDHw5P/+lax8VKAjAkAEMCMCSAsXTDmjPw5hNuNPnXLCYq9DguVhKAIQEYEoAhARQvHFKJFgmJFhOtWUkAhgRgSACGBJB+4RCelUfPOPyRRULESgIwJABDAjAkgOKFQ4/7+8USLRJ6HBcrCcCQAAwJwJAAwoVDpo6CaF+iybp4u2lablexLz1YSQCGBGBIAIYEsJnnOU07ZiTsqjgen//C4FmIqB0zEysJwJAADAnAkADG0jP11qrGbfwgZOmVhNL9a91pYSUBGBKAIQEYEsDmMQzLKw41XQuF292228Vnu/v95eMSt7OSAAwJwJAADAmgvKuicQtk8S2ItVovE41rJQEYEoAhARgSQF07ZsWkGV72j644NB53rf+3hpUEYEgAhgRgSADxrYoO3oPuhsvHx9rHIyUrCcCQAAwJwJAA7KoYhj5XEirGtZIADAnAkAAMCWDM9JsN0e2LVL8cudKiw0oCMCQAQwIwJID0b8cM9XhwsXW3RMW4VhKAIQEYEoAhAfh2zO/YVaHfMCQAQwIwJID0L7kK2VWhbAwJwJAADAmAuXCIzvwzfV/jca0kAEMCMCQAQwL4f2/HtKtCr2BIAIYEYEgAyLdjhr/3kHzyr2ElARgSgCEBGBLAJ/xytquLK9I4AAAAAElFTkSuQmCC"></p></td>
  777. </tr>
  778. <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">110</span></code></p></td>
  779. <td><p><code class="docutils literal notranslate"><span class="pre">((x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">+</span> <span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">3)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code><br>or:<br><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">6</span> <span class="pre">&lt;</span> <span class="pre">3</span></code></p></td>
  780. <td><p><img alt="Mask pattern 110" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACZklEQVR42u2d7W3CMBBAScUCzFJWYIR0BFZgBlaBEVghzMIIdICc1Cu2bL/ovZ9W0gt5Otm9+GOa5/m9G4TL5bJqu16vq7bb/V417nNZUnF78dX7AeRvlARASQCUBGAfNUYdeG2KOubH4/N7T6ePb+31XswkAEoCoCQASgKwz15Y0tFX73CznX/JACNJi/diJgFQEgAlAVASgPTAoRdh53o+r9sKKgmjYyYBUBIAJQFQEoDhBw7pOQ5RdWEjgwkzCYCSACgJgJIApAcOLb7vp+MOVHFo8V7MJABKAqAkAEoCEA4cRlpRED1LuPpinnPXRX+v4FlaYCYBUBIAJQFQEoBpWZZhlmNm+X69Pr85qExEyzFHwkwCoCQASgKgJABTtI9Dtvze6z/w9D4OyXkPP8lqRfYdZCsdWcwkAEoCoCQASgIwvXe7dcUhO9Gw4Lrn4bBqCysJleMSrzOTACgJgJIAKAlA2aqKgs4wmpNwiyY9Vo7b6/eWYCYBUBIAJQFQEoB8xSFLstOM5hXUnruQptNOlNm4ZhIAJQFQEgAlAYgHDg2I5hXUPoNiK5hJAJQEQEkAlARg+FUV4QZQ2U8aEcDKhJkEQEkAlARASQD2I+3ZkN5MqcVZFSVzFyrHNZMAKAmAkgAoCcB2TsesXUloMRHSVRXbQUkAlARASQC2czqmqyqkJ0oCoCQASgIw/CFXIS0GCdnPDQ3imkkAlARASQCUBGD4gUNYrTge6wbpdYpmMq6ZBEBJAJQEQEkAhj8dM2TwfRdqxzWTACgJgJIAKAkA8nTMorMqsriqQv6DkgAoCYCSAPwCMNS/C0jBNg8AAAAASUVORK5CYII="></p></td>
  781. </tr>
  782. <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">111</span></code></p></td>
  783. <td><p><code class="docutils literal notranslate"><span class="pre">((x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">3</span> <span class="pre">+</span> <span class="pre">(x</span> <span class="pre">+</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">2)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code><br>or:<br><code class="docutils literal notranslate"><span class="pre">(x</span> <span class="pre">+</span> <span class="pre">y</span> <span class="pre">+</span> <span class="pre">(x</span> <span class="pre">y)</span> <span class="pre">mod</span> <span class="pre">3)</span> <span class="pre">mod</span> <span class="pre">2</span> <span class="pre">=</span> <span class="pre">0</span></code></p></td>
  784. <td><p><img alt="Mask pattern 111" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABpCAYAAAA5gg06AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAACd0lEQVR42u2dwY3CMBAAkxMNUAvXAiWEEmiBGmiBEqAEWgi1UAL3u09WdyscJTto5hk5Cni08mZtx/0wDK+uCKfTKdVu93xOL+7302v3e6rdYxwn187n89rd8cvX2j9A/kdJAJQEQEkANtHF7ADeQtPAHCUJ2XZRMpFkrX4xkgAoCYCSACgJwCbbsGWgn33ATVYSQqJ2QcWhUr8YSQCUBEBJAJQEIJ04lKJhWqKl4rAWRhIAJQFQEgAlAWAmDtnBP5tMNFQclsBIAqAkAEoCoCQA6cRhifn9iGgq4Hq7TRu2JBMNLNEvRhIAJQFQEgAlAQgTh0o7CiKyuyCiQT3brlK/GEkAlARASQCUBKAfx7HMdswsu+/v928OKg6P7Xbtv/QnRhIAJQFQEgAlAeij7zi0vIFn3/Ijsvdej8fpzdldFQGHYXj7tzhVIV3XKQmBkgAoCUD/ut+nFYe5dy0kP7oUVhJmfi6xnZEEQEkAlARASQD6V9e9P1XRsNDwcLlMroWLHmd+bktlYq3nGkkAlARASQCUBCBfcciSHFyjdQVzr11IUzyZMJIAKAmAkgAoCUBccVig/B5WHLJrFwpNIyzRzkgCoCQASgKgJADld1Wkv+OQBViZMJIAKAmAkgAoCUD/0adjZimeTBhJAJQEQEkAlASg/OmYTV+OLDTd4K6KD0dJAJQEQEkAyp+OGd4brYWImPsUzbnPyEg+10gCoCQASgKgJADlD7la5KyK4smEkQRASQCUBEBJAMonDumKQ/HpBndVfDhKAqAkAEoCUP50zJDiFYK5n2skAVASACUBUBKA8rsqljirwl0V0oySACgJgJIA/AAqmPkQSHu6hwAAAABJRU5ErkJggg=="></p></td>
  785. </tr>
  786. </tbody>
  787. </table>
  788. <p><sup>*</sup> where <code class="docutils literal notranslate"><span class="pre">x</span></code> = column (width) and <code class="docutils literal notranslate"><span class="pre">y</span></code> = row (height), with <code class="docutils literal notranslate"><span class="pre">x,y</span> <span class="pre">=</span> <span class="pre">0,0</span></code> for the top left module<br></p>
  789. </section>
  790. </section>
  791. <section id="reflectance">
  792. <h2>Reflectance<a class="headerlink" href="#reflectance" title="Link to this heading"></a></h2>
  793. <p>Symbols are intended to be read when either dark on light or light on dark.
  794. The International Standard (ISO/IEC 18004) is based on dark images on a light background (example on the left),
  795. reflectance reversal therefore means a light image on dark background (example on the right).</p>
  796. <p align="center">
  797. <img alt="Normal reflectance" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALkAAAC5CAYAAAB0rZ5cAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAEOUlEQVR42u3dS24jNxRA0XSQPXsN3pv31JllVAGqQ4aPvn3O2JJK8gWBB9bnx9fX188/IOzP6QOA/5vIyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eX/tfsPPz8/p7/SPj4+P/3x8T69d8fS5K8c39bucsPu3t5KTJ3LyRE6eyMnbPng+2T1IPJkaKN8ey9vPvWlYvun/tsJKTp7IyRM5eSIn78jg+WRl4FgZiFaGwpVjnhpGVz53929wYpB9YiUnT+TkiZw8kZM3Nnje5MRQeOL01t1DZoWVnDyRkydy8kROnsHzX0xd8zi1G1lmJSdP5OSJnDyRkzc2eE7txK3sUD45cerp1Cm+K8d8Eys5eSInT+TkiZy8I4PnTTtxK6fBTp1+O3U6703/txVWcvJETp7IyRM5eT++vr5+Th/EtBPD6NvPPeE77lqusJKTJ3LyRE6eyMnbPnjuHqZWTkc9MTyu/AZTp/PedGrxif+HlZw8kZMncvJETt72U21PDIpvP3dqGJ16/MnTa0+cknv7DqqVnDyRkydy8kRO3vbB88Q1hTcNmW+/x9RnTJ3Ou3vXd4WVnDyRkydy8kRO3pEdz6ldt5uuybzpGZsnhtHdO98rrOTkiZw8kZMncvKO3FzoxED59rVvj29qgN79u5wYbm/a3XxiJSdP5OSJnDyRkzd2c6Gp6wxPXFs69blTr337fd+y4wm/SOTkiZw8kZN35DmeJ3YP377f1A2MVtx0fehNpwy/ZSUnT+TkiZw8kZN3ZPCc2mVcOZap32XFTacH33QqsJWcPJGTJ3LyRE7eVTueK1Z2PN++39vvtvJ3u7/vidfeNMw/sZKTJ3LyRE6eyMkbu6vtTa99+35PbtrN3W33KblTrOTkiZw8kZMncvKO3FxoaifupjvOvj3mlffbbep/uZuVnDyRkydy8kRO3pHHqTw5cU3h1Pc4ca3l1A7v7t/lBCs5eSInT+TkiZy8628udOLxHVNuOpX1O/5+b1nJyRM5eSInT+Tkje14Ttm9Kzi1s3dimH/7ubt5jif8IpGTJ3LyRE7ekWs8p9y+W3ri9Na3nzt1KrDHqcAGIidP5OSJnLyxx6nsdtM1o2+P5aabKd10N93drOTkiZw8kZMncvKODJ5PbroRzu4dwJUB8MSgeGJIPzF8v2UlJ0/k5ImcPJGTNzZ4Tnk76Jy4a+zuIXPquaW33xTKSk6eyMkTOXkiJ++3GzzfOnEt44md25Xv5jme8E2InDyRkydy8sYGz9uvKZy6sc7uU3ffHt+KqTvsvmUlJ0/k5ImcPJGTN/Ycz+9o6i60b4/lphss3cRKTp7IyRM5eSIn77d7jie/Hys5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+Tk/Q00zDn7P29DTwAAAABJRU5ErkJggg==">
  798. <img alt="Reversed reflectance" style="margin: 0.25em;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALkAAAC5CAYAAAB0rZ5cAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAEOUlEQVR42u3dS24jNxRA0XSQLXotXoNX3ZllVAGqQ4aPvn3O2JJK8gWBB9bnx8fHx88/IOzP6QOA/5vIyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eX/tfsPPz8/p7/SPr6+v/3x8T69d8fS5K8c39bucsPu3t5KTJ3LyRE6eyMnbPng+2T1IPJkaKN8ey9vPvWlYvun/tsJKTp7IyRM5eSIn78jg+WRl4FgZiFaGwpVjnhpGVz53929wYpB9YiUnT+TkiZw8kZM3Nnje5MRQeOL01t1DZoWVnDyRkydy8kROnsHzX0xd8zi1G1lmJSdP5OSJnDyRkzc2eE7txK3sUD45cerp1Cm+K8d8Eys5eSInT+TkiZy8I4PnTTtxK6fBTp1+O3U6703/txVWcvJETp7IyRM5eT8+Pj5+Th/EtBPD6NvPPeE77lqusJKTJ3LyRE6eyMnbPnjuHqZWTkc9MTyu/AZTp/PedGrxif+HlZw8kZMncvJETt72U21PDIpvP3dqGJ16/MnTa0+cknv7DqqVnDyRkydy8kRO3vbB88Q1hTcNmW+/x9RnTJ3Ou3vXd4WVnDyRkydy8kRO3pEdz6ldt5uuybzpGZsnhtHdO98rrOTkiZw8kZMncvKO3FzoxED59rVvj29qgN79u5wYbm/a3XxiJSdP5OSJnDyRkzd2c6Gp6wxPXFs69blTr337fd+y4wm/SOTkiZw8kZN35DmeJ3YP377f1A2MVtx0fehNpwy/ZSUnT+TkiZw8kZN3ZPCc2mVcOZap32XFTacH33QqsJWcPJGTJ3LyRE7eVTueK1Z2PN++39vvtvJ3u7/vidfeNMw/sZKTJ3LyRE6eyMkbu6vtTa99+35PbtrN3W33KblTrOTkiZw8kZMncvKO3FxoaifupjvOvj3mlffbbep/uZuVnDyRkydy8kRO3pHHqTw5cU3h1Pc4ca3l1A7v7t/lBCs5eSInT+TkiZy8628udOLxHVNuOpX1O/5+b1nJyRM5eSInT+Tkje14Ttm9Kzi1s3dimH/7ubt5jif8IpGTJ3LyRE7ekWs8p9y+W3ri9Na3nzt1KrDHqcAGIidP5OSJnLyxx6nsdtM1o2+P5aabKd10N93drOTkiZw8kZMncvKODJ5PbroRzu4dwJUB8MSgeGJIPzF8v2UlJ0/k5ImcPJGTNzZ4Tnk76Jy4a+zuIXPquaW33xTKSk6eyMkTOXkiJ++3GzzfOnEt44md25Xv5jme8E2InDyRkydy8sYGz9uvKZy6sc7uU3ffHt+KqTvsvmUlJ0/k5ImcPJGTN/Ycz+9o6i60b4/lphss3cRKTp7IyRM5eSIn77d7jie/Hys5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+TkiZw8kZMncvJETp7IyRM5eSInT+Tk/Q2qDCsxrG9jfAAAAABJRU5ErkJggg==">
  799. </p>
  800. </section>
  801. </section>
  802. </div>
  803. </div>
  804. <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
  805. <a href="../Built-In-Output/QRStringText.html" class="btn btn-neutral float-left" title="QRStringText" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
  806. <a href="URI-Content.html" class="btn btn-neutral float-right" title="Popular content and URI schemes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
  807. </div>
  808. <hr/>
  809. <div role="contentinfo">
  810. <p>&#169; Copyright 2023, smiley.</p>
  811. </div>
  812. </footer>
  813. </div>
  814. </div>
  815. </section>
  816. </div>
  817. <script>
  818. jQuery(function () {
  819. SphinxRtdTheme.Navigation.enable(true);
  820. });
  821. </script>
  822. </body>
  823. </html>