| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853 |
- <!DOCTYPE html>
- <html class="writer-html5" lang="en" data-content_root="../">
- <head>
- <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Terminology — PHP-QRCode main
- Manual</title>
- <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
- <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
-
- <script src="../_static/jquery.js?v=5d32c60e"></script>
- <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
- <script src="../_static/documentation_options.js?v=a8da1a53"></script>
- <script src="../_static/doctools.js?v=9bcbadda"></script>
- <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
- <script src="../_static/js/theme.js"></script>
- <link rel="index" title="Index" href="../genindex.html" />
- <link rel="search" title="Search" href="../search.html" />
- <link rel="next" title="Popular content and URI schemes" href="URI-Content.html" />
- <link rel="prev" title="QRStringText" href="../Built-In-Output/QRStringText.html" />
- </head>
- <body class="wy-body-for-nav">
- <div class="wy-grid-for-nav">
- <nav data-toggle="wy-nav-shift" class="wy-nav-side">
- <div class="wy-side-scroll">
- <div class="wy-side-nav-search" >
-
-
- <a href="../index.html" class="icon icon-home">
- PHP-QRCode
- </a>
- <div role="search">
- <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
- <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- </div>
- </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
- <p class="caption" role="heading"><span class="caption-text">Usage</span></p>
- <ul>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Overview.html">Overview</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#features">Features</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#requirements">Requirements</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#framework-integration">Framework Integration</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Overview.html#shameless-advertising">Shameless advertising</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Installation.html">Installation</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#installation-with-composer">Installation with Composer</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Installation.html#composer-json">composer.json</a><ul>
- <li class="toctree-l4"><a class="reference internal" href="../Usage/Installation.html#version-switch">Version switch</a></li>
- </ul>
- </li>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Installation.html#terminal">Terminal</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#manual-installation">Manual installation</a><ul>
- <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>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#supported-php-versions-extension-requirements">Supported PHP versions & extension requirements</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Installation.html#imagemagick">ImageMagick</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Quickstart.html">Quickstart</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#import-the-library">Import the library</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#create-your-first-qr-code">Create your first QR Code</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
- <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>
- <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>
- <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>
- <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>
- </ul>
- </li>
- <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>
- <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>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
- <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
- </ul>
- </li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#version">version</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#versionmin">versionMin</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#versionmax">versionMax</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#ecclevel">eccLevel</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#maskpattern">maskPattern</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#addquietzone">addQuietzone</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#quietzonesize">quietzoneSize</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#outputinterface">outputInterface</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#returnresource">returnResource</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#cachefile">cachefile</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#outputbase64">outputBase64</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#eol">eol</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#bgcolor">bgColor</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#invertmatrix">invertMatrix</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#drawlightmodules">drawLightModules</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#drawcircularmodules">drawCircularModules</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#circleradius">circleRadius</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#keepassquare">keepAsSquare</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#connectpaths">connectPaths</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#excludefromconnect">excludeFromConnect</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#modulevalues">moduleValues</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#addlogospace">addLogoSpace</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacewidth">logoSpaceWidth</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospaceheight">logoSpaceHeight</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacestartx">logoSpaceStartX</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#logospacestarty">logoSpaceStartY</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#scale">scale</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#imagetransparent">imageTransparent</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#transparencycolor">transparencyColor</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#quality">quality</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#gdimageuseupscale">gdImageUseUpscale</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#imagickformat">imagickFormat</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#cssclass">cssClass</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgaddxmlheader">svgAddXmlHeader</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgdefs">svgDefs</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgpreserveaspectratio">svgPreserveAspectRatio</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#svgusefillattributes">svgUseFillAttributes</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#textlinestart">textLineStart</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#jsonflags">jsonFlags</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#fpdfmeasureunit">fpdfMeasureUnit</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#xmlstylesheet">xmlStylesheet</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readeruseimagickifavailable">readerUseImagickIfAvailable</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readergrayscale">readerGrayscale</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerinvertcolors">readerInvertColors</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
- </ul>
- </li>
- </ul>
- <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
- <ul>
- <li class="toctree-l1"><a class="reference internal" href="../Customizing/Module-Values.html">Module values</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#basics">Basics</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#assigning-values">Assigning values</a></li>
- <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>
- <li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#setting-module-values">Setting module values</a></li>
- <li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#using-the-module-values">Using the module values</a></li>
- </ul>
- </li>
- </ul>
- </li>
- <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>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#properties">Properties</a><ul>
- <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>
- <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>
- <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>
- <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>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#methods">Methods</a><ul>
- <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>
- <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>
- <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>
- <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>
- <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>
- <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>
- <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>
- <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>
- <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>
- </ul>
- </li>
- </ul>
- </li>
- <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>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#class-skeleton">Class skeleton</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#module-values">Module values</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#transform-the-output">Transform the output</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#run-the-custom-output">Run the custom output</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#summary">Summary</a></li>
- </ul>
- </li>
- </ul>
- <p class="caption" role="heading"><span class="caption-text">Built-In Output Classes</span></p>
- <ul>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QREps.html">QREps</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRFpdf.html">QRFpdf</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRGdImage.html">QRGdImage</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRImagick.html">QRImagick</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html">QRInterventionImage</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html">QRMarkupHTML</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html">QRMarkupSVG</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html">QRMarkupXML</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html">QRStringJSON</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#previous-functionality">Previous functionality</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringText.html">QRStringText</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#example">Example</a></li>
- <li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#additional-methods">Additional methods</a></li>
- <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>
- </ul>
- </li>
- </ul>
- <p class="caption" role="heading"><span class="caption-text">Appendix</span></p>
- <ul class="current">
- <li class="toctree-l1 current"><a class="current reference internal" href="#">Terminology</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="#qr-code">QR Code</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#matrix">Matrix</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#module">Module</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#version">Version</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#function-patterns">Function Patterns</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#finder-pattern">Finder Pattern</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#alignment-pattern">Alignment Pattern</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#timing-pattern">Timing Pattern</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#separators">Separators</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#quiet-zone">Quiet Zone</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#encoding-region">Encoding Region</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#data">Data</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#version-information">Version Information</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#format-information">Format Information</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#darkmodule">Darkmodule</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#mode">Mode</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#segment">Segment</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#extended-channel-interpretation-eci">Extended Channel Interpretation (ECI)</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#mixed-mode">Mixed Mode</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#ecc-error-correction-coding">ECC (Error Correction Coding)</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#ecc-level">ECC Level</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#maximum-data-capacity">Maximum data capacity</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#data-masking">Data masking</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="#evaluation">Evaluation</a></li>
- <li class="toctree-l3"><a class="reference internal" href="#mask-pattern">Mask pattern</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="#reflectance">Reflectance</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="URI-Content.html">Popular content and URI schemes</a><ul>
- <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>
- <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>
- <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>
- <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>
- <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>
- <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#wireless-network-configuration">Wireless Network configuration</a></li>
- <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#contact-information-vcard">Contact information: vCard</a></li>
- <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#calendar-events-vcalendar-and-icalendar">Calendar Events: vCalendar and iCalendar</a></li>
- <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#credit-transfer">Credit Transfer</a><ul>
- <li class="toctree-l3"><a class="reference internal" href="URI-Content.html#sepa-european-payments-council">SEPA (European Payments Council)</a></li>
- <li class="toctree-l3"><a class="reference internal" href="URI-Content.html#pix-banco-central-do-brasil">Pix (Banco Central do Brasil)</a></li>
- </ul>
- </li>
- <li class="toctree-l2"><a class="reference internal" href="URI-Content.html#see-also">See also</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="Performance-considerations.html">Performance considerations</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#version">Version</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#ecc-level">Ecc level</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#data-mode">Data mode</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#mask-pattern">Mask pattern</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Performance-considerations.html#output">Output</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="Contribute.html">How to contribute</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="Contribute.html#questions-and-issues">Questions and issues</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Contribute.html#bug-reports">Bug reports</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Contribute.html#pull-requests-and-bug-fixes">Pull requests and bug fixes</a></li>
- <li class="toctree-l2"><a class="reference internal" href="Contribute.html#documentation">Documentation</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="License.html">License</a></li>
- </ul>
- </div>
- </div>
- </nav>
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
- <a href="../index.html">PHP-QRCode</a>
- </nav>
- <div class="wy-nav-content">
- <div class="rst-content">
- <div role="navigation" aria-label="Page navigation">
- <ul class="wy-breadcrumbs">
- <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
- <li class="breadcrumb-item active">Terminology</li>
- <li class="wy-breadcrumbs-aside">
- <a href="https://github.com/chillerlan/php-qrcode/blob/main/docs/Appendix/Terminology.md" class="fa fa-github"> Edit on GitHub</a>
- </li>
- </ul>
- <hr/>
- </div>
- <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
- <div itemprop="articleBody">
-
- <section id="terminology">
- <h1>Terminology<a class="headerlink" href="#terminology" title="Link to this heading"></a></h1>
- <section id="qr-code">
- <h2>QR Code<a class="headerlink" href="#qr-code" title="Link to this heading"></a></h2>
- <p>A <a class="reference external" href="https://en.wikipedia.org/wiki/QR_code"><em>QR code</em></a> (quick-response code), sometimes referred to as <em>QR symbol</em> or simply just <em>symbol</em>, is a type of two-dimensional matrix barcode, invented
- 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.
- The QR labelling system was applied beyond the automobile industry due to its fast readability and greater storage capacity
- compared to standard UPC barcodes.
- QR Codes, more specifically, the popular <em>Model 2</em>, are internationally standardized in the ISO/IEC 18004.</p>
- </section>
- <section id="matrix">
- <h2>Matrix<a class="headerlink" href="#matrix" title="Link to this heading"></a></h2>
- <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>
- <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>
- 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
- 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>
- <section id="module">
- <h3>Module<a class="headerlink" href="#module" title="Link to this heading"></a></h3>
- <p>A <em>module</em> represents a single square “pixel” in the matrix (not to confuse with pixels in a raster image or screen).
- A dark module represents a binary one and a light module represents a binary zero.</p>
- </section>
- <section id="version">
- <h3>Version<a class="headerlink" href="#version" title="Link to this heading"></a></h3>
- <p>The <em>version</em> of a QR symbol determines the side length of the matrix (and therefore the maximum capacity of code words),
- ranging from 21×21 modules (441 total) at version 1 to 177×177 modules (31329 total) at version 40.
- 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>
- <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>
- </section>
- </section>
- <section id="function-patterns">
- <h2>Function Patterns<a class="headerlink" href="#function-patterns" title="Link to this heading"></a></h2>
- <section id="finder-pattern">
- <h3>Finder Pattern<a class="headerlink" href="#finder-pattern" title="Link to this heading"></a></h3>
- <p>The <em>Finder Pattern</em> shall consist of three identical Position Detection Patterns located at the upper left, upper right
- and lower left corners of the symbol.</p>
- <p>Each Position Detection Pattern may be viewed as three superimposed concentric squares and is constructed of dark 7×7 modules,
- light 5×5 modules and dark 3×3 modules.</p>
- <p>The symbol is preferentially encoded so that similar patterns have a low probability of being encountered elsewhere in the symbol,
- enabling rapid identification of a possible QR Code symbol in the field of view. Identification of the three Position Detection
- Patterns comprising the finder pattern then unambiguously defines the location and orientation of the symbol in the field of view.</p>
- <p align="center">
- <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=">
- </p>
- </section>
- <section id="alignment-pattern">
- <h3>Alignment Pattern<a class="headerlink" href="#alignment-pattern" title="Link to this heading"></a></h3>
- <p>The <em>Alignment Pattern</em> is a fixed reference pattern in defined positions, which enables the decode software to
- resynchronise the coordinate mapping of the modules in the event of moderate amounts of distortion of the image.</p>
- <p>Each Alignment Pattern may be viewed as three superimposed concentric squares and is constructed of dark 5×5
- modules, light 3×3 modules and a single central dark module.</p>
- <p>The number of Alignment Patterns depends on the symbol version, and they shall be placed in all Model 2 symbols of
- version 2 or larger in positions defined in the specification.</p>
- <p align="center">
- <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">
- </p>
- </section>
- <section id="timing-pattern">
- <h3>Timing Pattern<a class="headerlink" href="#timing-pattern" title="Link to this heading"></a></h3>
- <p>The horizontal and vertical Timing Patterns respectively consist of a one module wide row or column of alternating
- dark and light modules, commencing and ending with a dark module. The horizontal Timing Pattern runs across
- row 6 of the symbol between the separators for the upper Position Detection Patterns; the vertical Timing Pattern
- similarly runs down column 6 of the symbol between the separators for the left-hand Position Detection Patterns.
- They enable the symbol density and version to be determined and provide datum positions for determining module
- coordinates.</p>
- <p align="center">
- <img alt="Timing Pattern" src="data:image/png;base64,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">
- </p>
- </section>
- <section id="separators">
- <h3>Separators<a class="headerlink" href="#separators" title="Link to this heading"></a></h3>
- <p>A pattern of all light modules, one module wide, separating the Position Detection Patterns from the rest of the symbol.</p>
- <p align="center">
- <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">
- </p>
- </section>
- <section id="quiet-zone">
- <h3>Quiet Zone<a class="headerlink" href="#quiet-zone" title="Link to this heading"></a></h3>
- <p>This is a region 4 modules wide which shall be free of all other markings, surrounding the symbol on all four sides.
- Its nominal reflectance value shall be equal to that of the light modules.</p>
- <p align="center">
- <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">
- </p>
- </section>
- </section>
- <section id="encoding-region">
- <h2>Encoding Region<a class="headerlink" href="#encoding-region" title="Link to this heading"></a></h2>
- <p>This region shall contain the symbol characters representing data, those representing error correction codewords,
- the Version Information and Format Information.</p>
- <section id="data">
- <h3>Data<a class="headerlink" href="#data" title="Link to this heading"></a></h3>
- <p>This region contains the encoded data and error correction code blocks. Data bits are placed starting at the bottom-right of
- the matrix and proceeding upward in a column that is 2 modules wide. When the column reaches the top, the next 2-module column
- starts immediately to the left of the previous column and continues downward. Whenever the current column reaches the edge of
- the matrix, move on to the next 2-module column and change direction. If a function pattern or reserved area is encountered,
- the data bit is placed in the next unused module.
- (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>
- <p align="center">
- <img alt="Data" src="data:image/png;base64,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">
- </p>
- </section>
- <section id="version-information">
- <h3>Version Information<a class="headerlink" href="#version-information" title="Link to this heading"></a></h3>
- <p>The Version Information is an 18 bit sequence containing 6 data bits, with 12 error correction bits calculated using the (18, 6)
- <a class="reference external" href="https://en.wikipedia.org/wiki/BCH_code">BCH code</a> which contains the version number.</p>
- <p align="center">
- <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=">
- </p>
- </section>
- <section id="format-information">
- <h3>Format Information<a class="headerlink" href="#format-information" title="Link to this heading"></a></h3>
- <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.
- It contains information on the error correction level applied to the symbol and on the masking pattern used,
- essential to enable the remainder of the encoding region to be decoded.</p>
- <p align="center">
- <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=">
- </p>
- </section>
- <section id="darkmodule">
- <h3>Darkmodule<a class="headerlink" href="#darkmodule" title="Link to this heading"></a></h3>
- <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>
- <p align="center">
- <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==">
- </p>
- </section>
- </section>
- <section id="mode">
- <h2>Mode<a class="headerlink" href="#mode" title="Link to this heading"></a></h2>
- <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>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>Mode</p></th>
- <th class="head"><p>Indicator</p></th>
- <th class="head"><p>Description</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>Numeric</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0001</span></code></p></td>
- <td><p>Numeric encoding, 10 bits per 3 digits</p></td>
- </tr>
- <tr class="row-odd"><td><p>Alphanumeric</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0010</span></code></p></td>
- <td><p>Alphanumeric encoding, 11 bits per 2 characters</p></td>
- </tr>
- <tr class="row-even"><td><p>Byte</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0100</span></code></p></td>
- <td><p>Byte encoding, 8 bits per character</p></td>
- </tr>
- <tr class="row-odd"><td><p>Kanji</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">1000</span></code></p></td>
- <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>
- </tr>
- <tr class="row-even"><td><p>Hanzi<sup>*</sup></p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">1101</span></code></p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>Structured append</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0011</span></code></p></td>
- <td><p>used to split a message across multiple (up to 16) QR symbols</p></td>
- </tr>
- <tr class="row-even"><td><p>ECI</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0111</span></code></p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>FNC1 in first position</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0101</span></code></p></td>
- <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>
- </tr>
- <tr class="row-even"><td><p>FNC1 in second position</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">1001</span></code></p></td>
- <td><p></p></td>
- </tr>
- <tr class="row-odd"><td><p>Terminator</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">0000</span></code></p></td>
- <td><p>End of message</p></td>
- </tr>
- </tbody>
- </table>
- <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>
- <section id="segment">
- <h3>Segment<a class="headerlink" href="#segment" title="Link to this heading"></a></h3>
- <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>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>Mode</p></th>
- <th class="head"><p>Bit stream contents</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>Numeric</p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>Alphanumeric</p></td>
- <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>
- </tr>
- <tr class="row-even"><td><p>Byte</p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>Kanji</p></td>
- <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>
- </tr>
- <tr class="row-even"><td><p>Hanzi</p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>Structured append</p></td>
- <td><p>[ <code class="docutils literal notranslate"><span class="pre">0011</span></code> : 4 ] [ Symbol Position : 4 ] [ Total Symbols : 4 ] [ Parity : 8 ]</p></td>
- </tr>
- <tr class="row-even"><td><p>ECI</p></td>
- <td><p>[ <code class="docutils literal notranslate"><span class="pre">0111</span></code> : 4 ] [ ECI Assignment number : variable ]</p></td>
- </tr>
- <tr class="row-odd"><td><p>FNC1 in first position</p></td>
- <td><p>[ <code class="docutils literal notranslate"><span class="pre">0101</span></code> : 4 ] [ Numeric/Alphanumeric/Byte/Kanji/Hanzi payload : variable ]</p></td>
- </tr>
- <tr class="row-even"><td><p>FNC1 in second position</p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p>Terminator</p></td>
- <td><p>[ <code class="docutils literal notranslate"><span class="pre">0000</span></code> : 4 ]</p></td>
- </tr>
- </tbody>
- </table>
- <p>The lenght of the Character Count Indicator for Numeric/Alphanumeric/Byte/Kanji/Hanzi varies, depending on the version:</p>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>Mode</p></th>
- <th class="head"><p>Version 1-9</p></th>
- <th class="head"><p>Version 10-26</p></th>
- <th class="head"><p>Version 27-40</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>Numeric</p></td>
- <td><p>10</p></td>
- <td><p>12</p></td>
- <td><p>14</p></td>
- </tr>
- <tr class="row-odd"><td><p>Alphanumeric</p></td>
- <td><p>9</p></td>
- <td><p>11</p></td>
- <td><p>13</p></td>
- </tr>
- <tr class="row-even"><td><p>Byte</p></td>
- <td><p>8</p></td>
- <td><p>16</p></td>
- <td><p>16</p></td>
- </tr>
- <tr class="row-odd"><td><p>Kanji/Hanzi</p></td>
- <td><p>8</p></td>
- <td><p>10</p></td>
- <td><p>12</p></td>
- </tr>
- </tbody>
- </table>
- </section>
- <section id="extended-channel-interpretation-eci">
- <h3>Extended Channel Interpretation (ECI)<a class="headerlink" href="#extended-channel-interpretation-eci" title="Link to this heading"></a></h3>
- <p><a class="reference external" href="https://en.wikipedia.org/wiki/Extended_Channel_Interpretation">Extended Channel Interpretation</a> can be used to indicate an
- alternate character encoding for the following Byte segment (by default, ISO-8859-1 “Latin-1”).</p>
- <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),
- 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>
- <p>The length of the ECI Assignment number depends on the given encoding ID:</p>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>ID</p></th>
- <th class="head"><p>length (bits)</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>0 - 127</p></td>
- <td><p>8</p></td>
- </tr>
- <tr class="row-odd"><td><p>128 - 16383</p></td>
- <td><p>16</p></td>
- </tr>
- <tr class="row-even"><td><p>16384 - 999999</p></td>
- <td><p>24</p></td>
- </tr>
- </tbody>
- </table>
- </section>
- <section id="mixed-mode">
- <h3>Mixed Mode<a class="headerlink" href="#mixed-mode" title="Link to this heading"></a></h3>
- <p>Encoding modes can be mixed as needed within a QR symbol in order to optimize data usage.
- Each segment of data is encoded in the appropriate mode, with the basic structure
- <em>Mode Indicator / Character Count Indicator / Data</em> and followed immediately by the Mode Indicator commencing the next segment.</p>
- <p>[ Mode Indicator 1 ][ Mode bitstream 1 ]<br>
- …<br>
- [ Mode Indicator n ][ Mode bitstream n ]<br>
- …<br>
- [ <code class="docutils literal notranslate"><span class="pre">0000</span></code> End of message (Terminator) ]</p>
- </section>
- </section>
- <section id="ecc-error-correction-coding">
- <h2>ECC (Error Correction Coding)<a class="headerlink" href="#ecc-error-correction-coding" title="Link to this heading"></a></h2>
- <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.
- 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>
- <section id="ecc-level">
- <h3>ECC Level<a class="headerlink" href="#ecc-level" title="Link to this heading"></a></h3>
- <p>The number of data versus error correction bytes within each block depends on the version of the QR symbol and the error
- correction level. The higher the error correction level, the less storage capacity. The following table lists the approximate
- error correction capability at each of the four levels:</p>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>Level</p></th>
- <th class="head"><p>Short</p></th>
- <th class="head"><p>Capacity</p></th>
- <th class="head"><p>Indicator</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>Low</p></td>
- <td><p>L</p></td>
- <td><p>7%</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">01</span></code></p></td>
- </tr>
- <tr class="row-odd"><td><p>Medium</p></td>
- <td><p>M</p></td>
- <td><p>15%</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">00</span></code></p></td>
- </tr>
- <tr class="row-even"><td><p>Quartile</p></td>
- <td><p>Q</p></td>
- <td><p>25%</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">11</span></code></p></td>
- </tr>
- <tr class="row-odd"><td><p>High</p></td>
- <td><p>H</p></td>
- <td><p>30%</p></td>
- <td><p><code class="docutils literal notranslate"><span class="pre">10</span></code></p></td>
- </tr>
- </tbody>
- </table>
- </section>
- <section id="maximum-data-capacity">
- <h3>Maximum data capacity<a class="headerlink" href="#maximum-data-capacity" title="Link to this heading"></a></h3>
- <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>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>ECC</p></th>
- <th class="head"><p>max. bits</p></th>
- <th class="head"><p>Numeric</p></th>
- <th class="head"><p>Alphanumeric</p></th>
- <th class="head"><p>Binary</p></th>
- <th class="head"><p>Kanji/Hanzi <sup>*</sup></p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p>L</p></td>
- <td><p>23648</p></td>
- <td><p>7089</p></td>
- <td><p>4296</p></td>
- <td><p>2953</p></td>
- <td><p>1817</p></td>
- </tr>
- <tr class="row-odd"><td><p>M</p></td>
- <td><p>18672</p></td>
- <td><p>5596</p></td>
- <td><p>3391</p></td>
- <td><p>2331</p></td>
- <td><p>1435</p></td>
- </tr>
- <tr class="row-even"><td><p>Q</p></td>
- <td><p>13328</p></td>
- <td><p>3993</p></td>
- <td><p>2420</p></td>
- <td><p>1663</p></td>
- <td><p>1024</p></td>
- </tr>
- <tr class="row-odd"><td><p>H</p></td>
- <td><p>10208</p></td>
- <td><p>3057</p></td>
- <td><p>1852</p></td>
- <td><p>1273</p></td>
- <td><p>784</p></td>
- </tr>
- </tbody>
- </table>
- <p><sup>*</sup> Hanzi mode stores one character less than Kanji as it uses an additional subset indicator of 4 bits length.</p>
- </section>
- </section>
- <section id="data-masking">
- <h2>Data masking<a class="headerlink" href="#data-masking" title="Link to this heading"></a></h2>
- <p>Masking is the process of XORing the bit pattern in the encoding region with a masking pattern to provide a symbol with more
- evenly balanced numbers of dark and light modules and reduced occurrence of patterns which would interfere with fast processing of the image.</p>
- <section id="evaluation">
- <h3>Evaluation<a class="headerlink" href="#evaluation" title="Link to this heading"></a></h3>
- <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.
- During the evaluation, 4 rules are applied to get the penalty score:</p>
- <ul class="simple">
- <li><p>find repetitive cells with the same color Example: 00000 or 11111 (horizontal and vertical).</p></li>
- <li><p>find 2×2 blocks with the same color</p></li>
- <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>
- <li><p>calculate the ratio of dark cells and give increasing penalty if the ratio is far from 50%</p></li>
- </ul>
- </section>
- <section id="mask-pattern">
- <h3>Mask pattern<a class="headerlink" href="#mask-pattern" title="Link to this heading"></a></h3>
- <table class="docutils align-default">
- <thead>
- <tr class="row-odd"><th class="head"><p>Pattern</p></th>
- <th class="head"><p>Mask<sup>*</sup></p></th>
- <th class="head"><p>Example</p></th>
- </tr>
- </thead>
- <tbody>
- <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">000</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">001</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">010</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">011</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">100</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">101</span></code></p></td>
- <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>
- <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>
- </tr>
- <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">110</span></code></p></td>
- <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"><</span> <span class="pre">3</span></code></p></td>
- <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>
- </tr>
- <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">111</span></code></p></td>
- <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>
- <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>
- </tr>
- </tbody>
- </table>
- <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>
- </section>
- </section>
- <section id="reflectance">
- <h2>Reflectance<a class="headerlink" href="#reflectance" title="Link to this heading"></a></h2>
- <p>Symbols are intended to be read when either dark on light or light on dark.
- The International Standard (ISO/IEC 18004) is based on dark images on a light background (example on the left),
- reflectance reversal therefore means a light image on dark background (example on the right).</p>
- <p align="center">
- <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==">
- <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==">
- </p>
- </section>
- </section>
- </div>
- </div>
- <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
- <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>
- <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>
- </div>
- <hr/>
- <div role="contentinfo">
- <p>© Copyright 2025, smiley.</p>
- </div>
-
- </footer>
- </div>
- </div>
- </section>
- </div>
- <script>
- jQuery(function () {
- SphinxRtdTheme.Navigation.enable(true);
- });
- </script>
- </body>
- </html>
|