HCC2D

HCC2D 代码规格说明

版本 0.9.0 — 草稿

最后更新:2026年5月24日

下载 PDF ↓

起源与出版物

HCC2D 彩色条形码格式的基础元素最早定义于 Marco Querini 的 Laurea Specialistica 学位论文(2009/2010 学年,答辩于 2010 年 7 月 23 日)Analisi e progettazione di codici bidimensionali ad alta capacità. Sviluppo del lettore per gli ambienti desktop e mobile(高容量二维代码的分析与设计。面向桌面和移动环境的读取器开发),指导教师为 Prof. Giuseppe F. Italiano。

本规格说明与 2010 年学位论文中所描述的格式所生成的代码完全兼容,这些代码早于该格式被命名为 HCC2D 之前即已存在。

与该格式相关的早期会议论文发表于 2010 年 9 月和 2013 年 9 月(分别为 “High capacity colored two dimensional codes” 和 “Color classifiers for 2D color barcodes”);下列期刊论文是这些会议论文的扩展同行评审版本。

"HCC2D"这一名称在早期会议论文及以下同行评审期刊论文中被引入,该格式也在这些论文中得到描述并对其特性作了进一步分析:

  • Querini, M. and Italiano, G. F. (2014). Reliability and Data Density in High Capacity Color Barcodes. Computer Science and Information Systems (ComSIS) 专刊, 11(4), 1595–1615.
  • Querini, M., Grillo, A., Lentini, A. and Italiano, G. F. (2011). 2D Color Barcodes for Mobile Phones. International Journal of Computer Science & Applications (IJCSA) 专刊, 8(1), 136–155.

本规格说明文档由 Marco Querini 撰写。

本规格说明可能在 1.0 版本发布前发生变更。

许可证与版权

Copyright © 2010–2026 Marco Querini。保留所有权利。

本作品依据知识共享 署名-禁止演绎 4.0 国际许可协议(CC BY-ND 4.0)授权使用。

如需查看该许可证的副本,请访问:https://creativecommons.org/licenses/by-nd/4.0/

您可以在任何媒介或格式中自由共享、复制和再发布本规格说明文档,用于任何目的(包括商业目的),前提是向原作者给予适当署名,且不得分发经修改的文本版本。依据本规格说明所定义的技术要求实现软件、硬件或系统,均被完全许可,不构成本文档的演绎作品。

本规格说明为公开发布。HCC2D 官方软件实现依据单独的专有条款进行分发。

本规格说明按"现状"提供,不附带任何形式的保证。作者不对本文档所含信息的准确性、完整性或适用于特定目的作出任何声明或保证。

HCC2D™(未注册商标)



简介

HCC2D 是一种彩色二维条形码格式。它复用 QR Code 的方形矩阵结构,同时定义了自己的 HCC2D 专有规则,用于颜色编码、有效载荷帧、符号边框语义、版本容量和码字组织。具体而言,HCC2D 复用了与 QR Code / ISO/IEC 18004:2006 兼容的 Finder Pattern、Alignment Pattern、Timing Pattern、格式信息、版本信息、掩码公式以及 Reed-Solomon 纠错行为,除非本规格说明明确规定了不同的行为。

QR Code 是 DENSO WAVE INCORPORATED 在日本及其他国家/地区的注册商标。HCC2D 与 DENSO WAVE INCORPORATED 无赞助、认可或附属关系。QR Code / ISO/IEC 18004:2006 中定义的结构要素,包括 finder patterns、alignment patterns、timing patterns、format information、version information 和 masking,在本文中作为公开技术标准的组成要素使用。本文档仅描述该格式中 HCC2D 专有的部分,并有意不重述这些要素。

HCC2D 不是 QR 码的替代品,而是其扩展。HCC2D 解码器也必须是 QR 码读取器。就实际而言,HCC2D 解码器本质上是一个标准 QR 码解码器,并额外具备识别和解码彩色模块的功能。它使用标准 QR Code 的检测阶段来检测符号结构。在检测完成之后、有效载荷解码之前,解码器会判断应当走标准 QR Code 的解码路径,还是走 HCC2D 的解码路径;在前一种路径中,模块被解释为黑白模块,在后一种路径中,模块被解释为 4 色或 8 色模块。这个选择是通过检查符号外围是否存在 HCC2D 的 Color Palette Patterns 来作出的。如果不存在 Color Palette Patterns,解码器就将该符号作为标准 QR Code 进行解码。如果存在 Color Palette Patterns,解码器就根据适用的 HCC2D 颜色规则将该符号作为 HCC2D 码进行解码。HCC2D 编码器生成与 QR 码共享相同结构基础的符号,且必须能够同时编码 QR 码和 HCC2D 码。

本文档规定了 HCC2D 四色和 HCC2D 八色代码格式。

1. 范围

本文档涵盖:

  • hcc2d4:4 色 HCC2D
  • hcc2d8:8 色 HCC2D

本规格说明定义:

  • 仅限方形符号
  • 版本 1..40
  • 纠错级别 LMQH
  • 仅限字节模式有效载荷编码

本规格说明使用一个 BYTE 段定义 HCC2D 有效载荷帧。

1.1 术语和缩略语

  • Color Palette Pattern:HCC2D 码的外边框,包含调色板颜色的循环序列,用作颜色图例
  • EC:纠错
  • EC level:纠错级别
  • ECPB:每块纠错码字数
  • MSB:最高有效位
  • LSB:最低有效位
  • RS:Reed-Solomon
  • RGB:红、绿、蓝
  • ISO/IEC:国际标准化组织 / 国际电工委员会

矩阵术语:

  • module:符号的一个逻辑方形单元格
  • inner gridinner matrix:添加 HCC2D 边框之前复用的 QR 兼容 N×N 矩阵
  • full symbol:添加 HCC2D 边框后产生的 N+2 方形
  • function module:属于 Finder Pattern、Alignment Pattern、Timing Pattern、格式或版本结构的非数据模块
  • data module:其状态由编码的有效载荷和纠错比特流决定的模块
  • plane:从最终交织比特流中提取的一个二值矩阵

1.2 高层结构

HCC2D 编码过程如下:

  1. 将有效载荷帧封装为一个 BYTE 模式段
  2. 选择版本和纠错级别
  3. 生成数据码字、纠错码字和最终交织比特流
  4. 将该最终比特流分割为两个或三个二值平面
  5. 每个平面使用一个共享掩码模式构建一个与 QR 兼容的内部矩阵
  6. 将平面比特合并为数据模块的颜色索引
  7. 以黑白方式渲染功能模块
  8. 添加 HCC2D Color Palette Pattern 边框

HCC2D 不对每个平面单独运行纠错过程。首先生成一个组合比特流,然后才进行平面提取。

2. 一致性基础

符合规范的实现可生成能被官方 HCC2D Decoder 解码的代码,该应用可在 Google PlayHuawei AppGalleryApp Store 下载。

声称符合本规格说明的实现应将以下内容组合:

  1. 本文档定义的 HCC2D 专有层;以及
  2. 对所有复用部分行为与 QR Code / ISO/IEC 18004:2006 兼容的复用方形矩阵编码层。

为与现有 HCC2D 解码器实现互操作性,复用层至少应提供:

  • Model-2 形式的方形版本 1..40
  • 纠错级别 LMQH
  • finder pattern 的放置
  • 按 HCC2D 表中列出的坐标放置 alignment pattern
  • timing pattern 的放置
  • 格式信息的生成与放置
  • 适用时版本信息的生成与放置
  • 内部矩阵中 BYTE 模式数据的放置顺序
  • mask index 0..7 的 mask 公式
  • 与 QR Code / ISO/IEC 18004:2006 兼容的 mask penalty 评估,第 10 节中仅使用反转平面 0 的 HCC2D 专有规则除外
  • 与 QR Code / ISO/IEC 18004:2006 兼容的 Reed-Solomon 奇偶校验生成和 codeword 交织,第 19 和 20 节中定义的 HCC2D 专有总 codeword 数量和块倍数除外

因此:

  • 本规格说明并非完全独立
  • 已具备上述复用 QR Code / ISO/IEC 18004:2006 兼容行为的实现,可根据本规格说明实现可互操作的 HCC2D 符号生成
  • 同时持有本规格说明和 QR Code 规格说明(用于复用部分)的实现,具备实现可互操作 HCC2D 符号生成所需的信息

实际上,HCC2D 并非 QR 形式方形矩阵构建的替代品。它是构建在复用 QR 兼容内部符号之上的颜色容量和帧层。因此,HCC2D 的规范性差异集中在:

  • 有效载荷帧
  • 码字总容量和块倍数
  • 位平面提取和颜色解释
  • 数据掩码算法的输入选择:仅限反转平面 0
  • 功能模块渲染规则
  • HCC2D 外边框语义

只有符合本规格说明的格式或符号,方可被称为 HCC2D。将 HCC2D 名称用于不符合规范的格式或符号具有误导性,且不受本规格说明认可。

3. 编码参数

符合规范的 HCC2D 符号生成过程由以下参数确定:

  • payload:必需,非空字节数组
  • modehcc2d4hcc2d8
  • ec_levelLMQH 之一
  • version0 表示自动选择;否则为 1..40
  • scale:光栅渲染的每模块像素数
  • quiet_zone:渲染符号周围的白色边距模块数
  • palette_rgb:可选 RGB 覆盖

前四个参数影响逻辑 HCC2D 符号。后三个仅影响视觉渲染。

默认值、用户界面行为和命令行约定不在本规格说明的范围内。

参数附加说明:

  • payload 严格解释为原始字节
  • 本规格说明不定义文本转码、多段优化、数字模式或字母数字模式
  • mode 决定平面数量和调色板族
  • ec_level 在所选版本内选择规范性表格行
  • version 控制容量、内部尺寸、对齐坐标和块结构
  • scalequiet_zonepalette_rgb 不改变编码的逻辑比特流

4. 符号几何

对于两种 HCC2D 模式,版本 v 使用维度为 N = 17 + 4*v 的内部方形网格。

示例:

  • 版本 1 → 21 × 21
  • 版本 10 → 57 × 57
  • 版本 40 → 177 × 177

内部网格复用遵循 QR Code / ISO/IEC 18004:2006 兼容规则的 finder pattern、alignment pattern、timing pattern、格式信息和版本信息结构。

HCC2D 随后在四侧添加其自有的单模块外边框:

  • 内部尺寸 = N
  • 完整尺寸 = N + 2

这个 HCC2D 专有的外边框即为 Color Palette Pattern。

内部网格与完整符号的区别具有规范意义:

  • 所有复用的 QR 兼容放置逻辑均作用于内部 N × N 矩阵
  • HCC2D Color Palette Pattern 位于该内部矩阵之外
  • 渲染和光栅输出使用完整的 N + 2 尺寸

因此,当本文档涉及功能图案、数据放置、掩码或版本几何时,这些规则首先适用于内部矩阵,之后才添加 HCC2D 边框。

5. 颜色索引和默认调色板

本节定义 HCC2D4 和 HCC2D8 的颜色索引位布局、两种标准颜色调色板模型(模型 1 用于屏幕显示,模型 2 用于印刷)、调色板模型的分类,以及调色板自定义规则。

5.1 HCC2D4 — 颜色调色板模型 1 — 定义

使用颜色调色板模型 1 的 HCC2D4 代码,调色板索引 0..3 须使用以下颜色。亮度为近似值,计算公式为 Y = 0.299R + 0.587G + 0.114B。

表1 — HCC2D4 颜色调色板,模型1(屏幕)
索引颜色RGB亮度 (Y)
0黑色RGB(0, 0, 0)≈ 0
1红色RGB(220, 0, 0)≈ 66
2青色RGB(0, 200, 220)≈ 142
3白色RGB(255, 255, 255)≈ 255

颜色索引位布局:

  • 位 1 = MSB 平面
  • 位 0 = LSB 平面

因此:

  • 00 → 0 → 黑色
  • 01 → 1 → 红色
  • 10 → 2 → 青色
  • 11 → 3 → 白色

该顺序是逻辑性的,并非仅视觉性的。索引 0 是深色锚点,索引 3 是 4 色族的白色锚点。

5.2 HCC2D8 — 颜色调色板模型 1 — 定义

使用颜色调色板模型 1 的 HCC2D8 代码,调色板索引 0..7 须使用以下颜色。亮度为近似值,计算公式为 Y = 0.299R + 0.587G + 0.114B。

表2 — HCC2D8 颜色调色板,模型1(屏幕)
索引颜色RGB亮度 (Y)
0黑色RGB(0, 0, 0)≈ 0
1深红色RGB(200, 0, 0)≈ 60
2深绿色RGB(0, 130, 0)≈ 76
3深海军蓝RGB(0, 60, 180)≈ 56
4浅青色RGB(0, 215, 235)≈ 153
5浅黄色RGB(255, 220, 50)≈ 211
6浅洋红色RGB(255, 130, 230)≈ 179
7白色RGB(255, 255, 255)≈ 255

颜色索引位布局:

  • 位 2 = 平面 0 / MSB 平面
  • 位 1 = 平面 1
  • 位 0 = 平面 2 / LSB 平面

因此颜色索引等于由三个平面位构成的 3 位值。

同样,该顺序是逻辑性的。索引 0 是深色锚点,索引 7 是 8 色族的白色锚点。

5.3 颜色调色板模型 1 — 设计原理

颜色调色板模型 1 的 RGB 值(定义于第 5.1 和 5.2 节)经过精心选择,刻意避开 sRGB 色域的极端边界——这正是不同显示器配置文件和硬件色域差异最大的区域。解码器在运行时于实际显示屏上采样 Color Palette Pattern,该显示屏可能是 sRGB、广色域、AMOLED 或 LCD,且几乎可以确定未经校准。靠近边界的通道值(接近 0 或 255)在不同类型的显示器上呈现的颜色各有差异;通过将活跃通道限制在 200–220 而非 255,调色板颜色落在 sRGB 色域内部,不同屏幕在感知颜色上的一致性更高。这降低了跨显示器的颜色漂移,提高了解码过程中颜色采样的稳定性。

这一 RGB 通道限制的设计选择也产生了与第 5.9 节顺序要求一致的亮度分布。对于 HCC2D8(第 5.2 节),索引 0–3(黑色、深红色、深绿色、深海军蓝)全部低于亮度中点(Y < 128),而索引 4–7(浅青色、浅黄色、浅洋红色、白色)全部高于中点(Y > 128)。索引 3(深海军蓝,Y ≈ 56)与索引 4(浅青色,Y ≈ 153)之间的差距约为 97 个亮度单位。

颜色调色板模型 1 是经过屏幕验证的基准方案。它并不主张在印刷用途上是最优选择。

5.4 HCC2D4 — 颜色调色板模型 2 — 定义

对于 HCC2D4,所有中间颜色均为单墨水通道。黄色因与白纸对比度不足而被排除:

表3 — HCC2D4 颜色调色板,模型2(打印)
索引颜色RGB墨水通道亮度 (Y)
0黑色RGB(0, 0, 0)K≈ 0
1品红RGB(255, 0, 255)M≈ 105
2青色RGB(0, 255, 255)C≈ 179
3白色RGB(255, 255, 255)无墨水(纸张)≈ 255

5.5 HCC2D8 — 颜色调色板模型 2 — 定义

对于 HCC2D8,调色板涵盖全部三种单墨水 CMYK 原色及其三种全饱和度二元组合。不使用三墨水通道组合:

表4 — HCC2D8 颜色调色板,模型2(打印)
索引颜色RGB墨水通道亮度 (Y)
0黑色RGB(0, 0, 0)K≈ 0
1蓝色RGB(0, 0, 255)C + M(100%)≈ 29
2红色RGB(255, 0, 0)M + Y(100%)≈ 76
3品红RGB(255, 0, 255)M≈ 105
4绿色RGB(0, 255, 0)C + Y(100%)≈ 150
5青色RGB(0, 255, 255)C≈ 179
6黄色RGB(255, 255, 0)Y≈ 226
7白色RGB(255, 255, 255)无墨水(纸张)≈ 255

5.6 颜色调色板模型 2 — 设计原理

颜色调色板模型 2 是适用于 HCC2D4 和 HCC2D8 的印刷优化调色板。对于印刷,问题与屏幕有所不同:墨水色域、纸张白点以及扫描时的光照条件会引入不同的变量来源。颜色调色板模型 2 基于最小化每个模块颜色所用墨水通道数量的原则。单墨水通道颜色在各打印机间最为稳定;每增加一个墨水通道,都会引入随打印机、纸张和墨水密度变化的墨点增益相互作用。

颜色调色板模型 2 的两个调色板均满足第 5.9 节的明暗排序。对于 HCC2D8,分割尤为清晰:索引 0–3(黑色、蓝色、红色、品红)全部低于亮度中点(Y < 128),而索引 4–7(绿色、青色、黄色、白色)全部高于中点(Y > 128),索引 3(品红,Y ≈ 105)与索引 4(绿色,Y ≈ 150)之间的差距约为 45 个亮度单位。

5.7 颜色调色板模型分类

HCC2D 代码按其颜色调色板分类。模型编号是调色板的属性,而非代码格式的属性;解码器对调色板是无关的。

  • 颜色调色板模型 1:使用第 5.1 和 5.2 节中定义的精确默认调色板的代码。这是标准的、完全可互操作的调色板。颜色调色板模型 1 已被验证在代码显示于屏幕上(计算机显示器、智能手机及类似设备)时表现良好。任何声称 HCC2D 一致性而未进一步说明的实现均意味着颜色调色板模型 1。
  • 颜色调色板模型 2:使用第 5.4 和 5.5 节定义的印刷优化调色板的代码,适用于 HCC2D4 和 HCC2D8。专为印刷与扫描工作流程设计。
  • 无效调色板:在索引 0 处没有黑色,或在最后一个索引处没有白色的调色板。使用此类调色板的代码不是有效的 HCC2D 代码。符合规范的编码器必须拒绝此类配置(见第 5.8 节)。
  • 非标准 / 实验性调色板:在索引 0 保留黑色、在最后一个索引保留白色,但使用不同中间颜色的调色板。使用此类调色板生成的代码是否可解码取决于所选颜色在色彩上的区分度。对于任何解码失败的代码,编码实现承担全部责任。

颜色调色板模型编号由本规格说明专属分配。随着其他颜色组合经实验验证可在特定使用场景(如计算机到手机扫描或手机到手机扫描)中表现良好,本规格说明的未来版本可能会定义额外的颜色调色板模型(颜色调色板模型 3 及后续模型)。

调色板修改应限于实验目的。对于生产用途,当代码需要显示在屏幕上(计算机显示器、智能手机及类似设备)时,应使用颜色调色板模型 1;当代码需要打印时,应使用颜色调色板模型 2。

生成使用非标准调色板代码的实现必须向其用户明确披露这一情况,说明代码使用了非标准调色板,可能无法被所有 HCC2D 解码器解码。

5.8 调色板覆盖

调色板的第一个条目和最后一个条目是规范性锚点,不得更改:

  • 对于 hcc2d4,索引 0 必须保持黑色,索引 3 必须保持白色
  • 对于 hcc2d8,索引 0 必须保持黑色,索引 7 必须保持白色

因此:

  • hcc2d4 中,只有索引 12 可以自定义
  • hcc2d8 中,只有索引 16 可以自定义

当提供调色板覆盖时:

  • 4 色模式需要恰好 12 字节(4 * 3
  • 8 色模式需要恰好 24 字节(8 * 3
  • 字节布局仍为按调色板索引顺序的完整调色板,然后按 RGB 分量顺序
  • 但是,符合规范的编码器应拒绝第一个条目不是黑色或最后一个条目不是白色的覆盖

字节顺序为调色板条目顺序,然后为 RGB 分量顺序:

  • HCC2D4:R0 G0 B0 R1 G1 B1 R2 G2 B2 R3 G3 B3
  • HCC2D8:R0 G0 B0 ... R7 G7 B7

规范性锚点值:

  • hcc2d4R0 G0 B0 = 0 0 0R3 G3 B3 = 255 255 255
  • hcc2d8R0 G0 B0 = 0 0 0R7 G7 B7 = 255 255 255

符号逻辑仅使用索引。自定义 RGB 值不影响 codewords、比特流构建、版本选择、mask selection 或矩阵布局,但影响渲染外观。

等价地,HCC2D 首先确定每个模块的逻辑颜色索引,然后才将该索引映射到用于渲染的 RGB 三元组。

5.9 自定义调色板的亮度顺序推荐

本小节为参考性内容。

使用自定义调色板时,建议实现保持下半部分较暗、上半部分较亮的亮度顺序。此建议源于本规格说明后文定义的 HCC2D mask selection rule。

HCC2D 的 mask selection 不在最终全彩渲染符号上执行,而是在仅从一个位平面派生的二值代理上执行:

  • 仅平面 0 参与 mask selection
  • 对于 hcc2d4,平面 0 是颜色的最高有效位
  • 对于 hcc2d8,平面 0 是颜色的最高有效位(位 2
  • 该平面从最终交织比特流中提取
  • 该平面随后被反转
  • QR 兼容的 mask penalty rules 在该反转的单平面代理上进行评估

因此,每个模块只有一位直接影响 mask 选择。

这有一个重要的实际结果。mask 使用 QR 风格的二值惩罚规则选择,但最终 HCC2D 符号是多色符号。为使 QR 风格的 mask selection 过程对 HCC2D 保持有意义,用于 mask 选择的二值代理应与最终渲染符号的表观暗度结构保持合理相关。

当较低调色板索引较暗、较高调色板索引较亮时,该相关性得到改善。在这种排列中,用于 mask selection 的单个平面仍可作为最终 HCC2D 符号中明暗区域分布的有用粗略近似。

因此,调色板自定义应保持下半部分整体较暗、上半部分整体较亮的渲染亮度顺序,与颜色索引的逻辑有效性顺序保持一致。

从实践角度来看:

  • 较低的调色板索引应对应较暗的颜色
  • 较高的调色板索引应对应较亮的颜色
  • 第一个条目必须保持黑色
  • 最后一个条目必须保持白色

hcc2d4 的推荐顺序:

  • 索引 0 必须为黑色
  • 索引 1 在视觉上应比索引 2 更暗
  • 索引 3 必须为白色
  • 作为 4 色族级别的指导原则,索引 01 应构成调色板的较暗半部,索引 23 应构成较亮半部

hcc2d8 的推荐顺序:

  • 索引 0 必须为黑色
  • 索引 7 必须为白色
  • 索引 123 应保持在调色板的较暗半部
  • 索引 456 应保持在调色板的较亮半部
  • 作为 8 色族级别的指导原则,索引 03 整体上应比索引 47 更暗

此建议不改变符号逻辑,因为 HCC2D 在构建符号时使用调色板索引而非亮度值。违反推荐的深色下半/浅色上半平衡的调色板仍可能生成可解码的符号。但这样做会削弱以下三者之间的预期关系:

  • mask selection 期间使用的代理
  • 最终渲染符号的表观暗度分布
  • 自定义调色板在不同扫描条件下的视觉稳定性

如果保持了深浅平衡,复用的 QR 风格 mask rules 对 HCC2D 同样是合理且有用的启发式方法。

如果未保持该平衡:

  • 编码器仍可能生成有效符号
  • 解码器仍可能成功解码这些符号
  • 但所选 mask 将针对 QR 风格的二值代理进行优化,而非针对感知暗度遵循相同结构的最终颜色排列

在这种情况下,mask selection 在选择了 mask 且生成的符号可能仍可解码的狭义上仍然有效,但 QR 风格的惩罚模型对实际 HCC2D 符号的视觉属性代表性降低。

因此,自定义调色板应在较低索引中保留较暗颜色,在较高索引中保留较亮颜色。

6. 有效载荷帧

HCC2D 有效载荷帧使用一个 BYTE 段:

  • 段标记位:0100
  • 计数字段宽度:16 位(所有版本,两种模式)
  • 计数值:有效载荷字节数
  • 有效载荷字节按原样附加,MSB 优先

终止前的逻辑有效载荷比特流为:

0100 || byte_count_16 || payload_bytes

终止位、字节对齐、填充字节、Reed-Solomon 奇偶校验生成和最终交织遵循 QR Code / ISO/IEC 18004:2006 兼容规则,除非本规格说明明确定义了 HCC2D 专有行为。

此帧规则的重要结果:

  • 对于 HCC2D,无论版本如何,计数字段始终为 16 位
  • 计数值是字节数,而非位数或字符数
  • 有效载荷字节按最高有效位优先的顺序原样附加
  • 本规格说明为每个 HCC2D 符号定义恰好一个 BYTE 段

7. 版本选择

如果明确指定了版本,则仅在有效载荷适合时使用该版本。

如果使用自动版本选择,则选择有效载荷适合的最小版本。

对于给定的 HCC2D 模式、版本和纠错级别:

  • total_codewordsdata_codewordsec_codewords 和块布局由第 19 和 20 节的 HCC2D 显式表格给出
  • 当且仅当有效载荷的帧比特流可以被终止并填充至恰好 data_codewords 字节时,该有效载荷适合

为此,终止前帧比特流长度为:

4 + 16 + 8 * payload_length

其中 4 是 BYTE 模式指示符,16 是 HCC2D 字节计数字段宽度。

当帧比特流可以进行以下处理时,有效载荷适合:

  1. 可选地用最多四个零位终止
  2. 用零位填充至下一个字节边界
  3. 用交替填充字节填充直到达到精确的数据码字容量

且不超过所选模式、版本和纠错级别的可用数据码字数量。

8. HCC2D 码字组织

第 19 和 20 节中的 HCC2D 参数表是规范性的。

纠错结构遵循 ISO/IEC 18004:2006 兼容规则,除非本规格说明明确定义了 HCC2D 专有行为。

每个表格行给出:

  • dim:内部尺寸
  • align:alignment pattern 中心坐标
  • total:码字总数
  • data:数据码字数
  • ec:纠错码字数
  • ecpb:每块纠错码字数
  • blocks:块倍数和每块数据码字数

这些值完全决定了每个版本和级别的 HCC2D 码字组织。

对于 hcc2d4,每个版本和级别的码字总数恰好是对应的复用 QR Code / ISO/IEC 18004:2006 兼容基本结构的两倍。

对于 hcc2d8,每个版本和级别的码字总数恰好是对应的复用 QR Code / ISO/IEC 18004:2006 兼容基本结构的三倍。

更精确地说:

  • hcc2d4 保留复用 QR Code / ISO/IEC 18004:2006 兼容的每块码字数,并将块倍数加倍
  • hcc2d8 保留复用 QR Code / ISO/IEC 18004:2006 兼容的每块码字数,并将块倍数增为三倍

这是 HCC2D 在继续使用复用 QR 兼容 Reed-Solomon 过程的同时增加总位容量的机制。

9. 平面构建

设最终交织码字比特流为 B

平面构建仅在以下步骤完成后执行:

  • 数据码字已形成
  • 纠错码字已生成
  • 最终交织已完成

HCC2D 不为每个平面创建独立的纠错流。相反,首先生成一个组合的最终比特流,然后按步长分割为平面。

9.1 HCC2D4 — 两个平面

hcc2d4 使用两个平面。

平面提取通过从最终比特流进行比特去交织:

  • 平面 0 取位置 0, 2, 4, ... 的比特
  • 平面 1 取位置 1, 3, 5, ... 的比特

平面 0 是 MSB 平面。平面 1 是 LSB 平面。

数据模块颜色索引:

color = (plane0_bit << 1) | plane1_bit

等价地,如果最终交织比特流为 B[0], B[1], B[2], ...,则符号模块颜色由比特对驱动:

(B[0], B[1]), (B[2], B[3]), (B[4], B[5]), ...

9.2 HCC2D8 — 三个平面

hcc2d8 使用三个平面。

平面提取如下:

  • 平面 0 取位置 0, 3, 6, ... 的比特
  • 平面 1 取位置 1, 4, 7, ... 的比特
  • 平面 2 取位置 2, 5, 8, ... 的比特

平面 0 是 MSB 平面。平面 2 是 LSB 平面。

数据模块颜色索引:

color = (plane0_bit << 2) | (plane1_bit << 1) | plane2_bit

等价地,如果最终交织比特流为 B[0], B[1], B[2], ...,则符号模块颜色由比特三元组驱动:

(B[0], B[1], B[2]), (B[3], B[4], B[5]), (B[6], B[7], B[8]), ...

平面顺序是规范性的,不得进行排列变换。在 hcc2d4 中,平面 0 是最高有效位,平面 1 是最低有效位。在 hcc2d8 中,平面 0 是位 2,平面 1 是位 1,平面 2 是位 0

10. 掩码选择

0..7 中的单个 mask pattern 应用于符号的所有平面。

mask selection 遵循 ISO/IEC 18004:2006 兼容规则,除非本规格说明明确定义了 HCC2D 专有行为。

候选评估的 HCC2D 专有行为:

  • 仅从平面 0 构建代理比特流
  • 对该平面 0 流的每个比特取反
  • 将该反转流用于 mask penalty 评估

mask selection 过程:

  1. 0..7 中的每个候选 mask index,将该 mask 应用于反转的平面 0 比特流并从中构建候选内部矩阵
  2. 计算该候选矩阵的 mask penalty
  3. 选择惩罚最小的 mask index

平局处理按首个遇到的最小值,即最低 mask index。

一旦选出最优 mask index,该单一索引将重复用于符号的每个平面。HCC2D 不为不同平面选择不同的 mask pattern。

11. 内部矩阵构建

每个平面使用所选版本和所选公共 mask pattern 转换为内部矩阵。

重要:所有平面使用相同的功能图案几何结构、相同的版本、相同的格式位和相同的 mask index。仅数据位不同。

本文档不完整地重述复用的 finder pattern、alignment pattern、timing pattern、格式信息、版本信息、Reed-Solomon 或 mask 公式。

因此,HCC2D 的内部矩阵构建可以理解为在相同几何结构上重复 QR 兼容矩阵构建,每个平面一次,每次只有平面比特流发生变化。

12. 功能模块着色

对于 hcc2d4hcc2d8,数据模块使用上述多平面颜色映射,但功能模块仅以黑白方式渲染:

  • 如果该功能模块坐标处的平面 0 为 1,则渲染为黑色
  • 否则渲染为白色

实际上,这是安全的,因为功能模块在所有平面上是相同的。

此规则适用于内部矩阵中所有复用的结构模块,包括 finder pattern、alignment pattern、timing pattern、格式信息以及适用时的版本信息。

13. Color Palette Pattern

Color Palette Pattern 必须完全按照规格说明实现:解码器对其模块进行采样以重建颜色调色板。解码器没有关于调色板颜色的先验知识,只知道第一个条目是黑色,最后一个是白色。因此,Color Palette Pattern 对于解码是必要的。

设内部尺寸为 N

HCC2D 边框位于内部网格外侧一个模块处:

  • 顶部边框行位于逻辑行 -1
  • 底部边框行位于逻辑行 N
  • 左侧边框列位于逻辑列 -1
  • 右侧边框列位于逻辑列 N

HCC2D 码将这些逻辑坐标在两个轴上各移动 +1,产生一个 (N+2) × (N+2) 网格。

Color Palette Pattern 是 HCC2D 的结构性部分,并非可选装饰。其几何结构和颜色索引顺序是格式定义的一部分。

13.1 Color Palette Pattern 周期

  • hcc2d4:周期 P = 4
  • hcc2d8:周期 P = 8

每条边上的活跃段循环遍历所有 P 个调色板索引。每条边的确切公式(包括起始索引和循环方向)在第 13.2 节中给出。

循环以逻辑调色板索引而非实际 RGB 值定义。

13.2 Color Palette Pattern 颜色公式

rowcol 为上述边框坐标系中的逻辑坐标。

Color Palette Pattern 边框应使用以下精确规则:

  1. 顶部边:若 row == -18 ≤ col < N - 8,则 color = (col - 8) mod P
  2. 底部边:若 row == N8 ≤ col < N,则 color = (col - 8) mod P
  3. 左侧边:若 col == -1,设 start = N - 9。若 8 ≤ row ≤ start,则 color = (start - row) mod P
  4. 右侧边:若 col == N8 ≤ row < N,则 color = (row - 8) mod P
  5. 所有其余边框单元格:color = P - 1

这意味着非循环边框单元格,包括角落和靠近 finder pattern 的排除段,始终为最高调色板索引:

  • HCC2D4 为 3 → 白色
  • HCC2D8 为 7 → 白色

13.3 Color Palette Pattern 各模式的副本

并非所有边框模块都携带调色板颜色。角落处和靠近 finder pattern 处的模块为固定白色(color = P − 1,如第 13.2 节所定义)。在每条边上循环复制调色板颜色的段的长度为:

  • 顶部边:N − 16 个模块
  • 底部边:N − 8 个模块
  • 左侧边:N − 16 个模块
  • 右侧边:N − 8 个模块

HCC2D8(P = 8)适用相同的长度。

每条边的确切序列(包括起始索引和方向)由第 13.2 节的公式决定。顶部、底部和右侧边随扫描坐标递增。左侧边的调色板索引随行增加而递减;每个版本的确切起始索引由第 13.2 节的公式给出。

13.4 解码器面向解释

解码器对这些条带进行采样以恢复调色板统计信息。因此,边框是符号格式的一部分,而不仅仅是装饰。

任何改变 Color Palette Pattern 的段几何结构、循环方向或回退白色单元格的实现都将生成不符合规范的符号。

14. 渲染输出坐标

本节定义逻辑 HCC2D 符号的光栅渲染。逻辑符号在不固定任何特定像素大小的情况下被完全定义。

14.1 模块坐标

对于 HCC2D 模式:

  • 完整模块网格大小 = N + 2
  • 内部模块 (x, y) 映射到渲染模块 (x + 1, y + 1)

14.2 静区

光栅化图像在四侧各添加 quiet_zone 个背景色模块。

背景颜色索引:

  • HCC2D4:3(白色)
  • HCC2D8:7(白色)

14.3 图像像素大小

F 为完整模块尺寸:

F = N + 2

则:

  • 图像宽度 = (F + 2 * quiet_zone) * scale
  • 图像高度 = 相同

每个逻辑模块以 scale × scale 的纯色方块进行光栅化。

对于 HCC2D 符号,静区使用最高调色板索引:

  • hcc2d43
  • hcc2d87

在默认调色板下,这对应于白色。

15. 解码器相关结构规则

15.1 HCC2D 计数字段

两种 HCC2D 模式中 BYTE 计数字段均为 16 位。

15.2 平面顺序

对于 4 色 HCC2D:

  • 平面 0 是颜色 MSB
  • 平面 1 是颜色 LSB

对于 8 色 HCC2D:

  • 平面 0 是颜色的最高有效位(位 2)
  • 平面 1 是位 1
  • 平面 2 是颜色的最低有效位(位 0)

15.3 公共掩码

所有平面必须使用相同的 mask pattern。

这些规则与解码器相关,因为假设 QR 风格的可变 BYTE 计数字段宽度、不同平面有效性顺序或独立的每平面掩码的解码器将无法正确解释符合规范的 HCC2D 符号。

16. 编码过程

符合规范的 HCC2D 编码过程应执行以下步骤:

  1. 验证输入。
  2. 选择符号族(hcc2d4hcc2d8)。
  3. 选择纠错级别(L/M/Q/H)。
  4. 选择版本:如果有效载荷适合,则使用明确指定的版本;否则,使用自动选择时,选择最小的适合版本。
  5. 构建逻辑有效载荷比特流:0100 || byte_count_16 || payload_bytes
  6. 从所选模式、版本和级别的 HCC2D 显式表格中确定族特定容量和块布局。
  7. 应用终止和填充字节。
  8. 使用复用纠错结构生成奇偶校验并交织 codewords。
  9. 通过步进提取将最终比特流分割为 2 或 3 个平面。
  10. 选择一个公共 mask index:对于 HCC2D 模式,仅使用反转平面 0 评估惩罚。
  11. 使用公共版本、EC 级别和掩码为每个平面构建一个内部矩阵。
  12. 渲染数据模块:
    • HCC2D4:来自 2 个平面比特的颜色索引
    • HCC2D8:来自 3 个平面比特的颜色索引
  13. 从平面 0 以黑白方式渲染功能模块。
  14. 使用第 13 节的坐标公式添加精确的单模块 Color Palette Pattern 边框。
  15. 添加白色静区。
  16. 如需光栅图像输出,将模块光栅化为像素。

操作顺序很重要。特别是:

  • 纠错和交织在平面提取之前进行
  • mask selection 只进行一次,由所有平面共享
  • 内部矩阵构建在添加 Color Palette Pattern 边框之前进行
  • 静区位于完整 HCC2D 符号之外,不是逻辑有效载荷结构的一部分

17. 可选 HCC2DF 有效载荷封装器

本节不定义 HCC2D 码本身。

它定义一种可选的有效载荷封装格式 HCC2DF,当应用程序希望将文件名与文件内容一起携带时,可在 HCC2D 符号编码之前使用。使用时,HCC2DF 字节流成为本规格说明第 3、6 和 16 节中定义的有效载荷。

HCC2DF 是叠加在 HCC2D 有效载荷字节之上的应用级封装器。它不是 HCC2D 符号几何或颜色逻辑的一部分。

17.1 HCC2DF 字节布局

HCC2DF 有效载荷字节为:

  1. ASCII magic:"HCC2DF" → 6 字节
  2. 封装器版本字节:0x01
  3. 压缩标志字节:
    • 0x00 = 原始内容
    • 0x01 = zlib 压缩内容
  4. 文件名长度:1 字节
  5. 文件名字节:UTF-8,恰好 filename_length 字节
  6. 内容字节:原始文件字节或压缩文件字节

此封装器不定义校验和字段、页脚或嵌套的元数据结构。

17.2 文件名约束

  • 文件名不得为空
  • 文件名最多为 127 个 UTF-8 字节
  • 文件名不得包含 /
  • 文件名不得包含 \

17.3 压缩规则

如果尝试压缩,内容使用 zlib compress2(..., Z_DEFAULT_COMPRESSION) 进行压缩。

建议仅当以下所有条件均为真时才使用压缩:

  • 压缩成功
  • 原始文件大小至少为 128 字节
  • 压缩后大小严格小于原始大小的 90%

否则建议存储原始文件字节,压缩标志建议为 0x00

128 字节的最小值反映了 zlib 压缩始终引入的固定开销。zlib 封装器本身增加 6 字节(2 字节头部 + 4 字节 Adler-32 校验和),deflate 块头部还会进一步增加开销——存储块增加 5 字节,动态霍夫曼块对小输入需要 20–50 字节的码表描述,合计典型开销约为 36 字节。为了理解为何 128 字节是合适的阈值,考虑以下两种情况:

  • 64 字节输入:通过 90% 规则的预算 = 64 × 0.9 − 36 = 21.6 字节用于实际数据——内容必须压缩到约 34%,仅对高度重复的序列可行。
  • 128 字节输入:预算 = 128 × 0.9 − 36 = 79 字节用于实际数据——内容必须压缩到约 62%,对于典型文本、JSON 或 URL 是现实可行的。

低于 128 字节时,开销消耗了太多可用预算,使得任何实际负载都很难产生有意义的压缩结果。

此规则仅在有明显大小优势时才优先使用压缩。实现可以使用不同的阈值(例如 95%),但不推荐这样做:更高的阈值意味着压缩仅能节省几个百分点空间的数据,这并不是有意义的收益——直接存储原始字节更简单,结果大小也可能几乎没有差别。无论如何,偏离此建议的实现仍能生成可被官方 HCC2D Decoder 解码的代码,前提是压缩标志与内容保持一致:若标志为 0x01,内容必须是有效的 zlib 压缩数据;若标志为 0x00,内容必须是原始字节。

17.4 与 HCC2D 的范围关系

HCC2DF 是承载于 HCC2D 有效载荷字节内的可选封装器。它不是 HCC2D 码结构、颜色编码、码字组织或符号几何的一部分。

18. 实施建议

以下是对实现者的建议性指导。这些不是本规格说明的规范性要求。本规格说明其他章节中的规范性要求使用"必须"和"不得"表达;本节使用"应"和"不应"表达建议性指导。

推荐纠错级别: 对于 HCC2D 代码,应使用 QM 级别。一般用途不应使用 L 级别。H 级别提供最高的鲁棒性,但会显著降低有效载荷容量。

推荐模式: 生产用途应使用 hcc2d4。hcc2d8 提供更大的有效载荷容量,但需要色彩一致性更高的显示和扫描条件。

印刷与生产质量: 对于用于生产的印刷码:

  • 应使用无损输出格式(PNG、SVG 或 PDF)。JPEG 等有损格式会引入压缩伪影,破坏模块颜色。
  • 每个模块应渲染为纯色块;不应使用半调(halftoning)。
  • 不应拉伸、压缩或扭曲纵横比。
  • 栅格化后不应应用模糊、抗锯齿或重采样。
  • 模块尺寸应至少为 0.5 mm(GS1 对 QR Code 的目标 X 尺寸),优选约 1 mm 以提高可靠性。模块越小,解码过程中的颜色识别能力越差。

19. HCC2D4 参数表

以下是 HCC2D4 版本参数。这些是完整的 HCC2D4 码字总数和块布局。

表格字段含义:

  • Vn:HCC2D 版本号。
  • dim:以模块为单位的内部符号尺寸,不含单模块 HCC2D Color Palette Pattern 边框。
  • align:内部网格上 alignment pattern 的中心坐标。空列表表示不存在 alignment pattern。
  • LMQH:纠错级别。
  • total:该版本和纠错级别下符号的码字总数。
  • data:该版本和纠错级别下符号的数据码字总数。
  • ec:该版本和纠错级别下符号的纠错码字总数。
  • ecpb:每块纠错码字数。
  • blocks=a x ba 个 Reed-Solomon 块,每个块携带 b 个数据码字和 ecpb 个纠错码字。
  • blocks=a x b, c x d:两个块组;第一组有 a 个块,每块 b 个数据码字;第二组有 c 个块,每块 d 个数据码字。两组中每个块携带相同数量的 ecpb 纠错码字。

示例:

V1 dim=21 align=[]
  L: total=52 data=38 ec=14 ecpb=7 blocks=2 x 19

含义如下:

  • 版本 1
  • 内部网格 21 × 21
  • 无 alignment pattern
  • 纠错级别 L
  • 符号中码字总数 52
  • 数据码字 38
  • 纠错码字 14
  • 2 个 Reed-Solomon 块
  • 每块包含 19 个数据码字和 7 个纠错码字

以下 HCC2D8 表使用完全相同的字段含义。

表5 — HCC2D4 版本参数
VndimalignECtotaldataececpbblocks
V121L52381472 × 19
M523220102 × 16
Q522626132 × 13
H521834172 × 9
V2256, 18L886820102 × 34
M885632162 × 28
Q884444222 × 22
H883256282 × 16
V3296, 22L14011030152 × 55
M1408852262 × 44
Q1406872184 × 17
H1405288224 × 13
V4336, 26L20016040202 × 80
M20012872184 × 32
Q20096104264 × 24
H20072128168 × 9
V5376, 30L26821652262 × 108
M26817296244 × 43
Q268124144184 × 15, 4 × 16
H26892176224 × 11, 4 × 12
V6416, 34L34427272184 × 68
M344216128168 × 27
Q344152192248 × 19
H344120224288 × 15
V7456, 22, 38L39231280204 × 78
M392248144188 × 31
Q392176216184 × 14, 8 × 15
H392132260268 × 13, 2 × 14
V8496, 24, 42L48438896244 × 97
M484308176224 × 38, 4 × 39
Q484220264228 × 18, 4 × 19
H484172312268 × 14, 4 × 15
V9536, 26, 46L584464120304 × 116
M584364220226 × 36, 4 × 37
Q584264320208 × 16, 8 × 17
H584200384248 × 12, 8 × 13
V10576, 28, 50L692548144184 × 68, 4 × 69
M692432260268 × 43, 2 × 44
Q6923083842412 × 19, 4 × 20
H6922444482812 × 15, 4 × 16
V11616, 30, 54L808648160208 × 81
M808508300302 × 50, 8 × 51
Q808360448288 × 22, 8 × 23
H808280528246 × 12, 16 × 13
V12656, 32, 58L932740192244 × 92, 4 × 93
M9325803522212 × 36, 4 × 37
Q932412520268 × 20, 12 × 21
H9323166162814 × 14, 8 × 15
V13696, 34, 62L1064856208268 × 107
M10646683962216 × 37, 2 × 38
Q10644885762416 × 20, 8 × 21
H10643607042224 × 11, 8 × 12
V14736, 26, 46, 66L1162922240306 × 115, 2 × 116
M1162730432248 × 40, 10 × 41
Q11625226402022 × 16, 10 × 17
H11623947682422 × 12, 10 × 13
V15776, 26, 48, 70L131010462642210 × 87, 2 × 88
M13108304802410 × 41, 10 × 42
Q13105907203010 × 24, 14 × 25
H13104468642422 × 12, 14 × 13
V16816, 26, 50, 74L146611782882410 × 98, 2 × 99
M14669065602814 × 45, 6 × 46
Q14666508162430 × 19, 4 × 20
H1466506960306 × 15, 26 × 16
V17856, 30, 54, 78L16301294336282 × 107, 10 × 108
M163010146162820 × 46, 2 × 47
Q1630734896282 × 22, 30 × 23
H16305661064284 × 14, 34 × 15
V18896, 30, 56, 82L180214423603010 × 120, 2 × 121
M180211266762618 × 43, 8 × 44
Q180279410082834 × 22, 2 × 23
H18026261176284 × 14, 38 × 15
V19936, 30, 58, 86L19821590392286 × 113, 8 × 114
M19821254728266 × 44, 22 × 45
Q198289010922634 × 21, 8 × 22
H198268213002618 × 13, 32 × 14
V20976, 34, 62, 90L21701722448286 × 107, 10 × 108
M21701338832266 × 41, 26 × 42
Q217097012003030 × 24, 10 × 25
H217077014002830 × 15, 20 × 16
V211016, 28, 50, 72, 94L23121864448288 × 116, 8 × 117
M231214288842634 × 42
Q2312102412882834 × 22, 12 × 23
H231281215003038 × 16, 12 × 17
V221056, 26, 50, 74, 98L25162012504284 × 111, 14 × 112
M251615649522834 × 46
Q2516113613803014 × 24, 32 × 25
H251688416322468 × 13
V231096, 30, 54, 78, 102L27282188540308 × 121, 10 × 122
M272817201008288 × 47, 28 × 48
Q2728122815003022 × 24, 28 × 25
H272892818003032 × 15, 28 × 16
V241136, 28, 54, 80, 106L294823486003012 × 117, 8 × 118
M2948182811202812 × 45, 28 × 46
Q2948132816203022 × 24, 32 × 25
H2948102819203060 × 16, 4 × 17
V251176, 32, 58, 84, 110L317625526242616 × 106, 8 × 107
M3176200011762816 × 47, 26 × 48
Q3176143617403014 × 24, 44 × 25
H3176107621003044 × 15, 26 × 16
V261216, 30, 58, 86, 114L341227406722820 × 114, 4 × 115
M3412212412882838 × 46, 8 × 47
Q3412150819042856 × 22, 12 × 23
H3412119222203066 × 16, 8 × 17
V271256, 34, 62, 90, 118L365629367203016 × 122, 8 × 123
M3656225614002844 × 45, 6 × 46
Q3656161620403016 × 23, 52 × 24
H3656125624003024 × 15, 56 × 16
V281296, 26, 50, 74, 98, 122L38423062780306 × 117, 20 × 118
M384223861456286 × 45, 46 × 46
Q384217422100308 × 24, 62 × 25
H3842132225203022 × 15, 62 × 16
V291336, 30, 54, 78, 102, 126L410232628403014 × 116, 14 × 117
M4102253415682842 × 45, 14 × 46
Q410218222280302 × 23, 74 × 24
H4102140227003038 × 15, 52 × 16
V301376, 26, 52, 78, 104, 130L437034709003010 × 115, 20 × 116
M4370274616242838 × 47, 20 × 48
Q4370197024003030 × 24, 50 × 25
H4370149028803046 × 15, 50 × 16
V311416, 30, 56, 82, 108, 134L464636869603026 × 115, 6 × 116
M464629101736284 × 46, 58 × 47
Q4646206625803084 × 24, 2 × 25
H4646158630603046 × 15, 56 × 16
V321456, 34, 60, 86, 112, 138L4930391010203034 × 115
M4930308218482820 × 46, 46 × 47
Q4930223027003020 × 24, 70 × 25
H4930169032403038 × 15, 70 × 16
V331496, 30, 58, 86, 114, 142L5222414210803034 × 115, 2 × 116
M5222326219602828 × 46, 42 × 47
Q5222234228803058 × 24, 38 × 25
H5222180234203022 × 15, 92 × 16
V341536, 34, 62, 90, 118, 146L5522438211403026 × 115, 12 × 116
M5522345020722828 × 46, 46 × 47
Q5522246230603088 × 24, 14 × 25
H55221922360030118 × 16, 2 × 17
V351576, 30, 54, 78, 102, 126, 150L5752461211403024 × 121, 14 × 122
M5752362421282824 × 47, 52 × 48
Q5752257231803078 × 24, 28 × 25
H5752197237803044 × 15, 82 × 16
V361616, 24, 50, 76, 102, 128, 154L6068486812003012 × 121, 28 × 122
M6068382822402812 × 47, 68 × 48
Q6068270833603092 × 24, 20 × 25
H606821083960304 × 15, 128 × 16
V371656, 28, 54, 80, 106, 132, 158L6392513212603034 × 122, 8 × 123
M6392398424082858 × 46, 28 × 47
Q6392285235403098 × 24, 20 × 25
H6392219242003048 × 15, 92 × 16
V381696, 32, 58, 84, 110, 136, 162L672454041320308 × 122, 36 × 123
M6724420425202826 × 46, 64 × 47
Q6724300437203096 × 24, 28 × 25
H6724228444403084 × 15, 64 × 16
V391736, 26, 54, 82, 110, 138, 166L7064562414403040 × 117, 8 × 118
M7064443226322880 × 47, 14 × 48
Q7064316439003086 × 24, 44 × 25
H7064244446203020 × 15, 134 × 16
V401776, 30, 58, 86, 114, 142, 170L7412591215003038 × 118, 12 × 119
M7412466827442836 × 47, 62 × 48
Q7412333240803068 × 24, 68 × 25
H7412255248603040 × 15, 122 × 16

这些参数通过应用 HCC2D 颜色编码乘数从二维码(ISO/IEC 18004:2006)中导出。

20. HCC2D8 参数表

以下是 HCC2D8 版本参数。这些是完整的 HCC2D8 码字总数和块布局。

表6 — HCC2D8 版本参数
VndimalignECtotaldataececpbblocks
V121L78572173 × 19
M784830103 × 16
Q783939133 × 13
H782751173 × 9
V2256, 18L13210230103 × 34
M1328448163 × 28
Q1326666223 × 22
H1324884283 × 16
V3296, 22L21016545153 × 55
M21013278263 × 44
Q210102108186 × 17
H21078132226 × 13
V4336, 26L30024060203 × 80
M300192108186 × 32
Q300144156266 × 24
H3001081921612 × 9
V5376, 30L40232478263 × 108
M402258144246 × 43
Q402186216186 × 15, 6 × 16
H402138264226 × 11, 6 × 12
V6416, 34L516408108186 × 68
M5163241921612 × 27
Q5162282882412 × 19
H5161803362812 × 15
V7456, 22, 38L588468120206 × 78
M5883722161812 × 31
Q588264324186 × 14, 12 × 15
H5881983902612 × 13, 3 × 14
V8496, 24, 42L726582144246 × 97
M726462264226 × 38, 6 × 39
Q7263303962212 × 18, 6 × 19
H7262584682612 × 14, 6 × 15
V9536, 26, 46L876696180306 × 116
M876546330229 × 36, 6 × 37
Q8763964802012 × 16, 12 × 17
H8763005762412 × 12, 12 × 13
V10576, 28, 50L1038822216186 × 68, 6 × 69
M10386483902612 × 43, 3 × 44
Q10384625762418 × 19, 6 × 20
H10383666722818 × 15, 6 × 16
V11616, 30, 54L12129722402012 × 81
M1212762450303 × 50, 12 × 51
Q12125406722812 × 22, 12 × 23
H1212420792249 × 12, 24 × 13
V12656, 32, 58L13981110288246 × 92, 6 × 93
M13988705282218 × 36, 6 × 37
Q13986187802612 × 20, 18 × 21
H13984749242821 × 14, 12 × 15
V13696, 34, 62L159612843122612 × 107
M159610025942224 × 37, 3 × 38
Q15967328642424 × 20, 12 × 21
H159654010562236 × 11, 12 × 12
V14736, 26, 46, 66L17431383360309 × 115, 3 × 116
M174310956482412 × 40, 15 × 41
Q17437839602033 × 16, 15 × 17
H174359111522433 × 12, 15 × 13
V15776, 26, 48, 70L196515693962215 × 87, 3 × 88
M196512457202415 × 41, 15 × 42
Q196588510803015 × 24, 21 × 25
H196566912962433 × 12, 21 × 13
V16816, 26, 50, 74L219917674322415 × 98, 3 × 99
M219913598402821 × 45, 9 × 46
Q219997512242445 × 19, 6 × 20
H21997591440309 × 15, 39 × 16
V17856, 30, 54, 78L24451941504283 × 107, 15 × 108
M244515219242830 × 46, 3 × 47
Q244511011344283 × 22, 45 × 23
H24458491596286 × 14, 51 × 15
V18896, 30, 56, 82L270321635403015 × 120, 3 × 121
M2703168910142627 × 43, 12 × 44
Q2703119115122851 × 22, 3 × 23
H27039391764286 × 14, 57 × 15
V19936, 30, 58, 86L29732385588289 × 113, 12 × 114
M297318811092269 × 44, 33 × 45
Q2973133516382651 × 21, 12 × 22
H2973102319502627 × 13, 48 × 14
V20976, 34, 62, 90L32552583672289 × 107, 15 × 108
M325520071248269 × 41, 39 × 42
Q3255145518003045 × 24, 15 × 25
H3255115521002845 × 15, 30 × 16
V211016, 28, 50, 72, 94L346827966722812 × 116, 12 × 117
M3468214213262651 × 42
Q3468153619322851 × 22, 18 × 23
H3468121822503057 × 16, 18 × 17
V221056, 26, 50, 74, 98L37743018756286 × 111, 21 × 112
M3774234614282851 × 46
Q3774170420703021 × 24, 48 × 25
H37741326244824102 × 13
V231096, 30, 54, 78, 102L409232828103012 × 121, 15 × 122
M4092258015122812 × 47, 42 × 48
Q4092184222503033 × 24, 42 × 25
H4092139227003048 × 15, 42 × 16
V241136, 28, 54, 80, 106L442235229003018 × 117, 12 × 118
M4422274216802818 × 45, 42 × 46
Q4422199224303033 × 24, 48 × 25
H4422154228803090 × 16, 6 × 17
V251176, 32, 58, 84, 110L476438289362624 × 106, 12 × 107
M4764300017642824 × 47, 39 × 48
Q4764215426103021 × 24, 66 × 25
H4764161431503066 × 15, 39 × 16
V261216, 30, 58, 86, 114L5118411010082830 × 114, 6 × 115
M5118318619322857 × 46, 12 × 47
Q5118226228562884 × 22, 18 × 23
H5118178833303099 × 16, 12 × 17
V271256, 34, 62, 90, 118L5484440410803024 × 122, 12 × 123
M5484338421002866 × 45, 9 × 46
Q5484242430603024 × 23, 78 × 24
H5484188436003036 × 15, 84 × 16
V281296, 26, 50, 74, 98, 122L576345931170309 × 117, 30 × 118
M576335792184289 × 45, 69 × 46
Q5763261331503012 × 24, 93 × 25
H5763198337803033 × 15, 93 × 16
V291336, 30, 54, 78, 102, 126L6153489312603021 × 116, 21 × 117
M6153380123522863 × 45, 21 × 46
Q615327333420303 × 23, 111 × 24
H6153210340503057 × 15, 78 × 16
V301376, 26, 52, 78, 104, 130L6555520513503015 × 115, 30 × 116
M6555411924362857 × 47, 30 × 48
Q6555295536003045 × 24, 75 × 25
H6555223543203069 × 15, 75 × 16
V311416, 30, 56, 82, 108, 134L6969552914403039 × 115, 9 × 116
M696943652604286 × 46, 87 × 47
Q69693099387030126 × 24, 3 × 25
H6969237945903069 × 15, 84 × 16
V321456, 34, 60, 86, 112, 138L7395586515303051 × 115
M7395462327722830 × 46, 69 × 47
Q7395334540503030 × 24, 105 × 25
H7395253548603057 × 15, 105 × 16
V331496, 30, 58, 86, 114, 142L7833621316203051 × 115, 3 × 116
M7833489329402842 × 46, 63 × 47
Q7833351343203087 × 24, 57 × 25
H7833270351303033 × 15, 138 × 16
V341536, 34, 62, 90, 118, 146L8283657317103039 × 115, 18 × 116
M8283517531082842 × 46, 69 × 47
Q82833693459030132 × 24, 21 × 25
H82832883540030177 × 16, 3 × 17
V351576, 30, 54, 78, 102, 126, 150L8628691817103036 × 121, 21 × 122
M8628543631922836 × 47, 78 × 48
Q86283858477030117 × 24, 42 × 25
H8628295856703066 × 15, 123 × 16
V361616, 24, 50, 76, 102, 128, 154L9102730218003018 × 121, 42 × 122
M9102574233602818 × 47, 102 × 48
Q91024062504030138 × 24, 30 × 25
H910231625940306 × 15, 192 × 16
V371656, 28, 54, 80, 106, 132, 158L9588769818903051 × 122, 12 × 123
M9588597636122887 × 46, 42 × 47
Q95884278531030147 × 24, 30 × 25
H9588328863003072 × 15, 138 × 16
V381696, 32, 58, 84, 110, 136, 162L10086810619803012 × 122, 54 × 123
M10086630637802839 × 46, 96 × 47
Q100864506558030144 × 24, 42 × 25
H100863426666030126 × 15, 96 × 16
V391736, 26, 54, 82, 110, 138, 166L10596843621603060 × 117, 12 × 118
M105966648394828120 × 47, 21 × 48
Q105964746585030129 × 24, 66 × 25
H10596366669303030 × 15, 201 × 16
V401776, 30, 58, 86, 114, 142, 170L11118886822503057 × 118, 18 × 119
M11118700241162854 × 47, 93 × 48
Q111184998612030102 × 24, 102 × 25
H11118382872903060 × 15, 183 × 16

这些参数通过应用 HCC2D 颜色编码乘数从二维码(ISO/IEC 18004:2006)中导出。

21. 发布说明

本规格说明有意不重新发布与 QR Code 相关的 finder pattern、alignment pattern、timing pattern、纠错或掩码规则内容。对于复用部分,它仅说明遵循与 QR Code 相同的结构或与 ISO/IEC 18004:2006 兼容的结构,然后完整地规定 HCC2D 专有部分和 HCC2D 参数表。

因此,本文档应理解为:

  • 对于 HCC2D 专有行为是完整的
  • 为避免重新发布 QR Code 组件信息而有意不完整
  • 与 QR Code 规格说明共同构成规范性文件,用于定义 HCC2D 复用的 QR Code 组件

附录A — 示例

以下符号是符合本规范的HCC2D条形码。每个符号均可使用官方HCC2D Decoder应用程序扫描。图中每个模块渲染为0.80毫米。当本规范的PDF版本以100%比例打印在纸上时,此尺寸对应印刷页面上的实际物理尺寸。

HCC2D4符号,颜色调色板模型1(屏幕)
图1 — HCC2D4,颜色调色板模型1(屏幕),纠错级别Q,版本4,79字节,字节模式,未压缩
HCC2D4符号,颜色调色板模型2(打印)
图2 — HCC2D4,颜色调色板模型2(打印),纠错级别Q,版本4,78字节,字节模式,未压缩
HCC2D8符号,颜色调色板模型1(屏幕)
图3 — HCC2D8,颜色调色板模型1(屏幕),纠错级别Q,版本3,79字节,字节模式,未压缩
HCC2D8符号,颜色调色板模型2(打印)
图4 — HCC2D8,颜色调色板模型2(打印),纠错级别Q,版本3,78字节,字节模式,未压缩

以下符号编码了威廉·华兹华斯的廷滕修道院(6,900字节,zlib压缩HCC2DF容器),展示了HCC2D对长文本的编码能力。

编码廷滕修道院的HCC2D4符号,颜色调色板模型1(屏幕)
图5 — HCC2D4,颜色调色板模型1(屏幕),纠错级别M,版本34,原始文本6,900字节,zlib压缩3,283字节,HCC2DF头37字节,HCC2DF总计3,320字节。可靠解码第34版等高版本HCC2D码需要至少1200万像素且带自动对焦的摄像头,大多数中高端智能手机均已具备。
编码廷滕修道院的HCC2D4符号,颜色调色板模型2(打印)
图6 — HCC2D4,颜色调色板模型2(打印),纠错级别M,版本34,原始文本6,900字节,zlib压缩3,283字节,HCC2DF头37字节,HCC2DF总计3,320字节。可靠解码第34版等高版本HCC2D码需要至少1200万像素且带自动对焦的摄像头,大多数中高端智能手机均已具备。
编码廷滕修道院的HCC2D8符号,颜色调色板模型1(屏幕)
图7 — HCC2D8,颜色调色板模型1(屏幕),纠错级别M,版本27,原始文本6,900字节,zlib压缩3,283字节,HCC2DF头37字节,HCC2DF总计3,320字节。可靠解码第27版等高版本HCC2D码需要至少1200万像素且带自动对焦的摄像头,大多数中高端智能手机均已具备。
编码廷滕修道院的HCC2D8符号,颜色调色板模型2(打印)
图8 — HCC2D8,颜色调色板模型2(打印),纠错级别M,版本27,原始文本6,900字节,zlib压缩3,283字节,HCC2DF头37字节,HCC2DF总计3,320字节。可靠解码第27版等高版本HCC2D码需要至少1200万像素且带自动对焦的摄像头,大多数中高端智能手机均已具备。

— 规格说明终 —

← 返回 HCC2D