code 128 что это значит
Code 128
Стандарт штрихкода Code 128 существенно отличается от таких широко распространённых стандартов штрихового кода, как например, EAN. Отличия заключаются, прежде всего, в возможности кодирования не только цифр, но и букв латинского алфавита, а также специальных символов. Кроме того, цифровой код в формате Code 128 становится очень компактным, что достигается за счёт «двойной упаковки» данных, когда два числа записываются в один модуль штрихкода. Буквенные символы кодируются обычным — «одиночным» способом, что делает буквенный код в формате Code 128 вдвое длиннее цифрового.
Содержание
Описание
Штриховой код Code 128 включает в себя 107 символов. Из которых 103 символа данных, 3 стартовых, и 1 остановочный (стоп) символ. Для кодирования всех 128-ми символов ASCII предусмотрено три комплекта символов штрихового кода Code 128 — A, B и C, которые могут использоваться внутри одного штрихкода.
Технические требования к символике штрихового кода Code 128, показатели символики, кодирование знаков данных, размеры, алгоритмы декодирования, параметры применения и строки-префиксы и идентификатора символики в России регламентируются ГОСТ 30743-2001 (ИСО/МЭК 15417—2000) «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Code 128 (Код 128)».
Структура Code 128
Структура штрихкода Code 128 достаточно проста. Штрихкод состоит из шести зон:
Символы штрихового кода Code 128 состоят из трёх штрихов и трёх промежутков. Штрихи и промежутки имеют модульное построение. Ширина каждого модуля составляет от 1 до 4 модулей (1 модуль = 0,33 мм). Ширина знака равна 11 модулям. Остановочный (стоп) знак состоит из тринадцати модулей и имеет четыре штриха и три промежутка.
Контрольный знак Code 128
В спецификации Code 128 использование контрольного знака является обязательным. Согласно таблице символов штрихкода Code 128, каждому знаку присваивается соответствующие значение. Затем, для каждого знака, кроме знака «Stop» и контрольного знака, назначается весовой коэффициент, 1, 2, 3,…, n. При этом, знакам «Start» и следующему за ним первому знаку, присваивается весовой коэффициент равный 1. Контрольный знак вычисляется как сумма произведений весовых коэффициентов на соответствующие значения по модулю 103. Располагается контрольный знак между последним знаком данных и знаком «Stop». [1]
Примечания
См. также
Полезное
Смотреть что такое «Code 128» в других словарях:
Code 128 — Wikipedia encoded in Code 128 B Code 128 is a very high density barcode symbology. It is used for alphanumeric or numeric only barcodes. It can encode all 128 characters of ASCII and, by use of an extension character (FNC4), the Latin 1… … Wikipedia
Code 128 — Wikipedia codificado en Code 128 B. Code 128 es un código de barras de alta densidad, usado ampliamente para la logística y paquetería. Puede codificar caracteres alfanuméricos o solo numéricos. Con este código es posible representar todos los… … Wikipedia Español
Code 128 — Le Code 128 est un format de code barres permettant de coder 103 caractères de la table ASCII. Il en existe 3 tables de codage : A, B et C. C est un format courant dans le milieu industriel. Il existe une normalisation qui dérive du Code 128 … Wikipédia en Français
Code 128 — Beispiel für Code128 Der Code128 (1981) ist eine alphanumerische Kodierung mit hoher Informationsdichte, die im Barcode Bereich eingesetzt wird. Der Prinzipaufbau eines Code128 Lesesymbols besteht aus einem Startsymbol, der Nutzinformation, dem… … Deutsch Wikipedia
128 (number) — 128 (one hundred [and] twenty eight) is the natural number following 127 and preceding 129. ← 127 129 → 128 ← … Wikipedia
Code-barre EAN — Code barres EAN Le code EAN (European Article Numbering) est un code barres utilisé par le commerce et l industrie conformément aux spécifications d’EAN International, organisme aujourd hui remplacé par GS1[1]. Il est connu en France sous le nom… … Wikipédia en Français
Code-barre — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée … Wikipédia en Français
Code barre — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée … Wikipédia en Français
Code barres — code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée et des… … Wikipédia en Français
Code à barres — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée … Wikipédia en Français
Мой штрихкод. Code128
Однажды в процессе производственной деятельности у меня появилась необходимость генерации штрихкода по стандарту code128. Появилась в виду того, что имевшаяся в эксплуатации функция (хранимая процедура в базе Oracle) генерировала клёвый, полосатый штрихкод, который читался не во всех случаях. Разработчики в своё время оттестировали эту процедуру весьма некачественно, но перерабатывать уже не собирались т.к. проект был давно сдан, а потребности в считывании так и не появились.
Первая мысль — поиск готовых библиотек. Навскидку определили критерии — с pl/sql не связываемся, пусть это будет внешний сервис: возможно кусок на javascript для генерации прямо на страничке, либо обращение за картинкой к ближайшему серверу где имеется php. Беглый поиск в интернете показал что тема истоптана весьма плотно. Есть как наколенные поделки уровня лабораторки по программированию, так и мощные библиотеки для всех вариантов кодирования вплоть до qr-кодов. Варианты с JavaScript пришлось отбросить т.к. они во-первых практически все «обфусканы» (даже непонятно, то ли для сокращения объема, то ли стыдно исходники показать), во-вторых генерируют строку для отображения определенным шрифтом, наличие которого не всегда можно обеспечить на клиентском месте и требует дополнительных обработок для экранирования спецсимволов. Внимательное изучение библиотек и кусков кода на php тоже произвело тягостное впечатление — на первый взгляд всё вроде бы правильно: и классы написаны на все случаи жизни, комментарии в наличии, украшательства типа выбора цвета и рамочек, примеры подготовлены. Начнёшь вникать — хотят либо php самой распоследней версии (на боевых серверах не всегда это получается добыть), либо внутренняя логика не различима совсем, либо штрихкод на выходе получается длиннее ожидаемого. Вот последнее не дало покоя и подтолкнуло к собственной реализации.
Самое время пощупать теорию. Вернее мы с ней познакомились намного раньше, просто до последнего не хотелось ввязываться в дополнительное программирование. Исторические факты опустим, а вот очень хорошее техническое описание имеется на http://code128.narod.ru/ (в архиве это файл Descript.doc ) либо в Википедии. В принципе, это всё что нам потребуется для понимания и собственной реализации алгоритма (тут я немного лукавлю — из любой готовой библиотеки нужно выдрать таблицы толщин штрихов, чтобы не вбивать их вручную). Ну и напишем всё это безобразие на php, заодно посмотрим пару прикольных моментов, про которые все забывают или стесняются использовать.
Теория гласит, что code128 позволяет закодировать (сюрпрайз!) 128 символов, при этом нам доступно 3 алфавита, между которыми можно переключаться по ходу дела. Наибольший практический интерес представляют алфавит «B» для буквенно-цифровых символов и алфавит «С» который используется для кодирования цифр, но с некоторой оптимизацией — одним штриховым символом можно закодировать 2 исходных символа и получить более короткий штрихкод. Вот эта оптимизация пока не даётся ни одному php-разработчику — максимум что я видел это попытка в начале кодирования определить состав строки и при наличии только цифр переключаться на алфавит «С». В остальных библиотеках это банальная подстановка символов штрихкода по таблице.
Сразу набросаем простейший класс который содержит сам текст, такие-же классы для рассмотрения вариантов по алфавиту B и С, длину последовательности. Делаем ему минимальный конструктор — на входе строка для кодирования, режим кодирования, ссылки на потомков. В начале конструктора добавляем проверки, чтобы не прорабатывать данную ветку дерева:
и сразу ловим конкретный косяк — куча «пустых» объектов. И это не смотря на то что мы явно отказались создаваться и вроде как железно возвращаем NULL! В общем сразу надо понять, что в php объект создаётся в любом случае. Полагаю что также и в остальных объектно-ориентированных языках. И все эти условия надо проверять перед созданием объекта. Следовательно правильный конструктор будет выглядеть примерно так:
Итак, худо-бедно мы нашли самый короткий путь (штрихкод). Надо его вывести для начала на экран. Делаем в два этапа: сначала от потомка возвращаемся к родителю. Итоговые символы, включая переключение между алфавитами, пушим (push) в массив. Да, в PHP есть такая функция, и она позволяет нам сделать из массива довольно удобный стэк.
Когда потребуется вывести строку — используем array_pop. Таким образом, мы по прежнему используем данный массив как стэк и легко выводим информацию в обратном порядке. Попутно готовим дополнительную обвязку для нашего штрихкода — старт/стоп/контрольная сумма.
Как этим пользоваться? В файл с классом в конец добавим пару строк:
попробовать можно сразу, вставив в html-страничку примерно вот такой тэг:
GS1-128 (ранее известный как UCC / EAN-128) является подмножеством Code 128 и широко используется во всем мире в отраслях судоходства и упаковки в качестве идентификационного кода продукта для уровней контейнера и поддона в цепочке поставок.
СОДЕРЖАНИЕ
Технические характеристики
Штрих-код Code 128 состоит из семи разделов:
Контрольный символ рассчитывается из взвешенной суммы ( по модулю 103) всех символов.
Подтипы
Код 128 включает 108 символов: 103 символа данных, 3 начальных символа и 2 символа остановки. Каждый символ состоит из трех черных полос и трех белых промежутков разной ширины. Все ширины кратны базовому «модулю». Каждая полоса и пробел имеют ширину от 1 до 4 модулей, а символы имеют фиксированную ширину: сумма ширины трех черных полос и трех белых полос составляет 11 модулей.
Шаблон остановки состоит из двух перекрывающихся символов и четырех полосок. Шаблон остановки разрешает двунаправленное сканирование. Когда шаблон остановки читается слева направо (обычный случай), распознается символ остановки (за которым следует двухмодульная полоса). Когда шаблон остановки читается справа налево, распознается символ обратного останова (за которым следует двухмодульная полоса). Сканер, который видит символ обратного останова, знает, что он должен пропустить двухмодульную полосу и прочитать остальную часть штрих-кода в обратном порядке.
Несмотря на свое название, Code 128 не имеет 128 различных символов, поэтому он не может напрямую представлять 128 кодовых точек. Чтобы представить все 128 значений ASCII, он переключается между тремя кодовыми наборами (A, B, C). Вместе кодовые наборы A и B охватывают все 128 символов ASCII. Кодовый набор C используется для эффективного кодирования цепочек цифр. Начальное подмножество выбирается с помощью соответствующего начального символа. В каждом кодовом наборе некоторые из 103 кодовых точек данных зарезервированы для перехода к одному из двух других кодовых наборов. Сдвиги выполняются с использованием кодовых точек 98 и 99 в кодовых наборах A и B, 100 в кодовых наборах A и C и 101 в кодовых наборах B и C для переключения между ними):
Старт / стоп и закодированные данные
Расчет контрольной цифры
Например, в следующей таблице для буквенно-цифровой строки PJJ123C вычисляется значение контрольной суммы варианта A кода 128:
Код | Ценить | Позиция | Значение × позиция |
---|---|---|---|
Начальный код A | 103 | 1 | 103 |
п | 48 | 1 | 48 |
J | 42 | 2 | 84 |
J | 42 | 3 | 126 |
1 | 17 | 4 | 68 |
2 | 18 | 5 | 90 |
3 | 19 | 6 | 114 |
C | 35 год | 7 | 245 |
Сумма | 878 | ||
Остаток по модулю 103 | 54 |
Использование FNC4 для кодирования высоких (128–255) символов
Ширина штрих-кода
Code128 определяет комбинацию из 6 чередующихся полосок и пробелов (по 3 каждого) для каждого символа. Таким образом, каждый символ начинается с полосы и заканчивается пробелом. В шрифтах штрих-кода последняя полоса обычно сочетается с символом остановки, чтобы создать более широкий шаблон остановки. В следующей таблице указаны значения ширины каждой полосы и пробела для каждого символа. Ширина каждой планки или пробела может составлять 1, 2, 3 или 4 единицы (модуля). В приведенном выше примере буква «А» будет изображена с рисунком 10100011000 или шириной 111323 в таблицах ниже.
Значение ширины получается путем подсчета длины каждого ряда единиц, затем нулей в шаблоне, начиная слева. Всегда будет 6 прогонов, и длина этих 6 прогонов формирует значение ширины. Например, при использовании шаблона 10100011000 длины серий будут 1 (цифра 1), 1 (цифра 0), 1 (цифра 1), 3 (цифра 0), 2 (цифра 1), 3 (цифра 0). Если указать только длину каждого прогона, получится 1, 1, 1, 3, 2, 3, что приведет к значению ширины 111323.
Ценить | Шестнадцатеричное значение | 128A | 128B | 128C | Положение шрифта (Обычный / Необычный / Barcodesoft) | Бар / Пробел | ||
---|---|---|---|---|---|---|---|---|
Код | Latin-1 | Шаблон | Ширина | |||||
0 | 00 | Космос | Космос | 00 | 32 или 194 или 207/212/252 | ␣ или Â или Ï / Ô / ü | 11011001100 | 212222 |
1 | 01 | ! | ! | 01 | 33 | ! | 11001101100 | 222122 |
2 | 02 | « | « | 02 | 34 | « | 11001100110 | 222221 |
3 | 03 | # | # | 03 | 35 год | # | 10010011000 | 121223 |
4 | 04 | $ | $ | 04 | 36 | $ | 10010001100 | 121322 |
5 | 05 | % | % | 05 | 37 | % | 10001001100 | 131222 |
6 | 06 | & | & | 06 | 38 | & | 10011001000 | 122213 |
7 | 07 | ‘ | ‘ | 07 | 39 | ‘ | 10011000100 | 122312 |
8 | 08 | ( | ( | 08 | 40 | ( | 10001100100 | 132212 |
9 | 09 | ) | ) | 09 | 41 год | ) | 11001001000 | 221213 |
10 | 0a | * | * | 10 | 42 | * | 11001000100 | 221312 |
11 | 0b | + | + | 11 | 43 год | + | 11000100100 | 231212 |
12 | 0c | , | , | 12 | 44 год | , | 10110011100 | 112232 |
13 | 0d | — | — | 13 | 45 | — | 10011011100 | 122132 |
14 | 0e | . | . | 14 | 46 | . | 10011001110 | 122231 |
15 | 0f | / | / | 15 | 47 | / | 10111001100 | 113222 |
16 | 10 | 0 | 0 | 16 | 48 | 0 | 10011101100 | 123122 |
17 | 11 | 1 | 1 | 17 | 49 | 1 | 10011100110 | 123221 |
18 | 12 | 2 | 2 | 18 | 50 | 2 | 11001110010 | 223211 |
19 | 13 | 3 | 3 | 19 | 51 | 3 | 11001011100 | 221132 |
20 | 14 | 4 | 4 | 20 | 52 | 4 | 11001001110 | 221231 |
21 год | 15 | 5 | 5 | 21 год | 53 | 5 | 11011100100 | 213212 |
22 | 16 | 6 | 6 | 22 | 54 | 6 | 11001110100 | 223112 |
23 | 17 | 7 | 7 | 23 | 55 | 7 | 11101101110 | 312131 |
24 | 18 | 8 | 8 | 24 | 56 | 8 | 11101001100 | 311222 |
25 | 19 | 9 | 9 | 25 | 57 год | 9 | 11100101100 | 321122 |
26 год | 1а | : | : | 26 год | 58 | : | 11100100110 | 321221 |
27 | 1b | ; | ; | 27 | 59 | ; | 11101100100 | 312212 |
28 год | 1c | > | 30 | 62 | > | 11011011000 | 212123 | |
31 год | 1f | ? | ? | 31 год | 63 | ? | 11011000110 | 212321 |
32 | 20 | @ | @ | 32 | 64 | @ | 11000110110 | 232121 |
33 | 21 год | А | А | 33 | 65 | А | 10100011000 | 111323 |
34 | 22 | B | B | 34 | 66 | B | 10001011000 | 131123 |
35 год | 23 | C | C | 35 год | 67 | C | 10001000110 | 131321 |
36 | 24 | D | D | 36 | 68 | D | 10110001000 | 112313 |
37 | 25 | E | E | 37 | 69 | E | 10001101000 | 132113 |
38 | 26 год | F | F | 38 | 70 | F | 10001100010 | 132311 |
39 | 27 | грамм | грамм | 39 | 71 | грамм | 11010001000 | 211313 |
40 | 28 год | ЧАС | ЧАС | 40 | 72 | ЧАС | 11000101000 | 231113 |
41 год | 29 | я | я | 41 год | 73 | я | 11000100010 | 231311 |
42 | 2а | J | J | 42 | 74 | J | 10110111000 | 112133 |
43 год | 2b | K | K | 43 год | 75 | K | 10110001110 | 112331 |
44 год | 2c | L | L | 44 год | 76 | L | 10001101110 | 132131 |
45 | 2d | M | M | 45 | 77 | M | 10111011000 | 113123 |
46 | 2e | N | N | 46 | 78 | N | 10111000110 | 113321 |
47 | 2f | О | О | 47 | 79 | О | 10001110110 | 133121 |
48 | 30 | п | п | 48 | 80 | п | 11101110110 | 313121 |
49 | 31 год | Q | Q | 49 | 81 год | Q | 11010001110 | 211331 |
50 | 32 | р | р | 50 | 82 | р | 11000101110 | 231131 |
51 | 33 | S | S | 51 | 83 | S | 11011101000 | 213113 |
52 | 34 | Т | Т | 52 | 84 | Т | 11011100010 | 213311 |
53 | 35 год | U | U | 53 | 85 | U | 11011101110 | 213131 |
54 | 36 | V | V | 54 | 86 | V | 11101011000 | 311123 |
55 | 37 | W | W | 55 | 87 | W | 11101000110 | 311321 |
56 | 38 | Икс | Икс | 56 | 88 | Икс | 11100010110 | 331121 |
57 год | 39 | Y | Y | 57 год | 89 | Y | 11101101000 | 312113 |
58 | 3а | Z | Z | 58 | 90 | Z | 11101100010 | 312311 |
59 | 3b | [ | [ | 59 | 91 | [ | 11100011010 | 332111 |
60 | 3c | \ | \ | 60 | 92 | \ | 11101111010 | 314111 |
61 | 3d | ] | ] | 61 | 93 | ] | 11001000010 | 221411 |
62 | 3e | ^ | ^ | 62 | 94 | ^ | 11110001010 | 431111 |
63 | 3f | _ | _ | 63 | 95 | _ | 10100110000 | 111224 |
64 | 40 | NUL | ` | 64 | 96 | ` | 10100001100 | 111422 |
65 | 41 год | SOH | а | 65 | 97 | а | 10010110000 | 121124 |
66 | 42 | STX | б | 66 | 98 | б | 10010000110 | 121421 |
67 | 43 год | ETX | c | 67 | 99 | c | 10000101100 | 141122 |
68 | 44 год | EOT | d | 68 | 100 | d | 10000100110 | 141221 |
69 | 45 | ENQ | е | 69 | 101 | е | 10110010000 | 112214 |
70 | 46 | ACK | ж | 70 | 102 | ж | 10110000100 | 112412 |
71 | 47 | BEL | грамм | 71 | 103 | грамм | 10011010000 | 122114 |
72 | 48 | BS | час | 72 | 104 | час | 10011000010 | 122411 |
73 | 49 | HT | я | 73 | 105 | я | 10000110100 | 142112 |
74 | 4а | LF | j | 74 | 106 | j | 10000110010 | 142211 |
75 | 4b | VT | k | 75 | 107 | k | 11000010010 | 241211 |
76 | 4c | FF | л | 76 | 108 | л | 11001010000 | 221114 |
77 | 4d | CR | м | 77 | 109 | м | 11110111010 | 413111 |
78 | 4e | ТАК | п | 78 | 110 | п | 11000010100 | 241112 |
79 | 4f | SI | о | 79 | 111 | о | 10001111010 | 134111 |
80 | 50 | DLE | п | 80 | 112 | п | 10100111100 | 111242 |
81 год | 51 | DC1 | q | 81 год | 113 | q | 10010111100 | 121142 |
82 | 52 | DC2 | р | 82 | 114 | р | 10010011110 | 121241 |
83 | 53 | DC3 | s | 83 | 115 | s | 10111100100 | 114212 |
84 | 54 | DC4 | т | 84 | 116 | т | 10011110100 | 124112 |
85 | 55 | НАК | ты | 85 | 117 | ты | 10011110010 | 124211 |
86 | 56 | SYN | v | 86 | 118 | v | 11110100100 | 411212 |
87 | 57 год | ETB | ш | 87 | 119 | ш | 11110010100 | 421112 |
88 | 58 | ЖЕСТЯНАЯ БАНКА | Икс | 88 | 120 | Икс | 11110010010 | 421211 |
89 | 59 | ЭМ | у | 89 | 121 | у | 11011011110 | 212141 |
90 | 5а | SUB | z | 90 | 122 | z | 11011110110 | 214121 |
91 | 5b | ESC | < | 91 | 123 | < | 11110110110 | 412121 |
92 | 5c | FS | | | 92 | 124 | | | 10101111000 | 111143 |
93 | 5d | GS | > | 93 | 125 | > | 10100011110 | 111341 |
94 | 5e | RS | 10001011110 | 131141 | ||||
95 | 5f | нас | DEL | 95 | 195/200/240 | Ã / È / ð | 10111101000 | 114113 |
96 | 60 | FNC 3 | FNC 3 | 96 | 196/201/241 | Ä / É / ñ | 10111100010 | 114311 |
97 | 61 | FNC 2 | FNC 2 | 97 | 197/202/242 | Å / Ê / ò | 11110101000 | 411113 |
98 | 62 | Сдвиг B | Сдвиг А | 98 | 198/203/243 | Æ / Ë / ó | 11110100010 | 411311 |
99 | 63 | Код C | Код C | 99 | 199/204/244 | Ç / Ì / ô | 10111011110 | 113141 |
100 | 64 | Код B | FNC 4 | Код B | 200/205/245 | È / Í / õ | 10111101110 | 114131 |
101 | 65 | FNC 4 | Код А | Код А | 201/206/246 | É / Î / ö | 11101011110 | 311141 |
102 | 66 | FNC 1 | FNC 1 | FNC 1 | 202/207/247 | Ê / Ï / ÷ | 11110101110 | 411131 |
103 | 67 | Начальный код A | 203/208/248 | Ë / Ð / ø | 11010000100 | 211412 | ||
104 | 68 | Начальный код B | 204/209/249 | Ì / Ñ / ù | 11010010000 | 211214 | ||
105 | 69 | Начальный код C | 205/210/250 | Í / Ò / ú | 11010011100 | 211232 | ||
106 | 6а | Стоп | — | — | 11000111010 | 233111 | ||
— | — | Обратный стоп | — | — | 11010111000 | 211133 | ||
— | — | Стоп-паттерн (7 баров / пробелов) | 206/211/251 | Î / Ó / û | 1100011101011 | 2331112 |
Символы «Код A», «Код B» и «Код C» заставляют все следующие символы интерпретироваться согласно соответствующему субкоду (то есть 128A, 128B или 128C). Символ «Shift» переключает интерпретацию одного следующего символа между подкодами A и B.
Закодированный символ ASCII зависит от фактического используемого шрифта штрих-кода. В частности, символ ASCII со значением 0 и значением 95 и выше может быть определен по-разному в установленном шрифте.
Расчет контрольной цифры для указанного выше примера почтового индекса:
Ценить | Масса | Вес × значение | |
---|---|---|---|
Начать C | 105 | 1 | 105 |
FNC1 | 102 | 1 | 102 |
42 | 42 | 2 | 84 |
18 | 18 | 3 | 54 |
40 | 40 | 4 | 160 |
20 | 20 | 5 | 100 |
50 | 50 | 6 | 300 |
Код А | 101 | 7 | 707 |
0 | 16 | 8 | 128 |
Сумма = | 1740 г. | ||
1740 г. | Мод 103 = | 92 |
Доступность
Для конечного пользователя штрих-коды Code 128 могут быть сгенерированы либо внешним приложением для создания изображения штрих-кода, либо решением для штрих-кода на основе шрифтов. Любое решение требует использования приложения или надстройки приложения для вычисления контрольной цифры и создания штрих-кода.
Оптимизация длины штрих-кода
Использование кодового набора C выгодно только при следующих условиях:
Расположение цифр | Количество последовательных цифр |
---|---|
начало данных | 4+ |
конец данных | 4+ |
середина данных (окружена символами из кодового набора A или B) | 6+ |
все данные | либо 2, либо 4+ (но не 3) |
Оптимальное кодирование может быть найдено с использованием динамического программирования алгоритма.