mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
ECI: get_best_eci()
: just assert is_valid_utf8()
as checked
prior to being called manual: update to latest GS1 General Specifications (v24), pandoc (3.1.12.1)
This commit is contained in:
parent
f0d8901d9e
commit
11b3c18aed
@ -1,7 +1,7 @@
|
|||||||
/* eci.c - Extended Channel Interpretations */
|
/* eci.c - Extended Channel Interpretations */
|
||||||
/*
|
/*
|
||||||
libzint - the open source barcode library
|
libzint - the open source barcode library
|
||||||
Copyright (C) 2009-2023 Robin Stuart <rstuart114@gmail.com>
|
Copyright (C) 2009-2024 Robin Stuart <rstuart114@gmail.com>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
@ -764,7 +764,7 @@ INTERNAL int utf8_to_eci(const int eci, const unsigned char source[], unsigned c
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find the lowest single-byte ECI mode which will encode a given set of Unicode text */
|
/* Find the lowest single-byte ECI mode which will encode a given set of Unicode text, assuming valid UTF-8 */
|
||||||
INTERNAL int get_best_eci(const unsigned char source[], int length) {
|
INTERNAL int get_best_eci(const unsigned char source[], int length) {
|
||||||
int eci = 3;
|
int eci = 3;
|
||||||
/* Note: attempting single-byte conversions only, so get_eci_length() unnecessary */
|
/* Note: attempting single-byte conversions only, so get_eci_length() unnecessary */
|
||||||
@ -782,14 +782,12 @@ INTERNAL int get_best_eci(const unsigned char source[], int length) {
|
|||||||
eci++;
|
eci++;
|
||||||
} while (eci < 25);
|
} while (eci < 25);
|
||||||
|
|
||||||
if (!is_valid_utf8(source, length)) {
|
assert(is_valid_utf8(source, length));
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 26; /* If all of these fail, use UTF-8! */
|
return 26; /* If all of these fail, use UTF-8! */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call `get_best_eci()` for each segment. Returns 0 on failure, first ECI set on success */
|
/* Call `get_best_eci()` for each segment, assuming valid UTF-8. Returns 0 on failure, first ECI set on success */
|
||||||
INTERNAL int get_best_eci_segs(struct zint_symbol *symbol, struct zint_seg segs[], const int seg_count) {
|
INTERNAL int get_best_eci_segs(struct zint_symbol *symbol, struct zint_seg segs[], const int seg_count) {
|
||||||
const int default_eci = symbol->symbology == BARCODE_GRIDMATRIX ? 29 : symbol->symbology == BARCODE_UPNQR ? 4 : 3;
|
const int default_eci = symbol->symbology == BARCODE_GRIDMATRIX ? 29 : symbol->symbology == BARCODE_UPNQR ? 4 : 3;
|
||||||
int first_eci_set = 0;
|
int first_eci_set = 0;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
libzint - the open source barcode library
|
libzint - the open source barcode library
|
||||||
Copyright (C) 2019-2022 Robin Stuart <rstuart114@gmail.com>
|
Copyright (C) 2019-2024 Robin Stuart <rstuart114@gmail.com>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
@ -1381,14 +1381,12 @@ static void test_get_best_eci(const testCtx *const p_ctx) {
|
|||||||
};
|
};
|
||||||
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
||||||
struct item data[] = {
|
struct item data[] = {
|
||||||
/* 0*/ { "\300\301", -1, 0 },
|
/* 0*/ { "ÀÁ", -1, 3 },
|
||||||
/* 1*/ { "ÀÁ", -1, 3 },
|
/* 1*/ { "Ђ", -1, 7 },
|
||||||
/* 2*/ { "Ђ", -1, 7 },
|
/* 2*/ { "Ѐ", -1, 26 }, /* Cyrillic U+0400 not in single-byte code pages */
|
||||||
/* 3*/ { "Ѐ", -1, 26 }, /* Cyrillic U+0400 not in single-byte code pages */
|
/* 3*/ { "β", -1, 9 },
|
||||||
/* 4*/ { "β", -1, 9 },
|
/* 4*/ { "˜", -1, 23 },
|
||||||
/* 5*/ { "˜", -1, 23 },
|
/* 5*/ { "βЂ", -1, 26 },
|
||||||
/* 6*/ { "βЂ", -1, 26 },
|
|
||||||
/* 7*/ { "AB\200", -1, 0 },
|
|
||||||
};
|
};
|
||||||
int data_size = ARRAY_SIZE(data);
|
int data_size = ARRAY_SIZE(data);
|
||||||
int i, length, ret;
|
int i, length, ret;
|
||||||
@ -1417,16 +1415,15 @@ static void test_get_best_eci_segs(const testCtx *const p_ctx) {
|
|||||||
};
|
};
|
||||||
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
/* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */
|
||||||
struct item data[] = {
|
struct item data[] = {
|
||||||
/* 0*/ { { { TU("\300\301"), -1, 0 }, { TU(""), -1, 0 }, { TU(""), 0, 0 } }, 0, 0 },
|
/* 0*/ { { { TU("A"), -1, 0 }, { TU(""), -1, 0 }, { TU(""), 0, 0 } }, 0, 0 },
|
||||||
/* 1*/ { { { TU("A"), -1, 0 }, { TU("\300\301"), -1, 0 }, { TU(""), 0, 0 } }, 0, 0 },
|
/* 1*/ { { { TU("A"), -1, 0 }, { TU("ÀÁ"), -1, 0 }, { TU(""), 0, 0 } }, 0, 0 }, /* As 1st seg default ECI, 3 not returned */
|
||||||
/* 2*/ { { { TU("A"), -1, 0 }, { TU("ÀÁ"), -1, 0 }, { TU(""), 0, 0 } }, 0, 0 }, /* As 1st seg default ECI, 3 not returned */
|
/* 2*/ { { { TU("A"), -1, 4 }, { TU("ÀÁ"), -1, 0 }, { TU(""), 0, 0 } }, 3, 0 },
|
||||||
/* 3*/ { { { TU("A"), -1, 4 }, { TU("ÀÁ"), -1, 0 }, { TU(""), 0, 0 } }, 3, 0 },
|
/* 3*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 0 }, { TU(""), 0, 0 } }, 7, 0 },
|
||||||
/* 4*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 0 }, { TU(""), 0, 0 } }, 7, 0 },
|
/* 4*/ { { { TU("A"), -1, 4 }, { TU("Ђ"), -1, 0 }, { TU(""), 0, 0 } }, 7, 0 },
|
||||||
/* 5*/ { { { TU("A"), -1, 4 }, { TU("Ђ"), -1, 0 }, { TU(""), 0, 0 } }, 7, 0 },
|
/* 5*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU("Ѐ"), -1, 0 } }, 26, 0 }, /* Cyrillic U+0400 not in single-byte code pages */
|
||||||
/* 6*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU("Ѐ"), -1, 0 } }, 26, 0 }, /* Cyrillic U+0400 not in single-byte code pages */
|
/* 6*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 0 }, { TU("β"), -1, 0 } }, 7, 0 },
|
||||||
/* 7*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 0 }, { TU("β"), -1, 0 } }, 7, 0 },
|
/* 7*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU("β"), -1, 0 } }, 9, 0 },
|
||||||
/* 8*/ { { { TU("A"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU("β"), -1, 0 } }, 9, 0 },
|
/* 8*/ { { { TU("˜"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU(""), 0, 0 } }, 23, 23 },
|
||||||
/* 9*/ { { { TU("˜"), -1, 0 }, { TU("Ђ"), -1, 7 }, { TU(""), 0, 0 } }, 23, 23 },
|
|
||||||
};
|
};
|
||||||
int data_size = ARRAY_SIZE(data);
|
int data_size = ARRAY_SIZE(data);
|
||||||
int i, j, seg_count, ret;
|
int i, j, seg_count, ret;
|
||||||
|
12
docs/README
12
docs/README
@ -1,11 +1,11 @@
|
|||||||
% docs/README 2014-01-17
|
% docs/README 2014-02-28
|
||||||
|
|
||||||
For generation of "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" using a recent version of pandoc
|
For generation of "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" using a recent version of pandoc
|
||||||
|
|
||||||
On Ubuntu/Debian (tested on Ubuntu 22.04)
|
On Ubuntu/Debian (tested on Ubuntu 22.04)
|
||||||
|
|
||||||
wget https://github.com/jgm/pandoc/releases/download/3.1.11.1/pandoc-3.1.11.1-1-amd64.deb
|
wget https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-1-amd64.deb
|
||||||
sudo dpkg -i pandoc-3.1.11.1-1-amd64.deb
|
sudo dpkg -i pandoc-3.1.12.1-1-amd64.deb
|
||||||
sudo apt install python3-pip
|
sudo apt install python3-pip
|
||||||
pip install pandoc-tablenos --user
|
pip install pandoc-tablenos --user
|
||||||
export PATH=~/.local/bin:"$PATH"
|
export PATH=~/.local/bin:"$PATH"
|
||||||
@ -20,9 +20,9 @@ On Ubuntu/Debian (tested on Ubuntu 22.04)
|
|||||||
|
|
||||||
On Fedora (tested on Fedora Linux 38 (Workstation Edition))
|
On Fedora (tested on Fedora Linux 38 (Workstation Edition))
|
||||||
|
|
||||||
wget https://github.com/jgm/pandoc/releases/download/3.1.11.1/pandoc-3.1.11.1-linux-amd64.tar.gz
|
wget https://github.com/jgm/pandoc/releases/download/3.1.12.1/pandoc-3.1.12.1-linux-amd64.tar.gz
|
||||||
tar xf pandoc-3.1.11.1-linux-amd64.tar.gz
|
tar xf pandoc-3.1.12.1-linux-amd64.tar.gz
|
||||||
sudo mv -i pandoc-3.1.11.1/bin/pandoc /usr/local/bin
|
sudo mv -i pandoc-3.1.12.1/bin/pandoc /usr/local/bin
|
||||||
sudo dnf install python3-pip
|
sudo dnf install python3-pip
|
||||||
pip install pandoc-tablenos --user
|
pip install pandoc-tablenos --user
|
||||||
export PATH=~/.local/bin:"$PATH"
|
export PATH=~/.local/bin:"$PATH"
|
||||||
|
@ -332,7 +332,7 @@
|
|||||||
<h1 class="title">Zint Barcode Generator and Zint Barcode Studio User
|
<h1 class="title">Zint Barcode Generator and Zint Barcode Studio User
|
||||||
Manual</h1>
|
Manual</h1>
|
||||||
<p class="author">Version 2.13.0.9</p>
|
<p class="author">Version 2.13.0.9</p>
|
||||||
<p class="date">January 2024</p>
|
<p class="date">February 2024</p>
|
||||||
</header>
|
</header>
|
||||||
<nav id="TOC" role="doc-toc">
|
<nav id="TOC" role="doc-toc">
|
||||||
<ul>
|
<ul>
|
||||||
@ -8185,7 +8185,7 @@ Interpretations Part 1: Identification Schemes and Protocol (Released
|
|||||||
24th May 2004)</li>
|
24th May 2004)</li>
|
||||||
<li>AIM ITS/04-023 International Technical Standard - Extended Channel
|
<li>AIM ITS/04-023 International Technical Standard - Extended Channel
|
||||||
Interpretations Part 3: Register (Version 2, February 2022)</li>
|
Interpretations Part 3: Register (Version 2, February 2022)</li>
|
||||||
<li>GS1 General Specifications Release 23.0 (Jan 2023)</li>
|
<li>GS1 General Specifications Release 24.0 (Jan 2024)</li>
|
||||||
<li>ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier
|
<li>ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier
|
||||||
Labeling Standard</li>
|
Labeling Standard</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
% Zint Barcode Generator and Zint Barcode Studio User Manual
|
% Zint Barcode Generator and Zint Barcode Studio User Manual
|
||||||
% Version 2.13.0.9
|
% Version 2.13.0.9
|
||||||
% January 2024
|
% February 2024
|
||||||
|
|
||||||
# 1. Introduction
|
# 1. Introduction
|
||||||
|
|
||||||
@ -4841,7 +4841,7 @@ company references in particular.
|
|||||||
May 2004)
|
May 2004)
|
||||||
- AIM ITS/04-023 International Technical Standard - Extended Channel
|
- AIM ITS/04-023 International Technical Standard - Extended Channel
|
||||||
Interpretations Part 3: Register (Version 2, February 2022)
|
Interpretations Part 3: Register (Version 2, February 2022)
|
||||||
- GS1 General Specifications Release 23.0 (Jan 2023)
|
- GS1 General Specifications Release 24.0 (Jan 2024)
|
||||||
- ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier Labeling
|
- ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier Labeling
|
||||||
Standard
|
Standard
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Zint Barcode Generator and Zint Barcode Studio User Manual
|
Zint Barcode Generator and Zint Barcode Studio User Manual
|
||||||
Version 2.13.0.9
|
Version 2.13.0.9
|
||||||
January 2024
|
February 2024
|
||||||
|
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* For reference the following is a text-only version of the Zint manual, *
|
* For reference the following is a text-only version of the Zint manual, *
|
||||||
@ -4662,7 +4662,7 @@ company references in particular.
|
|||||||
May 2004)
|
May 2004)
|
||||||
- AIM ITS/04-023 International Technical Standard - Extended Channel
|
- AIM ITS/04-023 International Technical Standard - Extended Channel
|
||||||
Interpretations Part 3: Register (Version 2, February 2022)
|
Interpretations Part 3: Register (Version 2, February 2022)
|
||||||
- GS1 General Specifications Release 23.0 (Jan 2023)
|
- GS1 General Specifications Release 24.0 (Jan 2024)
|
||||||
- ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier Labeling
|
- ANSI/HIBC 2.6-2016 - The Health Industry Bar Code (HIBC) Supplier Labeling
|
||||||
Standard
|
Standard
|
||||||
|
|
||||||
@ -4814,7 +4814,7 @@ configured barcode is displayed once the "Generate" button is pressed.
|
|||||||
|
|
||||||
Annex D. Man Page ZINT(1)
|
Annex D. Man Page ZINT(1)
|
||||||
|
|
||||||
% ZINT(1) Version 2.13.0.9 % % January 2024
|
% ZINT(1) Version 2.13.0.9 % % February 2024
|
||||||
|
|
||||||
NAME
|
NAME
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" Automatically generated by Pandoc 3.1.11.1
|
.\" Automatically generated by Pandoc 3.1.12
|
||||||
.\"
|
.\"
|
||||||
.TH "ZINT" "1" "January 2024" "Version 2.13.0.9" ""
|
.TH "ZINT" "1" "February 2024" "Version 2.13.0.9" ""
|
||||||
.SH NAME
|
.SH NAME
|
||||||
\f[CR]zint\f[R] \- encode data as a barcode image
|
\f[CR]zint\f[R] \- encode data as a barcode image
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
% ZINT(1) Version 2.13.0.9
|
% ZINT(1) Version 2.13.0.9
|
||||||
%
|
%
|
||||||
% January 2024
|
% February 2024
|
||||||
|
|
||||||
# NAME
|
# NAME
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user