EAN/UPC: add quiet zone indicators option (API output_options

`EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287)
EAN-2/EAN-5: HRT now at top instead of at bottom for standalones,
  following BWIPP
CLI: batch mode: don't close input if stdin
EAN/UPC: fix excess 1X to right of add-ons
Composites: fix excess whitespace; fix quiet zone calcs to allow
  for linear shifting
CLI: use own (Wine) version of `CommandLineToArgvW()` to avoid
  loading "shell32.dll"
Move "font.h" -> "raster_font.h"
EPS/SVG: use new `out_putsf()` func to output floats, avoiding
  trailing zeroes & locale dependency
EPS: simplify "TR" formula
SVG: change font from "Helvetica, sans serif" to "OCR-B, monospace";
  use single "<path>" instead of multiple "<rect>"s to draw boxes
  (reduces file size)
Add `EMBED_VECTOR_FONT` to `output_options` (CLI `--embedfont`) to
  enable embedding of font in vector output - currently only for
  SVG output of EAN/UPC
GUI: use "OCR-B" font for EAN/UPC and "Arimo" for all others (was
  "Helvetica" for both); paint background of screen preview light
  grey so as contrasts with whitespace and quiet zones
EMF: prefix funcs with `emf_`; simplify string `halign` handling
large: rename `large_int` -> `large_uint`
CODE128/common: move `c128_hrt_cpy_iso8859_1()` to
  `hrt_cpy_iso8859_1()` and add `ZINT_WARN_HRT_TRUNCATED` warning
  (for future use)
Various symbologies: replace `printf()` with `fputs()`
  (symbol->debug)
QRCODE: better assert(), removing a NOLINT (2 left)
CLI: add some more barcode synonyms for DBAR
common: various fiddlings
CMake: don't include png.c unless ZINT_USE_PNG (avoids clang
  warning)
This commit is contained in:
gitlost 2023-06-12 01:25:55 +01:00
parent 6d015d6a8f
commit 607e4ed33a
395 changed files with 11528 additions and 23016 deletions

View File

@ -3,15 +3,25 @@ Version 2.12.0.9 (dev) not released yet
**Incompatible changes** **Incompatible changes**
------------------------ ------------------------
- zint_symbol fgcolour and bgcolour buffer lengths extended 10 -> 16 to allow - Buffer lengths of fields `fgcolour` and `bgcolour` in `zint_symbol` extended
for "C,M,Y,K" comma-separated decimal percentage strings 10 -> 16 to allow for "C,M,Y,K" comma-separated decimal percentage strings
- CMYK values for EPS (slightly) and TIF (significantly) have changed - now use - CMYK values for EPS (slightly) and TIF (significantly) have changed - now use
the same RGB -> CMYK formula the same RGB -> CMYK formula
- Text (HRT) placement for vector (EMF/EPS/SVG) output changed - for EAN/UPC - Text (HRT) placement for vector (EMF/EPS/SVG) output changed - for EAN/UPC
slightly further away from barcode, for all others slightly nearer. Some slightly further away from barcode, for all others slightly nearer. Some
horizontal alignments of EAN/UPC vector text also tweaked horizontal alignments of EAN/UPC vector text also tweaked
- Text (HRT) for standalone EAN-2 and EAN-5 now at top of symbol
(was at bottom)
- For Windows, filenames are now assumed to be UTF-8 encoded. Affects `outfile` - For Windows, filenames are now assumed to be UTF-8 encoded. Affects `outfile`
in `zint_symbol` and all API filename arguments in `zint_symbol` and all API filename arguments
- Never used `fontsize` field removed from `zint_symbol`
- Buffer length of field `text` (HRT) in `zint_symbol` extended 128 -> 160
(client buffers may need checking/extending)
- Font of text of SVG vector output now "OCR-B, monospace"
(was "Helvetica, sans serif")
- Unintended excess horizontal whitespace of Composite symbols removed, and
quiet zone settings respected exactly, and centring of HRT (if any) now
relative to linear part of symbol only rather than whole symbol
Changes Changes
------- -------
@ -27,12 +37,39 @@ Changes
comma-separated decimal percentage strings "C,M,Y,K" where "C", "M" etc. are comma-separated decimal percentage strings "C,M,Y,K" where "C", "M" etc. are
0-100 (ticket #281, 3rd point) 0-100 (ticket #281, 3rd point)
- PCX: add alpha support - PCX: add alpha support
- GUI: Rearrange some Appearance tab inputs (Border Type <-> Width, Show Text - GUI: rearrange some Appearance tab inputs (Border Type <-> Width, Show Text
<-> Font, Text/Font <-> Printing Scale/Size) to flow more naturally; <-> Font, Text/Font <-> Printing Scale/Size) to flow more naturally;
save button "Save As..." -> "Save..." and add icon save button "Save As..." -> "Save..." and add icon
- Add `text_gap` option to allow adjustment of vertical gap between barcode and - Add `text_gap` option to allow adjustment of vertical gap between barcode and
text (HRT) text (HRT)
- DAFT: up max to 250 chars - DAFT: up max to 250 chars
- CLI: use own (Wine) version of `CommandLineToArgvW()` to avoid loading
"shell32.dll"
- EAN/UPC: add quiet zone indicators option (API `output_options`
`EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287)
- EAN-2/EAN-5: HRT now at top instead of at bottom for standalones, following
BWIPP
- Move "font.h" -> "raster_font.h"
- EPS/SVG: use new `out_putsf()` func to output floats, avoiding trailing zeroes
& locale dependency
- EPS: simplify "TR" formula
- SVG: change font from "Helvetica, sans serif" to "OCR-B, monospace";
use single "<path>" instead of multiple "<rect>"s to draw boxes (reduces file
size)
- Add `EMBED_VECTOR_FONT` to `output_options` (CLI `--embedfont`) to enable
embedding of font in vector output - currently only for SVG output of EAN/UPC
- GUI: use "OCR-B" font for EAN/UPC and "Arimo" for all others (was "Helvetica"
for both); add preview background colour option (default light grey) so as
whitespace will show up in contrast (access via preview context menu)
- EMF: prefix funcs with `emf_`; simplify string `halign` handling
- large: rename `large_int` -> `large_uint`
- CODE128/common: move `c128_hrt_cpy_iso8859_1()` to `hrt_cpy_iso8859_1()` and
add `ZINT_WARN_HRT_TRUNCATED` warning (for future use)
- Various symbologies: replace `printf()` with `fputs()` (symbol->debug)
- QRCODE: better assert(), removing a NOLINT (2 left)
- CLI: add some more barcode synonyms for DBAR
- common: various fiddlings
- CMake: don't include png.c unless ZINT_USE_PNG (avoids clang warning)
Bugs Bugs
---- ----
@ -45,6 +82,14 @@ Bugs
- GUI: fix fg/gbcolor icon background not being reset on zap - GUI: fix fg/gbcolor icon background not being reset on zap
- EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC - EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC
- EMF/EPS/SVG: fix addon bars placement/length when text hidden - EMF/EPS/SVG: fix addon bars placement/length when text hidden
- For Windows, assume `outfile` & API filename args are in UTF-8,
& use xxxW() APIs accordingly, ticket #288, props Marcel
**Backwards-incompatible change**
- GUI: fix `save_to_file()` `filename.toLatin1()` -> `toUtf8()`
- CLI: batch mode: don't close input if stdin
- EAN/UPC: fix excess 1X to right of add-ons
- Composites: fix excess whitespace; fix quiet zone calcs to allow for linear
shifting
Version 2.12.0 (2022-12-12) Version 2.12.0 (2022-12-12)

View File

@ -4,11 +4,19 @@
project(zint) project(zint)
if(ZINT_USE_PNG)
find_package(PNG)
endif()
set(zint_COMMON_SRCS common.c library.c large.c reedsol.c gs1.c eci.c general_field.c) set(zint_COMMON_SRCS common.c library.c large.c reedsol.c gs1.c eci.c general_field.c)
set(zint_ONEDIM_SRCS bc412.c code.c code128.c 2of5.c upcean.c telepen.c medical.c plessey.c rss.c) set(zint_ONEDIM_SRCS bc412.c code.c code128.c 2of5.c upcean.c telepen.c medical.c plessey.c rss.c)
set(zint_POSTAL_SRCS postal.c auspost.c imail.c mailmark.c) set(zint_POSTAL_SRCS postal.c auspost.c imail.c mailmark.c)
set(zint_TWODIM_SRCS code16k.c codablock.c dmatrix.c pdf417.c qr.c maxicode.c composite.c aztec.c code49.c code1.c gridmtx.c hanxin.c dotcode.c ultra.c) set(zint_TWODIM_SRCS code16k.c codablock.c dmatrix.c pdf417.c qr.c maxicode.c composite.c aztec.c code49.c code1.c gridmtx.c hanxin.c dotcode.c ultra.c)
set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c png.c tif.c raster.c output.c) if(ZINT_USE_PNG AND PNG_FOUND)
set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c png.c tif.c raster.c output.c)
else()
set(zint_OUTPUT_SRCS vector.c ps.c svg.c emf.c bmp.c pcx.c gif.c tif.c raster.c output.c)
endif()
set(zint_SRCS ${zint_OUTPUT_SRCS} ${zint_COMMON_SRCS} ${zint_ONEDIM_SRCS} ${zint_POSTAL_SRCS} ${zint_TWODIM_SRCS}) set(zint_SRCS ${zint_OUTPUT_SRCS} ${zint_COMMON_SRCS} ${zint_ONEDIM_SRCS} ${zint_POSTAL_SRCS} ${zint_TWODIM_SRCS})
if(ZINT_SHARED) if(ZINT_SHARED)
@ -60,10 +68,6 @@ if(ZINT_SHARED)
VERSION ${ZINT_VERSION}) VERSION ${ZINT_VERSION})
endif() endif()
if(ZINT_USE_PNG)
find_package(PNG)
endif()
if(ZINT_USE_PNG AND PNG_FOUND) if(ZINT_USE_PNG AND PNG_FOUND)
zint_target_link_libraries(PNG::PNG) zint_target_link_libraries(PNG::PNG)
else() else()

View File

@ -1,7 +1,7 @@
/* aztec.c - Handles Aztec 2D Symbols */ /* aztec.c - Handles Aztec 2D Symbols */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -180,7 +180,7 @@ static int aztec_text_process(const unsigned char source[], int src_len, int bp,
} }
if (debug_print) { if (debug_print) {
printf("First Pass:\n"); fputs("First Pass:\n", stdout);
printf("%.*s\n", src_len, encode_mode); printf("%.*s\n", src_len, encode_mode);
} }
@ -1066,14 +1066,14 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int
} }
if (debug_print) { if (debug_print) {
printf("Codewords:\n"); fputs("Codewords:\n", stdout);
for (i = 0; i < (adjusted_length / codeword_size); i++) { for (i = 0; i < (adjusted_length / codeword_size); i++) {
for (j = 0; j < codeword_size; j++) { for (j = 0; j < codeword_size; j++) {
printf("%c", adjusted_string[(i * codeword_size) + j]); printf("%c", adjusted_string[(i * codeword_size) + j]);
} }
printf(" "); fputc(' ', stdout);
} }
printf("\n"); fputc('\n', stdout);
} }
} while (adjusted_length > data_maxsize); } while (adjusted_length > data_maxsize);
@ -1168,11 +1168,11 @@ INTERNAL int aztec(struct zint_symbol *symbol, struct zint_seg segs[], const int
} }
if (debug_print) { if (debug_print) {
printf("Codewords:\n"); fputs("Codewords:\n", stdout);
for (i = 0; i < (adjusted_length / codeword_size); i++) { for (i = 0; i < (adjusted_length / codeword_size); i++) {
printf("%.*s ", codeword_size, adjusted_string + i * codeword_size); printf("%.*s ", codeword_size, adjusted_string + i * codeword_size);
} }
printf("\n"); fputc('\n', stdout);
} }
} }

View File

@ -1,7 +1,7 @@
/* codablock.c - Handles Codablock-F */ /* codablock.c - Handles Codablock-F */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2016-2022 Harald Oehlmann Copyright (C) 2016-2023 Harald Oehlmann
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
@ -645,10 +645,10 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int
if (symbol->debug & ZINT_DEBUG_PRINT) { /* start a new level of local variables */ if (symbol->debug & ZINT_DEBUG_PRINT) { /* start a new level of local variables */
int DPos; int DPos;
printf("\nData:"); fputs("\nData:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) for (DPos = 0; DPos < dataLength; DPos++)
fputc(data[DPos], stdout); fputc(data[DPos], stdout);
printf("\n Set:"); fputs("\n Set:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) { for (DPos = 0; DPos < dataLength; DPos++) {
switch (pSet[DPos] & (CodeA + CodeB + CodeC)) { switch (pSet[DPos] & (CodeA + CodeB + CodeC)) {
case CodeA: fputc('A', stdout); break; case CodeA: fputc('A', stdout); break;
@ -657,16 +657,16 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int
default: fputc('.', stdout); break; default: fputc('.', stdout); break;
} }
} }
printf("\nFNC1:"); fputs("\nFNC1:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) for (DPos = 0; DPos < dataLength; DPos++)
fputc((pSet[DPos] & CodeFNC1) == 0 ? '.' : 'X', stdout); fputc((pSet[DPos] & CodeFNC1) == 0 ? '.' : 'X', stdout);
printf("\n END:"); fputs("\n END:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) for (DPos = 0; DPos < dataLength; DPos++)
fputc((pSet[DPos] & CEnd) == 0 ? '.' : 'X', stdout); fputc((pSet[DPos] & CEnd) == 0 ? '.' : 'X', stdout);
printf("\nShif:"); fputs("\nShif:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) for (DPos = 0; DPos < dataLength; DPos++)
fputc((pSet[DPos] & CShift) == 0 ? '.' : 'X', stdout); fputc((pSet[DPos] & CShift) == 0 ? '.' : 'X', stdout);
printf("\nFILL:"); fputs("\nFILL:", stdout);
for (DPos = 0; DPos < dataLength; DPos++) for (DPos = 0; DPos < dataLength; DPos++)
fputc((pSet[DPos] & CFill) == 0 ? '.' : 'X', stdout); fputc((pSet[DPos] & CFill) == 0 ? '.' : 'X', stdout);
fputc('\n', stdout); fputc('\n', stdout);
@ -831,14 +831,14 @@ INTERNAL int codablockf(struct zint_symbol *symbol, unsigned char source[], int
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
/* Dump the output to the screen /* Dump the output to the screen
*/ */
printf("\nCode 128 Code Numbers:\n"); fputs("\nCode 128 Code Numbers:\n", stdout);
{ /* start a new level of local variables */ { /* start a new level of local variables */
int DPos, DPos2; int DPos, DPos2;
for (DPos = 0; DPos < rows; DPos++) { for (DPos = 0; DPos < rows; DPos++) {
for (DPos2 = 0; DPos2 < columns; DPos2++) { for (DPos2 = 0; DPos2 < columns; DPos2++) {
printf("%3d ", (int) (pOutput[DPos * columns + DPos2])); printf("%3d ", (int) (pOutput[DPos * columns + DPos2]));
} }
printf("\n"); fputc('\n', stdout);
} }
} }
printf("rows=%d columns=%d (%d data) fillings=%d\n", rows, columns, columns - 5, fillings); printf("rows=%d columns=%d (%d data) fillings=%d\n", rows, columns, columns - 5, fillings);

View File

@ -601,11 +601,11 @@ static void channel_generate_precalc(int channels, long value, int mod, int last
int smax[7]) { int smax[7]) {
int i; int i;
if (value == mod) printf("static channel_precalc channel_precalcs%d[] = {\n", channels); if (value == mod) printf("static channel_precalc channel_precalcs%d[] = {\n", channels);
printf(" { %7ld, {", value); for (i = 0; i < 8; i++) printf(" %d,", B[i]); printf(" },"); printf(" { %7ld, {", value); for (i = 0; i < 8; i++) printf(" %d,", B[i]); fputs(" },", stdout);
printf(" {"); for (i = 0; i < 8; i++) printf(" %d,", S[i]); printf(" },"); fputs(" {", stdout); for (i = 0; i < 8; i++) printf(" %d,", S[i]); fputs(" },", stdout);
printf(" {"); for (i = 0; i < 7; i++) printf(" %d,", bmax[i]); printf(" },"); fputs(" {", stdout); for (i = 0; i < 7; i++) printf(" %d,", bmax[i]); fputs(" },", stdout);
printf(" {"); for (i = 0; i < 7; i++) printf(" %d,", smax[i]); printf(" }, },\n"); fputs(" {", stdout); for (i = 0; i < 7; i++) printf(" %d,", smax[i]); fputs(" }, },\n", stdout);
if (value == last) printf("};\n"); if (value == last) fputs("};\n", stdout);
} }
#else #else
#include "channel_precalcs.h" #include "channel_precalcs.h"

View File

@ -1,7 +1,7 @@
/* code1.c - USS Code One */ /* code1.c - USS Code One */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -497,14 +497,14 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
if (length >= 15 && num_digits[0] >= 15) { if (length >= 15 && num_digits[0] >= 15) {
target[tp++] = 236; /* FNC1 and change to Decimal */ target[tp++] = 236; /* FNC1 and change to Decimal */
next_mode = C1_DECIMAL; next_mode = C1_DECIMAL;
if (debug_print) printf("FNC1Dec "); if (debug_print) fputs("FNC1Dec ", stdout);
} else if (length >= 7 && num_digits[0] == length) { } else if (length >= 7 && num_digits[0] == length) {
target[tp++] = 236; /* FNC1 and change to Decimal */ target[tp++] = 236; /* FNC1 and change to Decimal */
next_mode = C1_DECIMAL; next_mode = C1_DECIMAL;
if (debug_print) printf("FNC1Dec "); if (debug_print) fputs("FNC1Dec ", stdout);
} else { } else {
target[tp++] = 232; /* FNC1 */ target[tp++] = 232; /* FNC1 */
if (debug_print) printf("FNC1 "); if (debug_print) fputs("FNC1 ", stdout);
} }
/* Note ignoring Structured Append and ECI if GS1 mode (up to caller to warn/error) */ /* Note ignoring Structured Append and ECI if GS1 mode (up to caller to warn/error) */
} else { } else {
@ -516,11 +516,11 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
target[tp++] = 233; /* FNC2 */ target[tp++] = 233; /* FNC2 */
target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1); target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1);
target[tp++] = '\\' + 1; /* Escape char */ target[tp++] = '\\' + 1; /* Escape char */
if (debug_print) printf("SAGrp "); if (debug_print) fputs("SAGrp ", stdout);
} else { } else {
target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1); target[tp++] = (symbol->structapp.index - 1) * 15 + (symbol->structapp.count - 1);
target[tp++] = 233; /* FNC2 */ target[tp++] = 233; /* FNC2 */
if (debug_print) printf("FNC2 "); if (debug_print) fputs("FNC2 ", stdout);
} }
} else { /* Extended Group mode */ } else { /* Extended Group mode */
if ((eci || seg_count > 1) && symbol->structapp.index == 1) { if ((eci || seg_count > 1) && symbol->structapp.index == 1) {
@ -530,12 +530,12 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
target[tp++] = 233; /* FNC2 */ target[tp++] = 233; /* FNC2 */
target[tp++] = symbol->structapp.index; target[tp++] = symbol->structapp.index;
target[tp++] = symbol->structapp.count; target[tp++] = symbol->structapp.count;
if (debug_print) printf("SAExGrp "); if (debug_print) fputs("SAExGrp ", stdout);
} else { } else {
target[tp++] = symbol->structapp.index; target[tp++] = symbol->structapp.index;
target[tp++] = symbol->structapp.count; target[tp++] = symbol->structapp.count;
target[tp++] = 233; /* FNC2 */ target[tp++] = 233; /* FNC2 */
if (debug_print) printf("FNC2 "); if (debug_print) fputs("FNC2 ", stdout);
} }
} }
if (eci) { if (eci) {
@ -547,7 +547,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
if (tp == 0) { if (tp == 0) {
target[tp++] = 129; /* Pad */ target[tp++] = 129; /* Pad */
target[tp++] = '\\' + 1; /* Escape char */ target[tp++] = '\\' + 1; /* Escape char */
if (debug_print) printf("PADEsc "); if (debug_print) fputs("PADEsc ", stdout);
} }
if (eci) { if (eci) {
c1_eci_escape(eci, source, length, eci_buf, eci_length); c1_eci_escape(eci, source, length, eci_buf, eci_length);
@ -563,16 +563,16 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
/* Change mode */ /* Change mode */
switch (next_mode) { switch (next_mode) {
case C1_C40: target[tp++] = 230; case C1_C40: target[tp++] = 230;
if (debug_print) printf("->C40 "); if (debug_print) fputs("->C40 ", stdout);
break; break;
case C1_TEXT: target[tp++] = 239; case C1_TEXT: target[tp++] = 239;
if (debug_print) printf("->Text "); if (debug_print) fputs("->Text ", stdout);
break; break;
case C1_EDI: target[tp++] = 238; case C1_EDI: target[tp++] = 238;
if (debug_print) printf("->EDI "); if (debug_print) fputs("->EDI ", stdout);
break; break;
case C1_BYTE: target[tp++] = 231; case C1_BYTE: target[tp++] = 231;
if (debug_print) printf("->Byte "); if (debug_print) fputs("->Byte ", stdout);
byte_start = tp; byte_start = tp;
target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */ target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */
break; break;
@ -605,13 +605,13 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
if (length - (sp + 1) >= 15 && num_digits[sp + 1] >= 15) { if (length - (sp + 1) >= 15 && num_digits[sp + 1] >= 15) {
/* Step B4 */ /* Step B4 */
target[tp++] = 236; /* FNC1 and change to Decimal */ target[tp++] = 236; /* FNC1 and change to Decimal */
if (debug_print) printf("FNC1 "); if (debug_print) fputs("FNC1 ", stdout);
sp++; sp++;
next_mode = C1_DECIMAL; next_mode = C1_DECIMAL;
} else if (length - (sp + 1) >= 7 && num_digits[sp + 1] == length - (sp + 1)) { } else if (length - (sp + 1) >= 7 && num_digits[sp + 1] == length - (sp + 1)) {
/* Step B5 */ /* Step B5 */
target[tp++] = 236; /* FNC1 and change to Decimal */ target[tp++] = 236; /* FNC1 and change to Decimal */
if (debug_print) printf("FNC1 "); if (debug_print) fputs("FNC1 ", stdout);
sp++; sp++;
next_mode = C1_DECIMAL; next_mode = C1_DECIMAL;
} }
@ -633,7 +633,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
} else if ((gs1) && (source[sp] == '[')) { } else if ((gs1) && (source[sp] == '[')) {
/* Step B8 */ /* Step B8 */
target[tp++] = 232; /* FNC1 */ target[tp++] = 232; /* FNC1 */
if (debug_print) printf("FNC1 "); if (debug_print) fputs("FNC1 ", stdout);
} else { } else {
/* Step B8 */ /* Step B8 */
target[tp++] = source[sp] + 1; target[tp++] = source[sp] + 1;
@ -665,7 +665,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
if (next_mode != current_mode) { if (next_mode != current_mode) {
/* Step C/D1c */ /* Step C/D1c */
target[tp++] = 255; /* Unlatch */ target[tp++] = 255; /* Unlatch */
if (debug_print) printf("Unlatch "); if (debug_print) fputs("Unlatch ", stdout);
} else { } else {
/* Step C/D2 */ /* Step C/D2 */
const char *ct_shift, *ct_value; const char *ct_shift, *ct_value;
@ -677,7 +677,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
ct_shift = text_shift; ct_shift = text_shift;
ct_value = text_value; ct_value = text_value;
} }
if (debug_print) printf(current_mode == C1_C40 ? "C40 " : "TEXT "); if (debug_print) fputs(current_mode == C1_C40 ? "C40 " : "TEXT ", stdout);
if (source[sp] & 0x80) { if (source[sp] & 0x80) {
cte_buffer[cte_p++] = 1; /* Shift 2 */ cte_buffer[cte_p++] = 1; /* Shift 2 */
@ -727,13 +727,13 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
/* No unlatch needed if data fits as ASCII in last data codeword */ /* No unlatch needed if data fits as ASCII in last data codeword */
} else { } else {
target[tp++] = 255; /* Unlatch */ target[tp++] = 255; /* Unlatch */
if (debug_print) printf("Unlatch "); if (debug_print) fputs("Unlatch ", stdout);
} }
} else { } else {
/* Step E2 */ /* Step E2 */
static const char edi_nonalphanum_chars[] = "\015*> "; static const char edi_nonalphanum_chars[] = "\015*> ";
if (debug_print) printf("EDI "); if (debug_print) fputs("EDI ", stdout);
if (z_isdigit(source[sp])) { if (z_isdigit(source[sp])) {
cte_buffer[cte_p++] = source[sp] - '0' + 4; cte_buffer[cte_p++] = source[sp] - '0' + 4;
@ -752,7 +752,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
} else if (current_mode == C1_DECIMAL) { } else if (current_mode == C1_DECIMAL) {
/* Step F - Decimal encodation */ /* Step F - Decimal encodation */
if (debug_print) printf("DEC "); if (debug_print) fputs("DEC ", stdout);
next_mode = C1_DECIMAL; next_mode = C1_DECIMAL;
@ -837,7 +837,7 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], int len
} }
if (tp > 1480) { if (tp > 1480) {
if (debug_print) printf("\n"); if (debug_print) fputc('\n', stdout);
/* Data is too large for symbol */ /* Data is too large for symbol */
return 0; return 0;
} }
@ -1040,7 +1040,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (symbol->option_2 == 9) { if (symbol->option_2 == 9) {
/* Version S */ /* Version S */
int codewords; int codewords;
large_int elreg; large_uint elreg;
unsigned int target[30], ecc[15]; unsigned int target[30], ecc[15];
int block_width; int block_width;
@ -1095,7 +1095,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("Codewords (%d): ", codewords); printf("Codewords (%d): ", codewords);
for (i = 0; i < codewords * 2; i++) printf(" %d", (int) target[i]); for (i = 0; i < codewords * 2; i++) printf(" %d", (int) target[i]);
printf("\n"); fputc('\n', stdout);
} }
i = 0; i = 0;
@ -1183,7 +1183,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("Codewords (%d):", data_cw + ecc_cw); printf("Codewords (%d):", data_cw + ecc_cw);
for (i = 0; i < data_cw + ecc_cw; i++) printf(" %d", (int) target[i]); for (i = 0; i < data_cw + ecc_cw; i++) printf(" %d", (int) target[i]);
printf("\n"); fputc('\n', stdout);
} }
i = 0; i = 0;
@ -1249,7 +1249,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i
target[i] = 129; /* Pad */ target[i] = 129; /* Pad */
} }
} else if (debug_print) { } else if (debug_print) {
printf("No padding\n"); fputs("No padding\n", stdout);
} }
/* Calculate error correction data */ /* Calculate error correction data */
@ -1273,7 +1273,7 @@ INTERNAL int codeone(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("Codewords (%d):", data_cw + ecc_length); printf("Codewords (%d):", data_cw + ecc_length);
for (i = 0; i < data_cw + ecc_length; i++) printf(" %d", (int) target[i]); for (i = 0; i < data_cw + ecc_length; i++) printf(" %d", (int) target[i]);
printf("\n"); fputc('\n', stdout);
} }
i = 0; i = 0;

View File

@ -340,45 +340,6 @@ INTERNAL void c128_put_in_set(int list[2][C128_MAX], const int indexliste, char
} }
} }
/* Treats source as ISO 8859-1 and copies into symbol->text, converting to UTF-8. Returns length of symbol->text */
static int c128_hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length) {
int i, j;
for (i = 0, j = 0; i < length && j < (int) sizeof(symbol->text); i++) {
if (source[i] < 0x80) {
symbol->text[j++] = source[i] >= ' ' && source[i] != 0x7F ? source[i] : ' ';
} else if (source[i] < 0xC0) {
if (source[i] >= 0xA0) { /* 0x80-0x9F not valid ISO 8859-1 */
if (j + 2 >= (int) sizeof(symbol->text)) {
break;
}
symbol->text[j++] = 0xC2;
symbol->text[j++] = source[i];
} else {
symbol->text[j++] = ' ';
}
} else {
if (j + 2 >= (int) sizeof(symbol->text)) {
break;
}
symbol->text[j++] = 0xC3;
symbol->text[j++] = source[i] - 0x40;
}
}
if (j == sizeof(symbol->text)) {
j--;
}
symbol->text[j] = '\0';
return j;
}
#ifdef ZINT_TEST /* Wrapper for direct testing */
INTERNAL int c128_hrt_cpy_iso8859_1_test(struct zint_symbol *symbol, const unsigned char source[], const int length) {
return c128_hrt_cpy_iso8859_1(symbol, source, length);
}
#endif
/* Handle Code 128, 128B and HIBC 128 */ /* Handle Code 128, 128B and HIBC 128 */
INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int length) { INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int length) {
int i, j, k, values[C128_MAX] = {0}, bar_characters = 0, read, total_sum; int i, j, k, values[C128_MAX] = {0}, bar_characters = 0, read, total_sum;
@ -433,9 +394,9 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len
src = src_buf; src = src_buf;
src[length] = '\0'; src[length] = '\0';
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("MSet: "); fputs("MSet: ", stdout);
for (i = 0; i < length; i++) printf("%c", manual_set[i] ? manual_set[i] : '.'); for (i = 0; i < length; i++) printf("%c", manual_set[i] ? manual_set[i] : '.');
printf("\n"); fputc('\n', stdout);
} }
} }
} }
@ -761,7 +722,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len
values[bar_characters++] = 106; values[bar_characters++] = 106;
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("Codewords:"); fputs("Codewords:", stdout);
for (i = 0; i < bar_characters; i++) { for (i = 0; i < bar_characters; i++) {
printf(" %d", values[i]); printf(" %d", values[i]);
} }
@ -779,7 +740,7 @@ INTERNAL int code128(struct zint_symbol *symbol, unsigned char source[], int len
/* ISO/IEC 15417:2007 leaves dimensions/height as application specification */ /* ISO/IEC 15417:2007 leaves dimensions/height as application specification */
c128_hrt_cpy_iso8859_1(symbol, src, length); (void) hrt_cpy_iso8859_1(symbol, src, length); /* Truncation can't happen */
return error_number; return error_number;
} }
@ -991,7 +952,7 @@ INTERNAL int gs1_128_cc(struct zint_symbol *symbol, unsigned char source[], int
values[bar_characters++] = 106; values[bar_characters++] = 106;
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("Codewords:"); fputs("Codewords:", stdout);
for (i = 0; i < bar_characters; i++) { for (i = 0; i < bar_characters; i++) {
printf(" %d", values[i]); printf(" %d", values[i]);
} }
@ -1246,7 +1207,7 @@ INTERNAL int upu_s10(struct zint_symbol *symbol, unsigned char source[], int len
unsigned char local_source[13 + 1]; unsigned char local_source[13 + 1];
unsigned char have_check_digit = '\0'; unsigned char have_check_digit = '\0';
int check_digit; int check_digit;
static char weights[8] = { 8, 6, 4, 2, 3, 5, 9, 7 }; static const char weights[8] = { 8, 6, 4, 2, 3, 5, 9, 7 };
int error_number = 0, warn_number = 0; int error_number = 0, warn_number = 0;
if (length != 12 && length != 13) { if (length != 12 && length != 13) {

View File

@ -268,11 +268,11 @@ INTERNAL int code16k(struct zint_symbol *symbol, unsigned char source[], int len
printf("Codewords (%d):", bar_characters); printf("Codewords (%d):", bar_characters);
for (i = 0; i < bar_characters; i++) { for (i = 0; i < bar_characters; i++) {
if (i % 5 == 0) { if (i % 5 == 0) {
printf("\n"); fputc('\n', stdout);
} }
printf(" %3d", values[i]); printf(" %3d", values[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) { if (symbol->debug & ZINT_DEBUG_TEST) {

View File

@ -1,7 +1,7 @@
/* code49.c - Handles Code 49 */ /* code49.c - Handles Code 49 */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -317,12 +317,12 @@ INTERNAL int code49(struct zint_symbol *symbol, unsigned char source[], int leng
c_grid[rows - 1][7] = j % 49; c_grid[rows - 1][7] = j % 49;
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("Codewords:\n"); fputs("Codewords:\n", stdout);
for (i = 0; i < rows; i++) { for (i = 0; i < rows; i++) {
for (j = 0; j < 8; j++) { for (j = 0; j < 8; j++) {
printf(" %2d", c_grid[i][j]); printf(" %2d", c_grid[i][j]);
} }
printf("\n"); fputc('\n', stdout);
} }
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST

View File

@ -1,7 +1,7 @@
/* common.c - Contains functions needed for a number of barcodes */ /* common.c - Contains functions needed for a number of barcodes */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -58,17 +58,16 @@ INTERNAL char itoc(const int source) {
/* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */ /* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */
INTERNAL int to_int(const unsigned char source[], const int length) { INTERNAL int to_int(const unsigned char source[], const int length) {
int val = 0; int val = 0;
int non_digit = 0;
int i; int i;
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
if (!z_isdigit(source[i])) {
return -1;
}
val *= 10; val *= 10;
val += source[i] - '0'; val += source[i] - '0';
non_digit |= !z_isdigit(source[i]);
} }
return val; return non_digit ? -1 : val;
} }
/* Converts lower case characters to upper case in string `source` */ /* Converts lower case characters to upper case in string `source` */
@ -76,9 +75,7 @@ INTERNAL void to_upper(unsigned char source[], const int length) {
int i; int i;
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
if (z_islower(source[i])) { source[i] &= z_islower(source[i]) ? 0x5F : 0xFF;
source[i] &= 0x5F;
}
} }
} }
@ -87,9 +84,7 @@ INTERNAL int chr_cnt(const unsigned char source[], const int length, const unsig
int count = 0; int count = 0;
int i; int i;
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
if (source[i] == c) { count += source[i] == c;
count++;
}
} }
return count; return count;
} }
@ -183,16 +178,10 @@ INTERNAL int posn(const char set_string[], const char data) {
`bin_posn`. Returns `bin_posn` + `length` */ `bin_posn`. Returns `bin_posn` + `length` */
INTERNAL int bin_append_posn(const int arg, const int length, char *binary, const int bin_posn) { INTERNAL int bin_append_posn(const int arg, const int length, char *binary, const int bin_posn) {
int i; int i;
int start; const int end = length - 1;
start = 0x01 << (length - 1);
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
if (arg & (start >> i)) { binary[bin_posn + i] = '0' + ((arg >> (end - i)) & 1);
binary[bin_posn + i] = '1';
} else {
binary[bin_posn + i] = '0';
}
} }
return bin_posn + length; return bin_posn + length;
} }
@ -280,7 +269,7 @@ INTERNAL int is_stackable(const int symbology) {
return 0; return 0;
} }
/* Whether `symbology` can have addon (EAN-2 and EAN-5) */ /* Whether `symbology` can have add-on (EAN-2 and EAN-5) */
INTERNAL int is_extendable(const int symbology) { INTERNAL int is_extendable(const int symbology) {
switch (symbology) { switch (symbology) {
@ -464,6 +453,47 @@ INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char sou
return 0; return 0;
} }
/* Treats source as ISO/IEC 8859-1 and copies into `symbol->text`, converting to UTF-8. Control chars (incl. DEL) and
non-ISO/IEC 8859-1 (0x80-9F) are replaced with spaces. Returns warning if truncated, else 0 */
INTERNAL int hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length) {
int i, j;
int warn_number = 0;
for (i = 0, j = 0; i < length && j < (int) sizeof(symbol->text); i++) {
if (source[i] < 0x80) {
symbol->text[j++] = source[i] >= ' ' && source[i] != 0x7F ? source[i] : ' ';
} else if (source[i] < 0xC0) {
if (source[i] >= 0xA0) { /* 0x80-0x9F not valid ISO/IEC 8859-1 */
if (j + 2 >= (int) sizeof(symbol->text)) {
warn_number = ZINT_WARN_HRT_TRUNCATED;
break;
}
symbol->text[j++] = 0xC2;
symbol->text[j++] = source[i];
} else {
symbol->text[j++] = ' ';
}
} else {
if (j + 2 >= (int) sizeof(symbol->text)) {
warn_number = ZINT_WARN_HRT_TRUNCATED;
break;
}
symbol->text[j++] = 0xC3;
symbol->text[j++] = source[i] - 0x40;
}
}
if (j == sizeof(symbol->text)) {
warn_number = ZINT_WARN_HRT_TRUNCATED;
j--;
}
symbol->text[j] = '\0';
if (warn_number) {
strcpy(symbol->errtxt, "249: Human Readable Text truncated");
}
return warn_number;
}
/* Sets symbol height, returning a warning if not within minimum and/or maximum if given. /* Sets symbol height, returning a warning if not within minimum and/or maximum if given.
`default_height` does not include height of fixed-height rows (i.e. separators/composite data) */ `default_height` does not include height of fixed-height rows (i.e. separators/composite data) */
INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height, INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height,
@ -612,7 +642,7 @@ INTERNAL int colour_to_blue(const int colour) {
#ifdef ZINT_TEST #ifdef ZINT_TEST
/* Dumps hex-formatted codewords in symbol->errtxt (for use in testing) */ /* Dumps hex-formatted codewords in symbol->errtxt (for use in testing) */
void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *codewords, const int length) { INTERNAL void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *codewords, const int length) {
int i, max = length, cnt_len = 0; int i, max = length, cnt_len = 0;
if (length > 30) { /* 30*3 < errtxt 92 (100 - "Warning ") chars */ if (length > 30) { /* 30*3 < errtxt 92 (100 - "Warning ") chars */
sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */ sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */
@ -626,7 +656,7 @@ void debug_test_codeword_dump(struct zint_symbol *symbol, const unsigned char *c
} }
/* Dumps decimal-formatted codewords in symbol->errtxt (for use in testing) */ /* Dumps decimal-formatted codewords in symbol->errtxt (for use in testing) */
void debug_test_codeword_dump_int(struct zint_symbol *symbol, const int *codewords, const int length) { INTERNAL void debug_test_codeword_dump_int(struct zint_symbol *symbol, const int *codewords, const int length) {
int i, max = 0, cnt_len, errtxt_len; int i, max = 0, cnt_len, errtxt_len;
char temp[20]; char temp[20];
errtxt_len = sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */ errtxt_len = sprintf(symbol->errtxt, "(%d) ", length); /* Place the number of codewords at the front */

View File

@ -1,7 +1,7 @@
/* common.h - Header for all common functions in common.c */ /* common.h - Header for all common functions in common.c */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -218,7 +218,7 @@ INTERNAL void expand(struct zint_symbol *symbol, const char data[], const int le
/* Whether `symbology` can have row binding */ /* Whether `symbology` can have row binding */
INTERNAL int is_stackable(const int symbology); INTERNAL int is_stackable(const int symbology);
/* Whether `symbology` can have addon (EAN-2 and EAN-5) */ /* Whether `symbology` can have add-on (EAN-2 and EAN-5) */
INTERNAL int is_extendable(const int symbology); INTERNAL int is_extendable(const int symbology);
/* Whether `symbology` can have composite 2D component data */ /* Whether `symbology` can have composite 2D component data */
@ -249,11 +249,15 @@ INTERNAL int is_valid_utf8(const unsigned char source[], const int length);
INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char source[], unsigned int vals[], INTERNAL int utf8_to_unicode(struct zint_symbol *symbol, const unsigned char source[], unsigned int vals[],
int *length, const int disallow_4byte); int *length, const int disallow_4byte);
/* Treats source as ISO/IEC 8859-1 and copies into `symbol->text`, converting to UTF-8. Control chars (incl. DEL) and
non-ISO/IEC 8859-1 (0x80-9F) are replaced with spaces. Returns warning if truncated, else 0 */
INTERNAL int hrt_cpy_iso8859_1(struct zint_symbol *symbol, const unsigned char source[], const int length);
/* Sets symbol height, returning a warning if not within minimum and/or maximum if given. /* Sets symbol height, returning a warning if not within minimum and/or maximum if given.
`default_height` does not include height of fixed-height rows (i.e. separators/composite data) */ `default_height` does not include height of fixed-height rows (i.e. separators/composite data) */
INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height, INTERNAL int set_height(struct zint_symbol *symbol, const float min_row_height, const float default_height,
const float max_height, const int set_errtxt); const float max_height, const int no_errtxt);
/* Removes excess precision from floats - see https://stackoverflow.com/q/503436 */ /* Removes excess precision from floats - see https://stackoverflow.com/q/503436 */

View File

@ -1,7 +1,7 @@
/* composite.c - Handles GS1 Composite Symbols */ /* composite.c - Handles GS1 Composite Symbols */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -545,7 +545,7 @@ static void cc_c(struct zint_symbol *symbol, const char source[], const int cc_w
if (debug_print) { if (debug_print) {
printf("CC-C Codewords (%d):", mclength); printf("CC-C Codewords (%d):", mclength);
for (i = 0; i < mclength; i++) printf(" %d", chainemc[i]); for (i = 0; i < mclength; i++) printf(" %d", chainemc[i]);
printf("\n"); fputc('\n', stdout);
} }
k = 1; k = 1;
@ -1408,6 +1408,7 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l
linear->symbology = symbol->symbology; linear->symbology = symbol->symbology;
linear->input_mode = symbol->input_mode; linear->input_mode = symbol->input_mode;
linear->output_options = symbol->output_options; linear->output_options = symbol->output_options;
linear->show_hrt = symbol->show_hrt;
linear->option_2 = symbol->option_2; linear->option_2 = symbol->option_2;
linear->option_3 = symbol->option_3; linear->option_3 = symbol->option_3;
/* If symbol->height given minimum row height will be returned, else default height */ /* If symbol->height given minimum row height will be returned, else default height */
@ -1489,7 +1490,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l
break; break;
} }
break; break;
case BARCODE_GS1_128_CC: if (cc_mode == 3) { case BARCODE_GS1_128_CC:
if (cc_mode == 3) {
bottom_shift = 7; /* ISO/IEC 24723:2010 12.3 f) */ bottom_shift = 7; /* ISO/IEC 24723:2010 12.3 f) */
} else { } else {
/* ISO/IEC 24723:2010 12.3 g) "GS1-128 components linked to the right quiet zone of the CC-A or CC-B: /* ISO/IEC 24723:2010 12.3 g) "GS1-128 components linked to the right quiet zone of the CC-A or CC-B:
@ -1521,10 +1523,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l
bottom_shift = 9; bottom_shift = 9;
} }
break; break;
case BARCODE_DBAR_EXP_CC: k = 1; case BARCODE_DBAR_EXP_CC:
while ((!(module_is_set(linear, 1, k - 1))) && module_is_set(linear, 1, k)) { for (k = 1; !module_is_set(linear, 1, k - 1) && module_is_set(linear, 1, k); k++);
k++;
}
top_shift = k; top_shift = k;
break; break;
case BARCODE_UPCA_CC: bottom_shift = 2; case BARCODE_UPCA_CC: bottom_shift = 2;
@ -1535,10 +1535,8 @@ INTERNAL int composite(struct zint_symbol *symbol, unsigned char source[], int l
break; break;
case BARCODE_DBAR_OMNSTK_CC: top_shift = 1; case BARCODE_DBAR_OMNSTK_CC: top_shift = 1;
break; break;
case BARCODE_DBAR_EXPSTK_CC: k = 1; case BARCODE_DBAR_EXPSTK_CC:
while ((!(module_is_set(linear, 1, k - 1))) && module_is_set(linear, 1, k)) { for (k = 1; !module_is_set(linear, 1, k - 1) && module_is_set(linear, 1, k); k++);
k++;
}
top_shift = k; top_shift = k;
break; break;
} }

View File

@ -1,7 +1,7 @@
/* dmatrix.c Handles Data Matrix ECC 200 symbols */ /* dmatrix.c Handles Data Matrix ECC 200 symbols */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 Robin Stuart <rstuart114@gmail.com>
developed from and including some functions from: developed from and including some functions from:
IEC16022 bar code generation IEC16022 bar code generation
@ -400,19 +400,19 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co
/* Adjusted from <= b256_count */ /* Adjusted from <= b256_count */
if (cnt_1 < b256_count && cnt_1 <= edf_count && cnt_1 <= text_count && cnt_1 <= x12_count if (cnt_1 < b256_count && cnt_1 <= edf_count && cnt_1 <= text_count && cnt_1 <= x12_count
&& cnt_1 <= c40_count) { && cnt_1 <= c40_count) {
if (debug_print) printf("ASC->"); if (debug_print) fputs("ASC->", stdout);
return DM_ASCII; /* step (r)(1) */ return DM_ASCII; /* step (r)(1) */
} }
cnt_1 = b256_count + DM_MULT_1; cnt_1 = b256_count + DM_MULT_1;
if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count if (cnt_1 <= ascii_count || (cnt_1 < edf_count && cnt_1 < text_count && cnt_1 < x12_count
&& cnt_1 < c40_count)) { && cnt_1 < c40_count)) {
if (debug_print) printf("BAS->"); if (debug_print) fputs("BAS->", stdout);
return DM_BASE256; /* step (r)(2) */ return DM_BASE256; /* step (r)(2) */
} }
cnt_1 = edf_count + DM_MULT_1; cnt_1 = edf_count + DM_MULT_1;
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < text_count && cnt_1 < x12_count if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < text_count && cnt_1 < x12_count
&& cnt_1 < c40_count) { && cnt_1 < c40_count) {
if (debug_print) printf("EDI->"); if (debug_print) fputs("EDI->", stdout);
return DM_EDIFACT; /* step (r)(3) */ return DM_EDIFACT; /* step (r)(3) */
} }
cnt_1 = text_count + DM_MULT_1; cnt_1 = text_count + DM_MULT_1;
@ -421,32 +421,32 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co
/* Adjusted to avoid early exit from Base 256 if have less than break-even sequence of TEXT chars */ /* Adjusted to avoid early exit from Base 256 if have less than break-even sequence of TEXT chars */
if (current_mode == DM_BASE256 && position + 6 < length) { if (current_mode == DM_BASE256 && position + 6 < length) {
if (dm_text_sp_cnt(source, position, length, sp) >= 12) { if (dm_text_sp_cnt(source, position, length, sp) >= 12) {
if (debug_print) printf("TEX->"); if (debug_print) fputs("TEX->", stdout);
return DM_TEXT; /* step (r)(4) */ return DM_TEXT; /* step (r)(4) */
} }
} else { } else {
if (debug_print) printf("TEX->"); if (debug_print) fputs("TEX->", stdout);
return DM_TEXT; /* step (r)(4) */ return DM_TEXT; /* step (r)(4) */
} }
} }
cnt_1 = x12_count + DM_MULT_1; cnt_1 = x12_count + DM_MULT_1;
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count
&& cnt_1 < c40_count) { && cnt_1 < c40_count) {
if (debug_print) printf("X12->"); if (debug_print) fputs("X12->", stdout);
return DM_X12; /* step (r)(5) */ return DM_X12; /* step (r)(5) */
} }
cnt_1 = c40_count + DM_MULT_1; cnt_1 = c40_count + DM_MULT_1;
if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count) { if (cnt_1 < ascii_count && cnt_1 < b256_count && cnt_1 < edf_count && cnt_1 < text_count) {
if (c40_count < x12_count) { if (c40_count < x12_count) {
if (debug_print) printf("C40->"); if (debug_print) fputs("C40->", stdout);
return DM_C40; /* step (r)(6)(i) */ return DM_C40; /* step (r)(6)(i) */
} }
if (c40_count == x12_count) { if (c40_count == x12_count) {
if (dm_substep_r_6_2_1(source, length, sp) == 1) { if (dm_substep_r_6_2_1(source, length, sp) == 1) {
if (debug_print) printf("X12->"); if (debug_print) fputs("X12->", stdout);
return DM_X12; /* step (r)(6)(ii)(I) */ return DM_X12; /* step (r)(6)(ii)(I) */
} }
if (debug_print) printf("C40->"); if (debug_print) fputs("C40->", stdout);
return DM_C40; /* step (r)(6)(ii)(II) */ return DM_C40; /* step (r)(6)(ii)(II) */
} }
} }
@ -470,32 +470,32 @@ static int dm_look_ahead_test(const unsigned char source[], const int length, co
if (ascii_rnded <= b256_rnded && ascii_rnded <= edf_rnded && ascii_rnded <= text_rnded && ascii_rnded <= x12_rnded if (ascii_rnded <= b256_rnded && ascii_rnded <= edf_rnded && ascii_rnded <= text_rnded && ascii_rnded <= x12_rnded
&& ascii_rnded <= c40_rnded) { && ascii_rnded <= c40_rnded) {
if (debug_print) printf("ASC->"); if (debug_print) fputs("ASC->", stdout);
return DM_ASCII; /* step (k)(2) */ return DM_ASCII; /* step (k)(2) */
} }
if (b256_rnded < ascii_rnded && b256_rnded < edf_rnded && b256_rnded < text_rnded && b256_rnded < x12_rnded if (b256_rnded < ascii_rnded && b256_rnded < edf_rnded && b256_rnded < text_rnded && b256_rnded < x12_rnded
&& b256_rnded < c40_rnded) { && b256_rnded < c40_rnded) {
if (debug_print) printf("BAS->"); if (debug_print) fputs("BAS->", stdout);
return DM_BASE256; /* step (k)(3) */ return DM_BASE256; /* step (k)(3) */
} }
/* Adjusted from < x12_rnded */ /* Adjusted from < x12_rnded */
if (edf_rnded < ascii_rnded && edf_rnded < b256_rnded && edf_rnded < text_rnded && edf_rnded <= x12_rnded if (edf_rnded < ascii_rnded && edf_rnded < b256_rnded && edf_rnded < text_rnded && edf_rnded <= x12_rnded
&& edf_rnded < c40_rnded) { && edf_rnded < c40_rnded) {
if (debug_print) printf("EDI->"); if (debug_print) fputs("EDI->", stdout);
return DM_EDIFACT; /* step (k)(4) */ return DM_EDIFACT; /* step (k)(4) */
} }
if (text_rnded < ascii_rnded && text_rnded < b256_rnded && text_rnded < edf_rnded && text_rnded < x12_rnded if (text_rnded < ascii_rnded && text_rnded < b256_rnded && text_rnded < edf_rnded && text_rnded < x12_rnded
&& text_rnded < c40_rnded) { && text_rnded < c40_rnded) {
if (debug_print) printf("TEX->"); if (debug_print) fputs("TEX->", stdout);
return DM_TEXT; /* step (k)(5) */ return DM_TEXT; /* step (k)(5) */
} }
/* Adjusted from < edf_rnded */ /* Adjusted from < edf_rnded */
if (x12_rnded < ascii_rnded && x12_rnded < b256_rnded && x12_rnded <= edf_rnded && x12_rnded < text_rnded if (x12_rnded < ascii_rnded && x12_rnded < b256_rnded && x12_rnded <= edf_rnded && x12_rnded < text_rnded
&& x12_rnded < c40_rnded) { && x12_rnded < c40_rnded) {
if (debug_print) printf("X12->"); if (debug_print) fputs("X12->", stdout);
return DM_X12; /* step (k)(6) */ return DM_X12; /* step (k)(6) */
} }
if (debug_print) printf("C40->"); if (debug_print) fputs("C40->", stdout);
return DM_C40; /* step (k)(7) */ return DM_C40; /* step (k)(7) */
} }
@ -653,24 +653,24 @@ static int dm_switch_mode(const int next_mode, unsigned char target[], int tp, i
const int debug_print) { const int debug_print) {
switch (next_mode) { switch (next_mode) {
case DM_ASCII: case DM_ASCII:
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
break; break;
case DM_C40: target[tp++] = 230; case DM_C40: target[tp++] = 230;
if (debug_print) printf("C40 "); if (debug_print) fputs("C40 ", stdout);
break; break;
case DM_TEXT: target[tp++] = 239; case DM_TEXT: target[tp++] = 239;
if (debug_print) printf("TEX "); if (debug_print) fputs("TEX ", stdout);
break; break;
case DM_X12: target[tp++] = 238; case DM_X12: target[tp++] = 238;
if (debug_print) printf("X12 "); if (debug_print) fputs("X12 ", stdout);
break; break;
case DM_EDIFACT: target[tp++] = 240; case DM_EDIFACT: target[tp++] = 240;
if (debug_print) printf("EDI "); if (debug_print) fputs("EDI ", stdout);
break; break;
case DM_BASE256: target[tp++] = 231; case DM_BASE256: target[tp++] = 231;
*p_b256_start = tp; *p_b256_start = tp;
target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */ target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */
if (debug_print) printf("BAS "); if (debug_print) fputs("BAS ", stdout);
break; break;
} }
@ -1035,7 +1035,7 @@ static int dm_define_mode(struct zint_symbol *symbol, char modes[], const unsign
if (debug_print) { if (debug_print) {
printf("modes (%d): ", length); printf("modes (%d): ", length);
for (i = 0; i < length; i++) printf("%c", dm_smodes[(int) modes[i]][0]); for (i = 0; i < length; i++) printf("%c", dm_smodes[(int) modes[i]][0]);
printf("\n"); fputc('\n', stdout);
} }
assert(mode_end == 0); assert(mode_end == 0);
@ -1119,10 +1119,10 @@ static int dm_minimalenc(struct zint_symbol *symbol, const unsigned char source[
if (gs1 && (source[sp] == '[')) { if (gs1 && (source[sp] == '[')) {
if (gs1 == 2) { if (gs1 == 2) {
target[tp++] = 29 + 1; /* GS */ target[tp++] = 29 + 1; /* GS */
if (debug_print) printf("GS "); if (debug_print) fputs("GS ", stdout);
} else { } else {
target[tp++] = 232; /* FNC1 */ target[tp++] = 232; /* FNC1 */
if (debug_print) printf("FN1 "); if (debug_print) fputs("FN1 ", stdout);
} }
} else { } else {
target[tp++] = source[sp] + 1; target[tp++] = source[sp] + 1;
@ -1295,10 +1295,10 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c
if (gs1 && (source[sp] == '[')) { if (gs1 && (source[sp] == '[')) {
if (gs1 == 2) { if (gs1 == 2) {
target[tp++] = 29 + 1; /* GS */ target[tp++] = 29 + 1; /* GS */
if (debug_print) printf("GS "); if (debug_print) fputs("GS ", stdout);
} else { } else {
target[tp++] = 232; /* FNC1 */ target[tp++] = 232; /* FNC1 */
if (debug_print) printf("FN1 "); if (debug_print) fputs("FN1 ", stdout);
} }
} else { } else {
target[tp++] = source[sp] + 1; target[tp++] = source[sp] + 1;
@ -1320,7 +1320,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c
if (next_mode != current_mode) { if (next_mode != current_mode) {
target[tp++] = 254; /* Unlatch */ target[tp++] = 254; /* Unlatch */
next_mode = DM_ASCII; next_mode = DM_ASCII;
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} else { } else {
int shift_set, value; int shift_set, value;
const char *ct_shift, *ct_value; const char *ct_shift, *ct_value;
@ -1382,7 +1382,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c
process_p = 0; /* Throw away buffer if any */ process_p = 0; /* Throw away buffer if any */
target[tp++] = 254; /* Unlatch */ target[tp++] = 254; /* Unlatch */
next_mode = DM_ASCII; next_mode = DM_ASCII;
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} else { } else {
static const char x12_nonalphanum_chars[] = "\015*> "; static const char x12_nonalphanum_chars[] = "\015*> ";
int value = 0; int value = 0;
@ -1422,7 +1422,7 @@ static int dm_isoenc(struct zint_symbol *symbol, const unsigned char source[], c
process_buffer[process_p++] = 31; process_buffer[process_p++] = 31;
process_p = dm_edi_buffer_xfer(process_buffer, process_p, target, &tp, 1 /*empty*/, debug_print); process_p = dm_edi_buffer_xfer(process_buffer, process_p, target, &tp, 1 /*empty*/, debug_print);
next_mode = DM_ASCII; next_mode = DM_ASCII;
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} else { } else {
int value = source[sp]; int value = source[sp];
@ -1546,7 +1546,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
if (process_p == 0) { if (process_p == 0) {
if (symbols_left > 0) { if (symbols_left > 0) {
target[tp++] = 254; /* Unlatch */ target[tp++] = 254; /* Unlatch */
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} }
} else { } else {
if (process_p == 2 && symbols_left == 2) { if (process_p == 2 && symbols_left == 2) {
@ -1559,7 +1559,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
if (symbols_left > 1) { if (symbols_left > 1) {
/* 5.2.5.2 (c) */ /* 5.2.5.2 (c) */
target[tp++] = 254; /* Unlatch and encode remaining data in ascii. */ target[tp++] = 254; /* Unlatch and encode remaining data in ascii. */
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} }
target[tp++] = source[length - 1] + 1; target[tp++] = source[length - 1] + 1;
if (debug_print) printf("A%02X ", target[tp - 1] - 1); if (debug_print) printf("A%02X ", target[tp - 1] - 1);
@ -1577,7 +1577,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
tp -= (total_cnt / 3) * 2; tp -= (total_cnt / 3) * 2;
target[tp++] = 254; /* Unlatch */ target[tp++] = 254; /* Unlatch */
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
for (; sp < length; sp++) { for (; sp < length; sp++) {
if (is_twodigits(source, length, sp)) { if (is_twodigits(source, length, sp)) {
target[tp++] = (unsigned char) ((10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130); target[tp++] = (unsigned char) ((10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130);
@ -1590,10 +1590,10 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} else if (gs1 && source[sp] == '[') { } else if (gs1 && source[sp] == '[') {
if (gs1 == 2) { if (gs1 == 2) {
target[tp++] = 29 + 1; /* GS */ target[tp++] = 29 + 1; /* GS */
if (debug_print) printf("GS "); if (debug_print) fputs("GS ", stdout);
} else { } else {
target[tp++] = 232; /* FNC1 */ target[tp++] = 232; /* FNC1 */
if (debug_print) printf("FN1 "); if (debug_print) fputs("FN1 ", stdout);
} }
} else { } else {
target[tp++] = source[sp] + 1; target[tp++] = source[sp] + 1;
@ -1604,7 +1604,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} }
} else if (current_mode == DM_X12) { } else if (current_mode == DM_X12) {
if (debug_print) printf("X12 "); if (debug_print) fputs("X12 ", stdout);
if ((symbols_left == 1) && (process_p == 1)) { if ((symbols_left == 1) && (process_p == 1)) {
/* Unlatch not required! */ /* Unlatch not required! */
target[tp++] = source[length - 1] + 1; target[tp++] = source[length - 1] + 1;
@ -1612,7 +1612,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} else { } else {
if (symbols_left > 0) { if (symbols_left > 0) {
target[tp++] = (254); /* Unlatch. */ target[tp++] = (254); /* Unlatch. */
if (debug_print) printf("ASC "); if (debug_print) fputs("ASC ", stdout);
} }
if (process_p == 1) { if (process_p == 1) {
@ -1626,7 +1626,7 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} }
} else if (current_mode == DM_EDIFACT) { } else if (current_mode == DM_EDIFACT) {
if (debug_print) printf("EDI "); if (debug_print) fputs("EDI ", stdout);
if (symbols_left <= 2 && process_p <= symbols_left) { /* Unlatch not required! */ if (symbols_left <= 2 && process_p <= symbols_left) { /* Unlatch not required! */
if (process_p == 1) { if (process_p == 1) {
target[tp++] = source[length - 1] + 1; target[tp++] = source[length - 1] + 1;
@ -1656,11 +1656,11 @@ static int dm_encode(struct zint_symbol *symbol, const unsigned char source[], c
} }
if (debug_print) { if (debug_print) {
printf("\nData (%d): ", tp); printf("\nData (%d):", tp);
for (i = 0; i < tp; i++) for (i = 0; i < tp; i++)
printf("%d ", target[i]); printf(" %d", target[i]);
printf("\n"); fputc('\n', stdout);
} }
*p_tp = tp; *p_tp = tp;
@ -1761,7 +1761,7 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co
if (gs1) { if (gs1) {
target[tp++] = 232; target[tp++] = 232;
if (debug_print) printf("FN1 "); if (debug_print) fputs("FN1 ", stdout);
} /* FNC1 */ } /* FNC1 */
if (symbol->output_options & READER_INIT) { if (symbol->output_options & READER_INIT) {
@ -1774,7 +1774,7 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co
return ZINT_ERROR_INVALID_OPTION; return ZINT_ERROR_INVALID_OPTION;
} }
target[tp++] = 234; /* Reader Programming */ target[tp++] = 234; /* Reader Programming */
if (debug_print) printf("RP "); if (debug_print) fputs("RP ", stdout);
} }
/* Check for Macro05/Macro06 */ /* Check for Macro05/Macro06 */
@ -1791,10 +1791,10 @@ static int dm_encode_segs(struct zint_symbol *symbol, struct zint_seg segs[], co
/* Output macro Codeword */ /* Output macro Codeword */
if (segs[0].source[5] == '5') { if (segs[0].source[5] == '5') {
target[tp++] = 236; target[tp++] = 236;
if (debug_print) printf("Macro05 "); if (debug_print) fputs("Macro05 ", stdout);
} else { } else {
target[tp++] = 237; target[tp++] = 237;
if (debug_print) printf("Macro06 "); if (debug_print) fputs("Macro06 ", stdout);
} }
/* Remove macro characters from input string */ /* Remove macro characters from input string */
in_macro = 1; in_macro = 1;
@ -1882,7 +1882,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("Pads (%d): ", taillength); printf("Pads (%d): ", taillength);
for (i = binlen; i < binlen + taillength; i++) printf("%d ", binary[i]); for (i = binlen; i < binlen + taillength; i++) printf("%d ", binary[i]);
printf("\n"); fputc('\n', stdout);
} }
/* ecc code */ /* ecc code */
@ -1893,7 +1893,7 @@ static int dm_ecc200(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("ECC (%d): ", rsblock * (bytes / datablock)); printf("ECC (%d): ", rsblock * (bytes / datablock));
for (i = bytes; i < bytes + rsblock * (bytes / datablock); i++) printf("%d ", binary[i]); for (i = bytes; i < bytes + rsblock * (bytes / datablock); i++) printf("%d ", binary[i]);
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST

View File

@ -1,7 +1,7 @@
/* dotcode.c - Handles DotCode */ /* dotcode.c - Handles DotCode */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2017-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2017-2023 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
@ -633,7 +633,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if (last_seg && (position == length - 2) && (inside_macro != 0) && (inside_macro != 100)) { if (last_seg && (position == length - 2) && (inside_macro != 0) && (inside_macro != 100)) {
/* inside_macro only gets set to 97, 98 or 99 if the last two characters are RS/EOT */ /* inside_macro only gets set to 97, 98 or 99 if the last two characters are RS/EOT */
position += 2; position += 2;
if (debug_print) printf("A "); if (debug_print) fputs("A ", stdout);
continue; continue;
} }
@ -641,7 +641,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if (last_seg && (position == length - 1) && (inside_macro == 100)) { if (last_seg && (position == length - 1) && (inside_macro == 100)) {
/* inside_macro only gets set to 100 if the last character is EOT */ /* inside_macro only gets set to 100 if the last character is EOT */
position++; position++;
if (debug_print) printf("B "); if (debug_print) fputs("B ", stdout);
continue; continue;
} }
@ -654,7 +654,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = to_int(source + position + 4, 2); codeword_array[ap++] = to_int(source + position + 4, 2);
codeword_array[ap++] = to_int(source + position + 6, 2); codeword_array[ap++] = to_int(source + position + 6, 2);
position += 10; position += 10;
if (debug_print) printf("C2/1 "); if (debug_print) fputs("C2/1 ", stdout);
continue; continue;
} }
@ -666,7 +666,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = to_int(source + position, 2); codeword_array[ap++] = to_int(source + position, 2);
position += 2; position += 2;
} }
if (debug_print) printf("C2/2 "); if (debug_print) fputs("C2/2 ", stdout);
continue; continue;
} }
@ -686,7 +686,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 112; /* Bin Latch */ codeword_array[ap++] = 112; /* Bin Latch */
encoding_mode = 'X'; encoding_mode = 'X';
} }
if (debug_print) printf("C3 "); if (debug_print) fputs("C3 ", stdout);
continue; continue;
} }
@ -722,7 +722,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
encoding_mode = 'B'; encoding_mode = 'B';
} }
} }
if (debug_print) printf("C4 "); if (debug_print) fputs("C4 ", stdout);
continue; continue;
} }
} /* encoding_mode == 'C' */ } /* encoding_mode == 'C' */
@ -742,7 +742,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 106; /* Latch C */ codeword_array[ap++] = 106; /* Latch C */
encoding_mode = 'C'; encoding_mode = 'C';
} }
if (debug_print) printf("D1 "); if (debug_print) fputs("D1 ", stdout);
continue; continue;
} }
@ -750,7 +750,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if ((source[position] == '[') && gs1) { if ((source[position] == '[') && gs1) {
codeword_array[ap++] = 107; /* FNC1 */ codeword_array[ap++] = 107; /* FNC1 */
position++; position++;
if (debug_print) printf("D2/1 "); if (debug_print) fputs("D2/1 ", stdout);
continue; continue;
} }
@ -781,7 +781,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
if (done == 1) { if (done == 1) {
position++; position++;
if (debug_print) printf("D2/2 "); if (debug_print) fputs("D2/2 ", stdout);
continue; continue;
} }
} }
@ -801,7 +801,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 112; /* Bin Latch */ codeword_array[ap++] = 112; /* Bin Latch */
encoding_mode = 'X'; encoding_mode = 'X';
} }
if (debug_print) printf("D3 "); if (debug_print) fputs("D3 ", stdout);
continue; continue;
} }
@ -818,7 +818,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 102; /* Latch A */ codeword_array[ap++] = 102; /* Latch A */
encoding_mode = 'A'; encoding_mode = 'A';
} }
if (debug_print) printf("D4 "); if (debug_print) fputs("D4 ", stdout);
continue; continue;
} /* encoding_mode == 'B' */ } /* encoding_mode == 'B' */
@ -836,7 +836,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 106; /* Latch C */ codeword_array[ap++] = 106; /* Latch C */
encoding_mode = 'C'; encoding_mode = 'C';
} }
if (debug_print) printf("E1 "); if (debug_print) fputs("E1 ", stdout);
continue; continue;
} }
@ -845,7 +845,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
/* Note: this branch probably never reached as no reason to be in Code Set A for GS1 data */ /* Note: this branch probably never reached as no reason to be in Code Set A for GS1 data */
codeword_array[ap++] = 107; /* FNC1 */ codeword_array[ap++] = 107; /* FNC1 */
position++; position++;
if (debug_print) printf("E2/1 "); if (debug_print) fputs("E2/1 ", stdout);
continue; continue;
} }
if (dc_datum_a(source, length, position)) { if (dc_datum_a(source, length, position)) {
@ -855,7 +855,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = source[position] - 32; codeword_array[ap++] = source[position] - 32;
} }
position++; position++;
if (debug_print) printf("E2/2 "); if (debug_print) fputs("E2/2 ", stdout);
continue; continue;
} }
@ -874,7 +874,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 112; /* Bin Latch */ codeword_array[ap++] = 112; /* Bin Latch */
encoding_mode = 'X'; encoding_mode = 'X';
} }
if (debug_print) printf("E3 "); if (debug_print) fputs("E3 ", stdout);
continue; continue;
} }
@ -903,7 +903,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 102; /* Latch B */ codeword_array[ap++] = 102; /* Latch B */
encoding_mode = 'B'; encoding_mode = 'B';
} }
if (debug_print) printf("E4 "); if (debug_print) fputs("E4 ", stdout);
continue; continue;
} /* encoding_mode == 'A' */ } /* encoding_mode == 'A' */
@ -924,7 +924,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 111; /* Terminate with Latch to C */ codeword_array[ap++] = 111; /* Terminate with Latch to C */
encoding_mode = 'C'; encoding_mode = 'C';
} }
if (debug_print) printf("F1 "); if (debug_print) fputs("F1 ", stdout);
continue; continue;
} }
@ -939,7 +939,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
|| dc_binary(source, length, position + 3)) { || dc_binary(source, length, position + 3)) {
ap = dc_append_to_bin_buf(codeword_array, ap, source[position], &bin_buf, &bin_buf_size); ap = dc_append_to_bin_buf(codeword_array, ap, source[position], &bin_buf, &bin_buf_size);
position++; position++;
if (debug_print) printf("F2 "); if (debug_print) fputs("F2 ", stdout);
continue; continue;
} }
@ -953,7 +953,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
codeword_array[ap++] = 110; /* Terminate with Latch to B */ codeword_array[ap++] = 110; /* Terminate with Latch to B */
encoding_mode = 'B'; encoding_mode = 'B';
} }
if (debug_print) printf("F3 "); if (debug_print) fputs("F3 ", stdout);
} /* encoding_mode == 'X' */ } /* encoding_mode == 'X' */
} }
@ -987,7 +987,7 @@ static int dc_encode_message(struct zint_symbol *symbol, const unsigned char sou
} }
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
*p_encoding_mode = encoding_mode; *p_encoding_mode = encoding_mode;
@ -1404,11 +1404,11 @@ INTERNAL int dotcode(struct zint_symbol *symbol, struct zint_seg segs[], const i
if (debug_print) { if (debug_print) {
printf("Codeword length = %d, ECC length = %d\n", data_length, ecc_length); printf("Codeword length = %d, ECC length = %d\n", data_length, ecc_length);
printf("Codewords:"); fputs("Codewords:", stdout);
for (i = 0; i < data_length; i++) { for (i = 0; i < data_length; i++) {
printf(" %d", codeword_array[i]); printf(" %d", codeword_array[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) { if (symbol->debug & ZINT_DEBUG_TEST) {
@ -1507,12 +1507,12 @@ INTERNAL int dotcode(struct zint_symbol *symbol, struct zint_seg segs[], const i
for (i = 1; i < data_length + 1; i++) { for (i = 1; i < data_length + 1; i++) {
printf(" [%d]", masked_codeword_array[i]); printf(" [%d]", masked_codeword_array[i]);
} }
printf("\n"); fputc('\n', stdout);
printf("Masked ECCs (%d):", ecc_length); printf("Masked ECCs (%d):", ecc_length);
for (i = data_length + 1; i < data_length + ecc_length + 1; i++) { for (i = data_length + 1; i < data_length + ecc_length + 1; i++) {
printf(" [%d]", masked_codeword_array[i]); printf(" [%d]", masked_codeword_array[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
dot_stream_length = dc_make_dotstream(masked_codeword_array, (data_length + ecc_length + 1), dot_stream); dot_stream_length = dc_make_dotstream(masked_codeword_array, (data_length + ecc_length + 1), dot_stream);

View File

@ -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-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -697,9 +697,9 @@ INTERNAL int get_eci_length_segs(const struct zint_seg segs[], const int seg_cou
} }
/* Convert UTF-8 to other character encodings */ /* Convert UTF-8 to other character encodings */
typedef int (*eci_func_t)(const unsigned int u, unsigned char *dest);
INTERNAL int utf8_to_eci(const int eci, const unsigned char source[], unsigned char dest[], int *p_length) { INTERNAL int utf8_to_eci(const int eci, const unsigned char source[], unsigned char dest[], int *p_length) {
typedef int (*eci_func_t)(const unsigned int u, unsigned char *dest);
static const eci_func_t eci_funcs[36] = { static const eci_func_t eci_funcs[36] = {
NULL, NULL, NULL, NULL, u_iso8859_2, /*0-4*/ NULL, NULL, NULL, NULL, u_iso8859_2, /*0-4*/
u_iso8859_3, u_iso8859_4, u_iso8859_5, u_iso8859_6, u_iso8859_7, /*5-9*/ u_iso8859_3, u_iso8859_4, u_iso8859_5, u_iso8859_6, u_iso8859_7, /*5-9*/

View File

@ -46,11 +46,11 @@
#include "emf.h" #include "emf.h"
/* Multiply truncating to 3 decimal places (avoids rounding differences on various platforms) */ /* Multiply truncating to 3 decimal places (avoids rounding differences on various platforms) */
#define mul3dpf(m, arg) stripf(roundf(m * arg * 1000.0) / 1000.0f) #define mul3dpf(m, arg) stripf(roundf((m) * (arg) * 1000.0) / 1000.0f)
static int count_rectangles(struct zint_symbol *symbol) { static int emf_count_rectangles(const struct zint_symbol *symbol) {
int rectangles = 0; int rectangles = 0;
struct zint_vector_rect *rect; const struct zint_vector_rect *rect;
rect = symbol->vector->rectangles; rect = symbol->vector->rectangles;
while (rect) { while (rect) {
@ -61,9 +61,9 @@ static int count_rectangles(struct zint_symbol *symbol) {
return rectangles; return rectangles;
} }
static int count_circles(struct zint_symbol *symbol) { static int emf_count_circles(const struct zint_symbol *symbol) {
int circles = 0; int circles = 0;
struct zint_vector_circle *circ; const struct zint_vector_circle *circ;
circ = symbol->vector->circles; circ = symbol->vector->circles;
while (circ) { while (circ) {
@ -75,9 +75,9 @@ static int count_circles(struct zint_symbol *symbol) {
return symbol->symbology == BARCODE_MAXICODE ? circles * 2 : circles; return symbol->symbology == BARCODE_MAXICODE ? circles * 2 : circles;
} }
static int count_hexagons(struct zint_symbol *symbol) { static int emf_count_hexagons(const struct zint_symbol *symbol) {
int hexagons = 0; int hexagons = 0;
struct zint_vector_hexagon *hex; const struct zint_vector_hexagon *hex;
hex = symbol->vector->hexagons; hex = symbol->vector->hexagons;
while (hex) { while (hex) {
@ -88,13 +88,13 @@ static int count_hexagons(struct zint_symbol *symbol) {
return hexagons; return hexagons;
} }
static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2, int *halign, int *halign1, static int emf_count_strings(const struct zint_symbol *symbol, float *fsize, float *fsize2, int *halign_left,
int *halign2) { int *halign_right) {
int strings = 0; int strings = 0;
struct zint_vector_string *str; const struct zint_vector_string *str;
*fsize = *fsize2 = 0.0f; *fsize = *fsize2 = 0.0f;
*halign = *halign1 = *halign2 = 0; *halign_left = *halign_right = 0;
str = symbol->vector->strings; str = symbol->vector->strings;
while (str) { while (str) {
@ -104,12 +104,12 @@ static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2
} else if (str->fsize != *fsize && *fsize2 == 0.0f) { } else if (str->fsize != *fsize && *fsize2 == 0.0f) {
*fsize2 = str->fsize; *fsize2 = str->fsize;
} }
/* Only 3 haligns possible */ /* Only 3 haligns possible and centre align always assumed used */
if (str->halign) { if (str->halign) { /* Left or right align */
if (str->halign == 1) { if (str->halign == 1) { /* Left align */
*halign1 = str->halign; *halign_left = str->halign;
} else { } else { /* Right align */
*halign2 = str->halign; *halign_right = str->halign;
} }
} }
strings++; strings++;
@ -119,11 +119,11 @@ static int count_strings(struct zint_symbol *symbol, float *fsize, float *fsize2
return strings; return strings;
} }
static void utfle_copy(unsigned char *output, unsigned char *input, int length) { /* Convert UTF-8 to UTF-16LE - only needs to handle characters <= U+00FF */
static void emf_utfle_copy(unsigned char *output, const unsigned char *input, const int length) {
int i; int i;
int o; int o;
/* Convert UTF-8 to UTF-16LE - only needs to handle characters <= U+00FF */
i = 0; i = 0;
o = 0; o = 0;
do { do {
@ -143,15 +143,12 @@ static void utfle_copy(unsigned char *output, unsigned char *input, int length)
} while (i < length); } while (i < length);
} }
static int bump_up(int input) { /* Strings length must be a multiple of 4 bytes */
/* Strings length must be a multiple of 4 bytes */ static int emf_bump_up(const int input) {
if ((input & 1) == 1) { return (input + (input & 1)) << 1;
input++;
}
return input;
} }
static int utfle_length(unsigned char *input, int length) { static int emf_utfle_length(const unsigned char *input, const int length) {
int result = 0; int result = 0;
int i; int i;
@ -227,12 +224,11 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
float fsize2; float fsize2;
emr_extcreatefontindirectw_t emr_extcreatefontindirectw2; emr_extcreatefontindirectw_t emr_extcreatefontindirectw2;
emr_selectobject_t emr_selectobject_font2; emr_selectobject_t emr_selectobject_font2;
int halign; emr_settextalign_t emr_settextalign_centre; /* Centre align */
emr_settextalign_t emr_settextalign; int halign_left; /* Set if left halign used */
int halign1; emr_settextalign_t emr_settextalign_left;
emr_settextalign_t emr_settextalign1; int halign_right; /* Set if right halign used */
int halign2; emr_settextalign_t emr_settextalign_right;
emr_settextalign_t emr_settextalign2;
float current_fsize; float current_fsize;
int current_halign; int current_halign;
@ -254,10 +250,10 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
draw_background = 0; draw_background = 0;
} }
rectangle_count = count_rectangles(symbol); rectangle_count = emf_count_rectangles(symbol);
circle_count = count_circles(symbol); circle_count = emf_count_circles(symbol);
hexagon_count = count_hexagons(symbol); hexagon_count = emf_count_hexagons(symbol);
string_count = count_strings(symbol, &fsize, &fsize2, &halign, &halign1, &halign2); string_count = emf_count_strings(symbol, &fsize, &fsize2, &halign_left, &halign_right);
/* Avoid sanitize runtime error by making always non-zero */ /* Avoid sanitize runtime error by making always non-zero */
rectangle = (emr_rectangle_t *) z_alloca(sizeof(emr_rectangle_t) * (rectangle_count ? rectangle_count : 1)); rectangle = (emr_rectangle_t *) z_alloca(sizeof(emr_rectangle_t) * (rectangle_count ? rectangle_count : 1));
@ -565,7 +561,7 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
emr_extcreatefontindirectw.elw.out_precision = 0x00; /* OUT_DEFAULT_PRECIS */ emr_extcreatefontindirectw.elw.out_precision = 0x00; /* OUT_DEFAULT_PRECIS */
emr_extcreatefontindirectw.elw.clip_precision = 0x00; /* CLIP_DEFAULT_PRECIS */ emr_extcreatefontindirectw.elw.clip_precision = 0x00; /* CLIP_DEFAULT_PRECIS */
emr_extcreatefontindirectw.elw.pitch_and_family = 0x02 | (0x02 << 6); /* FF_SWISS | VARIABLE_PITCH */ emr_extcreatefontindirectw.elw.pitch_and_family = 0x02 | (0x02 << 6); /* FF_SWISS | VARIABLE_PITCH */
utfle_copy(emr_extcreatefontindirectw.elw.facename, (unsigned char *) "sans-serif", 10); emf_utfle_copy(emr_extcreatefontindirectw.elw.facename, (const unsigned char *) "sans-serif", 10);
bytecount += 104; bytecount += 104;
recordcount++; recordcount++;
@ -591,18 +587,18 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
/* Note select aligns counted below in strings loop */ /* Note select aligns counted below in strings loop */
emr_settextalign.type = 0x00000016; /* EMR_SETTEXTALIGN */ emr_settextalign_centre.type = 0x00000016; /* EMR_SETTEXTALIGN */
emr_settextalign.size = 12; emr_settextalign_centre.size = 12;
emr_settextalign.text_alignment_mode = 0x0006 | 0x0018; /* TA_CENTER | TA_BASELINE */ emr_settextalign_centre.text_alignment_mode = 0x0006 | 0x0018; /* TA_CENTER | TA_BASELINE */
if (halign1) { if (halign_left) {
emr_settextalign1.type = 0x00000016; /* EMR_SETTEXTALIGN */ emr_settextalign_left.type = 0x00000016; /* EMR_SETTEXTALIGN */
emr_settextalign1.size = 12; emr_settextalign_left.size = 12;
emr_settextalign1.text_alignment_mode = 0x0000 | 0x0018; /* TA_LEFT | TA_BASELINE */ emr_settextalign_left.text_alignment_mode = 0x0000 | 0x0018; /* TA_LEFT | TA_BASELINE */
} }
if (halign2) { if (halign_right) {
emr_settextalign2.type = 0x00000016; /* EMR_SETTEXTALIGN */ emr_settextalign_right.type = 0x00000016; /* EMR_SETTEXTALIGN */
emr_settextalign2.size = 12; emr_settextalign_right.size = 12;
emr_settextalign2.text_alignment_mode = 0x0002 | 0x0018; /* TA_RIGHT | TA_BASELINE */ emr_settextalign_right.text_alignment_mode = 0x0002 | 0x0018; /* TA_RIGHT | TA_BASELINE */
} }
emr_settextcolor.type = 0x0000018; /* EMR_SETTEXTCOLOR */ emr_settextcolor.type = 0x0000018; /* EMR_SETTEXTCOLOR */
@ -636,8 +632,8 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
recordcount++; recordcount++;
} }
assert(str->length > 0); assert(str->length > 0);
utfle_len = utfle_length(str->text, str->length); utfle_len = emf_utfle_length(str->text, str->length);
bumped_len = bump_up(utfle_len) * 2; bumped_len = emf_bump_up(utfle_len);
if (!(this_string[this_text] = (unsigned char *) malloc(bumped_len))) { if (!(this_string[this_text] = (unsigned char *) malloc(bumped_len))) {
for (i = 0; i < this_text; i++) { for (i = 0; i < this_text; i++) {
free(this_string[i]); free(this_string[i]);
@ -665,7 +661,7 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
text[this_text].w_emr_text.rectangle.right = 0xffffffff; text[this_text].w_emr_text.rectangle.right = 0xffffffff;
text[this_text].w_emr_text.rectangle.bottom = 0xffffffff; text[this_text].w_emr_text.rectangle.bottom = 0xffffffff;
text[this_text].w_emr_text.off_dx = 0; text[this_text].w_emr_text.off_dx = 0;
utfle_copy(this_string[this_text], str->text, str->length); emf_utfle_copy(this_string[this_text], str->text, str->length);
bytecount += 76 + bumped_len; bytecount += 76 + bumped_len;
recordcount++; recordcount++;
@ -810,15 +806,15 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
if (text_haligns[i] != current_halign) { if (text_haligns[i] != current_halign) {
current_halign = text_haligns[i]; current_halign = text_haligns[i];
if (current_halign == 0) { if (current_halign == 0) {
fwrite(&emr_settextalign, sizeof(emr_settextalign_t), 1, emf_file); fwrite(&emr_settextalign_centre, sizeof(emr_settextalign_t), 1, emf_file);
} else if (current_halign == 1) { } else if (current_halign == 1) {
fwrite(&emr_settextalign1, sizeof(emr_settextalign_t), 1, emf_file); fwrite(&emr_settextalign_left, sizeof(emr_settextalign_t), 1, emf_file);
} else { } else {
fwrite(&emr_settextalign2, sizeof(emr_settextalign_t), 1, emf_file); fwrite(&emr_settextalign_right, sizeof(emr_settextalign_t), 1, emf_file);
} }
} }
fwrite(&text[i], sizeof(emr_exttextoutw_t), 1, emf_file); fwrite(&text[i], sizeof(emr_exttextoutw_t), 1, emf_file);
fwrite(this_string[i], bump_up(text[i].w_emr_text.chars) * 2, 1, emf_file); fwrite(this_string[i], emf_bump_up(text[i].w_emr_text.chars), 1, emf_file);
free(this_string[i]); free(this_string[i]);
} }

211
backend/fonts/upcean_ttf.h Normal file
View File

@ -0,0 +1,211 @@
/* fonts/upcean_ttf.h - OCR-B TrueType (EAN/UPC subset) as static array */
/*
libzint - the open source barcode library
Copyright (C) 2023 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
/* SPDX-License-Identifier: BSD-3-Clause */
#ifndef Z_UPCEAN_TTF_H
#define Z_UPCEAN_TTF_H
/* Adapted from OCR-B font version 0.2 Matthew Skala
* https://tsukurimashou.osdn.jp/ocr.php.en
*
* Copyright Matthew Skala (2011); based on code by Norbert Schwarz (1986, 2011)
*
* "The version in this package descends from a set of Metafont
* definitions by Norbert Schwarz of Ruhr-Universitaet Bochum,
* bearing dates ranging from 1986 to 2010. He originally
* distributed it under a "non-commercial use only"
* restriction but has since released it for unrestricted use
* and distribution. See the README file for more details."
*
* The README states (http://mirrors.ctan.org/fonts/ocr-b.zip)
*
* "As far as the digitization in METAFONT input which I have
* developed, you may freely use, modify, and/or distribute any of
* these files or the resulting fonts, without limitation. A previous
* release of ocr-b only granted rights for non-commercial use; that
* restriction is now lifted."
*/
static const unsigned char upcean_ttf[2404] = {
0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x80, 0x00, 0x03, 0x00, 0x60, 0x47, 0x44, 0x45, 0x46,
0x00, 0x11, 0x00, 0x0d, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x16, 0x47, 0x50, 0x4f, 0x53,
0x44, 0x76, 0x4c, 0x75, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x20, 0x47, 0x53, 0x55, 0x42,
0xb8, 0xfa, 0xb8, 0xf4, 0x00, 0x00, 0x09, 0x38, 0x00, 0x00, 0x00, 0x2a, 0x4f, 0x53, 0x2f, 0x32,
0x56, 0xd8, 0x60, 0xec, 0x00, 0x00, 0x06, 0xc4, 0x00, 0x00, 0x00, 0x56, 0x63, 0x6d, 0x61, 0x70,
0x00, 0x59, 0x00, 0xea, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x44, 0x67, 0x61, 0x73, 0x70,
0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x67, 0x6c, 0x79, 0x66,
0x5a, 0xc9, 0xa9, 0xf4, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x05, 0x22, 0x68, 0x65, 0x61, 0x64,
0xfa, 0xed, 0xa9, 0xe5, 0x00, 0x00, 0x06, 0x4c, 0x00, 0x00, 0x00, 0x36, 0x68, 0x68, 0x65, 0x61,
0x06, 0xc0, 0x01, 0x48, 0x00, 0x00, 0x06, 0xa0, 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78,
0x05, 0x8a, 0x02, 0xdf, 0x00, 0x00, 0x06, 0x84, 0x00, 0x00, 0x00, 0x1c, 0x6c, 0x6f, 0x63, 0x61,
0x08, 0x29, 0x09, 0x54, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x1c, 0x6d, 0x61, 0x78, 0x70,
0x00, 0x54, 0x00, 0x5a, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65,
0x19, 0xeb, 0x33, 0x64, 0x00, 0x00, 0x07, 0x60, 0x00, 0x00, 0x01, 0x76, 0x70, 0x6f, 0x73, 0x74,
0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x08, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x71,
0xff, 0xf2, 0x02, 0x65, 0x03, 0x05, 0x00, 0x1d, 0x00, 0x31, 0x00, 0x00, 0x13, 0x34, 0x3e, 0x04,
0x33, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x22, 0x06, 0x23, 0x22, 0x26, 0x23, 0x22,
0x2e, 0x02, 0x37, 0x14, 0x17, 0x16, 0x3b, 0x01, 0x32, 0x11, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x26,
0x23, 0x22, 0x06, 0x07, 0x06, 0x71, 0x05, 0x10, 0x22, 0x36, 0x54, 0x39, 0x38, 0x54, 0x36, 0x22,
0x11, 0x05, 0x14, 0x2c, 0x54, 0x3a, 0x03, 0x0a, 0x02, 0x05, 0x13, 0x05, 0x48, 0x66, 0x35, 0x17,
0x64, 0x66, 0x0a, 0x26, 0x16, 0x80, 0x05, 0x13, 0x2c, 0x23, 0x09, 0x26, 0x3d, 0x3d, 0x0d, 0x0f,
0x01, 0x57, 0x43, 0x5c, 0x6c, 0x47, 0x3e, 0x1e, 0x1e, 0x3e, 0x48, 0x6b, 0x5d, 0x42, 0x45, 0x73,
0x68, 0x3f, 0x05, 0x01, 0x01, 0x37, 0x66, 0x79, 0x4e, 0xe8, 0x16, 0x02, 0x01, 0x00, 0x2e, 0x3a,
0x4b, 0x5a, 0x34, 0x07, 0x02, 0x32, 0x36, 0x3e, 0x00, 0x01, 0x00, 0x90, 0xff, 0xf6, 0x01, 0xc8,
0x03, 0x02, 0x00, 0x15, 0x00, 0x00, 0x13, 0x34, 0x3f, 0x01, 0x36, 0x3b, 0x01, 0x32, 0x16, 0x15,
0x11, 0x14, 0x06, 0x22, 0x26, 0x35, 0x11, 0x07, 0x06, 0x23, 0x22, 0x26, 0x90, 0x0f, 0xb7, 0x0e,
0x12, 0x20, 0x14, 0x1e, 0x1e, 0x28, 0x1e, 0x81, 0x0d, 0x14, 0x15, 0x1d, 0x02, 0x36, 0x17, 0x0c,
0x9d, 0x0c, 0x1e, 0x14, 0xfd, 0x58, 0x14, 0x1e, 0x1d, 0x15, 0x02, 0x56, 0x6e, 0x0c, 0x1e, 0x00,
0x00, 0x01, 0x00, 0x82, 0x00, 0x01, 0x02, 0x51, 0x03, 0x05, 0x00, 0x2f, 0x00, 0x00, 0x13, 0x34,
0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x03, 0x07, 0x0e, 0x03, 0x07, 0x21, 0x32, 0x16,
0x14, 0x06, 0x23, 0x21, 0x22, 0x26, 0x3d, 0x01, 0x34, 0x37, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x36,
0x35, 0x34, 0x26, 0x23, 0x22, 0x07, 0x06, 0x23, 0x22, 0x26, 0x82, 0x15, 0x5c, 0x78, 0x61, 0x7f,
0x1b, 0x21, 0x41, 0x23, 0x25, 0x28, 0x23, 0x31, 0x16, 0x02, 0x01, 0x2d, 0x15, 0x1d, 0x1e, 0x14,
0xfe, 0xa0, 0x14, 0x1e, 0x0a, 0x12, 0x5f, 0x48, 0x62, 0x1a, 0x1b, 0x47, 0x35, 0x5d, 0x3d, 0x0c,
0x11, 0x14, 0x1e, 0x02, 0x9e, 0x1c, 0x0e, 0x3d, 0x76, 0x5f, 0x26, 0x46, 0x2d, 0x37, 0x18, 0x17,
0x19, 0x1a, 0x32, 0x3d, 0x2a, 0x1e, 0x28, 0x1e, 0x1e, 0x14, 0x15, 0x4f, 0x22, 0x3e, 0x60, 0x2e,
0x3f, 0x23, 0x23, 0x26, 0x33, 0x3e, 0x2b, 0x09, 0x1e, 0x00, 0x00, 0x01, 0x00, 0x71, 0xff, 0xf3,
0x02, 0x5c, 0x02, 0xf6, 0x00, 0x2d, 0x00, 0x00, 0x37, 0x34, 0x36, 0x33, 0x32, 0x17, 0x16, 0x33,
0x32, 0x36, 0x37, 0x35, 0x34, 0x26, 0x23, 0x22, 0x26, 0x34, 0x3f, 0x01, 0x21, 0x22, 0x26, 0x35,
0x34, 0x36, 0x33, 0x21, 0x32, 0x16, 0x1d, 0x01, 0x14, 0x0f, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x0e,
0x01, 0x23, 0x22, 0x2e, 0x02, 0x71, 0x1e, 0x14, 0x07, 0x0c, 0x3f, 0x48, 0x4e, 0x69, 0x04, 0x77,
0x55, 0x14, 0x1e, 0x0b, 0xb8, 0xfe, 0xe9, 0x14, 0x1e, 0x1d, 0x15, 0x01, 0x6b, 0x14, 0x1e, 0x0f,
0x9f, 0x5a, 0x6d, 0x05, 0xa3, 0x77, 0x1d, 0x3b, 0x47, 0x2d, 0x45, 0x15, 0x1d, 0x04, 0x1c, 0x49,
0x47, 0x09, 0x48, 0x48, 0x1e, 0x28, 0x0b, 0xc1, 0x1e, 0x14, 0x15, 0x1d, 0x1e, 0x14, 0x23, 0x12,
0x0f, 0xa8, 0x17, 0x76, 0x5a, 0x0f, 0x6e, 0x81, 0x06, 0x0f, 0x23, 0x00, 0x00, 0x01, 0x00, 0x71,
0xff, 0xf6, 0x02, 0x65, 0x03, 0x02, 0x00, 0x26, 0x00, 0x00, 0x37, 0x35, 0x34, 0x37, 0x13, 0x3e,
0x01, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x03, 0x33, 0x35, 0x34, 0x36, 0x32, 0x16, 0x1d, 0x01,
0x33, 0x32, 0x16, 0x14, 0x06, 0x2b, 0x01, 0x15, 0x14, 0x06, 0x22, 0x26, 0x3d, 0x01, 0x23, 0x22,
0x26, 0x71, 0x05, 0xd9, 0x05, 0x1a, 0x0e, 0x14, 0x1e, 0x05, 0xcc, 0xbd, 0x1e, 0x28, 0x1e, 0x35,
0x15, 0x1d, 0x1e, 0x14, 0x35, 0x1e, 0x28, 0x1e, 0xf7, 0x14, 0x1e, 0xd6, 0x2b, 0x09, 0x0c, 0x01,
0xcf, 0x0c, 0x11, 0x1e, 0x14, 0x0b, 0x0a, 0xfe, 0x4d, 0x74, 0x14, 0x1e, 0x1e, 0x14, 0x74, 0x1e,
0x28, 0x1e, 0x7c, 0x14, 0x1e, 0x1e, 0x14, 0x7c, 0x1d, 0x00, 0x00, 0x01, 0x00, 0x8b, 0xff, 0xf3,
0x02, 0x3d, 0x02, 0xf6, 0x00, 0x27, 0x00, 0x00, 0x36, 0x34, 0x36, 0x33, 0x32, 0x37, 0x36, 0x35,
0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x23, 0x22, 0x26, 0x3d, 0x01, 0x37, 0x3e, 0x01, 0x33, 0x21,
0x32, 0x16, 0x14, 0x06, 0x2b, 0x01, 0x07, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22,
0x8b, 0x1e, 0x14, 0xce, 0x3d, 0x11, 0x21, 0x2e, 0x75, 0x21, 0x1f, 0x04, 0x14, 0x1e, 0x0e, 0x02,
0x1c, 0x14, 0x01, 0x26, 0x15, 0x1d, 0x1e, 0x14, 0xf7, 0x08, 0x0f, 0x88, 0xa0, 0x55, 0x65, 0xc6,
0x14, 0x10, 0x2a, 0x1d, 0x6c, 0x20, 0x1e, 0x46, 0x24, 0x32, 0x03, 0x1c, 0x13, 0x03, 0xfb, 0x14,
0x1b, 0x1e, 0x28, 0x1e, 0x91, 0x82, 0x7e, 0x67, 0x4d, 0x5a, 0x00, 0x02, 0x00, 0x71, 0xff, 0xf3,
0x02, 0x65, 0x03, 0x02, 0x00, 0x19, 0x00, 0x25, 0x00, 0x00, 0x37, 0x35, 0x34, 0x37, 0x3e, 0x02,
0x37, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x06, 0x07, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14,
0x06, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x71,
0x46, 0x1c, 0x52, 0x38, 0x34, 0x0d, 0x17, 0x14, 0x1e, 0x0d, 0x76, 0x37, 0x1e, 0x20, 0x74, 0x86,
0x8c, 0xdc, 0x89, 0x61, 0x52, 0x44, 0x43, 0x53, 0x4c, 0x4a, 0x48, 0x4e, 0xe5, 0x0c, 0x7e, 0x74,
0x2f, 0x69, 0x3f, 0x39, 0x0f, 0x1e, 0x14, 0x13, 0x0f, 0x80, 0x4d, 0x06, 0x8c, 0x76, 0x6b, 0x87,
0x85, 0x6d, 0x42, 0x4c, 0x4d, 0x41, 0x4c, 0x52, 0x54, 0x00, 0x00, 0x01, 0x00, 0x71, 0xff, 0xf6,
0x02, 0x65, 0x02, 0xf6, 0x00, 0x1d, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x21, 0x32, 0x16, 0x15,
0x14, 0x07, 0x0e, 0x01, 0x07, 0x06, 0x15, 0x14, 0x06, 0x22, 0x26, 0x35, 0x34, 0x37, 0x3e, 0x01,
0x37, 0x36, 0x37, 0x21, 0x22, 0x26, 0x71, 0x1d, 0x15, 0x01, 0x90, 0x15, 0x1d, 0x3c, 0x12, 0x6a,
0x17, 0x43, 0x1e, 0x28, 0x1e, 0x50, 0x18, 0x6e, 0x11, 0x19, 0x08, 0xfe, 0xac, 0x14, 0x1e, 0x02,
0xc4, 0x15, 0x1d, 0x1e, 0x14, 0x4d, 0x58, 0x1b, 0x82, 0x27, 0x76, 0xbd, 0x14, 0x1e, 0x1d, 0x15,
0xd8, 0x8c, 0x2a, 0x89, 0x19, 0x26, 0x14, 0x1e, 0x00, 0x03, 0x00, 0x71, 0xff, 0xf3, 0x02, 0x65,
0x03, 0x05, 0x00, 0x15, 0x00, 0x20, 0x00, 0x2f, 0x00, 0x00, 0x37, 0x34, 0x37, 0x26, 0x35, 0x34,
0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x15, 0x14, 0x06, 0x07, 0x23, 0x22, 0x26,
0x37, 0x14, 0x16, 0x3b, 0x01, 0x32, 0x36, 0x35, 0x34, 0x27, 0x06, 0x13, 0x14, 0x1e, 0x02, 0x17,
0x3e, 0x03, 0x35, 0x34, 0x26, 0x22, 0x06, 0x71, 0x91, 0x6f, 0x84, 0x54, 0x53, 0x85, 0x3a, 0x35,
0x91, 0x77, 0x57, 0x2c, 0x6d, 0x8d, 0x63, 0x56, 0x41, 0x15, 0x35, 0x4c, 0x94, 0x99, 0x23, 0x12,
0x29, 0x1c, 0x1d, 0x1d, 0x1d, 0x28, 0x12, 0x4b, 0x52, 0x4b, 0xc8, 0x7c, 0x63, 0x43, 0x6e, 0x4c,
0x61, 0x62, 0x4b, 0x3d, 0x53, 0x21, 0x63, 0x7c, 0x51, 0x7d, 0x07, 0x77, 0x5e, 0x35, 0x3c, 0x43,
0x2e, 0x5c, 0x4d, 0x4e, 0x01, 0x35, 0x18, 0x24, 0x1e, 0x10, 0x0d, 0x0d, 0x0f, 0x1e, 0x25, 0x18,
0x23, 0x26, 0x26, 0x00, 0x00, 0x02, 0x00, 0x71, 0xff, 0xf6, 0x02, 0x65, 0x03, 0x05, 0x00, 0x17,
0x00, 0x24, 0x00, 0x00, 0x13, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x06, 0x07,
0x06, 0x23, 0x22, 0x26, 0x34, 0x37, 0x36, 0x37, 0x06, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33,
0x32, 0x37, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x71, 0x92, 0x68, 0x6b, 0x8f, 0x2a, 0x27,
0x55, 0x7d, 0x0f, 0x12, 0x14, 0x1e, 0x10, 0x63, 0x46, 0x1b, 0x22, 0x70, 0x8a, 0x64, 0x51, 0x45,
0x78, 0x14, 0x0a, 0x52, 0x44, 0x3f, 0x57, 0x02, 0x02, 0x6a, 0x99, 0x8f, 0x74, 0x48, 0x73, 0x43,
0x91, 0x70, 0x0d, 0x1d, 0x2a, 0x10, 0x5a, 0x6e, 0x04, 0x8a, 0x67, 0x3f, 0x4e, 0x45, 0x21, 0x27,
0x49, 0x56, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x71, 0x00, 0x40, 0x02, 0x65, 0x02, 0xb8, 0x00, 0x14,
0x00, 0x00, 0x12, 0x34, 0x37, 0x01, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x07, 0x0d, 0x01, 0x16,
0x15, 0x14, 0x06, 0x23, 0x22, 0x27, 0x01, 0x71, 0x0d, 0x01, 0x99, 0x0c, 0x10, 0x14, 0x1e, 0x0f,
0xfe, 0xa7, 0x01, 0x59, 0x0f, 0x1e, 0x14, 0x10, 0x0c, 0xfe, 0x67, 0x01, 0x65, 0x2e, 0x0d, 0x01,
0x0f, 0x09, 0x1e, 0x14, 0x1a, 0x0a, 0xe6, 0xe6, 0x0f, 0x15, 0x14, 0x1e, 0x09, 0x01, 0x0f, 0x00,
0x00, 0x01, 0x00, 0x71, 0x00, 0x40, 0x02, 0x65, 0x02, 0xb8, 0x00, 0x15, 0x00, 0x00, 0x37, 0x34,
0x37, 0x2d, 0x01, 0x26, 0x35, 0x34, 0x36, 0x33, 0x32, 0x17, 0x01, 0x16, 0x15, 0x14, 0x07, 0x01,
0x06, 0x23, 0x22, 0x26, 0x71, 0x0e, 0x01, 0x59, 0xfe, 0xa7, 0x0e, 0x1e, 0x14, 0x0f, 0x0d, 0x01,
0x98, 0x0e, 0x0e, 0xfe, 0x68, 0x0d, 0x0f, 0x14, 0x1e, 0x72, 0x14, 0x10, 0xe6, 0xe6, 0x10, 0x14,
0x15, 0x1d, 0x09, 0xfe, 0xf1, 0x0d, 0x17, 0x1b, 0x09, 0xfe, 0xf1, 0x09, 0x1d, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x57, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x6a, 0x00, 0xaf, 0x00, 0xf0, 0x01, 0x27, 0x01, 0x5f,
0x01, 0x97, 0x01, 0xc6, 0x02, 0x0c, 0x02, 0x44, 0x02, 0x6a, 0x02, 0x91, 0x00, 0x01, 0x00, 0x00,
0x00, 0x02, 0x00, 0x00, 0xb6, 0x0c, 0xeb, 0x74, 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x0b, 0x03, 0xe8,
0x00, 0x00, 0x00, 0x00, 0xcc, 0x8a, 0x33, 0x53, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x8a, 0x33, 0x53,
0xff, 0xa9, 0xfe, 0xb0, 0x03, 0x10, 0x03, 0xaa, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0xd3, 0x00, 0x00, 0x00, 0x71, 0x00, 0x90, 0x00, 0x82, 0x00, 0x71,
0x00, 0x71, 0x00, 0x8b, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71,
0x00, 0x01, 0x00, 0x00, 0x03, 0xaa, 0xfe, 0xb0, 0x00, 0x5a, 0x02, 0xd3, 0xff, 0xa9, 0xff, 0xc3,
0x03, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0xd3, 0x01, 0x90, 0x00, 0x05, 0x00, 0x00, 0x02, 0x8a,
0x02, 0xbc, 0x00, 0x00, 0x00, 0x8c, 0x02, 0x8a, 0x02, 0xbc, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x31,
0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x66,
0x45, 0x64, 0x00, 0x40, 0x00, 0x30, 0x00, 0x3e, 0x03, 0x20, 0xff, 0x38, 0x00, 0x5a, 0x03, 0xaa,
0x01, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14,
0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x39,
0x00, 0x3c, 0x00, 0x3e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x3e, 0xff, 0xff,
0xff, 0xd1, 0xff, 0xcf, 0xff, 0xce, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x00, 0x5a, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0x86,
0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x08, 0x00, 0x86, 0x00, 0x03,
0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x8e, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09,
0x00, 0x03, 0x00, 0x52, 0x00, 0x9c, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x1a,
0x00, 0xee, 0x00, 0x03, 0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x14, 0x01, 0x08, 0x00, 0x03,
0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x86, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x74,
0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x77, 0x00, 0x20, 0x00, 0x53, 0x00, 0x6b, 0x00, 0x61,
0x00, 0x6c, 0x00, 0x61, 0x00, 0x20, 0x00, 0x28, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31,
0x00, 0x29, 0x00, 0x3b, 0x00, 0x20, 0x00, 0x62, 0x00, 0x61, 0x00, 0x73, 0x00, 0x65, 0x00, 0x64,
0x00, 0x20, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x65,
0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x4e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x62,
0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x53, 0x00, 0x63, 0x00, 0x68, 0x00, 0x77,
0x00, 0x61, 0x00, 0x72, 0x00, 0x7a, 0x00, 0x20, 0x00, 0x28, 0x00, 0x31, 0x00, 0x39, 0x00, 0x38,
0x00, 0x36, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x29,
0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x42, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75,
0x00, 0x6c, 0x00, 0x61, 0x00, 0x72, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x46,
0x00, 0x6f, 0x00, 0x72, 0x00, 0x67, 0x00, 0x65, 0x00, 0x20, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x30,
0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x20, 0x00, 0x42,
0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x72,
0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x39, 0x00, 0x2d,
0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x4f, 0x00, 0x43, 0x00, 0x52, 0x00, 0x20,
0x00, 0x42, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x61,
0x00, 0x72, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e,
0x00, 0x20, 0x00, 0x32, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x02,
0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
0x00, 0x01, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x1c,
0x00, 0x1e, 0x00, 0x01, 0x44, 0x46, 0x4c, 0x54, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x26,
0x00, 0x28, 0x00, 0x02, 0x44, 0x46, 0x4c, 0x54, 0x00, 0x0e, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0x18,
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
/* vim: set ts=4 sw=4 et : */
#endif /* Z_UPCEAN_TTF_H */

View File

@ -0,0 +1,77 @@
/* ocrb_woff2.h - OCR-B (EAN/UPC subset) as base 64 string */
/*
libzint - the open source barcode library
Copyright (C) 2023 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
/* SPDX-License-Identifier: BSD-3-Clause */
#ifndef Z_UPCEAN_WOFF2_H
#define Z_UPCEAN_WOFF2_H
/* Adapted from OCR-B font version 0.2 Matthew Skala
* https://tsukurimashou.osdn.jp/ocr.php.en
*
* Copyright Matthew Skala (2011); based on code by Norbert Schwarz (1986, 2011)
*
* "The version in this package descends from a set of Metafont
* definitions by Norbert Schwarz of Ruhr-Universitaet Bochum,
* bearing dates ranging from 1986 to 2010. He originally
* distributed it under a "non-commercial use only"
* restriction but has since released it for unrestricted use
* and distribution. See the README file for more details."
*
* The README states (http://mirrors.ctan.org/fonts/ocr-b.zip)
*
* "As far as the digitization in METAFONT input which I have
* developed, you may freely use, modify, and/or distribute any of
* these files or the resulting fonts, without limitation. A previous
* release of ocr-b only granted rights for non-commercial use; that
* restriction is now lifted."
*/
static const char upcean_woff2[1905] =
"d09GMgABAAAAAAWUAA4AAAAACWwAAAVAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbIBwqBlYARBEICoosiEMLHAABNgIkAxwEIAWCdgcgG3A"
"HUZQNToDsZ0Lmpodml0MocYiJWq3MrpVLZEJ+vN3Pv5v+uQSv2A20nhmlog7VlNREyOZ0r49OVZEJPLVfUR54bvk7Los0CqTnCfSi2iEa0i67dW"
"964kDG5b9/ecD9z/18fqPNwoZRuAHOhvii7ruLDKo8XiYbDftHU5QXfpIPyF9jbUb2MTDyZycgAJasIQ4EseR/EICYK3eoSVfQIMQFAP8DAIDSy"
"8hx1rMeage6wBFgoBvDB9LiAc4UHgCsLrPoC9W0EnDChcgR+dP8Pq0BEgWKj6g5Ull0JGhpggOEqscICLhYA0BION+IEiv+Es7AeuV899KL7QFR"
"GCpolRPO03YAbQGnpme53yJDTOskRg96rjuWBPp7yp0t3SUWNo5WpKScNUaWb40WM/rXeiWoddapmnVizQGxxlBl1MXrLeajBGLV6J3wDeOhV9S"
"ualbKbNR3HAau+pDmCOLRrOIRFzxXoLm3XNNdirx06dUpV6tljfqQ2HIrYj3OGhljwEnEGkJJgUYZ9qjmJR+H5Bxj5Y+wUoaN8imRbQBqTOv1AD"
"rddOyB4QYdk5ZvhOHwpK/EAqBVtFg9IIYzADIk44q2zFHExt8RaxYWEGK2rkYjSF/NS+vcSQaxzEnj26KNalJHHzx3VWNg1PoGjZcJ6qqvQbEXD"
"ul8dQcwInmfky6Wpy8xBsQ+V1JkQVosyuj7VLpy9fHL+xcdPHj1wdRGPCbSFq57asnI7BMfFmR26qWPrLT5RLGa2vUyOY5Kmhi9UF+3Ab0WNMp+"
"3CB6QY8qhVtu0z4vvbLILSoy/Rcr52XYtnErktMc+nyai+LXEVoOj+JlNoaHNkpG6pU/NJJzMoka/KO52falZ2WsLO72/V/h0zDpzxe2fbSnsBk"
"fwma5iVSpO59i8jmw212V5bEjtVOD1TLnNMvEcM/0ES9U4eRHPpebcQ02YzJvzq2qOsOvNn7NHllIelxY5ZNLdtgMPamkCQvO/pyZ25JJpIsyhz"
"KKsVl+5OItKUfsGdkevniB/W87DpZKOgbLbLide9TDbvvTre9Aj95HlPPuRY7WernJIuvpmesDQqQaGAjbMRA20XvzxO/YBBobbxN+Edtu455Ov"
"B6c9xUXf3QgrP5yuIJl2Kt+F2htVu5kp5ppRUPpAwzfWE6l9d8oaJmKfHGFn3J4MTgdrtBTA8tmhtpnlptWLq3pSC7ISU0pVCQpcgqyM5VFcJd8"
"RmrJ51gZwzi3sk3Jg9ffZ8+7vJnRzpXCZf30Qz/74YS2riu5S7Gkhi5aWpsTF1WYqK2bKBiaUPF9O1cP1VWGFcckkWE5yf4VaxWblPNDHR0+ufn"
"s2YtJ7Lgge1Fh8tmA2uY2tbTPzg5kevXJkmntRPcv9tjk/X9daVrn3vk9q1bVNyXkK9NGHFK1nlkFxakJqkqd0NP5P9tkvSmxl3X+sSTH9xvZeG"
"0vjet61vhzY/vnmDRhm0cbrZ9Sl3d56WaDn7+ICsCjqsbibdU2sX+hRfQDAM+mkCL/hMOfisroCPidGAGyT85klYVvCbmjApoDP+cQgF5ai3N1r"
"xneYEC9FQZP4pjMOJwouk2gDAHFBYDloDUiQsuNHNZmjYRC24xczn4z8uBAiHyx36FUa8CAFo2GUYq0q9WhFkUuWKAgQbzEoNSp1a9RA0q3LpR6"
"3Ro0zsOoD7l96GuhMceBjbT1WgyTKjEGcnlzlEjhfFEb2+ZJUShZYaPZoA4Y0w/AgRL65rARB3/TSIlGAWXOo0yWmg4WwU8Uv0OWDYZRdd1Uv9Z"
"HQXBqJgAAgewAAAAA";
/* vim: set ts=4 sw=4 et : */
#endif /* Z_UPCEAN_WOFF2_H */

View File

@ -1,7 +1,7 @@
/* gridmtx.c - Grid Matrix */ /* gridmtx.c - Grid Matrix */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -467,17 +467,17 @@ static int gm_encode(unsigned int ddata[], const int length, char binary[], cons
} }
if (debug_print) { if (debug_print) {
switch (next_mode) { switch (next_mode) {
case GM_CHINESE: printf("CHIN "); case GM_CHINESE: fputs("CHIN ", stdout);
break; break;
case GM_NUMBER: printf("NUMB "); case GM_NUMBER: fputs("NUMB ", stdout);
break; break;
case GM_LOWER: printf("LOWR "); case GM_LOWER: fputs("LOWR ", stdout);
break; break;
case GM_UPPER: printf("UPPR "); case GM_UPPER: fputs("UPPR ", stdout);
break; break;
case GM_MIXED: printf("MIXD "); case GM_MIXED: fputs("MIXD ", stdout);
break; break;
case GM_BYTE: printf("BYTE "); case GM_BYTE: fputs("BYTE ", stdout);
break; break;
} }
} }

View File

@ -1,7 +1,7 @@
/* hanxin.c - Han Xin Code */ /* hanxin.c - Han Xin Code */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -548,7 +548,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
bp = bin_append_posn(1, 4, binary, bp); bp = bin_append_posn(1, 4, binary, bp);
if (debug_print) { if (debug_print) {
printf("Numeric\n"); fputs("Numeric\n", stdout);
} }
count = 0; /* Suppress gcc -Wmaybe-uninitialized */ count = 0; /* Suppress gcc -Wmaybe-uninitialized */
@ -604,7 +604,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
bp = bin_append_posn(2, 4, binary, bp); bp = bin_append_posn(2, 4, binary, bp);
if (debug_print) { if (debug_print) {
printf("Text\n"); fputs("Text\n", stdout);
} }
submode = 1; submode = 1;
@ -618,7 +618,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
bp = bin_append_posn(62, 6, binary, bp); bp = bin_append_posn(62, 6, binary, bp);
submode = hx_getsubmode(ddata[i + position]); submode = hx_getsubmode(ddata[i + position]);
if (debug_print) { if (debug_print) {
printf("SWITCH "); fputs("SWITCH ", stdout);
} }
} }
@ -640,7 +640,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
bp = bin_append_posn(63, 6, binary, bp); bp = bin_append_posn(63, 6, binary, bp);
if (debug_print) { if (debug_print) {
printf("\n"); fputs("\n", stdout);
} }
break; break;
case 'b': case 'b':
@ -670,7 +670,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
} }
if (debug_print) { if (debug_print) {
printf("\n"); fputs("\n", stdout);
} }
break; break;
case '1': case '1':
@ -766,7 +766,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
bp = bin_append_posn(6, 4, binary, bp); bp = bin_append_posn(6, 4, binary, bp);
if (debug_print) { if (debug_print) {
printf("Double byte\n"); fputs("Double byte\n", stdout);
} }
i = 0; i = 0;
@ -795,13 +795,13 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
- confirmed by Wang Yi */ - confirmed by Wang Yi */
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
case 'f': case 'f':
/* Four-byte encoding */ /* Four-byte encoding */
if (debug_print) { if (debug_print) {
printf("Four byte\n"); fputs("Four byte\n", stdout);
} }
i = 0; i = 0;
@ -830,7 +830,7 @@ static void hx_calculate_binary(char binary[], const char mode[], const unsigned
/* No terminator */ /* No terminator */
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
} }
@ -1454,7 +1454,7 @@ static void hx_apply_bitmask(unsigned char *grid, const int size, const int vers
if (!user_mask) { if (!user_mask) {
for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, penalty[pattern]); for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, penalty[pattern]);
} }
printf("\n"); fputc('\n', stdout);
} }
/* Apply mask */ /* Apply mask */
@ -1645,11 +1645,11 @@ INTERNAL int hanxin(struct zint_symbol *symbol, struct zint_seg segs[], const in
} }
if (debug_print) { if (debug_print) {
printf("Datastream (%d): ", data_codewords); printf("Datastream (%d):", data_codewords);
for (i = 0; i < data_codewords; i++) { for (i = 0; i < data_codewords; i++) {
printf("%.2x ", datastream[i]); printf(" %.2x", datastream[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) debug_test_codeword_dump(symbol, datastream, data_codewords); if (symbol->debug & ZINT_DEBUG_TEST) debug_test_codeword_dump(symbol, datastream, data_codewords);
@ -1660,11 +1660,11 @@ INTERNAL int hanxin(struct zint_symbol *symbol, struct zint_seg segs[], const in
hx_add_ecc(fullstream, datastream, data_codewords, version, ecc_level); hx_add_ecc(fullstream, datastream, data_codewords, version, ecc_level);
if (debug_print) { if (debug_print) {
printf("Fullstream (%d): ", hx_total_codewords[version - 1]); printf("Fullstream (%d):", hx_total_codewords[version - 1]);
for (i = 0; i < hx_total_codewords[version - 1]; i++) { for (i = 0; i < hx_total_codewords[version - 1]; i++) {
printf("%.2x ", fullstream[i]); printf(" %.2x", fullstream[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
hx_make_picket_fence(fullstream, picket_fence, hx_total_codewords[version - 1]); hx_make_picket_fence(fullstream, picket_fence, hx_total_codewords[version - 1]);

View File

@ -1,7 +1,7 @@
/* imail.c - Handles Intelligent Mail (aka OneCode) for USPS */ /* imail.c - Handles Intelligent Mail (aka OneCode) for USPS */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -248,8 +248,8 @@ INTERNAL int usps_imail(struct zint_symbol *symbol, unsigned char source[], int
int error_number = 0; int error_number = 0;
int i, j, read; int i, j, read;
char zip[35], tracker[35], temp[2]; char zip[35], tracker[35], temp[2];
large_int accum; large_uint accum;
large_int byte_array_reg; large_uint byte_array_reg;
unsigned char byte_array[13]; unsigned char byte_array[13];
unsigned short usps_crc; unsigned short usps_crc;
unsigned int codeword[10]; unsigned int codeword[10];

View File

@ -1,7 +1,7 @@
/* large.c - Handles binary manipulation of large numbers */ /* large.c - Handles binary manipulation of large numbers */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -52,7 +52,7 @@
#define MASK32 0xFFFFFFFF #define MASK32 0xFFFFFFFF
/* Convert decimal string `s` of (at most) length `length` to 64-bit and place in 128-bit `t` */ /* Convert decimal string `s` of (at most) length `length` to 64-bit and place in 128-bit `t` */
INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int length) { INTERNAL void large_load_str_u64(large_uint *t, const unsigned char *s, const int length) {
uint64_t val = 0; uint64_t val = 0;
const unsigned char *const se = s + length; const unsigned char *const se = s + length;
for (; s < se && z_isdigit(*s); s++) { for (; s < se && z_isdigit(*s); s++) {
@ -64,13 +64,13 @@ INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int
} }
/* Add 128-bit `s` to 128-bit `t` */ /* Add 128-bit `s` to 128-bit `t` */
INTERNAL void large_add(large_int *t, const large_int *s) { INTERNAL void large_add(large_uint *t, const large_uint *s) {
t->lo += s->lo; t->lo += s->lo;
t->hi += s->hi + (t->lo < s->lo); t->hi += s->hi + (t->lo < s->lo);
} }
/* Add 64-bit `s` to 128-bit `t` */ /* Add 64-bit `s` to 128-bit `t` */
INTERNAL void large_add_u64(large_int *t, const uint64_t s) { INTERNAL void large_add_u64(large_uint *t, const uint64_t s) {
t->lo += s; t->lo += s;
if (t->lo < s) { if (t->lo < s) {
t->hi++; t->hi++;
@ -78,7 +78,7 @@ INTERNAL void large_add_u64(large_int *t, const uint64_t s) {
} }
/* Subtract 64-bit `s` from 128-bit `t` */ /* Subtract 64-bit `s` from 128-bit `t` */
INTERNAL void large_sub_u64(large_int *t, const uint64_t s) { INTERNAL void large_sub_u64(large_uint *t, const uint64_t s) {
uint64_t r = t->lo - s; uint64_t r = t->lo - s;
if (r > t->lo) { if (r > t->lo) {
t->hi--; t->hi--;
@ -107,7 +107,7 @@ INTERNAL void large_sub_u64(large_int *t, const uint64_t s) {
* p10 * p10
* p11 + k10 * p11 + k10
*/ */
INTERNAL void large_mul_u64(large_int *t, const uint64_t s) { INTERNAL void large_mul_u64(large_uint *t, const uint64_t s) {
uint64_t thi = t->hi; uint64_t thi = t->hi;
uint64_t tlo0 = t->lo & MASK32; uint64_t tlo0 = t->lo & MASK32;
uint64_t tlo1 = t->lo >> 32; uint64_t tlo1 = t->lo >> 32;
@ -149,7 +149,7 @@ INTERNAL int clz_u64_test(uint64_t x) {
/* Divide 128-bit dividend `t` by 64-bit divisor `v`, returning 64-bit remainder /* Divide 128-bit dividend `t` by 64-bit divisor `v`, returning 64-bit remainder
* See Jacob `divmod128by128/64()` and Warren Section 92 (divmu64.c.txt) * See Jacob `divmod128by128/64()` and Warren Section 92 (divmu64.c.txt)
* Note digits are 32-bit parts */ * Note digits are 32-bit parts */
INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v) { INTERNAL uint64_t large_div_u64(large_uint *t, uint64_t v) {
const uint64_t b = 0x100000000; /* Number base (2**32) */ const uint64_t b = 0x100000000; /* Number base (2**32) */
uint64_t qhi = 0; /* High digit of returned quotient */ uint64_t qhi = 0; /* High digit of returned quotient */
@ -241,7 +241,7 @@ INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v) {
} }
/* Unset a bit (zero-based) */ /* Unset a bit (zero-based) */
INTERNAL void large_unset_bit(large_int *t, const int bit) { INTERNAL void large_unset_bit(large_uint *t, const int bit) {
if (bit < 64) { if (bit < 64) {
t->lo &= ~(((uint64_t) 1) << bit); t->lo &= ~(((uint64_t) 1) << bit);
} else if (bit < 128) { } else if (bit < 128) {
@ -249,8 +249,8 @@ INTERNAL void large_unset_bit(large_int *t, const int bit) {
} }
} }
/* Output large_int into an unsigned int array of size `size`, each element containing `bits` bits */ /* Output large_uint into an unsigned int array of size `size`, each element containing `bits` bits */
INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, const int size, int bits) { INTERNAL void large_uint_array(const large_uint *t, unsigned int *uint_array, const int size, int bits) {
int i, j; int i, j;
uint64_t mask; uint64_t mask;
if (bits <= 0) { if (bits <= 0) {
@ -281,7 +281,7 @@ INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, con
} }
/* As `large_uint_array()` above, except output to unsigned char array */ /* As `large_uint_array()` above, except output to unsigned char array */
INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array, const int size, int bits) { INTERNAL void large_uchar_array(const large_uint *t, unsigned char *uchar_array, const int size, int bits) {
int i; int i;
unsigned int *uint_array = (unsigned int *) z_alloca(sizeof(unsigned int) * (size ? size : 1)); unsigned int *uint_array = (unsigned int *) z_alloca(sizeof(unsigned int) * (size ? size : 1));
@ -292,8 +292,8 @@ INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array,
} }
} }
/* Format large_int into buffer, which should be at least 35 chars in size */ /* Format large_uint into buffer, which should be at least 35 chars in size */
INTERNAL char *large_dump(const large_int *t, char *buf) { INTERNAL char *large_dump(const large_uint *t, char *buf) {
unsigned int tlo1 = (unsigned int) (large_lo(t) >> 32); unsigned int tlo1 = (unsigned int) (large_lo(t) >> 32);
unsigned int tlo0 = (unsigned int) (large_lo(t) & MASK32); unsigned int tlo0 = (unsigned int) (large_lo(t) & MASK32);
unsigned int thi1 = (unsigned int) (large_hi(t) >> 32); unsigned int thi1 = (unsigned int) (large_hi(t) >> 32);
@ -311,8 +311,8 @@ INTERNAL char *large_dump(const large_int *t, char *buf) {
return buf; return buf;
} }
/* Output formatted large_int to stdout */ /* Output formatted large_uint to stdout */
INTERNAL void large_print(const large_int *t) { INTERNAL void large_print(const large_uint *t) {
char buf[35]; /* 2 (0x) + 32 (hex) + 1 */ char buf[35]; /* 2 (0x) + 32 (hex) + 1 */
puts(large_dump(t, buf)); puts(large_dump(t, buf));

View File

@ -2,7 +2,7 @@
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -38,7 +38,7 @@
extern "C" { extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
typedef struct { uint64_t lo; uint64_t hi; } large_int; typedef struct { uint64_t lo; uint64_t hi; } large_uint;
#define large_lo(s) ((s)->lo) #define large_lo(s) ((s)->lo)
#define large_hi(s) ((s)->hi) #define large_hi(s) ((s)->hi)
@ -49,24 +49,35 @@ typedef struct { uint64_t lo; uint64_t hi; } large_int;
/* Set 128-bit `t` from 64-bit `s` */ /* Set 128-bit `t` from 64-bit `s` */
#define large_load_u64(t, s) do { (t)->lo = (s); (t)->hi = 0; } while (0) #define large_load_u64(t, s) do { (t)->lo = (s); (t)->hi = 0; } while (0)
INTERNAL void large_load_str_u64(large_int *t, const unsigned char *s, const int length); /* Convert decimal string `s` of (at most) length `length` to 64-bit and place in 128-bit `t` */
INTERNAL void large_load_str_u64(large_uint *t, const unsigned char *s, const int length);
INTERNAL void large_add(large_int *t, const large_int *s); /* Add 128-bit `s` to 128-bit `t` */
INTERNAL void large_add_u64(large_int *t, const uint64_t s); INTERNAL void large_add(large_uint *t, const large_uint *s);
/* Add 64-bit `s` to 128-bit `t` */
INTERNAL void large_add_u64(large_uint *t, const uint64_t s);
INTERNAL void large_sub_u64(large_int *t, const uint64_t s); /* Subtract 64-bit `s` from 128-bit `t` */
INTERNAL void large_sub_u64(large_uint *t, const uint64_t s);
INTERNAL void large_mul_u64(large_int *t, const uint64_t s); /* Multiply 128-bit `t` by 64-bit `s` */
INTERNAL void large_mul_u64(large_uint *t, const uint64_t s);
INTERNAL uint64_t large_div_u64(large_int *t, uint64_t v); /* Divide 128-bit dividend `t` by 64-bit divisor `v`, returning 64-bit remainder */
INTERNAL uint64_t large_div_u64(large_uint *t, uint64_t v);
INTERNAL void large_unset_bit(large_int *t, const int bit); /* Unset a bit (zero-based) */
INTERNAL void large_unset_bit(large_uint *t, const int bit);
INTERNAL void large_uint_array(const large_int *t, unsigned int *uint_array, const int size, int bits); /* Output large_uint into an unsigned int array of size `size`, each element containing `bits` bits */
INTERNAL void large_uchar_array(const large_int *t, unsigned char *uchar_array, const int size, int bits); INTERNAL void large_uint_array(const large_uint *t, unsigned int *uint_array, const int size, int bits);
/* As `large_uint_array()` above, except output to unsigned char array */
INTERNAL void large_uchar_array(const large_uint *t, unsigned char *uchar_array, const int size, int bits);
INTERNAL char *large_dump(const large_int *t, char *buf); /* Format large_uint into buffer, which should be at least 35 chars in size */
INTERNAL void large_print(const large_int *t); INTERNAL char *large_dump(const large_uint *t, char *buf);
/* Output formatted large_uint to stdout */
INTERNAL void large_print(const large_uint *t);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -70,7 +70,6 @@ struct zint_symbol *ZBarcode_Create(void) {
#endif #endif
symbol->option_1 = -1; symbol->option_1 = -1;
symbol->show_hrt = 1; /* Show human readable text */ symbol->show_hrt = 1; /* Show human readable text */
symbol->fontsize = 8;
symbol->input_mode = DATA_MODE; symbol->input_mode = DATA_MODE;
symbol->eci = 0; /* Default 0 uses ECI 3 */ symbol->eci = 0; /* Default 0 uses ECI 3 */
symbol->dot_size = 4.0f / 5.0f; symbol->dot_size = 4.0f / 5.0f;
@ -297,7 +296,7 @@ static int dump_plot(struct zint_symbol *symbol) {
byt = byt << (4 - (symbol->width % 4)); byt = byt << (4 - (symbol->width % 4));
fputc(hex[byt], f); fputc(hex[byt], f);
} }
fputs("\n", f); fputc('\n', f);
space = 0; space = 0;
} }
@ -858,7 +857,7 @@ INTERNAL int escape_char_process_test(struct zint_symbol *symbol, unsigned char
} }
#endif #endif
/* Encode a barcode. If `length` is 0, `source` must be NUL-terminated. */ /* Encode a barcode. If `length` is 0, `source` must be NUL-terminated */
int ZBarcode_Encode(struct zint_symbol *symbol, const unsigned char *source, int length) { int ZBarcode_Encode(struct zint_symbol *symbol, const unsigned char *source, int length) {
struct zint_seg segs[1]; struct zint_seg segs[1];

View File

@ -1,7 +1,7 @@
/* mailmark.c - Royal Mail 4-state and 2D Mailmark barcodes */ /* mailmark.c - Royal Mail 4-state and 2D Mailmark barcodes */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -105,7 +105,7 @@ static int mailmark_verify_character(char input, char type) {
} }
} }
static int mailmark_verify_postcode(const char postcode[10], int* p_postcode_type) { static int mailmark_verify_postcode(const char postcode[10], int *p_postcode_type) {
int postcode_type; int postcode_type;
/* Detect postcode type */ /* Detect postcode type */
@ -179,9 +179,9 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int
unsigned int item_id; unsigned int item_id;
char postcode[10]; char postcode[10];
int postcode_type; int postcode_type;
large_int destination_postcode; large_uint destination_postcode;
large_int b; large_uint b;
large_int cdv; large_uint cdv;
unsigned char data[26]; unsigned char data[26];
int data_top, data_step; int data_top, data_step;
unsigned char check[7]; unsigned char check[7];
@ -382,7 +382,7 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("DPC type %d\n", postcode_type); printf("DPC type %d\n", postcode_type);
printf("CDV: "); fputs("CDV: ", stdout);
large_print(&cdv); large_print(&cdv);
} }
@ -417,11 +417,11 @@ INTERNAL int mailmark_4s(struct zint_symbol *symbol, unsigned char source[], int
} }
if (symbol->debug & ZINT_DEBUG_PRINT) { if (symbol->debug & ZINT_DEBUG_PRINT) {
printf("Codewords: "); fputs("Codewords:", stdout);
for (i = 0; i <= data_top + check_count; i++) { for (i = 0; i <= data_top + check_count; i++) {
printf("%d ", (int) data[i]); printf(" %d", (int) data[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
/* Conversion from Data Numbers and Check Numbers to Data Symbols and Check Symbols */ /* Conversion from Data Numbers and Check Numbers to Data Symbols and Check Symbols */

View File

@ -1,7 +1,7 @@
/* maxicode.c - Handles MaxiCode */ /* maxicode.c - Handles MaxiCode */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2010-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2010-2023 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
@ -327,33 +327,33 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144
character[sp + i] = 63; /* Set B Latch A */ character[sp + i] = 63; /* Set B Latch A */
current_set = 1; current_set = 1;
i += 3; /* Next 3 Set A so skip over */ i += 3; /* Next 3 Set A so skip over */
if (debug_print) printf("LCHA "); if (debug_print) fputs("LCHA ", stdout);
} else { } else {
/* 3 Shift A */ /* 3 Shift A */
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 57; /* Set B triple shift A */ character[sp + i] = 57; /* Set B triple shift A */
i += 2; /* Next 2 Set A so skip over */ i += 2; /* Next 2 Set A so skip over */
if (debug_print) printf("3SHA "); if (debug_print) fputs("3SHA ", stdout);
} }
} else { } else {
/* 2 Shift A */ /* 2 Shift A */
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 56; /* Set B double shift A */ character[sp + i] = 56; /* Set B double shift A */
i++; /* Next Set A so skip over */ i++; /* Next Set A so skip over */
if (debug_print) printf("2SHA "); if (debug_print) fputs("2SHA ", stdout);
} }
} else { } else {
/* Shift A */ /* Shift A */
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 59; /* Set A Shift B */ character[sp + i] = 59; /* Set A Shift B */
if (debug_print) printf("SHA "); if (debug_print) fputs("SHA ", stdout);
} }
} else { /* All sets other than B only have latch */ } else { /* All sets other than B only have latch */
/* Latch A */ /* Latch A */
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 58; /* Sets C,D,E Latch A */ character[sp + i] = 58; /* Sets C,D,E Latch A */
current_set = 1; current_set = 1;
if (debug_print) printf("LCHA "); if (debug_print) fputs("LCHA ", stdout);
} }
break; break;
case 2: /* Set B */ case 2: /* Set B */
@ -363,12 +363,12 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 63; /* Sets A,C,D,E Latch B */ character[sp + i] = 63; /* Sets A,C,D,E Latch B */
current_set = 2; current_set = 2;
if (debug_print) printf("LCHB "); if (debug_print) fputs("LCHB ", stdout);
} else { /* Only available from Set A */ } else { /* Only available from Set A */
/* Shift B */ /* Shift B */
maxi_bump(set, character, sp + i, &length); maxi_bump(set, character, sp + i, &length);
character[sp + i] = 59; /* Set B Shift A */ character[sp + i] = 59; /* Set B Shift A */
if (debug_print) printf("SHB "); if (debug_print) fputs("SHB ", stdout);
} }
break; break;
case 3: /* Set C */ case 3: /* Set C */
@ -408,7 +408,7 @@ static int maxi_text_process(unsigned char set[144], unsigned char character[144
i++; i++;
} while (sp + i < 144); } while (sp + i < 144);
if (debug_print) printf("\n"); if (debug_print) fputc('\n', stdout);
/* Number compression has not been forgotten! - It's handled below */ /* Number compression has not been forgotten! - It's handled below */
i = 0; i = 0;
@ -685,9 +685,9 @@ INTERNAL int maxicode(struct zint_symbol *symbol, struct zint_seg segs[], const
maxi_do_secondary_chk_odd(maxi_codeword, eclen / 2); /* do error correction of odd */ maxi_do_secondary_chk_odd(maxi_codeword, eclen / 2); /* do error correction of odd */
if (debug_print) { if (debug_print) {
printf("Codewords:"); fputs("Codewords:", stdout);
for (i = 0; i < 144; i++) printf(" %d", maxi_codeword[i]); for (i = 0; i < 144; i++) printf(" %d", maxi_codeword[i]);
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) { if (symbol->debug & ZINT_DEBUG_TEST) {

View File

@ -190,7 +190,7 @@ INTERNAL int out_colour_get_cmyk(const char *colour, int *cyan, int *magenta, in
} }
/* Return minimum quiet zones for each symbology */ /* Return minimum quiet zones for each symbology */
static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text, static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text, const int comp_xoffset,
float *left, float *right, float *top, float *bottom) { float *left, float *right, float *top, float *bottom) {
int done = 0; int done = 0;
@ -235,33 +235,39 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
case BARCODE_ISBNX: case BARCODE_ISBNX:
/* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */
switch (ustrlen(symbol->text)) { switch (ustrlen(symbol->text)) {
case 13: /* EAN-13 */ case 13: /* EAN-13/ISBN */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = 11.0f; *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need at least 1X for CC-A/B */
*right = 7.0f; *right = 7.0f - (comp_xoffset != 0);
} else if (!hide_text) { } else if (!hide_text) {
*left = 11.0f; /* Need for outside left digit */ *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need for outside left digit */
} }
break; break;
case 16: /* EAN-13/ISBN + 2 digit addon */ case 16: /* EAN-13/ISBN + 2 digit add-on */
case 19: /* EAN-13/ISBN + 5 digit addon */ case 19: /* EAN-13/ISBN + 5 digit add-on */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = 11.0f; *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need at least 1X for CC-A/B */
*right = 5.0f; *right = 5.0f;
} else if (!hide_text) { } else if (!hide_text) {
*left = 11.0f; /* Need for outside left digit */ *left = comp_xoffset >= 10 ? 1.0f : 11.0f - comp_xoffset; /* Need for outside left digit */
} }
break; break;
case 5: /* EAN-5 addon */ case 5: /* EAN-5 add-on */
case 2: /* EAN-2 addon */ case 2: /* EAN-2 add-on */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = 7.0f;
*right = 5.0f; *right = 5.0f;
} }
break; break;
default: /* EAN-8 (+/- 2/5 digit addon) */ case 8: /* EAN-8 */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = *right = 7.0f; *left = comp_xoffset >= 6 ? 1.0f : 7.0f - comp_xoffset; /* Need at least 1X for CC-A/B */
*right = 7.0f - (comp_xoffset != 0);
}
break;
default: /* EAN-8 + 2/5 digit add-on */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = comp_xoffset >= 6 ? 1.0f : 7.0f - comp_xoffset; /* Need at least 1X for CC-A/B */
*right = 5.0f;
} }
break; break;
} }
@ -272,16 +278,16 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
case BARCODE_UPCA_CC: case BARCODE_UPCA_CC:
/* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = 9.0f; *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need at least 1X for CC-A/B */
if (ustrlen(symbol->text) > 12) { /* UPC-A + addon */ if (ustrlen(symbol->text) > 12) { /* UPC-A + add-on */
*right = 5.0f; *right = 5.0f;
} else { } else {
*right = 9.0f; *right = 9.0f - (comp_xoffset != 0);
} }
} else if (!hide_text) { } else if (!hide_text) {
*left = 9.0f; /* Need for outside left digit */ *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need for outside left digit */
if (ustrlen(symbol->text) <= 12) { /* No addon */ if (ustrlen(symbol->text) <= 12) { /* No add-on */
*right = 9.0f; /* Need for outside right digit */ *right = 9.0f - (comp_xoffset != 0); /* Need for outside right digit */
} }
} }
done = 1; done = 1;
@ -291,16 +297,16 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
case BARCODE_UPCE_CC: case BARCODE_UPCE_CC:
/* GS1 General Specifications 21.0.1 Section 5.2.3.4 */ /* GS1 General Specifications 21.0.1 Section 5.2.3.4 */
if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) { if (!(symbol->output_options & BARCODE_NO_QUIET_ZONES)) {
*left = 9.0f; *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset;
if (ustrlen(symbol->text) > 8) { /* UPC-E + addon */ if (ustrlen(symbol->text) > 8) { /* UPC-E + add-on */
*right = 5.0f; *right = 5.0f;
} else { } else {
*right = 7.0f; *right = 7.0f - (comp_xoffset != 0);
} }
} else if (!hide_text) { } else if (!hide_text) {
*left = 9.0f; /* Need for outside left digit */ *left = comp_xoffset >= 8 ? 1.0f : 9.0f - comp_xoffset; /* Need for outside left digit */
if (ustrlen(symbol->text) <= 8) { /* No addon */ if (ustrlen(symbol->text) <= 8) { /* No add-on */
*right = 7.0f; /* Need for outside right digit */ *right = 7.0f - (comp_xoffset != 0); /* Need for outside right digit */
} }
} }
done = 1; done = 1;
@ -349,12 +355,28 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
done = 1; done = 1;
break; break;
case BARCODE_GS1_128: /* GS1-128 */ case BARCODE_GS1_128: /* GS1-128 */
case BARCODE_GS1_128_CC:
case BARCODE_EAN14: case BARCODE_EAN14:
/* GS1 General Specifications 21.0.1 Section 5.4.4.2 */ /* GS1 General Specifications 21.0.1 Section 5.4.4.2 */
*left = *right = 10.0f; *left = *right = 10.0f;
done = 1; done = 1;
break; break;
case BARCODE_GS1_128_CC:
/* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A), 5.11.2.2 (CC-B) & 5.11.2.3 (CC-C) */
{
int comp_roffset = 0; /* Right offset of linear */
int min_qz; /* Minimum quiet zone - 1X for CC-A/B, 2X for CC-C */
int x;
for (x = symbol->width - 1; x >= 0 && !module_is_set(symbol, symbol->rows - 1, x); x--) {
comp_roffset++;
}
/* Determine if CC-C by counting initial start pattern */
for (x = 0; x < 8 && module_is_set(symbol, 0, x); x++);
min_qz = x == 8 ? 2 : 1;
*left = comp_xoffset >= 10 - min_qz ? min_qz : 10.0f - comp_xoffset;
*right = comp_roffset >= 10 - min_qz ? min_qz : 10.0f - comp_roffset;
}
done = 1;
break;
case BARCODE_CODABAR: case BARCODE_CODABAR:
/* BS EN 798:1995 Section 4.4.1 (d) */ /* BS EN 798:1995 Section 4.4.1 (d) */
*left = *right = 10.0f; *left = *right = 10.0f;
@ -394,14 +416,26 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
/* GS1 General Specifications 21.0.1 Section 5.5.1.1 - Quiet Zones: None required */ /* GS1 General Specifications 21.0.1 Section 5.5.1.1 - Quiet Zones: None required */
done = 1; done = 1;
break; break;
/* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A) & 5.11.2.2 (CC-B) require 1X either side
but this may be supplied by the positioning of the linear component */
case BARCODE_DBAR_OMN_CC: case BARCODE_DBAR_OMN_CC:
case BARCODE_DBAR_LTD_CC: case BARCODE_DBAR_LTD_CC:
case BARCODE_DBAR_EXP_CC: /* Always have at least 1X to right of CC-A/B */
if (comp_xoffset > 1) { /* Exclude DBAR_LTD_CC with CC-A which always has 1X to left */
*left = 1.0f;
}
done = 1;
break;
case BARCODE_DBAR_STK_CC: case BARCODE_DBAR_STK_CC:
case BARCODE_DBAR_OMNSTK_CC: case BARCODE_DBAR_OMNSTK_CC:
/* Always have at least 1X to left of CC-A/B */
*right = 1.0f;
done = 1;
break;
case BARCODE_DBAR_EXP_CC:
case BARCODE_DBAR_EXPSTK_CC: case BARCODE_DBAR_EXPSTK_CC:
/* GS1 General Specifications 21.0.1 Sections 5.11.2.1 (CC-A) & 5.11.2.2 (CC-B) */ /* Always have at least 1X to left and right of CC-A/B */
*left = *right = 1.0f;
done = 1; done = 1;
break; break;
@ -614,19 +648,19 @@ static int out_quiet_zones(const struct zint_symbol *symbol, const int hide_text
} }
#ifdef ZINT_TEST /* Wrapper for direct testing */ #ifdef ZINT_TEST /* Wrapper for direct testing */
INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, INTERNAL int out_quiet_zones_test(const struct zint_symbol *symbol, const int hide_text, const int comp_xoffset,
float *left, float *right, float *top, float *bottom) { float *left, float *right, float *top, float *bottom) {
return out_quiet_zones(symbol, hide_text, left, right, top, bottom); return out_quiet_zones(symbol, hide_text, comp_xoffset, left, right, top, bottom);
} }
#endif #endif
/* Set left (x), top (y), right and bottom offsets for whitespace */ /* Set left (x), top (y), right and bottom offsets for whitespace */
INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text, INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text,
float *xoffset, float *yoffset, float *roffset, float *boffset, const float scaler, const int comp_xoffset, float *xoffset, float *yoffset, float *roffset, float *boffset,
int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si) { const float scaler, int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si) {
float qz_left, qz_right, qz_top, qz_bottom; float qz_left, qz_right, qz_top, qz_bottom;
out_quiet_zones(symbol, hide_text, &qz_left, &qz_right, &qz_top, &qz_bottom); out_quiet_zones(symbol, hide_text, comp_xoffset, &qz_left, &qz_right, &qz_top, &qz_bottom);
*xoffset = symbol->whitespace_width + qz_left; *xoffset = symbol->whitespace_width + qz_left;
*roffset = symbol->whitespace_width + qz_right; *roffset = symbol->whitespace_width + qz_right;
@ -658,22 +692,22 @@ INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const
} }
} }
/* Set composite offset and main width excluding addon (for start of addon calc) and addon text, returning /* Set composite offset and main width excluding add-on (for start of add-on calc) and add-on text, returning
UPC/EAN type */ UPC/EAN type */
INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_width, int *p_comp_xoffset, INTERNAL int out_process_upcean(const struct zint_symbol *symbol, const int comp_xoffset, int *p_main_width,
unsigned char addon[6], int *p_addon_gap) { unsigned char addon[6], int *p_addon_gap) {
int main_width; /* Width of main linear symbol, excluding addon */ int main_width; /* Width of main linear symbol, excluding add-on */
int comp_xoffset; /* Whitespace offset (if any) of main linear symbol due to having composite */
int upceanflag; /* UPC/EAN type flag */ int upceanflag; /* UPC/EAN type flag */
int i, j, latch; int i, j, latch;
int text_length = (int) ustrlen(symbol->text); const int text_length = (int) ustrlen(symbol->text);
latch = 0; latch = 0;
j = 0; j = 0;
/* Isolate add-on text */ /* Isolate add-on text */
for (i = 6; i < text_length && j < 5; i++) { for (i = 6; i < text_length && j < 5; i++) {
if (latch == 1) { if (latch == 1) {
addon[j] = symbol->show_hrt ? symbol->text[i] : ' '; /* Use dummy space-filled addon if no hrt */ /* Use dummy space-filled add-on if no hrt */
addon[j] = symbol->show_hrt ? symbol->text[i] : ' ';
j++; j++;
} else if (symbol->text[i] == '+') { } else if (symbol->text[i] == '+') {
latch = 1; latch = 1;
@ -689,14 +723,6 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi
} }
} }
/* Calculate composite offset */
comp_xoffset = 0;
if (is_composite(symbol->symbology)) {
while (!(module_is_set(symbol, symbol->rows - 1, comp_xoffset))) {
comp_xoffset++;
}
}
upceanflag = 0; upceanflag = 0;
main_width = symbol->width; main_width = symbol->width;
if ((symbol->symbology == BARCODE_EANX) || (symbol->symbology == BARCODE_EANX_CHK) if ((symbol->symbology == BARCODE_EANX) || (symbol->symbology == BARCODE_EANX_CHK)
@ -709,11 +735,11 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi
upceanflag = 13; upceanflag = 13;
break; break;
case 2: case 2:
/* EAN-2 can't have addon or be composite */ /* EAN-2 can't have add-on or be composite */
upceanflag = 2; upceanflag = 2;
break; break;
case 5: case 5:
/* EAN-5 can't have addon or be composite */ /* EAN-5 can't have add-on or be composite */
upceanflag = 5; upceanflag = 5;
break; break;
default: default:
@ -731,7 +757,6 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi
upceanflag = 6; upceanflag = 6;
} }
*p_comp_xoffset = comp_xoffset;
*p_main_width = main_width; *p_main_width = main_width;
return upceanflag; return upceanflag;
@ -989,4 +1014,34 @@ INTERNAL FILE *out_fopen(const char filename[256], const char *mode) {
return outfile; return outfile;
} }
/* Output float without trailing zeroes to `fp` with decimal pts `dp` (precision) */
INTERNAL void out_putsf(const char *const prefix, const int dp, const float arg, FILE *fp) {
int i, end;
char buf[256]; /* Assuming `dp` reasonable */
const int len = sprintf(buf, "%.*f", dp, arg);
if (*prefix) {
fputs(prefix, fp);
}
/* Adapted from https://stackoverflow.com/a/36202854/664741 */
for (i = len - 1, end = len; i >= 0; i--) {
if (buf[i] == '0') {
if (end == i + 1) {
end = i;
}
} else if (!z_isdigit(buf[i]) && buf[i] != '-') { /* If not digit or minus then decimal point */
if (end == i + 1) {
end = i;
} else {
buf[i] = '.'; /* Overwrite any locale-specific setting for decimal point */
}
buf[end] = '\0';
break;
}
}
fputs(buf, fp);
}
/* vim: set ts=4 sw=4 et : */ /* vim: set ts=4 sw=4 et : */

View File

@ -51,12 +51,12 @@ INTERNAL int out_colour_get_cmyk(const char *colour, int *cyan, int *magenta, in
/* Set left (x), top (y), right and bottom offsets for whitespace */ /* Set left (x), top (y), right and bottom offsets for whitespace */
INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text, INTERNAL void out_set_whitespace_offsets(const struct zint_symbol *symbol, const int hide_text,
float *xoffset, float *yoffset, float *roffset, float *boffset, const float scaler, const int comp_xoffset, float *xoffset, float *yoffset, float *roffset, float *boffset,
int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si); const float scaler, int *xoffset_si, int *yoffset_si, int *roffset_si, int *boffset_si);
/* Set composite offset and main width excluding addon (for start of addon calc) and addon text, returning /* Set composite offset and main width excluding add-on (for start of add-on calc) and add-on text, returning
UPC/EAN type */ UPC/EAN type */
INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_width, int *p_comp_xoffset, INTERNAL int out_process_upcean(const struct zint_symbol *symbol, const int comp_xoffset, int *p_main_width,
unsigned char addon[6], int *p_addon_gap); unsigned char addon[6], int *p_addon_gap);
/* Calculate large bar height i.e. linear bars with zero row height that respond to the symbol height. /* Calculate large bar height i.e. linear bars with zero row height that respond to the symbol height.
@ -76,6 +76,9 @@ INTERNAL FILE *out_fopen(const char filename[256], const char *mode);
INTERNAL FILE *out_win_fopen(const char *filename, const char *mode); INTERNAL FILE *out_win_fopen(const char *filename, const char *mode);
#endif #endif
/* Output float without trailing zeroes to `fp` with decimal pts `dp` (precision) */
INTERNAL void out_putsf(const char *const prefix, const int dp, const float arg, FILE *fp);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */

View File

@ -1,7 +1,7 @@
/* pdf417.c - Handles PDF417 stacked symbology */ /* pdf417.c - Handles PDF417 stacked symbology */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 Robin Stuart <rstuart114@gmail.com>
Portions Copyright (C) 2004 Grandzebu Portions Copyright (C) 2004 Grandzebu
Bug Fixes thanks to KL Chin <klchin@users.sourceforge.net> Bug Fixes thanks to KL Chin <klchin@users.sourceforge.net>
@ -561,13 +561,13 @@ INTERNAL void pdf_byteprocess(int *chainemc, int *p_mclength, const unsigned cha
/* select the switch for multiple of 6 bytes */ /* select the switch for multiple of 6 bytes */
if (length % 6 == 0) { if (length % 6 == 0) {
chainemc[(*p_mclength)++] = 924; chainemc[(*p_mclength)++] = 924;
if (debug_print) printf("924 "); if (debug_print) fputs("924 ", stdout);
} else { } else {
/* Default mode for MICROPDF417 is Byte Compaction (ISO/IEC 24728:2006 5.4.3), but not emitting it /* Default mode for MICROPDF417 is Byte Compaction (ISO/IEC 24728:2006 5.4.3), but not emitting it
* depends on whether an ECI has been emitted previously (or not) it appears, so simpler and safer * depends on whether an ECI has been emitted previously (or not) it appears, so simpler and safer
* to always emit it. */ * to always emit it. */
chainemc[(*p_mclength)++] = 901; chainemc[(*p_mclength)++] = 901;
if (debug_print) printf("901 "); if (debug_print) fputs("901 ", stdout);
} }
len = 0; len = 0;
@ -977,7 +977,7 @@ static int pdf_define_mode(int liste[3][PDF_MAX_LEN], int *p_indexliste, const u
if (debug_print) { if (debug_print) {
printf("modes (%d):", *p_indexliste); printf("modes (%d):", *p_indexliste);
for (i = 0; i < *p_indexliste; i++) printf(" %c(%d,%d)", pdf_smodes[liste[1][i]], liste[2][i], liste[0][i]); for (i = 0; i < *p_indexliste; i++) printf(" %c(%d,%d)", pdf_smodes[liste[1][i]], liste[2][i], liste[0][i]);
printf("\n"); fputc('\n', stdout);
} }
free(edges); free(edges);
@ -1013,7 +1013,7 @@ static int pdf_initial(struct zint_symbol *symbol, const unsigned char chaine[],
} while (indexchaine < length); } while (indexchaine < length);
if (debug_print) { if (debug_print) {
printf("\nInitial block pattern:\n"); fputs("\nInitial block pattern:\n", stdout);
for (i = 0; i < indexliste; i++) { for (i = 0; i < indexliste; i++) {
printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i], pdf_mode_str(liste[1][i])); printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i], pdf_mode_str(liste[1][i]));
} }
@ -1028,7 +1028,7 @@ static int pdf_initial(struct zint_symbol *symbol, const unsigned char chaine[],
} }
if (debug_print) { if (debug_print) {
printf("\nCompacted block pattern:\n"); fputs("\nCompacted block pattern:\n", stdout);
for (i = 0; i < indexliste; i++) { for (i = 0; i < indexliste; i++) {
printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i], printf("Start: %d Len: %d Type: %s\n", liste[2][i], liste[0][i],
pdf_mode_str(PDF_REAL_MODE(liste[1][i]))); pdf_mode_str(PDF_REAL_MODE(liste[1][i])));
@ -1216,7 +1216,7 @@ static int pdf_enc(struct zint_symbol *symbol, struct zint_seg segs[], const int
for (i = 1; i < mclength; i++) { /* Skip unset length descriptor */ for (i = 1; i < mclength; i++) { /* Skip unset length descriptor */
printf("%d ", chainemc[i]); printf("%d ", chainemc[i]);
} }
printf("\n\n"); fputs("\n\n", stdout);
} }
/* 752 - Now take care of the number of CWs per row */ /* 752 - Now take care of the number of CWs per row */
@ -1365,7 +1365,7 @@ static int pdf_enc(struct zint_symbol *symbol, struct zint_seg segs[], const int
for (i = 0; i < mclength; i++) { for (i = 0; i < mclength; i++) {
printf("%d ", chainemc[i]); printf("%d ", chainemc[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) { if (symbol->debug & ZINT_DEBUG_TEST) {
@ -1531,7 +1531,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
for (i = 0; i < mclength; i++) { for (i = 0; i < mclength; i++) {
printf("%3d ", chainemc[i]); printf("%3d ", chainemc[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
/* Now figure out which variant of the symbol to use and load values accordingly */ /* Now figure out which variant of the symbol to use and load values accordingly */
@ -1671,10 +1671,10 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
offset = pdf_MicroVariants[variant + 102]; /* coefficient offset */ offset = pdf_MicroVariants[variant + 102]; /* coefficient offset */
if (debug_print) { if (debug_print) {
printf("\nChoose symbol size:\n"); fputs("\nChoose symbol size:\n", stdout);
printf("%d columns x %d rows, variant %d\n", symbol->option_2, symbol->rows, variant + 1); printf("%d columns x %d rows, variant %d\n", symbol->option_2, symbol->rows, variant + 1);
printf("%d data codewords (including %d pads), %d ecc codewords\n", longueur, i, k); printf("%d data codewords (including %d pads), %d ecc codewords\n", longueur, i, k);
printf("\n"); fputc('\n', stdout);
} }
/* We add the padding */ /* We add the padding */
@ -1718,7 +1718,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
for (i = 0; i < mclength; i++) { for (i = 0; i < mclength; i++) {
printf("%3d ", chainemc[i]); printf("%3d ", chainemc[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINT_TEST #ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) { if (symbol->debug & ZINT_DEBUG_TEST) {
@ -1736,7 +1736,7 @@ INTERNAL int micropdf417(struct zint_symbol *symbol, struct zint_seg segs[], con
/* Cluster can be 0, 1 or 2 for Cluster(0), Cluster(3) and Cluster(6) */ /* Cluster can be 0, 1 or 2 for Cluster(0), Cluster(3) and Cluster(6) */
if (debug_print) printf("\nInternal row representation:\n"); if (debug_print) fputs("\nInternal row representation:\n", stdout);
for (i = 0; i < symbol->rows; i++) { for (i = 0; i < symbol->rows; i++) {
if (debug_print) printf("row %d: ", i); if (debug_print) printf("row %d: ", i);
bp = 0; bp = 0;

View File

@ -1,7 +1,7 @@
/* pdf417_trace.h - Trace routines for optimal PDF417 optimization algorithm */ /* pdf417_trace.h - Trace routines for optimal PDF417 optimization algorithm */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2022-2023 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

View File

@ -349,8 +349,5 @@ INTERNAL int png_pixel_plot(struct zint_symbol *symbol, const unsigned char *pix
return 0; return 0;
} }
#else
/* https://stackoverflow.com/a/26541331 Suppresses gcc warning ISO C forbids an empty translation unit */
typedef int make_iso_compilers_happy;
/* vim: set ts=4 sw=4 et : */ /* vim: set ts=4 sw=4 et : */
#endif /* ZINT_NO_PNG */ #endif /* ZINT_NO_PNG */

View File

@ -31,75 +31,45 @@
/* SPDX-License-Identifier: BSD-3-Clause */ /* SPDX-License-Identifier: BSD-3-Clause */
#include <errno.h> #include <errno.h>
#include <locale.h>
#include <math.h> #include <math.h>
#include <stdio.h> #include <stdio.h>
#include "common.h" #include "common.h"
#include "output.h" #include "output.h"
static void colour_to_pscolor(int option, int colour, char *output) { /* Convert Ultracode rectangle colour to PostScript setrgbcolor/setcmykcolor format */
*output = '\0'; static void ps_colour(const int is_rgb, const int colour, char ps_color[21]) {
if ((option & CMYK_COLOUR) == 0) { const int idx = colour >= 1 && colour <= 8 ? colour - 1 : 6 /*black*/;
if (is_rgb) {
/* Use RGB colour space */ /* Use RGB colour space */
switch (colour) { static const char ps_rgbs[8][6] = {
case 1: /* Cyan */ "0 1 1", /* 0: Cyan (1) */
strcat(output, "0.00 1.00 1.00"); "0 0 1", /* 1: Blue (2) */
break; "1 0 1", /* 2: Magenta (3) */
case 2: /* Blue */ "1 0 0", /* 3: Red (4) */
strcat(output, "0.00 0.00 1.00"); "1 1 0", /* 4: Yellow (5) */
break; "0 1 0", /* 5: Green (6) */
case 3: /* Magenta */ "0 0 0", /* 6: Black (7) */
strcat(output, "1.00 0.00 1.00"); "1 1 1", /* 7: White (8) */
break; };
case 4: /* Red */ strcpy(ps_color, ps_rgbs[idx]);
strcat(output, "1.00 0.00 0.00"); strcpy(ps_color + 5, " setrgbcolor");
break;
case 5: /* Yellow */
strcat(output, "1.00 1.00 0.00");
break;
case 6: /* Green */
strcat(output, "0.00 1.00 0.00");
break;
case 8: /* White */
strcat(output, "1.00 1.00 1.00");
break;
default: /* Black */
strcat(output, "0.00 0.00 0.00");
break;
}
strcat(output, " setrgbcolor");
} else { } else {
/* Use CMYK colour space */ static const char ps_cmyks[8][8] = {
switch (colour) { "1 0 0 0", /* 0: Cyan (1) */
case 1: /* Cyan */ "1 1 0 0", /* 1: Blue (2) */
strcat(output, "1.00 0.00 0.00 0.00"); "0 1 0 0", /* 2: Magenta (3) */
break; "0 1 1 0", /* 3: Red (4) */
case 2: /* Blue */ "0 0 1 0", /* 4: Yellow (5) */
strcat(output, "1.00 1.00 0.00 0.00"); "1 0 1 0", /* 5: Green (6) */
break; "0 0 0 1", /* 6: Black (7) */
case 3: /* Magenta */ "0 0 0 0", /* 7: White (8) */
strcat(output, "0.00 1.00 0.00 0.00"); };
break; strcpy(ps_color, ps_cmyks[idx]);
case 4: /* Red */ strcpy(ps_color + 7, " setcmykcolor");
strcat(output, "0.00 1.00 1.00 0.00");
break;
case 5: /* Yellow */
strcat(output, "0.00 0.00 1.00 0.00");
break;
case 6: /* Green */
strcat(output, "1.00 0.00 1.00 0.00");
break;
case 8: /* White */
strcat(output, "0.00 0.00 0.00 0.00");
break;
default: /* Black */
strcat(output, "0.00 0.00 0.00 1.00");
break;
}
strcat(output, " setcmykcolor");
} }
} }
/* Escape special PostScript chars. Assumes valid UTF-8-encoded ISO/IEC 8859-1 */
static void ps_convert(const unsigned char *string, unsigned char *ps_string) { static void ps_convert(const unsigned char *string, unsigned char *ps_string) {
const unsigned char *s; const unsigned char *s;
unsigned char *p = ps_string; unsigned char *p = ps_string;
@ -135,6 +105,47 @@ INTERNAL void ps_convert_test(const unsigned char *string, unsigned char *ps_str
} }
#endif #endif
/* Helper to output RGB colour */
static void ps_put_rgbcolor(const float red, const float green, const float blue, FILE *feps) {
out_putsf("", 2, red, feps);
out_putsf(" ", 2, green, feps);
out_putsf(" ", 2, blue, feps);
fputs(" setrgbcolor\n", feps);
}
/* Helper to output CMYK colour */
static void ps_put_cmykcolor(const float cyan, const float magenta, const float yellow, const float black,
FILE *feps) {
out_putsf("", 2, cyan, feps);
out_putsf(" ", 2, magenta, feps);
out_putsf(" ", 2, yellow, feps);
out_putsf(" ", 2, black, feps);
fputs(" setcmykcolor\n", feps);
}
/* Helper to output rectangle */
static void ps_put_rect(const struct zint_symbol *symbol, const struct zint_vector_rect *rect, FILE *feps) {
out_putsf("", 2, rect->height, feps);
out_putsf(" ", 2, rect->width, feps);
out_putsf(" ", 2, rect->x, feps);
out_putsf(" ", 2, (symbol->vector->height - rect->y) - rect->height, feps);
fputs(" TR\n", feps);
}
/* Helper to output circle/disc */
static void ps_put_circle(const struct zint_symbol *symbol, const struct zint_vector_circle *circle,
const float radius, FILE *feps) {
out_putsf("", 2, circle->x, feps);
out_putsf(" ", 2, symbol->vector->height - circle->y, feps);
out_putsf(" ", 3, radius, feps);
if (circle->width) {
out_putsf(" ", 3, circle->width, feps);
fputs(" TC\n", feps);
} else {
fputs(" TD\n", feps);
}
}
INTERNAL int ps_plot(struct zint_symbol *symbol) { INTERNAL int ps_plot(struct zint_symbol *symbol) {
FILE *feps; FILE *feps;
unsigned char fgred, fggrn, fgblu, bgred, bggrn, bgblu, bgalpha; unsigned char fgred, fggrn, fgblu, bgred, bggrn, bgblu, bgalpha;
@ -144,24 +155,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
float cyan_ink = 0.0f, magenta_ink = 0.0f, yellow_ink = 0.0f, black_ink = 0.0f; float cyan_ink = 0.0f, magenta_ink = 0.0f, yellow_ink = 0.0f, black_ink = 0.0f;
float cyan_paper = 0.0f, magenta_paper = 0.0f, yellow_paper = 0.0f, black_paper = 0.0f; float cyan_paper = 0.0f, magenta_paper = 0.0f, yellow_paper = 0.0f, black_paper = 0.0f;
int error_number = 0; int error_number = 0;
float ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy;
float previous_diameter; float previous_diameter;
float radius, half_radius, half_sqrt3_radius; float radius, half_radius, half_sqrt3_radius;
int colour_index, colour_rect_flag; int colour_index, colour_rect_flag;
char ps_color[33]; /* max "1.00 0.00 0.00 0.00 setcmykcolor" = 32 + 1 */ char ps_color[21]; /* max "1 0 0 0 setcmykcolor" = 20 + 1 */
int draw_background = 1; int draw_background = 1;
struct zint_vector_rect *rect; struct zint_vector_rect *rect;
struct zint_vector_hexagon *hex; struct zint_vector_hexagon *hex;
struct zint_vector_circle *circle; struct zint_vector_circle *circle;
struct zint_vector_string *string; struct zint_vector_string *string;
const char *locale = NULL;
const char *font;
int i, len; int i, len;
int ps_len = 0; int ps_len = 0;
int iso_latin1 = 0; int iso_latin1 = 0;
int have_circles_with_width = 0, have_circles_without_width = 0; int have_circles_with_width = 0, have_circles_without_width = 0;
const int extendable = is_extendable(symbol->symbology);
const int output_to_stdout = symbol->output_options & BARCODE_STDOUT; const int output_to_stdout = symbol->output_options & BARCODE_STDOUT;
unsigned char *ps_string; const int is_rgb = (symbol->output_options & CMYK_COLOUR) == 0;
if (symbol->vector == NULL) { if (symbol->vector == NULL) {
strcpy(symbol->errtxt, "646: Vector header NULL"); strcpy(symbol->errtxt, "646: Vector header NULL");
@ -177,9 +186,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
} }
} }
locale = setlocale(LC_ALL, "C"); if (is_rgb) {
if ((symbol->output_options & CMYK_COLOUR) == 0) {
(void) out_colour_get_rgb(symbol->fgcolour, &fgred, &fggrn, &fgblu, NULL /*alpha*/); (void) out_colour_get_rgb(symbol->fgcolour, &fgred, &fggrn, &fgblu, NULL /*alpha*/);
red_ink = fgred / 255.0f; red_ink = fgred / 255.0f;
green_ink = fggrn / 255.0f; green_ink = fggrn / 255.0f;
@ -222,14 +229,18 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
} }
} }
ps_string = (unsigned char *) z_alloca(ps_len + 1);
/* Check for circle widths */ /* Check for circle widths */
for (circle = symbol->vector->circles; circle; circle = circle->next) { for (circle = symbol->vector->circles; circle; circle = circle->next) {
if (circle->width) { if (circle->width) {
have_circles_with_width = 1; have_circles_with_width = 1;
if (have_circles_without_width) {
break;
}
} else { } else {
have_circles_without_width = 1; have_circles_without_width = 1;
if (have_circles_with_width) {
break;
}
} }
} }
@ -260,10 +271,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
if (symbol->vector->hexagons) { if (symbol->vector->hexagons) {
fputs("/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def\n", feps); fputs("/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def\n", feps);
} }
fputs("/TB { 2 copy } bind def\n" if (symbol->vector->rectangles || draw_background) {
"/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill }" /* Rectangle: h w x y */
" bind def\n" fputs("/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def\n",
"/TE { pop pop } bind def\n", feps); feps);
}
fputs("newpath\n", feps); fputs("newpath\n", feps);
@ -271,21 +283,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
/* Background */ /* Background */
if (draw_background) { if (draw_background) {
if ((symbol->output_options & CMYK_COLOUR) == 0) { if (is_rgb) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_paper, green_paper, blue_paper); ps_put_rgbcolor(red_paper, green_paper, blue_paper, feps);
} else { } else {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_paper, magenta_paper, yellow_paper, black_paper); ps_put_cmykcolor(cyan_paper, magenta_paper, yellow_paper, black_paper, feps);
} }
fprintf(feps, "%.2f 0.00 TB 0.00 %.2f TR\n", symbol->vector->height, symbol->vector->width); out_putsf("", 2, symbol->vector->height, feps);
fputs("TE\n", feps); out_putsf(" ", 2, symbol->vector->width, feps);
fputs(" 0 0 TR\n", feps);
} }
if (symbol->symbology != BARCODE_ULTRA) { if (symbol->symbology != BARCODE_ULTRA) {
if ((symbol->output_options & CMYK_COLOUR) == 0) { if (is_rgb) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps);
} else { } else {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_ink, magenta_ink, yellow_ink, black_ink); ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps);
} }
} }
@ -297,17 +310,14 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
if (rect->colour == -1) { /* Foreground */ if (rect->colour == -1) { /* Foreground */
if (colour_rect_flag == 0) { if (colour_rect_flag == 0) {
/* Set foreground colour */ /* Set foreground colour */
if ((symbol->output_options & CMYK_COLOUR) == 0) { if (is_rgb) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps);
} else { } else {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps);
cyan_ink, magenta_ink, yellow_ink, black_ink);
} }
colour_rect_flag = 1; colour_rect_flag = 1;
} }
fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", ps_put_rect(symbol, rect, feps);
rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width);
fputs("TE\n", feps);
} }
rect = rect->next; rect = rect->next;
} }
@ -318,13 +328,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
if (rect->colour == colour_index) { if (rect->colour == colour_index) {
if (colour_rect_flag == 0) { if (colour_rect_flag == 0) {
/* Set new colour */ /* Set new colour */
colour_to_pscolor(symbol->output_options, colour_index, ps_color); ps_colour(is_rgb, colour_index, ps_color);
fprintf(feps, "%s\n", ps_color); fprintf(feps, "%s\n", ps_color);
colour_rect_flag = 1; colour_rect_flag = 1;
} }
fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", ps_put_rect(symbol, rect, feps);
rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width);
fputs("TE\n", feps);
} }
rect = rect->next; rect = rect->next;
} }
@ -332,9 +340,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
} else { } else {
rect = symbol->vector->rectangles; rect = symbol->vector->rectangles;
while (rect) { while (rect) {
fprintf(feps, "%.2f %.2f TB %.2f %.2f TR\n", ps_put_rect(symbol, rect, feps);
rect->height, (symbol->vector->height - rect->y) - rect->height, rect->x, rect->width);
fputs("TE\n", feps);
rect = rect->next; rect = rect->next;
} }
} }
@ -343,6 +349,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f; previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f;
hex = symbol->vector->hexagons; hex = symbol->vector->hexagons;
while (hex) { while (hex) {
float hy = symbol->vector->height - hex->y;
if (previous_diameter != hex->diameter) { if (previous_diameter != hex->diameter) {
previous_diameter = hex->diameter; previous_diameter = hex->diameter;
radius = (float) (0.5 * previous_diameter); radius = (float) (0.5 * previous_diameter);
@ -350,34 +357,33 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter); half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter);
} }
if ((hex->rotation == 0) || (hex->rotation == 180)) { if ((hex->rotation == 0) || (hex->rotation == 180)) {
ay = (symbol->vector->height - hex->y) + radius; out_putsf("", 2, hex->x, feps);
by = (symbol->vector->height - hex->y) + half_radius; out_putsf(" ", 2, hy + radius, feps);
cy = (symbol->vector->height - hex->y) - half_radius; out_putsf(" ", 2, hex->x + half_sqrt3_radius, feps);
dy = (symbol->vector->height - hex->y) - radius; out_putsf(" ", 2, hy + half_radius, feps);
ey = (symbol->vector->height - hex->y) - half_radius; out_putsf(" ", 2, hex->x + half_sqrt3_radius, feps);
fy = (symbol->vector->height - hex->y) + half_radius; out_putsf(" ", 2, hy - half_radius, feps);
ax = hex->x; out_putsf(" ", 2, hex->x, feps);
bx = hex->x + half_sqrt3_radius; out_putsf(" ", 2, hy - radius, feps);
cx = hex->x + half_sqrt3_radius; out_putsf(" ", 2, hex->x - half_sqrt3_radius, feps);
dx = hex->x; out_putsf(" ", 2, hy - half_radius, feps);
ex = hex->x - half_sqrt3_radius; out_putsf(" ", 2, hex->x - half_sqrt3_radius, feps);
fx = hex->x - half_sqrt3_radius; out_putsf(" ", 2, hy + half_radius, feps);
} else { } else {
ay = (symbol->vector->height - hex->y); out_putsf("", 2, hex->x - radius, feps);
by = (symbol->vector->height - hex->y) + half_sqrt3_radius; out_putsf(" ", 2, hy, feps);
cy = (symbol->vector->height - hex->y) + half_sqrt3_radius; out_putsf(" ", 2, hex->x - half_radius, feps);
dy = (symbol->vector->height - hex->y); out_putsf(" ", 2, hy + half_sqrt3_radius, feps);
ey = (symbol->vector->height - hex->y) - half_sqrt3_radius; out_putsf(" ", 2, hex->x + half_radius, feps);
fy = (symbol->vector->height - hex->y) - half_sqrt3_radius; out_putsf(" ", 2, hy + half_sqrt3_radius, feps);
ax = hex->x - radius; out_putsf(" ", 2, hex->x + radius, feps);
bx = hex->x - half_radius; out_putsf(" ", 2, hy, feps);
cx = hex->x + half_radius; out_putsf(" ", 2, hex->x + half_radius, feps);
dx = hex->x + radius; out_putsf(" ", 2, hy - half_sqrt3_radius, feps);
ex = hex->x + half_radius; out_putsf(" ", 2, hex->x - half_radius, feps);
fx = hex->x - half_radius; out_putsf(" ", 2, hy - half_sqrt3_radius, feps);
} }
fprintf(feps, "%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f TH\n", fputs(" TH\n", feps);
ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy);
hex = hex->next; hex = hex->next;
} }
@ -391,33 +397,22 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
} }
if (circle->colour) { /* Legacy - no longer used */ if (circle->colour) { /* Legacy - no longer used */
/* A 'white' circle */ /* A 'white' circle */
if ((symbol->output_options & CMYK_COLOUR) == 0) { if (is_rgb) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_paper, green_paper, blue_paper); ps_put_rgbcolor(red_paper, green_paper, blue_paper, feps);
} else { } else {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", ps_put_cmykcolor(cyan_paper, magenta_paper, yellow_paper, black_paper, feps);
cyan_paper, magenta_paper, yellow_paper, black_paper);
}
if (circle->width) {
fprintf(feps, "%.2f %.2f %.3f %.3f TC\n",
circle->x, (symbol->vector->height - circle->y), radius, circle->width);
} else {
fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius);
} }
ps_put_circle(symbol, circle, radius, feps);
if (circle->next) { if (circle->next) {
if ((symbol->output_options & CMYK_COLOUR) == 0) { if (is_rgb) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink); ps_put_rgbcolor(red_ink, green_ink, blue_ink, feps);
} else { } else {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n", cyan_ink, magenta_ink, yellow_ink, black_ink); ps_put_cmykcolor(cyan_ink, magenta_ink, yellow_ink, black_ink, feps);
} }
} }
} else { } else {
/* A 'black' circle */ /* A 'black' circle */
if (circle->width) { ps_put_circle(symbol, circle, radius, feps);
fprintf(feps, "%.2f %.2f %.3f %.3f TC\n",
circle->x, (symbol->vector->height - circle->y), radius, circle->width);
} else {
fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius);
}
} }
circle = circle->next; circle = circle->next;
} }
@ -427,7 +422,11 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
string = symbol->vector->strings; string = symbol->vector->strings;
if (string) { if (string) {
if ((symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology)) { float previous_fsize = 0.0f;
const char *font;
unsigned char *ps_string = (unsigned char *) z_alloca(ps_len + 1);
if ((symbol->output_options & BOLD_TEXT) && !extendable) {
font = "Helvetica-Bold"; font = "Helvetica-Bold";
} else { } else {
font = "Helvetica"; font = "Helvetica";
@ -445,34 +444,32 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
} }
do { do {
ps_convert(string->text, ps_string); ps_convert(string->text, ps_string);
fputs("matrix currentmatrix\n", feps); if (string->fsize != previous_fsize) {
fprintf(feps, "/%s findfont\n", font); fprintf(feps, "/%s findfont", font);
fprintf(feps, "%.2f scalefont setfont\n", string->fsize); /* Compensate for Helvetica being smaller than Zint's OCR-B */
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", out_putsf( " ", 2, extendable ? string->fsize * 1.07f : string->fsize, feps);
string->x, (symbol->vector->height - string->y)); fputs(" scalefont setfont\n", feps);
previous_fsize = string->fsize;
}
out_putsf(" ", 2, string->x, feps);
out_putsf(" ", 2, symbol->vector->height - string->y, feps);
fputs(" moveto\n", feps);
if (string->halign == 0 || string->halign == 2) { /* Need width for middle or right align */ if (string->halign == 0 || string->halign == 2) { /* Need width for middle or right align */
fprintf(feps, " (%s) stringwidth\n", ps_string); fprintf(feps, " (%s) stringwidth pop" /* Returns "width height" - discard "height" */
" %s 0 rmoveto\n", ps_string, string->halign == 2 ? "neg" : "-2 div");
} }
if (string->rotation != 0) { if (string->rotation != 0) {
fputs("gsave\n", feps); fputs(" gsave\n", feps);
fprintf(feps, "%d rotate\n", 360 - string->rotation); fprintf(feps, " %d rotate\n", 360 - string->rotation);
}
if (string->halign == 0 || string->halign == 2) {
fputs("pop\n", feps);
fprintf(feps, "%s 0 rmoveto\n", string->halign == 2 ? "neg" : "-2 div");
} }
fprintf(feps, " (%s) show\n", ps_string); fprintf(feps, " (%s) show\n", ps_string);
if (string->rotation != 0) { if (string->rotation != 0) {
fputs("grestore\n", feps); fputs(" grestore\n", feps);
} }
fputs("setmatrix\n", feps);
string = string->next; string = string->next;
} while (string); } while (string);
} }
if (locale)
setlocale(LC_ALL, locale);
if (ferror(feps)) { if (ferror(feps)) {
sprintf(symbol->errtxt, "647: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); sprintf(symbol->errtxt, "647: Incomplete write to output (%d: %.30s)", errno, strerror(errno));
if (!output_to_stdout) { if (!output_to_stdout) {

View File

@ -1,7 +1,7 @@
/* qr.c Handles QR Code, Micro QR Code, UPNQR and rMQR */ /* qr.c Handles QR Code, Micro QR Code, UPNQR and rMQR */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2009-2023 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
@ -442,7 +442,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
} }
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
@ -473,7 +473,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
} }
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
@ -572,7 +572,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
} }
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
@ -618,7 +618,7 @@ static int qr_binary(char binary[], int bp, const int version, const char mode[]
}; };
if (debug_print) { if (debug_print) {
printf("\n"); fputc('\n', stdout);
} }
break; break;
@ -722,11 +722,11 @@ static int qr_binary_segs(unsigned char datastream[], const int version, const i
} }
if (debug_print) { if (debug_print) {
printf("Resulting codewords:\n\t"); fputs("Resulting codewords:\n\t", stdout);
for (i = 0; i < target_codewords; i++) { for (i = 0; i < target_codewords; i++) {
printf("0x%02X ", datastream[i]); printf("0x%02X ", datastream[i]);
} }
printf("\n"); fputc('\n', stdout);
} }
return 0; /* Not used */ return 0; /* Not used */
@ -755,6 +755,7 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
/* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */ /* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */
assert(blocks > 0); assert(blocks > 0);
short_data_block_length = data_cw / blocks; short_data_block_length = data_cw / blocks;
qty_long_blocks = data_cw % blocks; qty_long_blocks = data_cw % blocks;
qty_short_blocks = blocks - qty_long_blocks; qty_short_blocks = blocks - qty_long_blocks;
@ -762,7 +763,7 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
/* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */ /* Suppress some clang-tidy clang-analyzer-core.UndefinedBinaryOperatorResult/uninitialized.Assign warnings */
assert(short_data_block_length > 0); assert(short_data_block_length > 0);
assert(ecc_block_length * blocks == ecc_cw); assert(qty_long_blocks || qty_short_blocks);
data_block = (unsigned char *) z_alloca(short_data_block_length + 1); data_block = (unsigned char *) z_alloca(short_data_block_length + 1);
ecc_block = (unsigned char *) z_alloca(ecc_block_length); ecc_block = (unsigned char *) z_alloca(ecc_block_length);
@ -781,10 +782,6 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
length_this_block = short_data_block_length + 1; length_this_block = short_data_block_length + 1;
} }
for (j = 0; j < ecc_block_length; j++) {
ecc_block[j] = 0;
}
for (j = 0; j < length_this_block; j++) { for (j = 0; j < length_this_block; j++) {
data_block[j] = datastream[in_posn + j]; /* NOLINT false-positive popped up with clang-tidy 14.0.1 */ data_block[j] = datastream[in_posn + j]; /* NOLINT false-positive popped up with clang-tidy 14.0.1 */
} }
@ -797,13 +794,13 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
printf("%2X ", data_block[j]); printf("%2X ", data_block[j]);
} }
if (i < qty_short_blocks) { if (i < qty_short_blocks) {
printf(" "); fputs(" ", stdout);
} }
printf(" // "); fputs(" // ", stdout);
for (j = 0; j < ecc_block_length; j++) { for (j = 0; j < ecc_block_length; j++) {
printf("%2X ", ecc_block[ecc_block_length - j - 1]); printf("%2X ", ecc_block[ecc_block_length - j - 1]);
} }
printf("\n"); fputc('\n', stdout);
} }
for (j = 0; j < short_data_block_length; j++) { for (j = 0; j < short_data_block_length; j++) {
@ -826,15 +823,15 @@ static void qr_add_ecc(unsigned char fullstream[], const unsigned char datastrea
fullstream[j] = interleaved_data[j]; fullstream[j] = interleaved_data[j];
} }
for (j = 0; j < ecc_cw; j++) { for (j = 0; j < ecc_cw; j++) {
fullstream[j + data_cw] = interleaved_ecc[j]; /* NOLINT ditto clang-tidy 14.0.6 */ fullstream[j + data_cw] = interleaved_ecc[j];
} }
if (debug_print) { if (debug_print) {
printf("\nData Stream: \n"); fputs("\nData Stream: \n", stdout);
for (j = 0; j < (data_cw + ecc_cw); j++) { for (j = 0; j < (data_cw + ecc_cw); j++) {
printf("%2X ", fullstream[j]); printf("%2X ", fullstream[j]);
} }
printf("\n"); fputc('\n', stdout);
} }
} }
@ -1371,7 +1368,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l
for (pattern = 0; pattern < 8; pattern++) printf(" %d:%d", pattern, penalty[pattern]); for (pattern = 0; pattern < 8; pattern++) printf(" %d:%d", pattern, penalty[pattern]);
} }
} }
printf("\n"); fputc('\n', stdout);
} }
#ifdef ZINTLOG #ifdef ZINTLOG
@ -1400,7 +1397,7 @@ static int qr_apply_bitmask(unsigned char *grid, const int size, const int ecc_l
static void qr_add_version_info(unsigned char *grid, const int size, const int version) { static void qr_add_version_info(unsigned char *grid, const int size, const int version) {
int i; int i;
long int version_data = qr_annex_d[version - 7]; unsigned int version_data = qr_annex_d[version - 7];
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
grid[((size - 11) * size) + i] += (version_data >> (i * 3)) & 0x41; grid[((size - 11) * size) + i] += (version_data >> (i * 3)) & 0x41;
grid[((size - 10) * size) + i] += (version_data >> ((i * 3) + 1)) & 0x41; grid[((size - 10) * size) + i] += (version_data >> ((i * 3) + 1)) & 0x41;
@ -2432,7 +2429,7 @@ static int micro_apply_bitmask(unsigned char *grid, const int size, const int us
if (!user_mask) { if (!user_mask) {
for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, value[pattern]); for (pattern = 0; pattern < 4; pattern++) printf(" %d:%d", pattern, value[pattern]);
} }
printf("\n"); fputc('\n', stdout);
} }
/* Apply mask */ /* Apply mask */

View File

@ -42,7 +42,7 @@
#include "output.h" #include "output.h"
#include "zfiletypes.h" #include "zfiletypes.h"
#include "font.h" /* Font for human readable text */ #include "raster_font.h" /* Font for human readable text */
#define DEFAULT_INK '1' /* Black */ #define DEFAULT_INK '1' /* Black */
#define DEFAULT_PAPER '0' /* White */ #define DEFAULT_PAPER '0' /* White */
@ -300,7 +300,7 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int
int glyph_no; int glyph_no;
int x, y; int x, y;
int max_x, max_y; int max_x, max_y;
font_item *font_table; const raster_font_item *font_table;
int bold = 0; int bold = 0;
unsigned glyph_mask; unsigned glyph_mask;
int font_y; int font_y;
@ -317,11 +317,6 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int
return; return;
} }
/* Following should never happen (ISBN check digit "X" not printed) */
if ((textflags & UPCEAN_TEXT) && !z_isdigit(letter)) {
return; /* Not reached */
}
if (yposn < 0) { /* Allow xposn < 0, dealt with below */ if (yposn < 0) { /* Allow xposn < 0, dealt with below */
return; return;
} }
@ -718,8 +713,8 @@ static int plot_raster_maxicode(struct zint_symbol *symbol, const int rotate_ang
} }
scaler *= 10.0f; scaler *= 10.0f;
out_set_whitespace_offsets(symbol, 0 /*hide_text*/, &xoffset, &yoffset, &roffset, &boffset, scaler, out_set_whitespace_offsets(symbol, 0 /*hide_text*/, 0 /*comp_xoffset*/, &xoffset, &yoffset, &roffset, &boffset,
&xoffset_si, &yoffset_si, &roffset_si, &boffset_si); scaler, &xoffset_si, &yoffset_si, &roffset_si, &boffset_si);
hex_width = (int) roundf(scaler); /* Short diameter, X in ISO/IEC 16023:2000 Figure 8 (same as W) */ hex_width = (int) roundf(scaler); /* Short diameter, X in ISO/IEC 16023:2000 Figure 8 (same as W) */
hex_height = (int) roundf(scaler * two_div_sqrt3); /* Long diameter, V in Figure 8 */ hex_height = (int) roundf(scaler * two_div_sqrt3); /* Long diameter, V in Figure 8 */
@ -816,8 +811,8 @@ static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle,
dot_radius_s = (symbol->dot_size * scaler) / 2.0f; dot_radius_s = (symbol->dot_size * scaler) / 2.0f;
dot_radius_si = (int) dot_radius_s; dot_radius_si = (int) dot_radius_s;
out_set_whitespace_offsets(symbol, 0 /*hide_text*/, &xoffset, &yoffset, &roffset, &boffset, scaler, out_set_whitespace_offsets(symbol, 0 /*hide_text*/, 0 /*comp_xoffset*/, &xoffset, &yoffset, &roffset, &boffset,
&xoffset_si, &yoffset_si, &roffset_si, &boffset_si); scaler, &xoffset_si, &yoffset_si, &roffset_si, &boffset_si);
/* TODO: Revisit this overspill stuff, it's hacky */ /* TODO: Revisit this overspill stuff, it's hacky */
if (symbol->dot_size < 1.0f) { if (symbol->dot_size < 1.0f) {
@ -923,6 +918,8 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
int text_height; /* Font pixel size (so whole integers) */ int text_height; /* Font pixel size (so whole integers) */
float text_gap; /* Gap between barcode and text */ float text_gap; /* Gap between barcode and text */
float guard_descent; float guard_descent;
const int upcean_guard_whitespace = !(symbol->output_options & BARCODE_NO_QUIET_ZONES)
&& (symbol->output_options & EANUPC_GUARD_WHITESPACE);
const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF;
int textflags = 0; int textflags = 0;
@ -953,13 +950,18 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
main_width = symbol->width; main_width = symbol->width;
if (is_composite(symbol->symbology)) {
while (!module_is_set(symbol, symbol->rows - 1, comp_xoffset)) {
comp_xoffset++;
}
}
if (is_extendable(symbol->symbology)) { if (is_extendable(symbol->symbology)) {
upceanflag = out_process_upcean(symbol, &main_width, &comp_xoffset, addon, &addon_gap); upceanflag = out_process_upcean(symbol, comp_xoffset, &main_width, addon, &addon_gap);
} }
hide_text = ((!symbol->show_hrt) || (ustrlen(symbol->text) == 0) || scaler < 1.0f); hide_text = ((!symbol->show_hrt) || (ustrlen(symbol->text) == 0) || scaler < 1.0f);
out_set_whitespace_offsets(symbol, hide_text, &xoffset, &yoffset, &roffset, &boffset, si, out_set_whitespace_offsets(symbol, hide_text, comp_xoffset, &xoffset, &yoffset, &roffset, &boffset, si,
&xoffset_si, &yoffset_si, &roffset_si, &boffset_si); &xoffset_si, &yoffset_si, &roffset_si, &boffset_si);
comp_xoffset_si = xoffset_si + comp_xoffset * si; comp_xoffset_si = xoffset_si + comp_xoffset * si;
@ -970,7 +972,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
text_height = (UPCEAN_FONT_HEIGHT + 1) / 2; text_height = (UPCEAN_FONT_HEIGHT + 1) / 2;
text_gap = symbol->text_gap ? symbol->text_gap : 1.0f; text_gap = symbol->text_gap ? symbol->text_gap : 1.0f;
/* Height of guard bar descent (none for EAN-2 and EAN-5) */ /* Height of guard bar descent (none for EAN-2 and EAN-5) */
guard_descent = upceanflag != 2 && upceanflag != 5 ? symbol->guard_descent : 0.0f; guard_descent = upceanflag >= 6 ? symbol->guard_descent : 0.0f;
} else { } else {
textflags = symbol->output_options & (SMALL_TEXT | BOLD_TEXT); textflags = symbol->output_options & (SMALL_TEXT | BOLD_TEXT);
text_height = textflags & SMALL_TEXT ? (SMALL_FONT_HEIGHT + 1) / 2 : (NORMAL_FONT_HEIGHT + 1) / 2; text_height = textflags & SMALL_TEXT ? (SMALL_FONT_HEIGHT + 1) / 2 : (NORMAL_FONT_HEIGHT + 1) / 2;
@ -1063,6 +1065,9 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
} }
} else { } else {
if (upceanflag && !hide_text) { /* EAN-2, EAN-5 (standalone add-ons) */
yposn_si += (int) (text_height + text_gap) * si;
}
for (r = 0; r < symbol->rows; r++) { for (r = 0; r < symbol->rows; r++) {
const int row_height_si = row_heights_si[r]; const int row_height_si = row_heights_si[r];
@ -1142,6 +1147,9 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
if (!hide_text) { if (!hide_text) {
int text_yposn = yoffset_si + symbol_height_si + (int) (text_gap * si); /* Calculated to top of text */ int text_yposn = yoffset_si + symbol_height_si + (int) (text_gap * si); /* Calculated to top of text */
if (upceanflag == 2 || upceanflag == 5) { /* EAN-2/5 */
text_yposn = yoffset_si;
}
if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) { if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) {
text_yposn += symbol->border_width * si; /* Note not needed for BARCODE_BIND_TOP */ text_yposn += symbol->border_width * si; /* Note not needed for BARCODE_BIND_TOP */
} }
@ -1172,10 +1180,22 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
text_xposn = ((addon_len == 2 ? 61 : 75) + addon_gap) * si + comp_xoffset_si; text_xposn = ((addon_len == 2 ? 61 : 75) + addon_gap) * si + comp_xoffset_si;
draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags,
image_width, image_height, si); image_width, image_height, si);
if (upcean_guard_whitespace) {
text_xposn = (int) (((addon_len == 2 ? 70 : 97) + 1.5f + upcea_width_adj + addon_gap) * si)
+ comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags,
image_width, image_height, si);
}
} }
} else if (upceanflag == 8) { /* EAN-8 */ } else if (upceanflag == 8) { /* EAN-8 */
int text_xposn = 17 * si + comp_xoffset_si; int text_xposn;
if (upcean_guard_whitespace) {
text_xposn = -(ean_width_adj + 2) * si + comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) "<", text_xposn, text_yposn, textflags,
image_width, image_height, si);
}
text_xposn = 17 * si + comp_xoffset_si;
draw_string(pixelbuf, textparts[0], text_xposn, text_yposn, textflags, image_width, image_height, si); draw_string(pixelbuf, textparts[0], text_xposn, text_yposn, textflags, image_width, image_height, si);
text_xposn = 50 * si + comp_xoffset_si; text_xposn = 50 * si + comp_xoffset_si;
draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si);
@ -1183,6 +1203,16 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
text_xposn = ((addon_len == 2 ? 77 : 91) + addon_gap) * si + comp_xoffset_si; text_xposn = ((addon_len == 2 ? 77 : 91) + addon_gap) * si + comp_xoffset_si;
draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags,
image_width, image_height, si); image_width, image_height, si);
if (upcean_guard_whitespace) {
text_xposn = (int) (((addon_len == 2 ? 86 : 113) + 0.5f + ean_width_adj + addon_gap) * si)
+ comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags,
image_width, image_height, si);
}
} else if (upcean_guard_whitespace) {
text_xposn = (int) ((68 + 0.5f + ean_width_adj) * si) + comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags,
image_width, image_height, si);
} }
} else if (upceanflag == 12) { /* UPC-A */ } else if (upceanflag == 12) { /* UPC-A */
@ -1200,6 +1230,12 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si;
draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags,
image_width, image_height, si); image_width, image_height, si);
if (upcean_guard_whitespace) {
text_xposn = (int) (((addon_len == 2 ? 114 : 141) + 0.5f + ean_width_adj + addon_gap) * si)
+ comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags,
image_width, image_height, si);
}
} }
} else { /* EAN-13 */ } else { /* EAN-13 */
@ -1213,15 +1249,33 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl
text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si;
draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags,
image_width, image_height, si); image_width, image_height, si);
if (upcean_guard_whitespace) {
text_xposn = (int) (((addon_len == 2 ? 114 : 141) + 0.5f + ean_width_adj + addon_gap) * si)
+ comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, addon_text_yposn, textflags,
image_width, image_height, si);
}
} else if (upcean_guard_whitespace) {
text_xposn = (int) ((96 + 0.5f + ean_width_adj) * si) + comp_xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags,
image_width, image_height, si);
} }
} }
} else { } else {
int text_xposn = (main_width / 2) * si + comp_xoffset_si; int text_xposn = (main_width / 2) * si + xoffset_si;
/* Suppress clang-analyzer-core.CallAndMessage warning */ /* Suppress clang-analyzer-core.CallAndMessage warning */
unsigned char local_text[sizeof(symbol->text)] = {0}; unsigned char local_text[sizeof(symbol->text)] = {0};
to_iso8859_1(symbol->text, local_text); to_iso8859_1(symbol->text, local_text);
/* Put the human readable text at the bottom */ /* Put the human readable text at the bottom (or top if EAN-2/5) */
draw_string(pixelbuf, local_text, text_xposn, text_yposn, textflags, image_width, image_height, si); draw_string(pixelbuf, local_text, text_xposn, text_yposn, textflags, image_width, image_height, si);
/* EAN-2/5 */
if (upceanflag && upcean_guard_whitespace) {
const int ean_width_adj = (UPCEAN_FONT_WIDTH + 3) / 4;
const int addon_len = (int) ustrlen(symbol->text);
text_xposn = (int) (((addon_len == 2 ? 19 : 46) + 0.5f + ean_width_adj) * si) + xoffset_si;
draw_string(pixelbuf, (const unsigned char *) ">", text_xposn, text_yposn, textflags,
image_width, image_height, si);
}
} }
} }

View File

@ -1,7 +1,7 @@
/* font.h - Font for PNG images */ /* raster_font.h - Font for raster images (NOTE: was "font.h") */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -30,15 +30,15 @@
*/ */
/* SPDX-License-Identifier: BSD-3-Clause */ /* SPDX-License-Identifier: BSD-3-Clause */
#ifndef Z_FONT_H #ifndef Z_RASTER_FONT_H
#define Z_FONT_H #define Z_RASTER_FONT_H
typedef const unsigned short font_item; typedef unsigned short raster_font_item;
#define NORMAL_FONT_WIDTH 7 #define NORMAL_FONT_WIDTH 7
#define NORMAL_FONT_HEIGHT 14 #define NORMAL_FONT_HEIGHT 14
static font_item ascii_font[] = { static const raster_font_item ascii_font[] = {
/* Each character is 7 x 14 pixels */ /* Each character is 7 x 14 pixels */
0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0, /* ! */ 0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0, /* ! */
0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* " */ 0, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* " */
@ -234,7 +234,7 @@ static font_item ascii_font[] = {
#define SMALL_FONT_WIDTH 5 #define SMALL_FONT_WIDTH 5
#define SMALL_FONT_HEIGHT 9 #define SMALL_FONT_HEIGHT 9
static font_item small_font[] = { static const raster_font_item small_font[] = {
/* Each character is 5 x 9 pixels */ /* Each character is 5 x 9 pixels */
0, 2, 2, 2, 2, 0, 2, 0, 0, /* ! */ 0, 2, 2, 2, 2, 0, 2, 0, 0, /* ! */
0, 5, 5, 5, 0, 0, 0, 0, 0, /* " */ 0, 5, 5, 5, 0, 0, 0, 0, 0, /* " */
@ -456,7 +456,7 @@ static font_item small_font[] = {
#define UPCEAN_FONT_HEIGHT 14 #define UPCEAN_FONT_HEIGHT 14
/* Each character is 9 x 14 pixels */ /* Each character is 9 x 14 pixels */
static font_item upcean_font[] = { static const raster_font_item upcean_font[] = {
/*30*/ 0x007C, 0x00FE, 0x00C6, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x00C6, 0x00FE, 0x007C, /* 0 */ /*30*/ 0x007C, 0x00FE, 0x00C6, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x00C6, 0x00FE, 0x007C, /* 0 */
/*31*/ 0x000C, 0x001C, 0x003C, 0x006C, 0x004C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, /* 1 */ /*31*/ 0x000C, 0x001C, 0x003C, 0x006C, 0x004C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, /* 1 */
/*32*/ 0x007C, 0x00FE, 0x0183, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0180, 0x01FE, 0x00FF, /* 2 */ /*32*/ 0x007C, 0x00FE, 0x0183, 0x0003, 0x0007, 0x000E, 0x001C, 0x0038, 0x0070, 0x00E0, 0x01C0, 0x0180, 0x01FE, 0x00FF, /* 2 */
@ -467,13 +467,18 @@ static font_item upcean_font[] = {
/*37*/ 0x01FF, 0x01FF, 0x0003, 0x0006, 0x000E, 0x000C, 0x0018, 0x0030, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x0060, /* 7 */ /*37*/ 0x01FF, 0x01FF, 0x0003, 0x0006, 0x000E, 0x000C, 0x0018, 0x0030, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x0060, /* 7 */
/*38*/ 0x007C, 0x00FE, 0x00C6, 0x0082, 0x00C6, 0x007C, 0x007C, 0x00EE, 0x01C7, 0x0183, 0x0183, 0x0183, 0x00FE, 0x007C, /* 8 */ /*38*/ 0x007C, 0x00FE, 0x00C6, 0x0082, 0x00C6, 0x007C, 0x007C, 0x00EE, 0x01C7, 0x0183, 0x0183, 0x0183, 0x00FE, 0x007C, /* 8 */
/*39*/ 0x007C, 0x00FE, 0x00C7, 0x0183, 0x0183, 0x0183, 0x01C3, 0x00FE, 0x007E, 0x000C, 0x000C, 0x0018, 0x0030, 0x0060, /* 9 */ /*39*/ 0x007C, 0x00FE, 0x00C7, 0x0183, 0x0183, 0x0183, 0x01C3, 0x00FE, 0x007E, 0x000C, 0x000C, 0x0018, 0x0030, 0x0060, /* 9 */
/*3A*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* : (blank) */
/*3B*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* ; (blank) */
/*3C*/ 0x0000, 0x0000, 0x0007, 0x000E, 0x003C, 0x0070, 0x01E0, 0x01C0, 0x00F0, 0x0038, 0x001E, 0x0007, 0x0003, 0x0000, /* < */
/*3D*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* = (blank) */
/*3E*/ 0x0000, 0x0000, 0x01C0, 0x00E0, 0x0078, 0x001C, 0x000F, 0x0007, 0x001E, 0x0038, 0x00F0, 0x01C0, 0x0180, 0x0000, /* > */
}; };
#define UPCEAN_SMALL_FONT_WIDTH 8 #define UPCEAN_SMALL_FONT_WIDTH 8
#define UPCEAN_SMALL_FONT_HEIGHT 13 #define UPCEAN_SMALL_FONT_HEIGHT 13
/* Each character is 8 x 13 pixels */ /* Each character is 8 x 13 pixels */
static font_item upcean_small_font[] = { static const raster_font_item upcean_small_font[] = {
/*30*/ 0x3C, 0x7E, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x66, 0x7E, 0x3C, /* 0 */ /*30*/ 0x3C, 0x7E, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x66, 0x7E, 0x3C, /* 0 */
/*31*/ 0x00, 0x0E, 0x1E, 0x36, 0x26, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, /* 1 */ /*31*/ 0x00, 0x0E, 0x1E, 0x36, 0x26, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, /* 1 */
/*32*/ 0x38, 0x7C, 0xC6, 0x02, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x7E, /* 2 */ /*32*/ 0x38, 0x7C, 0xC6, 0x02, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x7E, /* 2 */
@ -484,7 +489,12 @@ static font_item upcean_small_font[] = {
/*37*/ 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, /* 7 */ /*37*/ 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, /* 7 */
/*38*/ 0x3C, 0x7E, 0x66, 0x42, 0x66, 0x3C, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0x7E, 0x3C, /* 8 */ /*38*/ 0x3C, 0x7E, 0x66, 0x42, 0x66, 0x3C, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0x7E, 0x3C, /* 8 */
/*39*/ 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE3, 0x7E, 0x1E, 0x0C, 0x18, 0x30, 0x60, /* 9 */ /*39*/ 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE3, 0x7E, 0x1E, 0x0C, 0x18, 0x30, 0x60, /* 9 */
/*3A*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* : (blank) */
/*3B*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ; (blank) */
/*3C*/ 0x00, 0x00, 0x03, 0x0E, 0x1C, 0x70, 0xE0, 0xE0, 0x30, 0x1C, 0x06, 0x03, 0x00, /* < */
/*3D*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* = (blank) */
/*3E*/ 0x00, 0x00, 0xC0, 0xE0, 0x38, 0x1C, 0x07, 0x07, 0x1C, 0x38, 0xE0, 0xC0, 0x00, /* > */
}; };
/* vim: set ts=4 sw=4 et : */ /* vim: set ts=4 sw=4 et : */
#endif /* Z_FONT_H */ #endif /* Z_RASTER_FONT_H */

View File

@ -1,7 +1,7 @@
/* rss.c - GS1 DataBar (formerly Reduced Space Symbology) */ /* rss.c - GS1 DataBar (formerly Reduced Space Symbology) */
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2008-2022 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2008-2023 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
@ -123,14 +123,14 @@ static void getRSSwidths(int widths[], int val, int n, const int elements, const
for (elmWidth = 1, narrowMask |= (1 << bar); for (elmWidth = 1, narrowMask |= (1 << bar);
; ;
elmWidth++, narrowMask &= ~(1 << bar)) { elmWidth++, narrowMask &= ~(1 << bar)) {
/* get all combinations */ /* Get all combinations */
subVal = rss_combins(n - elmWidth - 1, elements - bar - 2); subVal = rss_combins(n - elmWidth - 1, elements - bar - 2);
/* less combinations with no single-module element */ /* Less combinations with no single-module element */
if ((!noNarrow) && (!narrowMask) if ((!noNarrow) && (!narrowMask)
&& (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) { && (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) {
subVal -= rss_combins(n - elmWidth - (elements - bar), elements - bar - 2); subVal -= rss_combins(n - elmWidth - (elements - bar), elements - bar - 2);
} }
/* less combinations with elements > maxVal */ /* Less combinations with elements > maxVal */
if (elements - bar - 1 > 1) { if (elements - bar - 1 > 1) {
lessVal = 0; lessVal = 0;
for (mxwElement = n - elmWidth - (elements - bar - 2); for (mxwElement = n - elmWidth - (elements - bar - 2);
@ -285,7 +285,7 @@ INTERNAL int dbar_omnstk_set_height(struct zint_symbol *symbol, const int first_
/* GS1 DataBar Omnidirectional/Truncated/Stacked, allowing for composite if `cc_rows` set */ /* GS1 DataBar Omnidirectional/Truncated/Stacked, allowing for composite if `cc_rows` set */
INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) { INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) {
int error_number = 0, i; int error_number = 0, i;
large_int accum; large_uint accum;
uint64_t left_pair, right_pair; uint64_t left_pair, right_pair;
int data_character[4] = {0}, data_group[4] = {0}, v_odd[4], v_even[4]; int data_character[4] = {0}, data_group[4] = {0}, v_odd[4], v_even[4];
int data_widths[8][4], checksum, c_left, c_right, total_widths[46], writer; int data_widths[8][4], checksum, c_left, c_right, total_widths[46], writer;
@ -313,7 +313,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
length--; /* Ignore */ length--; /* Ignore */
} }
/* make some room for a separator row for composite symbols */ /* Make some room for a separator row for composite symbols */
switch (symbol->symbology) { switch (symbol->symbology) {
case BARCODE_DBAR_OMN_CC: case BARCODE_DBAR_OMN_CC:
case BARCODE_DBAR_STK_CC: case BARCODE_DBAR_STK_CC:
@ -477,7 +477,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
symbol->width = writer; symbol->width = writer;
} }
if (symbol->symbology == BARCODE_DBAR_OMN_CC) { if (symbol->symbology == BARCODE_DBAR_OMN_CC) {
/* separator pattern for composite symbol */ /* Separator pattern for composite symbol */
dbar_omn_separator(symbol, 96, separator_row, 1 /*above*/, 18, 63, 0 /*bottom_finder_value_3*/); dbar_omn_separator(symbol, 96, separator_row, 1 /*above*/, 18, 63, 0 /*bottom_finder_value_3*/);
} }
symbol->rows = symbol->rows + 1; symbol->rows = symbol->rows + 1;
@ -502,7 +502,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
} else if ((symbol->symbology == BARCODE_DBAR_STK) || (symbol->symbology == BARCODE_DBAR_STK_CC)) { } else if ((symbol->symbology == BARCODE_DBAR_STK) || (symbol->symbology == BARCODE_DBAR_STK_CC)) {
/* top row */ /* Top row */
writer = 0; writer = 0;
latch = 0; latch = 0;
for (i = 0; i < 23; i++) { for (i = 0; i < 23; i++) {
@ -512,7 +512,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
unset_module(symbol, symbol->rows, writer + 1); unset_module(symbol, symbol->rows, writer + 1);
symbol->row_height[symbol->rows] = 5.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 5X */ symbol->row_height[symbol->rows] = 5.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 5X */
/* bottom row */ /* Bottom row */
symbol->rows = symbol->rows + 2; symbol->rows = symbol->rows + 2;
set_module(symbol, symbol->rows, 0); set_module(symbol, symbol->rows, 0);
unset_module(symbol, symbol->rows, 1); unset_module(symbol, symbol->rows, 1);
@ -523,7 +523,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
symbol->row_height[symbol->rows] = 7.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 7X */ symbol->row_height[symbol->rows] = 7.0f; /* ISO/IEC 24724:2011 5.3.2.1 set to 7X */
/* separator pattern */ /* Separator pattern */
/* See #183 for this interpretation of ISO/IEC 24724:2011 5.3.2.1 */ /* See #183 for this interpretation of ISO/IEC 24724:2011 5.3.2.1 */
for (i = 1; i < 46; i++) { for (i = 1; i < 46; i++) {
if (module_is_set(symbol, symbol->rows - 2, i) == module_is_set(symbol, symbol->rows, i)) { if (module_is_set(symbol, symbol->rows - 2, i) == module_is_set(symbol, symbol->rows, i)) {
@ -542,7 +542,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
symbol->row_height[symbol->rows - 1] = 1; symbol->row_height[symbol->rows - 1] = 1;
if (symbol->symbology == BARCODE_DBAR_STK_CC) { if (symbol->symbology == BARCODE_DBAR_STK_CC) {
/* separator pattern for composite symbol */ /* Separator pattern for composite symbol */
dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/); dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/);
} }
symbol->rows = symbol->rows + 1; symbol->rows = symbol->rows + 1;
@ -555,7 +555,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
} else if ((symbol->symbology == BARCODE_DBAR_OMNSTK) || (symbol->symbology == BARCODE_DBAR_OMNSTK_CC)) { } else if ((symbol->symbology == BARCODE_DBAR_OMNSTK) || (symbol->symbology == BARCODE_DBAR_OMNSTK_CC)) {
/* top row */ /* Top row */
writer = 0; writer = 0;
latch = 0; latch = 0;
for (i = 0; i < 23; i++) { for (i = 0; i < 23; i++) {
@ -564,7 +564,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
set_module(symbol, symbol->rows, writer); set_module(symbol, symbol->rows, writer);
unset_module(symbol, symbol->rows, writer + 1); unset_module(symbol, symbol->rows, writer + 1);
/* bottom row */ /* Bottom row */
symbol->rows = symbol->rows + 4; symbol->rows = symbol->rows + 4;
set_module(symbol, symbol->rows, 0); set_module(symbol, symbol->rows, 0);
unset_module(symbol, symbol->rows, 1); unset_module(symbol, symbol->rows, 1);
@ -574,17 +574,17 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
writer = dbar_expand(symbol, writer, &latch, total_widths[i]); writer = dbar_expand(symbol, writer, &latch, total_widths[i]);
} }
/* middle separator */ /* Middle separator */
for (i = 5; i < 46; i += 2) { for (i = 5; i < 46; i += 2) {
set_module(symbol, symbol->rows - 2, i); set_module(symbol, symbol->rows - 2, i);
} }
symbol->row_height[symbol->rows - 2] = 1; symbol->row_height[symbol->rows - 2] = 1;
/* top separator */ /* Top separator */
dbar_omn_separator(symbol, 50, symbol->rows - 3, -1 /*below*/, 18, 0, 0 /*bottom_finder_value_3*/); dbar_omn_separator(symbol, 50, symbol->rows - 3, -1 /*below*/, 18, 0, 0 /*bottom_finder_value_3*/);
symbol->row_height[symbol->rows - 3] = 1; symbol->row_height[symbol->rows - 3] = 1;
/* bottom separator */ /* Bottom separator */
/* 17 == 2 (guard) + 15 (inner char); +2 to skip over finder elements 4 & 5 (right to left) */ /* 17 == 2 (guard) + 15 (inner char); +2 to skip over finder elements 4 & 5 (right to left) */
dbar_omn_separator(symbol, 50, symbol->rows - 1, 1 /*above*/, 17 + 2, 0, c_right == 3); dbar_omn_separator(symbol, 50, symbol->rows - 1, 1 /*above*/, 17 + 2, 0, c_right == 3);
symbol->row_height[symbol->rows - 1] = 1; symbol->row_height[symbol->rows - 1] = 1;
@ -593,7 +593,7 @@ INTERNAL int dbar_omn_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
if (symbol->symbology == BARCODE_DBAR_OMNSTK_CC) { if (symbol->symbology == BARCODE_DBAR_OMNSTK_CC) {
/* separator pattern for composite symbol */ /* Separator pattern for composite symbol */
dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/); dbar_omn_separator(symbol, 50, separator_row, 1 /*above*/, 18, 0, 0 /*bottom_finder_value_3*/);
} }
symbol->rows = symbol->rows + 1; symbol->rows = symbol->rows + 1;
@ -621,7 +621,7 @@ INTERNAL int dbar_omn(struct zint_symbol *symbol, unsigned char source[], int le
/* GS1 DataBar Limited, allowing for composite if `cc_rows` set */ /* GS1 DataBar Limited, allowing for composite if `cc_rows` set */
INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) { INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int length, const int cc_rows) {
int error_number = 0, i; int error_number = 0, i;
large_int accum; large_uint accum;
uint64_t left_character, right_character; uint64_t left_character, right_character;
int left_group, right_group, left_odd, left_even, right_odd, right_even; int left_group, right_group, left_odd, left_even, right_odd, right_even;
int left_widths[14], right_widths[14]; int left_widths[14], right_widths[14];
@ -657,7 +657,7 @@ INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
} }
/* make some room for a separator row for composite symbols */ /* Make some room for a separator row for composite symbols */
if (symbol->symbology == BARCODE_DBAR_LTD_CC) { if (symbol->symbology == BARCODE_DBAR_LTD_CC) {
separator_row = symbol->rows; separator_row = symbol->rows;
symbol->row_height[separator_row] = 1; symbol->row_height[separator_row] = 1;
@ -778,7 +778,7 @@ INTERNAL int dbar_ltd_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
symbol->rows = symbol->rows + 1; symbol->rows = symbol->rows + 1;
/* add separator pattern if composite symbol */ /* Add separator pattern if composite symbol */
if (symbol->symbology == BARCODE_DBAR_LTD_CC) { if (symbol->symbology == BARCODE_DBAR_LTD_CC) {
for (i = 4; i < 70; i++) { for (i = 4; i < 70; i++) {
if (!(module_is_set(symbol, separator_row + 1, i))) { if (!(module_is_set(symbol, separator_row + 1, i))) {
@ -843,17 +843,17 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
if ((length >= 16) && ((source[0] == '0') && (source[1] == '1'))) { if ((length >= 16) && ((source[0] == '0') && (source[1] == '1'))) {
/* (01) and other AIs */ /* (01) and other AIs */
encoding_method = 1; encoding_method = 1;
if (debug_print) printf("Choosing Method 1\n"); if (debug_print) fputs("Choosing Method 1\n", stdout);
} else { } else {
/* any AIs */ /* Any AIs */
encoding_method = 2; encoding_method = 2;
if (debug_print) printf("Choosing Method 2\n"); if (debug_print) fputs("Choosing Method 2\n", stdout);
} }
if (((length >= 20) && (encoding_method == 1)) && ((source[2] == '9') && (source[16] == '3'))) { if (((length >= 20) && (encoding_method == 1)) && ((source[2] == '9') && (source[16] == '3'))) {
/* Possibly encoding method > 2 */ /* Possibly encoding method > 2 */
if (debug_print) printf("Checking for other methods\n"); if (debug_print) fputs("Checking for other methods\n", stdout);
if ((length >= 26) && (source[17] == '1') && (source[18] == '0')) { if ((length >= 26) && (source[17] == '1') && (source[18] == '0')) {
/* Methods 3, 7, 9, 11 and 13 */ /* Methods 3, 7, 9, 11 and 13 */
@ -948,18 +948,17 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
case 6: bp = bin_append_posn(0x34, 7, binary_string, bp); /* "01101XX" */ case 6: bp = bin_append_posn(0x34, 7, binary_string, bp); /* "01101XX" */
read_posn = 23; read_posn = 23;
break; break;
default: /* modes 7 to 14 */ default: /* Modes 7 to 14 */
bp = bin_append_posn(56 + (encoding_method - 7), 7, binary_string, bp); bp = bin_append_posn(56 + (encoding_method - 7), 7, binary_string, bp);
read_posn = length; /* 34 or 26 */ read_posn = length; /* 34 or 26 */
break; break;
} }
if (debug_print) printf("Setting binary = %.*s\n", bp, binary_string); if (debug_print) printf("Setting binary = %.*s\n", bp, binary_string);
/* Variable length symbol bit field is just given a place holder (XX) /* Variable length symbol bit field is just given a place holder (XX) for the time being */
for the time being */
/* Verify that the data to be placed in the compressed data field is all /* Verify that the data to be placed in the compressed data field is all numeric data
numeric data before carrying out compression */ before carrying out compression */
for (i = 0; i < read_posn; i++) { for (i = 0; i < read_posn; i++) {
if (!z_isdigit(source[i])) { if (!z_isdigit(source[i])) {
if (source[i] != '[') { if (source[i] != '[') {
@ -972,7 +971,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
/* Now encode the compressed data field */ /* Now encode the compressed data field */
if (debug_print) printf("Proceeding to encode data\n"); if (debug_print) fputs("Proceeding to encode data\n", stdout);
cdf_bp_start = bp; /* Debug use only */ cdf_bp_start = bp; /* Debug use only */
if (encoding_method == 1) { if (encoding_method == 1) {
@ -985,10 +984,8 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
} }
} else if ((encoding_method == 3) || (encoding_method == 4)) { } else if ((encoding_method == 3) || (encoding_method == 4)) {
/* Encoding method field "0100" - variable weight item /* Encoding method field "0100" - variable weight item (0,001 kilogram increments) */
(0,001 kilogram icrements) */ /* Encoding method field "0101" - variable weight item (0,01 or 0,001 pound increment) */
/* Encoding method field "0101" - variable weight item (0,01 or
0,001 pound increment) */
for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */ for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */
bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp); bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp);
@ -1002,8 +999,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
} else if ((encoding_method == 5) || (encoding_method == 6)) { } else if ((encoding_method == 5) || (encoding_method == 6)) {
/* Encoding method "01100" - variable measure item and price */ /* Encoding method "01100" - variable measure item and price */
/* Encoding method "01101" - variable measure item and price with ISO 4217 /* Encoding method "01101" - variable measure item and price with ISO 4217 Currency Code */
Currency Code */
for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */ for (i = 3; i < 15; i += 3) { /* Leading "019" stripped, and final check digit excluded */
bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp); bp = bin_append_posn(to_int(source + i, 3), 10, binary_string, bp);
@ -1016,8 +1012,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
} }
} else if ((encoding_method >= 7) && (encoding_method <= 14)) { } else if ((encoding_method >= 7) && (encoding_method <= 14)) {
/* Encoding method fields "0111000" through "0111111" - variable /* Encoding method fields "0111000" through "0111111" - variable weight item plus date */
weight item plus date */
int group_val; int group_val;
char weight_str[8]; char weight_str[8];
@ -1096,7 +1091,7 @@ static int dbar_exp_binary_string(struct zint_symbol *symbol, const unsigned cha
if (last_digit) { if (last_digit) {
/* There is still one more numeric digit to encode */ /* There is still one more numeric digit to encode */
if (debug_print) printf("Adding extra (odd) numeric digit\n"); if (debug_print) fputs("Adding extra (odd) numeric digit\n", stdout);
if ((remainder >= 4) && (remainder <= 6)) { if ((remainder >= 4) && (remainder <= 6)) {
bp = bin_append_posn(ctoi(last_digit) + 1, 4, binary_string, bp); bp = bin_append_posn(ctoi(last_digit) + 1, 4, binary_string, bp);
@ -1198,7 +1193,7 @@ static void dbar_exp_separator(struct zint_symbol *symbol, int width, const int
} }
} }
/* finder adjustment */ /* Finder adjustment */
for (j = 0; j < cols; j++) { for (j = 0; j < cols; j++) {
/* 49 == data (17) + finder (15) + data(17) triplet, 19 == 2 (guard) + 17 (initial check/data character) */ /* 49 == data (17) + finder (15) + data(17) triplet, 19 == 2 (guard) + 17 (initial check/data character) */
k = (49 * j) + 19 + special_case_row; k = (49 * j) + 19 + special_case_row;
@ -1295,7 +1290,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
if ((symbol->symbology == BARCODE_DBAR_EXP_CC) || (symbol->symbology == BARCODE_DBAR_EXPSTK_CC)) { if ((symbol->symbology == BARCODE_DBAR_EXP_CC) || (symbol->symbology == BARCODE_DBAR_EXPSTK_CC)) {
/* make space for a composite separator pattern */ /* Make space for a composite separator pattern */
separator_row = symbol->rows; separator_row = symbol->rows;
symbol->row_height[separator_row] = 1; symbol->row_height[separator_row] = 1;
symbol->rows += 1; symbol->rows += 1;
@ -1329,7 +1324,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
data_chars = bp / 12; data_chars = bp / 12;
if (debug_print) printf("Data:"); if (debug_print) fputs("Data:", stdout);
for (i = 0; i < data_chars; i++) { for (i = 0; i < data_chars; i++) {
k = i * 12; k = i * 12;
vs = 0; vs = 0;
@ -1365,7 +1360,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
char_widths[i][5] = widths[2]; char_widths[i][5] = widths[2];
char_widths[i][7] = widths[3]; char_widths[i][7] = widths[3];
} }
if (debug_print) printf("\n"); if (debug_print) fputc('\n', stdout);
/* 7.2.6 Check character */ /* 7.2.6 Check character */
/* The checksum value is equal to the mod 211 residue of the weighted sum of the widths of the /* The checksum value is equal to the mod 211 residue of the weighted sum of the widths of the
@ -1449,10 +1444,10 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
if ((symbol->symbology == BARCODE_DBAR_EXP) || (symbol->symbology == BARCODE_DBAR_EXP_CC)) { if ((symbol->symbology == BARCODE_DBAR_EXP) || (symbol->symbology == BARCODE_DBAR_EXP_CC)) {
/* Copy elements into symbol */ /* Copy elements into symbol */
elements[0] = 1; /* left guard */ elements[0] = 1; /* Left guard */
elements[1] = 1; elements[1] = 1;
elements[pattern_width - 2] = 1; /* right guard */ elements[pattern_width - 2] = 1; /* Right guard */
elements[pattern_width - 1] = 1; elements[pattern_width - 1] = 1;
writer = 0; writer = 0;
@ -1497,12 +1492,12 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
/* Row Start */ /* Row Start */
sub_elements[0] = 1; /* left guard */ sub_elements[0] = 1; /* Left guard */
sub_elements[1] = 1; sub_elements[1] = 1;
elements_in_sub = 2; elements_in_sub = 2;
/* If last row and is partial and even-numbered, and have even columns (segment pairs), /* If last row and is partial and even-numbered, and have even columns (segment pairs),
* and odd number of finders (== odd number of columns) */ and odd number of finders (== odd number of columns) */
if ((current_row == stack_rows) && (num_columns != cols_per_row) && !(current_row & 1) if ((current_row == stack_rows) && (num_columns != cols_per_row) && !(current_row & 1)
&& !(cols_per_row & 1) && (num_columns & 1)) { && !(cols_per_row & 1) && (num_columns & 1)) {
/* Special case bottom row */ /* Special case bottom row */
@ -1511,7 +1506,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
} }
/* If odd number of columns or current row odd-numbered or special case last row then left-to-right, /* If odd number of columns or current row odd-numbered or special case last row then left-to-right,
* else right-to-left */ else right-to-left */
if ((cols_per_row & 1) || (current_row & 1) || special_case_row) { if ((cols_per_row & 1) || (current_row & 1) || special_case_row) {
left_to_right = 1; left_to_right = 1;
} else { } else {
@ -1544,7 +1539,7 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
} while ((reader < cols_per_row) && (current_block < codeblocks)); } while ((reader < cols_per_row) && (current_block < codeblocks));
/* Row Stop */ /* Row Stop */
sub_elements[elements_in_sub] = 1; /* right guard */ sub_elements[elements_in_sub] = 1; /* Right guard */
sub_elements[elements_in_sub + 1] = 1; sub_elements[elements_in_sub + 1] = 1;
elements_in_sub += 2; elements_in_sub += 2;
@ -1561,20 +1556,20 @@ INTERNAL int dbar_exp_cc(struct zint_symbol *symbol, unsigned char source[], int
if (current_row != 1) { if (current_row != 1) {
int odd_last_row = (current_row == stack_rows) && (data_chars % 2 == 0); int odd_last_row = (current_row == stack_rows) && (data_chars % 2 == 0);
/* middle separator pattern (above current row) */ /* Middle separator pattern (above current row) */
for (j = 5; j < (49 * cols_per_row); j += 2) { for (j = 5; j < (49 * cols_per_row); j += 2) {
set_module(symbol, symbol->rows - 2, j); set_module(symbol, symbol->rows - 2, j);
} }
symbol->row_height[symbol->rows - 2] = 1; symbol->row_height[symbol->rows - 2] = 1;
/* bottom separator pattern (above current row) */ /* Bottom separator pattern (above current row) */
dbar_exp_separator(symbol, writer, reader, symbol->rows - 1, 1 /*above*/, special_case_row, dbar_exp_separator(symbol, writer, reader, symbol->rows - 1, 1 /*above*/, special_case_row,
left_to_right, odd_last_row, &v2_latch); left_to_right, odd_last_row, &v2_latch);
symbol->row_height[symbol->rows - 1] = 1; symbol->row_height[symbol->rows - 1] = 1;
} }
if (current_row != stack_rows) { if (current_row != stack_rows) {
/* top separator pattern (below current row) */ /* Top separator pattern (below current row) */
dbar_exp_separator(symbol, writer, reader, symbol->rows + 1, -1 /*below*/, 0 /*special_case_row*/, dbar_exp_separator(symbol, writer, reader, symbol->rows + 1, -1 /*below*/, 0 /*special_case_row*/,
left_to_right, 0 /*odd_last_row*/, &v2_latch); left_to_right, 0 /*odd_last_row*/, &v2_latch);
symbol->row_height[symbol->rows + 1] = 1; symbol->row_height[symbol->rows + 1] = 1;

View File

@ -31,93 +31,90 @@
/* SPDX-License-Identifier: BSD-3-Clause */ /* SPDX-License-Identifier: BSD-3-Clause */
#include <errno.h> #include <errno.h>
#include <locale.h>
#include <math.h> #include <math.h>
#include <stdio.h> #include <stdio.h>
#include "common.h" #include "common.h"
#include "output.h" #include "output.h"
#include "fonts/upcean_woff2.h"
static void pick_colour(int colour, char colour_code[]) { /* Convert Ultracode rectangle colour to RGB */
switch (colour) { static void svg_pick_colour(const int colour, char colour_code[7]) {
case 1: /* Cyan */ const int idx = colour >= 1 && colour <= 8 ? colour - 1 : 6 /*black*/;
strcpy(colour_code, "00ffff"); static const char rgbs[8][7] = {
break; "00ffff", /* 0: Cyan (1) */
case 2: /* Blue */ "0000ff", /* 1: Blue (2) */
strcpy(colour_code, "0000ff"); "ff00ff", /* 2: Magenta (3) */
break; "ff0000", /* 3: Red (4) */
case 3: /* Magenta */ "ffff00", /* 4: Yellow (5) */
strcpy(colour_code, "ff00ff"); "00ff00", /* 5: Green (6) */
break; "000000", /* 6: Black (7) */
case 4: /* Red */ "ffffff", /* 7: White (8) */
strcpy(colour_code, "ff0000"); };
break; strcpy(colour_code, rgbs[idx]);
case 5: /* Yellow */
strcpy(colour_code, "ffff00");
break;
case 6: /* Green */
strcpy(colour_code, "00ff00");
break;
case 8: /* White */
strcpy(colour_code, "ffffff");
break;
default: /* Black */
strcpy(colour_code, "000000");
break;
}
} }
static void make_html_friendly(unsigned char *string, char *html_version) { /* Convert text to use HTML entity codes */
/* Converts text to use HTML entity codes */ static void svg_make_html_friendly(const unsigned char *string, char *html_version) {
int i, len, html_pos; for (; *string; string++) {
switch (*string) {
html_pos = 0;
html_version[html_pos] = '\0';
len = (int) ustrlen(string);
for (i = 0; i < len; i++) {
switch (string[i]) {
case '>': case '>':
strcat(html_version, "&gt;"); strcpy(html_version, "&gt;");
html_pos += 4; html_version += 4;
break; break;
case '<': case '<':
strcat(html_version, "&lt;"); strcpy(html_version, "&lt;");
html_pos += 4; html_version += 4;
break; break;
case '&': case '&':
strcat(html_version, "&amp;"); strcpy(html_version, "&amp;");
html_pos += 5; html_version += 5;
break; break;
case '"': case '"':
strcat(html_version, "&quot;"); strcpy(html_version, "&quot;");
html_pos += 6; html_version += 6;
break; break;
case '\'': case '\'':
strcat(html_version, "&apos;"); strcpy(html_version, "&apos;");
html_pos += 6; html_version += 6;
break; break;
default: default:
html_version[html_pos] = string[i]; *html_version++ = *string;
html_pos++;
html_version[html_pos] = '\0';
break; break;
} }
} }
*html_version = '\0';
}
/* Helper to output floating point attribute */
static void svg_put_fattrib(const char *prefix, const int dp, const float val, FILE *fsvg) {
out_putsf(prefix, dp, val, fsvg);
fputc('"', fsvg);
}
/* Helper to output opacity attribute attribute and close tag (maybe) */
static void svg_put_opacity_close(const unsigned char alpha, const float val, const int close, FILE *fsvg) {
if (alpha != 0xff) {
svg_put_fattrib(" opacity=\"", 3, val, fsvg);
}
if (close) {
fputc('/', fsvg);
}
fputs(">\n", fsvg);
} }
INTERNAL int svg_plot(struct zint_symbol *symbol) { INTERNAL int svg_plot(struct zint_symbol *symbol) {
static const char font_family[] = "Helvetica, sans-serif"; static const char font_family[] = "Helvetica, sans-serif";
static const char upcean_font_family[] = "OCRB, monospace";
FILE *fsvg; FILE *fsvg;
int error_number = 0; int error_number = 0;
const char *locale = NULL;
float ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy;
float previous_diameter; float previous_diameter;
float radius, half_radius, half_sqrt3_radius; float radius, half_radius, half_sqrt3_radius;
int i; int i;
@ -136,6 +133,7 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
char colour_code[7]; char colour_code[7];
int len, html_len; int len, html_len;
const int extendable = is_extendable(symbol->symbology);
const int output_to_stdout = symbol->output_options & BARCODE_STDOUT; const int output_to_stdout = symbol->output_options & BARCODE_STDOUT;
char *html_string; char *html_string;
@ -164,11 +162,14 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
break; break;
} }
} }
if (symbol->output_options & EANUPC_GUARD_WHITESPACE) {
html_len += 12; /* Allow for "<" & ">" */
}
html_string = (char *) z_alloca(html_len); html_string = (char *) z_alloca(html_len);
/* Check for no created vector set */ /* Check for no created vector set */
/* E-Mail Christian Schmitz 2019-09-10: reason unknown Ticket #164*/ /* E-Mail Christian Schmitz 2019-09-10: reason unknown Ticket #164 */
if (symbol->vector == NULL) { if (symbol->vector == NULL) {
strcpy(symbol->errtxt, "681: Vector header NULL"); strcpy(symbol->errtxt, "681: Vector header NULL");
return ZINT_ERROR_INVALID_DATA; return ZINT_ERROR_INVALID_DATA;
@ -182,45 +183,60 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
} }
} }
locale = setlocale(LC_ALL, "C");
/* Start writing the header */ /* Start writing the header */
fputs("<?xml version=\"1.0\" standalone=\"no\"?>\n" fputs("<?xml version=\"1.0\" standalone=\"no\"?>\n"
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n" "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", fsvg); fsvg);
fprintf(fsvg, "<svg width=\"%d\" height=\"%d\" version=\"1.1\"\n", fprintf(fsvg, "<svg width=\"%d\" height=\"%d\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n",
(int) ceilf(symbol->vector->width), (int) ceilf(symbol->vector->height)); (int) ceilf(symbol->vector->width), (int) ceilf(symbol->vector->height));
fputs(" xmlns=\"http://www.w3.org/2000/svg\">\n" fputs(" <desc>Zint Generated Symbol</desc>\n", fsvg);
" <desc>Zint Generated Symbol\n" if ((symbol->output_options & EMBED_VECTOR_FONT) && extendable && symbol->vector->strings) {
" </desc>\n", fsvg); fprintf(fsvg, " <style>@font-face {font-family:\"OCRB\"; src:url(data:font/woff2;base64,%s);}</style>\n",
fprintf(fsvg, "\n <g id=\"barcode\" fill=\"#%s\">\n", fgcolour_string); upcean_woff2);
}
fprintf(fsvg, " <g id=\"barcode\" fill=\"#%s\">\n", fgcolour_string);
if (bg_alpha != 0) { if (bg_alpha != 0) {
fprintf(fsvg, " <rect x=\"0\" y=\"0\" width=\"%d\" height=\"%d\" fill=\"#%s\"", fprintf(fsvg, " <rect x=\"0\" y=\"0\" width=\"%d\" height=\"%d\" fill=\"#%s\"",
(int) ceilf(symbol->vector->width), (int) ceilf(symbol->vector->height), bgcolour_string); (int) ceilf(symbol->vector->width), (int) ceilf(symbol->vector->height), bgcolour_string);
if (bg_alpha != 0xff) { svg_put_opacity_close(bg_alpha, bg_alpha_opacity, 1 /*close*/, fsvg);
fprintf(fsvg, " opacity=\"%.3f\"", bg_alpha_opacity);
}
fputs(" />\n", fsvg);
} }
if (symbol->vector->rectangles) {
int current_colour = 0;
rect = symbol->vector->rectangles; rect = symbol->vector->rectangles;
fputs(" <path d=\"", fsvg);
while (rect) { while (rect) {
fprintf(fsvg, " <rect x=\"%.2f\" y=\"%.2f\" width=\"%.2f\" height=\"%.2f\"", if (current_colour && rect->colour != current_colour) {
rect->x, rect->y, rect->width, rect->height); fputc('"', fsvg);
if (rect->colour != -1) { if (current_colour != -1) {
pick_colour(rect->colour, colour_code); svg_pick_colour(current_colour, colour_code);
fprintf(fsvg, " fill=\"#%s\"", colour_code); fprintf(fsvg, " fill=\"#%s\"", colour_code);
} }
if (fg_alpha != 0xff) { svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg);
fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity); fputs(" <path d=\"", fsvg);
} }
fputs(" />\n", fsvg); current_colour = rect->colour;
out_putsf("M", 2, rect->x, fsvg);
out_putsf(" ", 2, rect->y, fsvg);
out_putsf("h", 2, rect->width, fsvg);
out_putsf("v", 2, rect->height, fsvg);
out_putsf("h-", 2, rect->width, fsvg);
fputs("Z", fsvg);
rect = rect->next; rect = rect->next;
} }
fputc('"', fsvg);
if (current_colour != -1) {
svg_pick_colour(current_colour, colour_code);
fprintf(fsvg, " fill=\"#%s\"", colour_code);
}
svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg);
}
if (symbol->vector->hexagons) {
previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f; previous_diameter = radius = half_radius = half_sqrt3_radius = 0.0f;
hex = symbol->vector->hexagons; hex = symbol->vector->hexagons;
fputs(" <path d=\"", fsvg);
while (hex) { while (hex) {
if (previous_diameter != hex->diameter) { if (previous_diameter != hex->diameter) {
previous_diameter = hex->diameter; previous_diameter = hex->diameter;
@ -229,40 +245,38 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter); half_sqrt3_radius = (float) (0.43301270189221932338 * previous_diameter);
} }
if ((hex->rotation == 0) || (hex->rotation == 180)) { if ((hex->rotation == 0) || (hex->rotation == 180)) {
ay = hex->y + radius; out_putsf("M", 2, hex->x, fsvg);
by = hex->y + half_radius; out_putsf(" ", 2, hex->y + radius, fsvg);
cy = hex->y - half_radius; out_putsf("L", 2, hex->x + half_sqrt3_radius, fsvg);
dy = hex->y - radius; out_putsf(" ", 2, hex->y + half_radius, fsvg);
ey = hex->y - half_radius; out_putsf("L", 2, hex->x + half_sqrt3_radius, fsvg);
fy = hex->y + half_radius; out_putsf(" ", 2, hex->y - half_radius, fsvg);
ax = hex->x; out_putsf("L", 2, hex->x, fsvg);
bx = hex->x + half_sqrt3_radius; out_putsf(" ", 2, hex->y - radius, fsvg);
cx = hex->x + half_sqrt3_radius; out_putsf("L", 2, hex->x - half_sqrt3_radius, fsvg);
dx = hex->x; out_putsf(" ", 2, hex->y - half_radius, fsvg);
ex = hex->x - half_sqrt3_radius; out_putsf("L", 2, hex->x - half_sqrt3_radius, fsvg);
fx = hex->x - half_sqrt3_radius; out_putsf(" ", 2, hex->y + half_radius, fsvg);
} else { } else {
ay = hex->y; out_putsf("M", 2, hex->x - radius, fsvg);
by = hex->y + half_sqrt3_radius; out_putsf(" ", 2, hex->y, fsvg);
cy = hex->y + half_sqrt3_radius; out_putsf("L", 2, hex->x - half_radius, fsvg);
dy = hex->y; out_putsf(" ", 2, hex->y + half_sqrt3_radius, fsvg);
ey = hex->y - half_sqrt3_radius; out_putsf("L", 2, hex->x + half_radius, fsvg);
fy = hex->y - half_sqrt3_radius; out_putsf(" ", 2, hex->y + half_sqrt3_radius, fsvg);
ax = hex->x - radius; out_putsf("L", 2, hex->x + radius, fsvg);
bx = hex->x - half_radius; out_putsf(" ", 2, hex->y, fsvg);
cx = hex->x + half_radius; out_putsf("L", 2, hex->x + half_radius, fsvg);
dx = hex->x + radius; out_putsf(" ", 2, hex->y - half_sqrt3_radius, fsvg);
ex = hex->x + half_radius; out_putsf("L", 2, hex->x - half_radius, fsvg);
fx = hex->x - half_radius; out_putsf(" ", 2, hex->y - half_sqrt3_radius, fsvg);
} }
fprintf(fsvg, " <path d=\"M %.2f %.2f L %.2f %.2f L %.2f %.2f L %.2f %.2f L %.2f %.2f L %.2f %.2f Z\"", fputc('Z', fsvg);
ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy);
if (fg_alpha != 0xff) {
fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity);
}
fputs(" />\n", fsvg);
hex = hex->next; hex = hex->next;
} }
fputc('"', fsvg);
svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg);
}
previous_diameter = radius = 0.0f; previous_diameter = radius = 0.0f;
circle = symbol->vector->circles; circle = symbol->vector->circles;
@ -271,48 +285,53 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
previous_diameter = circle->diameter; previous_diameter = circle->diameter;
radius = (float) (0.5 * previous_diameter); radius = (float) (0.5 * previous_diameter);
} }
fprintf(fsvg, " <circle cx=\"%.2f\" cy=\"%.2f\" r=\"%.*f\"", fputs(" <circle", fsvg);
circle->x, circle->y, circle->width ? 3 : 2, radius); svg_put_fattrib(" cx=\"", 2, circle->x, fsvg);
svg_put_fattrib(" cy=\"", 2, circle->y, fsvg);
svg_put_fattrib(" r=\"", circle->width ? 3 : 2, radius, fsvg);
if (circle->colour) { /* Legacy - no longer used */ if (circle->colour) { /* Legacy - no longer used */
if (circle->width) { if (circle->width) {
fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", bgcolour_string, circle->width); fprintf(fsvg, " stroke=\"#%s\"", bgcolour_string);
svg_put_fattrib(" stroke-width=\"", 3, circle->width, fsvg);
fputs(" fill=\"none\"", fsvg);
} else { } else {
fprintf(fsvg, " fill=\"#%s\"", bgcolour_string); fprintf(fsvg, " fill=\"#%s\"", bgcolour_string);
} }
if (bg_alpha != 0xff) {
/* This doesn't work how the user is likely to expect - more work needed! */ /* This doesn't work how the user is likely to expect - more work needed! */
fprintf(fsvg, " opacity=\"%.3f\"", bg_alpha_opacity); svg_put_opacity_close(bg_alpha, bg_alpha_opacity, 1 /*close*/, fsvg);
}
} else { } else {
if (circle->width) { if (circle->width) {
fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", fgcolour_string, circle->width); fprintf(fsvg, " stroke=\"#%s\"", fgcolour_string);
svg_put_fattrib(" stroke-width=\"", 3, circle->width, fsvg);
fputs(" fill=\"none\"", fsvg);
} }
if (fg_alpha != 0xff) { svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 1 /*close*/, fsvg);
fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity);
} }
}
fputs(" />\n", fsvg);
circle = circle->next; circle = circle->next;
} }
bold = (symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology); bold = (symbol->output_options & BOLD_TEXT) && !extendable;
string = symbol->vector->strings; string = symbol->vector->strings;
while (string) { while (string) {
const char *const halign = string->halign == 2 ? "end" : string->halign == 1 ? "start" : "middle"; const char *const halign = string->halign == 2 ? "end" : string->halign == 1 ? "start" : "middle";
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"%s\"\n", string->x, string->y, halign); fputs(" <text", fsvg);
fprintf(fsvg, " font-family=\"%s\" font-size=\"%.1f\"", font_family, string->fsize); svg_put_fattrib(" x=\"", 2, string->x, fsvg);
svg_put_fattrib(" y=\"", 2, string->y, fsvg);
fprintf(fsvg, " text-anchor=\"%s\"", halign);
fprintf(fsvg, " font-family=\"%s\"", extendable ? upcean_font_family : font_family);
svg_put_fattrib(" font-size=\"", 1, string->fsize, fsvg);
if (bold) { if (bold) {
fputs(" font-weight=\"bold\"", fsvg); fputs(" font-weight=\"bold\"", fsvg);
} }
if (fg_alpha != 0xff) {
fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity);
}
if (string->rotation != 0) { if (string->rotation != 0) {
fprintf(fsvg, " transform=\"rotate(%d,%.2f,%.2f)\"", string->rotation, string->x, string->y); fprintf(fsvg, " transform=\"rotate(%d", string->rotation);
out_putsf(",", 2, string->x, fsvg);
out_putsf(",", 2, string->y, fsvg);
fputs(")\"", fsvg);
} }
fputs(" >\n", fsvg); svg_put_opacity_close(fg_alpha, fg_alpha_opacity, 0 /*close*/, fsvg);
make_html_friendly(string->text, html_string); svg_make_html_friendly(string->text, html_string);
fprintf(fsvg, " %s\n", html_string); fprintf(fsvg, " %s\n", html_string);
fputs(" </text>\n", fsvg); fputs(" </text>\n", fsvg);
string = string->next; string = string->next;
@ -321,9 +340,6 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
fputs(" </g>\n" fputs(" </g>\n"
"</svg>\n", fsvg); "</svg>\n", fsvg);
if (locale)
setlocale(LC_ALL, locale);
if (ferror(fsvg)) { if (ferror(fsvg)) {
sprintf(symbol->errtxt, "682: Incomplete write to output (%d: %.30s)", errno, strerror(errno)); sprintf(symbol->errtxt, "682: Incomplete write to output (%d: %.30s)", errno, strerror(errno));
if (!output_to_stdout) { if (!output_to_stdout) {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,76 +4,42 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 224 119 %%BoundingBox: 0 0 224 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
118.90 0.00 TB 0.00 224.00 TR 118.9 224 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 100 4 0 18.9 TR
100.00 18.90 TB 0.00 4.00 TR 100 2 6 18.9 TR
TE 100 2 12 18.9 TR
100.00 18.90 TB 6.00 2.00 TR 100 2 22 18.9 TR
TE 100 8 26 18.9 TR
100.00 18.90 TB 12.00 2.00 TR 100 6 36 18.9 TR
TE 100 4 44 18.9 TR
100.00 18.90 TB 22.00 2.00 TR 100 2 54 18.9 TR
TE 100 2 62 18.9 TR
100.00 18.90 TB 26.00 8.00 TR 100 2 66 18.9 TR
TE 100 4 72 18.9 TR
100.00 18.90 TB 36.00 6.00 TR 100 2 78 18.9 TR
TE 100 2 88 18.9 TR
100.00 18.90 TB 44.00 4.00 TR 100 4 98 18.9 TR
TE 100 2 106 18.9 TR
100.00 18.90 TB 54.00 2.00 TR 100 2 110 18.9 TR
TE 100 2 114 18.9 TR
100.00 18.90 TB 62.00 2.00 TR 100 8 120 18.9 TR
TE 100 2 132 18.9 TR
100.00 18.90 TB 66.00 2.00 TR 100 2 138 18.9 TR
TE 100 8 142 18.9 TR
100.00 18.90 TB 72.00 4.00 TR 100 4 154 18.9 TR
TE 100 4 160 18.9 TR
100.00 18.90 TB 78.00 2.00 TR 100 8 166 18.9 TR
TE 100 2 176 18.9 TR
100.00 18.90 TB 88.00 2.00 TR 100 4 184 18.9 TR
TE 100 2 194 18.9 TR
100.00 18.90 TB 98.00 4.00 TR 100 4 198 18.9 TR
TE 100 6 208 18.9 TR
100.00 18.90 TB 106.00 2.00 TR 100 2 216 18.9 TR
TE 100 4 220 18.9 TR
100.00 18.90 TB 110.00 2.00 TR
TE
100.00 18.90 TB 114.00 2.00 TR
TE
100.00 18.90 TB 120.00 8.00 TR
TE
100.00 18.90 TB 132.00 2.00 TR
TE
100.00 18.90 TB 138.00 2.00 TR
TE
100.00 18.90 TB 142.00 8.00 TR
TE
100.00 18.90 TB 154.00 4.00 TR
TE
100.00 18.90 TB 160.00 4.00 TR
TE
100.00 18.90 TB 166.00 8.00 TR
TE
100.00 18.90 TB 176.00 2.00 TR
TE
100.00 18.90 TB 184.00 4.00 TR
TE
100.00 18.90 TB 194.00 2.00 TR
TE
100.00 18.90 TB 198.00 4.00 TR
TE
100.00 18.90 TB 208.00 6.00 TR
TE
100.00 18.90 TB 216.00 2.00 TR
TE
100.00 18.90 TB 220.00 4.00 TR
TE
/Helvetica-Bold findfont /Helvetica-Bold findfont
dup length dict begin dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall {1 index /FID ne {def} {pop pop} ifelse} forall
@ -81,12 +47,7 @@ dup length dict begin
currentdict currentdict
end end
/Helvetica-ISOLatin1 exch definefont pop /Helvetica-ISOLatin1 exch definefont pop
matrix currentmatrix /Helvetica-ISOLatin1 findfont 14 scalefont setfont
/Helvetica-ISOLatin1 findfont 112 4.9 moveto
14.00 scalefont setfont (Égjpqy) stringwidth pop -2 div 0 rmoveto
0 0 moveto 112.00 4.90 translate 0.00 rotate 0 0 moveto
(Égjpqy) stringwidth
pop
-2 div 0 rmoveto
(Égjpqy) show (Égjpqy) show
setmatrix

View File

@ -4,76 +4,42 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 119 224 %%BoundingBox: 0 0 119 224
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
224.00 0.00 TB 0.00 118.90 TR 224 118.9 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 4 100 18.9 220 TR
4.00 220.00 TB 18.90 100.00 TR 2 100 18.9 216 TR
TE 2 100 18.9 210 TR
2.00 216.00 TB 18.90 100.00 TR 2 100 18.9 200 TR
TE 8 100 18.9 190 TR
2.00 210.00 TB 18.90 100.00 TR 6 100 18.9 182 TR
TE 4 100 18.9 176 TR
2.00 200.00 TB 18.90 100.00 TR 2 100 18.9 168 TR
TE 2 100 18.9 160 TR
8.00 190.00 TB 18.90 100.00 TR 2 100 18.9 156 TR
TE 4 100 18.9 148 TR
6.00 182.00 TB 18.90 100.00 TR 2 100 18.9 144 TR
TE 2 100 18.9 134 TR
4.00 176.00 TB 18.90 100.00 TR 4 100 18.9 122 TR
TE 2 100 18.9 116 TR
2.00 168.00 TB 18.90 100.00 TR 2 100 18.9 112 TR
TE 2 100 18.9 108 TR
2.00 160.00 TB 18.90 100.00 TR 8 100 18.9 96 TR
TE 2 100 18.9 90 TR
2.00 156.00 TB 18.90 100.00 TR 2 100 18.9 84 TR
TE 8 100 18.9 74 TR
4.00 148.00 TB 18.90 100.00 TR 4 100 18.9 66 TR
TE 4 100 18.9 60 TR
2.00 144.00 TB 18.90 100.00 TR 8 100 18.9 50 TR
TE 2 100 18.9 46 TR
2.00 134.00 TB 18.90 100.00 TR 4 100 18.9 36 TR
TE 2 100 18.9 28 TR
4.00 122.00 TB 18.90 100.00 TR 4 100 18.9 22 TR
TE 6 100 18.9 10 TR
2.00 116.00 TB 18.90 100.00 TR 2 100 18.9 6 TR
TE 4 100 18.9 0 TR
2.00 112.00 TB 18.90 100.00 TR
TE
2.00 108.00 TB 18.90 100.00 TR
TE
8.00 96.00 TB 18.90 100.00 TR
TE
2.00 90.00 TB 18.90 100.00 TR
TE
2.00 84.00 TB 18.90 100.00 TR
TE
8.00 74.00 TB 18.90 100.00 TR
TE
4.00 66.00 TB 18.90 100.00 TR
TE
4.00 60.00 TB 18.90 100.00 TR
TE
8.00 50.00 TB 18.90 100.00 TR
TE
2.00 46.00 TB 18.90 100.00 TR
TE
4.00 36.00 TB 18.90 100.00 TR
TE
2.00 28.00 TB 18.90 100.00 TR
TE
4.00 22.00 TB 18.90 100.00 TR
TE
6.00 10.00 TB 18.90 100.00 TR
TE
2.00 6.00 TB 18.90 100.00 TR
TE
4.00 0.00 TB 18.90 100.00 TR
TE
/Helvetica-Bold findfont /Helvetica-Bold findfont
dup length dict begin dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall {1 index /FID ne {def} {pop pop} ifelse} forall
@ -81,15 +47,10 @@ dup length dict begin
currentdict currentdict
end end
/Helvetica-ISOLatin1 exch definefont pop /Helvetica-ISOLatin1 exch definefont pop
matrix currentmatrix /Helvetica-ISOLatin1 findfont 14 scalefont setfont
/Helvetica-ISOLatin1 findfont 4.9 112 moveto
14.00 scalefont setfont (Égjpqy) stringwidth pop -2 div 0 rmoveto
0 0 moveto 4.90 112.00 translate 0.00 rotate 0 0 moveto gsave
(Égjpqy) stringwidth 270 rotate
gsave
270 rotate
pop
-2 div 0 rmoveto
(Égjpqy) show (Égjpqy) show
grestore grestore
setmatrix

View File

@ -4,82 +4,45 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 246 119 %%BoundingBox: 0 0 246 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
118.90 0.00 TB 0.00 246.00 TR 118.9 246 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 100 4 0 18.9 TR
100.00 18.90 TB 0.00 4.00 TR 100 2 6 18.9 TR
TE 100 2 12 18.9 TR
100.00 18.90 TB 6.00 2.00 TR 100 2 22 18.9 TR
TE 100 2 26 18.9 TR
100.00 18.90 TB 12.00 2.00 TR 100 4 34 18.9 TR
TE 100 6 44 18.9 TR
100.00 18.90 TB 22.00 2.00 TR 100 8 52 18.9 TR
TE 100 2 62 18.9 TR
100.00 18.90 TB 26.00 2.00 TR 100 2 66 18.9 TR
TE 100 2 74 18.9 TR
100.00 18.90 TB 34.00 4.00 TR 100 4 78 18.9 TR
TE 100 4 88 18.9 TR
100.00 18.90 TB 44.00 6.00 TR 100 2 96 18.9 TR
TE 100 2 102 18.9 TR
100.00 18.90 TB 52.00 8.00 TR 100 2 110 18.9 TR
TE 100 8 114 18.9 TR
100.00 18.90 TB 62.00 2.00 TR 100 6 124 18.9 TR
TE 100 2 132 18.9 TR
100.00 18.90 TB 66.00 2.00 TR 100 4 138 18.9 TR
TE 100 2 144 18.9 TR
100.00 18.90 TB 74.00 2.00 TR 100 2 154 18.9 TR
TE 100 4 162 18.9 TR
100.00 18.90 TB 78.00 4.00 TR 100 2 170 18.9 TR
TE 100 2 176 18.9 TR
100.00 18.90 TB 88.00 4.00 TR 100 4 180 18.9 TR
TE 100 2 190 18.9 TR
100.00 18.90 TB 96.00 2.00 TR 100 2 198 18.9 TR
TE 100 6 204 18.9 TR
100.00 18.90 TB 102.00 2.00 TR 100 4 214 18.9 TR
TE 100 4 220 18.9 TR
100.00 18.90 TB 110.00 2.00 TR 100 6 230 18.9 TR
TE 100 2 238 18.9 TR
100.00 18.90 TB 114.00 8.00 TR 100 4 242 18.9 TR
TE
100.00 18.90 TB 124.00 6.00 TR
TE
100.00 18.90 TB 132.00 2.00 TR
TE
100.00 18.90 TB 138.00 4.00 TR
TE
100.00 18.90 TB 144.00 2.00 TR
TE
100.00 18.90 TB 154.00 2.00 TR
TE
100.00 18.90 TB 162.00 4.00 TR
TE
100.00 18.90 TB 170.00 2.00 TR
TE
100.00 18.90 TB 176.00 2.00 TR
TE
100.00 18.90 TB 180.00 4.00 TR
TE
100.00 18.90 TB 190.00 2.00 TR
TE
100.00 18.90 TB 198.00 2.00 TR
TE
100.00 18.90 TB 204.00 6.00 TR
TE
100.00 18.90 TB 214.00 4.00 TR
TE
100.00 18.90 TB 220.00 4.00 TR
TE
100.00 18.90 TB 230.00 6.00 TR
TE
100.00 18.90 TB 238.00 2.00 TR
TE
100.00 18.90 TB 242.00 4.00 TR
TE
/Helvetica findfont /Helvetica findfont
dup length dict begin dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall {1 index /FID ne {def} {pop pop} ifelse} forall
@ -87,12 +50,7 @@ dup length dict begin
currentdict currentdict
end end
/Helvetica-ISOLatin1 exch definefont pop /Helvetica-ISOLatin1 exch definefont pop
matrix currentmatrix /Helvetica-ISOLatin1 findfont 14 scalefont setfont
/Helvetica-ISOLatin1 findfont 123 4.9 moveto
14.00 scalefont setfont (A\\B\)ç\(D) stringwidth pop -2 div 0 rmoveto
0 0 moveto 123.00 4.90 translate 0.00 rotate 0 0 moveto
(A\\B\)ç\(D) stringwidth
pop
-2 div 0 rmoveto
(A\\B\)ç\(D) show (A\\B\)ç\(D) show
setmatrix

View File

@ -4,70 +4,37 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 128 119 %%BoundingBox: 0 0 128 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.99 0.59 0.19 setrgbcolor 0.99 0.59 0.19 setrgbcolor
118.90 0.00 TB 0.00 128.00 TR 118.9 128 0 0 TR
TE
0.08 0.48 0.82 setrgbcolor 0.08 0.48 0.82 setrgbcolor
100.00 18.90 TB 0.00 2.00 TR 100 2 0 18.9 TR
TE 100 2 6 18.9 TR
100.00 18.90 TB 6.00 2.00 TR 100 4 10 18.9 TR
TE 100 4 16 18.9 TR
100.00 18.90 TB 10.00 4.00 TR 100 2 22 18.9 TR
TE 100 4 26 18.9 TR
100.00 18.90 TB 16.00 4.00 TR 100 2 32 18.9 TR
TE 100 2 38 18.9 TR
100.00 18.90 TB 22.00 2.00 TR 100 2 42 18.9 TR
TE 100 4 46 18.9 TR
100.00 18.90 TB 26.00 4.00 TR 100 2 52 18.9 TR
TE 100 4 56 18.9 TR
100.00 18.90 TB 32.00 2.00 TR 100 2 64 18.9 TR
TE 100 2 68 18.9 TR
100.00 18.90 TB 38.00 2.00 TR 100 4 72 18.9 TR
TE 100 4 78 18.9 TR
100.00 18.90 TB 42.00 2.00 TR 100 4 84 18.9 TR
TE 100 2 92 18.9 TR
100.00 18.90 TB 46.00 4.00 TR 100 2 96 18.9 TR
TE 100 2 100 18.9 TR
100.00 18.90 TB 52.00 2.00 TR 100 2 104 18.9 TR
TE 100 2 110 18.9 TR
100.00 18.90 TB 56.00 4.00 TR 100 4 114 18.9 TR
TE 100 4 120 18.9 TR
100.00 18.90 TB 64.00 2.00 TR 100 2 126 18.9 TR
TE /Helvetica findfont 14 scalefont setfont
100.00 18.90 TB 68.00 2.00 TR 64 4.9 moveto
TE (*123*) stringwidth pop -2 div 0 rmoveto
100.00 18.90 TB 72.00 4.00 TR
TE
100.00 18.90 TB 78.00 4.00 TR
TE
100.00 18.90 TB 84.00 4.00 TR
TE
100.00 18.90 TB 92.00 2.00 TR
TE
100.00 18.90 TB 96.00 2.00 TR
TE
100.00 18.90 TB 100.00 2.00 TR
TE
100.00 18.90 TB 104.00 2.00 TR
TE
100.00 18.90 TB 110.00 2.00 TR
TE
100.00 18.90 TB 114.00 4.00 TR
TE
100.00 18.90 TB 120.00 4.00 TR
TE
100.00 18.90 TB 126.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto
(*123*) stringwidth
pop
-2 div 0 rmoveto
(*123*) show (*123*) show
setmatrix

View File

@ -4,70 +4,37 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 128 119 %%BoundingBox: 0 0 128 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.00 0.40 0.81 0.01 setcmykcolor 0 0.4 0.81 0.01 setcmykcolor
118.90 0.00 TB 0.00 128.00 TR 118.9 128 0 0 TR
TE 0.9 0.41 0 0.18 setcmykcolor
0.90 0.41 0.00 0.18 setcmykcolor 100 2 0 18.9 TR
100.00 18.90 TB 0.00 2.00 TR 100 2 6 18.9 TR
TE 100 4 10 18.9 TR
100.00 18.90 TB 6.00 2.00 TR 100 4 16 18.9 TR
TE 100 2 22 18.9 TR
100.00 18.90 TB 10.00 4.00 TR 100 4 26 18.9 TR
TE 100 2 32 18.9 TR
100.00 18.90 TB 16.00 4.00 TR 100 2 38 18.9 TR
TE 100 2 42 18.9 TR
100.00 18.90 TB 22.00 2.00 TR 100 4 46 18.9 TR
TE 100 2 52 18.9 TR
100.00 18.90 TB 26.00 4.00 TR 100 4 56 18.9 TR
TE 100 2 64 18.9 TR
100.00 18.90 TB 32.00 2.00 TR 100 2 68 18.9 TR
TE 100 4 72 18.9 TR
100.00 18.90 TB 38.00 2.00 TR 100 4 78 18.9 TR
TE 100 4 84 18.9 TR
100.00 18.90 TB 42.00 2.00 TR 100 2 92 18.9 TR
TE 100 2 96 18.9 TR
100.00 18.90 TB 46.00 4.00 TR 100 2 100 18.9 TR
TE 100 2 104 18.9 TR
100.00 18.90 TB 52.00 2.00 TR 100 2 110 18.9 TR
TE 100 4 114 18.9 TR
100.00 18.90 TB 56.00 4.00 TR 100 4 120 18.9 TR
TE 100 2 126 18.9 TR
100.00 18.90 TB 64.00 2.00 TR /Helvetica findfont 14 scalefont setfont
TE 64 4.9 moveto
100.00 18.90 TB 68.00 2.00 TR (*123*) stringwidth pop -2 div 0 rmoveto
TE
100.00 18.90 TB 72.00 4.00 TR
TE
100.00 18.90 TB 78.00 4.00 TR
TE
100.00 18.90 TB 84.00 4.00 TR
TE
100.00 18.90 TB 92.00 2.00 TR
TE
100.00 18.90 TB 96.00 2.00 TR
TE
100.00 18.90 TB 100.00 2.00 TR
TE
100.00 18.90 TB 104.00 2.00 TR
TE
100.00 18.90 TB 110.00 2.00 TR
TE
100.00 18.90 TB 114.00 4.00 TR
TE
100.00 18.90 TB 120.00 4.00 TR
TE
100.00 18.90 TB 126.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto
(*123*) stringwidth
pop
-2 div 0 rmoveto
(*123*) show (*123*) show
setmatrix

View File

@ -4,67 +4,35 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 128 119 %%BoundingBox: 0 0 128 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.90 0.40 0.00 0.09 setcmykcolor 0.9 0.4 0 0.09 setcmykcolor
100.00 18.90 TB 0.00 2.00 TR 100 2 0 18.9 TR
TE 100 2 6 18.9 TR
100.00 18.90 TB 6.00 2.00 TR 100 4 10 18.9 TR
TE 100 4 16 18.9 TR
100.00 18.90 TB 10.00 4.00 TR 100 2 22 18.9 TR
TE 100 4 26 18.9 TR
100.00 18.90 TB 16.00 4.00 TR 100 2 32 18.9 TR
TE 100 2 38 18.9 TR
100.00 18.90 TB 22.00 2.00 TR 100 2 42 18.9 TR
TE 100 4 46 18.9 TR
100.00 18.90 TB 26.00 4.00 TR 100 2 52 18.9 TR
TE 100 4 56 18.9 TR
100.00 18.90 TB 32.00 2.00 TR 100 2 64 18.9 TR
TE 100 2 68 18.9 TR
100.00 18.90 TB 38.00 2.00 TR 100 4 72 18.9 TR
TE 100 4 78 18.9 TR
100.00 18.90 TB 42.00 2.00 TR 100 4 84 18.9 TR
TE 100 2 92 18.9 TR
100.00 18.90 TB 46.00 4.00 TR 100 2 96 18.9 TR
TE 100 2 100 18.9 TR
100.00 18.90 TB 52.00 2.00 TR 100 2 104 18.9 TR
TE 100 2 110 18.9 TR
100.00 18.90 TB 56.00 4.00 TR 100 4 114 18.9 TR
TE 100 4 120 18.9 TR
100.00 18.90 TB 64.00 2.00 TR 100 2 126 18.9 TR
TE /Helvetica findfont 14 scalefont setfont
100.00 18.90 TB 68.00 2.00 TR 64 4.9 moveto
TE (*123*) stringwidth pop -2 div 0 rmoveto
100.00 18.90 TB 72.00 4.00 TR
TE
100.00 18.90 TB 78.00 4.00 TR
TE
100.00 18.90 TB 84.00 4.00 TR
TE
100.00 18.90 TB 92.00 2.00 TR
TE
100.00 18.90 TB 96.00 2.00 TR
TE
100.00 18.90 TB 100.00 2.00 TR
TE
100.00 18.90 TB 104.00 2.00 TR
TE
100.00 18.90 TB 110.00 2.00 TR
TE
100.00 18.90 TB 114.00 4.00 TR
TE
100.00 18.90 TB 120.00 4.00 TR
TE
100.00 18.90 TB 126.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto
(*123*) stringwidth
pop
-2 div 0 rmoveto
(*123*) show (*123*) show
setmatrix

View File

@ -4,66 +4,35 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 158 119 %%BoundingBox: 0 0 158 119
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
118.90 0.00 TB 0.00 158.00 TR 118.9 158 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 100 2 2 18.9 TR
100.00 18.90 TB 2.00 2.00 TR 100 4 10 18.9 TR
TE 100 4 18 18.9 TR
100.00 18.90 TB 10.00 4.00 TR 100 4 28 18.9 TR
TE 100 4 34 18.9 TR
100.00 18.90 TB 18.00 4.00 TR 100 2 40 18.9 TR
TE 100 2 44 18.9 TR
100.00 18.90 TB 28.00 4.00 TR 100 6 50 18.9 TR
TE 100 2 58 18.9 TR
100.00 18.90 TB 34.00 4.00 TR 100 2 64 18.9 TR
TE 100 2 68 18.9 TR
100.00 18.90 TB 40.00 2.00 TR 100 4 72 18.9 TR
TE 100 2 78 18.9 TR
100.00 18.90 TB 44.00 2.00 TR 100 4 84 18.9 TR
TE 100 2 90 18.9 TR
100.00 18.90 TB 50.00 6.00 TR 100 2 96 18.9 TR
TE 100 2 102 18.9 TR
100.00 18.90 TB 58.00 2.00 TR 100 4 106 18.9 TR
TE 100 4 116 18.9 TR
100.00 18.90 TB 64.00 2.00 TR 100 6 122 18.9 TR
TE 100 4 132 18.9 TR
100.00 18.90 TB 68.00 2.00 TR 100 4 140 18.9 TR
TE 100 2 146 18.9 TR
100.00 18.90 TB 72.00 4.00 TR /Helvetica-Bold findfont 14 scalefont setfont
TE 79 4.9 moveto
100.00 18.90 TB 78.00 2.00 TR (\(01\)15012345678907) stringwidth pop -2 div 0 rmoveto
TE
100.00 18.90 TB 84.00 4.00 TR
TE
100.00 18.90 TB 90.00 2.00 TR
TE
100.00 18.90 TB 96.00 2.00 TR
TE
100.00 18.90 TB 102.00 2.00 TR
TE
100.00 18.90 TB 106.00 4.00 TR
TE
100.00 18.90 TB 116.00 4.00 TR
TE
100.00 18.90 TB 122.00 6.00 TR
TE
100.00 18.90 TB 132.00 4.00 TR
TE
100.00 18.90 TB 140.00 4.00 TR
TE
100.00 18.90 TB 146.00 2.00 TR
TE
matrix currentmatrix
/Helvetica-Bold findfont
14.00 scalefont setfont
0 0 moveto 79.00 4.90 translate 0.00 rotate 0 0 moveto
(\(01\)15012345678907) stringwidth
pop
-2 div 0 rmoveto
(\(01\)15012345678907) show (\(01\)15012345678907) show
setmatrix

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 3 2 %%BoundingBox: 0 0 3 2
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
1.60 0.00 TB 0.00 2.20 TR 1.6 2.2 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 0.1 1.5 0.08 TD
0.10 1.50 0.08 TD 0.9 1.5 0.08 TD
0.90 1.50 0.08 TD 1.3 1.5 0.08 TD
1.30 1.50 0.08 TD 1.7 1.5 0.08 TD
1.70 1.50 0.08 TD 2.1 1.5 0.08 TD
2.10 1.50 0.08 TD 0.7 1.3 0.08 TD
0.70 1.30 0.08 TD 1.1 1.3 0.08 TD
1.10 1.30 0.08 TD 1.5 1.3 0.08 TD
1.50 1.30 0.08 TD 0.1 1.1 0.08 TD
0.10 1.10 0.08 TD 0.5 1.1 0.08 TD
0.50 1.10 0.08 TD 1.3 1.1 0.08 TD
1.30 1.10 0.08 TD 1.7 1.1 0.08 TD
1.70 1.10 0.08 TD 2.1 1.1 0.08 TD
2.10 1.10 0.08 TD 0.3 0.9 0.08 TD
0.30 0.90 0.08 TD 0.1 0.7 0.08 TD
0.10 0.70 0.08 TD 2.1 0.7 0.08 TD
2.10 0.70 0.08 TD 0.3 0.5 0.08 TD
0.30 0.50 0.08 TD 0.7 0.5 0.08 TD
0.70 0.50 0.08 TD 1.1 0.5 0.08 TD
1.10 0.50 0.08 TD 1.5 0.5 0.08 TD
1.50 0.50 0.08 TD 0.1 0.3 0.08 TD
0.10 0.30 0.08 TD 0.5 0.3 0.08 TD
0.50 0.30 0.08 TD 1.7 0.3 0.08 TD
1.70 0.30 0.08 TD 2.1 0.3 0.08 TD
2.10 0.30 0.08 TD 0.3 0.1 0.08 TD
0.30 0.10 0.08 TD 0.7 0.1 0.08 TD
0.70 0.10 0.08 TD 1.5 0.1 0.08 TD
1.50 0.10 0.08 TD 1.9 0.1 0.08 TD
1.90 0.10 0.08 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 22 16 %%BoundingBox: 0 0 22 16
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
16.00 0.00 TB 0.00 22.00 TR 16 22 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1 15 0.8 TD
1.00 15.00 0.80 TD 9 15 0.8 TD
9.00 15.00 0.80 TD 13 15 0.8 TD
13.00 15.00 0.80 TD 17 15 0.8 TD
17.00 15.00 0.80 TD 21 15 0.8 TD
21.00 15.00 0.80 TD 7 13 0.8 TD
7.00 13.00 0.80 TD 11 13 0.8 TD
11.00 13.00 0.80 TD 15 13 0.8 TD
15.00 13.00 0.80 TD 1 11 0.8 TD
1.00 11.00 0.80 TD 5 11 0.8 TD
5.00 11.00 0.80 TD 13 11 0.8 TD
13.00 11.00 0.80 TD 17 11 0.8 TD
17.00 11.00 0.80 TD 21 11 0.8 TD
21.00 11.00 0.80 TD 3 9 0.8 TD
3.00 9.00 0.80 TD 1 7 0.8 TD
1.00 7.00 0.80 TD 21 7 0.8 TD
21.00 7.00 0.80 TD 3 5 0.8 TD
3.00 5.00 0.80 TD 7 5 0.8 TD
7.00 5.00 0.80 TD 11 5 0.8 TD
11.00 5.00 0.80 TD 15 5 0.8 TD
15.00 5.00 0.80 TD 1 3 0.8 TD
1.00 3.00 0.80 TD 5 3 0.8 TD
5.00 3.00 0.80 TD 17 3 0.8 TD
17.00 3.00 0.80 TD 21 3 0.8 TD
21.00 3.00 0.80 TD 3 1 0.8 TD
3.00 1.00 0.80 TD 7 1 0.8 TD
7.00 1.00 0.80 TD 15 1 0.8 TD
15.00 1.00 0.80 TD 19 1 0.8 TD
19.00 1.00 0.80 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 22 16 %%BoundingBox: 0 0 22 16
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
16.00 0.00 TB 0.00 22.00 TR 16 22 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1 15 0.1 TD
1.00 15.00 0.10 TD 9 15 0.1 TD
9.00 15.00 0.10 TD 13 15 0.1 TD
13.00 15.00 0.10 TD 17 15 0.1 TD
17.00 15.00 0.10 TD 21 15 0.1 TD
21.00 15.00 0.10 TD 7 13 0.1 TD
7.00 13.00 0.10 TD 11 13 0.1 TD
11.00 13.00 0.10 TD 15 13 0.1 TD
15.00 13.00 0.10 TD 1 11 0.1 TD
1.00 11.00 0.10 TD 5 11 0.1 TD
5.00 11.00 0.10 TD 13 11 0.1 TD
13.00 11.00 0.10 TD 17 11 0.1 TD
17.00 11.00 0.10 TD 21 11 0.1 TD
21.00 11.00 0.10 TD 3 9 0.1 TD
3.00 9.00 0.10 TD 1 7 0.1 TD
1.00 7.00 0.10 TD 21 7 0.1 TD
21.00 7.00 0.10 TD 3 5 0.1 TD
3.00 5.00 0.10 TD 7 5 0.1 TD
7.00 5.00 0.10 TD 11 5 0.1 TD
11.00 5.00 0.10 TD 15 5 0.1 TD
15.00 5.00 0.10 TD 1 3 0.1 TD
1.00 3.00 0.10 TD 5 3 0.1 TD
5.00 3.00 0.10 TD 17 3 0.1 TD
17.00 3.00 0.10 TD 21 3 0.1 TD
21.00 3.00 0.10 TD 3 1 0.1 TD
3.00 1.00 0.10 TD 7 1 0.1 TD
7.00 1.00 0.10 TD 15 1 0.1 TD
15.00 1.00 0.10 TD 19 1 0.1 TD
19.00 1.00 0.10 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 23 17 %%BoundingBox: 0 0 23 17
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
16.40 0.00 TB 0.00 22.40 TR 16.4 22.4 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1.2 15.2 1.1 TD
1.20 15.20 1.10 TD 9.2 15.2 1.1 TD
9.20 15.20 1.10 TD 13.2 15.2 1.1 TD
13.20 15.20 1.10 TD 17.2 15.2 1.1 TD
17.20 15.20 1.10 TD 21.2 15.2 1.1 TD
21.20 15.20 1.10 TD 7.2 13.2 1.1 TD
7.20 13.20 1.10 TD 11.2 13.2 1.1 TD
11.20 13.20 1.10 TD 15.2 13.2 1.1 TD
15.20 13.20 1.10 TD 1.2 11.2 1.1 TD
1.20 11.20 1.10 TD 5.2 11.2 1.1 TD
5.20 11.20 1.10 TD 13.2 11.2 1.1 TD
13.20 11.20 1.10 TD 17.2 11.2 1.1 TD
17.20 11.20 1.10 TD 21.2 11.2 1.1 TD
21.20 11.20 1.10 TD 3.2 9.2 1.1 TD
3.20 9.20 1.10 TD 1.2 7.2 1.1 TD
1.20 7.20 1.10 TD 21.2 7.2 1.1 TD
21.20 7.20 1.10 TD 3.2 5.2 1.1 TD
3.20 5.20 1.10 TD 7.2 5.2 1.1 TD
7.20 5.20 1.10 TD 11.2 5.2 1.1 TD
11.20 5.20 1.10 TD 15.2 5.2 1.1 TD
15.20 5.20 1.10 TD 1.2 3.2 1.1 TD
1.20 3.20 1.10 TD 5.2 3.2 1.1 TD
5.20 3.20 1.10 TD 17.2 3.2 1.1 TD
17.20 3.20 1.10 TD 21.2 3.2 1.1 TD
21.20 3.20 1.10 TD 3.2 1.2 1.1 TD
3.20 1.20 1.10 TD 7.2 1.2 1.1 TD
7.20 1.20 1.10 TD 15.2 1.2 1.1 TD
15.20 1.20 1.10 TD 19.2 1.2 1.1 TD
19.20 1.20 1.10 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 33 24 %%BoundingBox: 0 0 33 24
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
24.00 0.00 TB 0.00 33.00 TR 24 33 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1.5 22.5 1.2 TD
1.50 22.50 1.20 TD 13.5 22.5 1.2 TD
13.50 22.50 1.20 TD 19.5 22.5 1.2 TD
19.50 22.50 1.20 TD 25.5 22.5 1.2 TD
25.50 22.50 1.20 TD 31.5 22.5 1.2 TD
31.50 22.50 1.20 TD 10.5 19.5 1.2 TD
10.50 19.50 1.20 TD 16.5 19.5 1.2 TD
16.50 19.50 1.20 TD 22.5 19.5 1.2 TD
22.50 19.50 1.20 TD 1.5 16.5 1.2 TD
1.50 16.50 1.20 TD 7.5 16.5 1.2 TD
7.50 16.50 1.20 TD 19.5 16.5 1.2 TD
19.50 16.50 1.20 TD 25.5 16.5 1.2 TD
25.50 16.50 1.20 TD 31.5 16.5 1.2 TD
31.50 16.50 1.20 TD 4.5 13.5 1.2 TD
4.50 13.50 1.20 TD 1.5 10.5 1.2 TD
1.50 10.50 1.20 TD 31.5 10.5 1.2 TD
31.50 10.50 1.20 TD 4.5 7.5 1.2 TD
4.50 7.50 1.20 TD 10.5 7.5 1.2 TD
10.50 7.50 1.20 TD 16.5 7.5 1.2 TD
16.50 7.50 1.20 TD 22.5 7.5 1.2 TD
22.50 7.50 1.20 TD 1.5 4.5 1.2 TD
1.50 4.50 1.20 TD 7.5 4.5 1.2 TD
7.50 4.50 1.20 TD 25.5 4.5 1.2 TD
25.50 4.50 1.20 TD 31.5 4.5 1.2 TD
31.50 4.50 1.20 TD 4.5 1.5 1.2 TD
4.50 1.50 1.20 TD 10.5 1.5 1.2 TD
10.50 1.50 1.20 TD 22.5 1.5 1.2 TD
22.50 1.50 1.20 TD 28.5 1.5 1.2 TD
28.50 1.50 1.20 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 33 24 %%BoundingBox: 0 0 33 24
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
24.00 0.00 TB 0.00 33.00 TR 24 33 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1.5 22.5 0.6 TD
1.50 22.50 0.60 TD 13.5 22.5 0.6 TD
13.50 22.50 0.60 TD 19.5 22.5 0.6 TD
19.50 22.50 0.60 TD 25.5 22.5 0.6 TD
25.50 22.50 0.60 TD 31.5 22.5 0.6 TD
31.50 22.50 0.60 TD 10.5 19.5 0.6 TD
10.50 19.50 0.60 TD 16.5 19.5 0.6 TD
16.50 19.50 0.60 TD 22.5 19.5 0.6 TD
22.50 19.50 0.60 TD 1.5 16.5 0.6 TD
1.50 16.50 0.60 TD 7.5 16.5 0.6 TD
7.50 16.50 0.60 TD 19.5 16.5 0.6 TD
19.50 16.50 0.60 TD 25.5 16.5 0.6 TD
25.50 16.50 0.60 TD 31.5 16.5 0.6 TD
31.50 16.50 0.60 TD 4.5 13.5 0.6 TD
4.50 13.50 0.60 TD 1.5 10.5 0.6 TD
1.50 10.50 0.60 TD 31.5 10.5 0.6 TD
31.50 10.50 0.60 TD 4.5 7.5 0.6 TD
4.50 7.50 0.60 TD 10.5 7.5 0.6 TD
10.50 7.50 0.60 TD 16.5 7.5 0.6 TD
16.50 7.50 0.60 TD 22.5 7.5 0.6 TD
22.50 7.50 0.60 TD 1.5 4.5 0.6 TD
1.50 4.50 0.60 TD 7.5 4.5 0.6 TD
7.50 4.50 0.60 TD 25.5 4.5 0.6 TD
25.50 4.50 0.60 TD 31.5 4.5 0.6 TD
31.50 4.50 0.60 TD 4.5 1.5 0.6 TD
4.50 1.50 0.60 TD 10.5 1.5 0.6 TD
10.50 1.50 0.60 TD 22.5 1.5 0.6 TD
22.50 1.50 0.60 TD 28.5 1.5 0.6 TD
28.50 1.50 0.60 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 34 25 %%BoundingBox: 0 0 34 25
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
24.60 0.00 TB 0.00 33.60 TR 24.6 33.6 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 1.8 22.8 1.65 TD
1.80 22.80 1.65 TD 13.8 22.8 1.65 TD
13.80 22.80 1.65 TD 19.8 22.8 1.65 TD
19.80 22.80 1.65 TD 25.8 22.8 1.65 TD
25.80 22.80 1.65 TD 31.8 22.8 1.65 TD
31.80 22.80 1.65 TD 10.8 19.8 1.65 TD
10.80 19.80 1.65 TD 16.8 19.8 1.65 TD
16.80 19.80 1.65 TD 22.8 19.8 1.65 TD
22.80 19.80 1.65 TD 1.8 16.8 1.65 TD
1.80 16.80 1.65 TD 7.8 16.8 1.65 TD
7.80 16.80 1.65 TD 19.8 16.8 1.65 TD
19.80 16.80 1.65 TD 25.8 16.8 1.65 TD
25.80 16.80 1.65 TD 31.8 16.8 1.65 TD
31.80 16.80 1.65 TD 4.8 13.8 1.65 TD
4.80 13.80 1.65 TD 1.8 10.8 1.65 TD
1.80 10.80 1.65 TD 31.8 10.8 1.65 TD
31.80 10.80 1.65 TD 4.8 7.8 1.65 TD
4.80 7.80 1.65 TD 10.8 7.8 1.65 TD
10.80 7.80 1.65 TD 16.8 7.8 1.65 TD
16.80 7.80 1.65 TD 22.8 7.8 1.65 TD
22.80 7.80 1.65 TD 1.8 4.8 1.65 TD
1.80 4.80 1.65 TD 7.8 4.8 1.65 TD
7.80 4.80 1.65 TD 25.8 4.8 1.65 TD
25.80 4.80 1.65 TD 31.8 4.8 1.65 TD
31.80 4.80 1.65 TD 4.8 1.8 1.65 TD
4.80 1.80 1.65 TD 10.8 1.8 1.65 TD
10.80 1.80 1.65 TD 22.8 1.8 1.65 TD
22.80 1.80 1.65 TD 28.8 1.8 1.65 TD
28.80 1.80 1.65 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 37 28 %%BoundingBox: 0 0 37 28
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
27.60 0.00 TB 0.00 36.60 TR 27.6 36.6 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3.3 24.3 3.15 TD
3.30 24.30 3.15 TD 15.3 24.3 3.15 TD
15.30 24.30 3.15 TD 21.3 24.3 3.15 TD
21.30 24.30 3.15 TD 27.3 24.3 3.15 TD
27.30 24.30 3.15 TD 33.3 24.3 3.15 TD
33.30 24.30 3.15 TD 12.3 21.3 3.15 TD
12.30 21.30 3.15 TD 18.3 21.3 3.15 TD
18.30 21.30 3.15 TD 24.3 21.3 3.15 TD
24.30 21.30 3.15 TD 3.3 18.3 3.15 TD
3.30 18.30 3.15 TD 9.3 18.3 3.15 TD
9.30 18.30 3.15 TD 21.3 18.3 3.15 TD
21.30 18.30 3.15 TD 27.3 18.3 3.15 TD
27.30 18.30 3.15 TD 33.3 18.3 3.15 TD
33.30 18.30 3.15 TD 6.3 15.3 3.15 TD
6.30 15.30 3.15 TD 3.3 12.3 3.15 TD
3.30 12.30 3.15 TD 33.3 12.3 3.15 TD
33.30 12.30 3.15 TD 6.3 9.3 3.15 TD
6.30 9.30 3.15 TD 12.3 9.3 3.15 TD
12.30 9.30 3.15 TD 18.3 9.3 3.15 TD
18.30 9.30 3.15 TD 24.3 9.3 3.15 TD
24.30 9.30 3.15 TD 3.3 6.3 3.15 TD
3.30 6.30 3.15 TD 9.3 6.3 3.15 TD
9.30 6.30 3.15 TD 27.3 6.3 3.15 TD
27.30 6.30 3.15 TD 33.3 6.3 3.15 TD
33.30 6.30 3.15 TD 6.3 3.3 3.15 TD
6.30 3.30 3.15 TD 12.3 3.3 3.15 TD
12.30 3.30 3.15 TD 24.3 3.3 3.15 TD
24.30 3.30 3.15 TD 30.3 3.3 3.15 TD
30.30 3.30 3.15 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 44 32 %%BoundingBox: 0 0 44 32
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
32.00 0.00 TB 0.00 44.00 TR 32 44 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 2 30 1.6 TD
2.00 30.00 1.60 TD 18 30 1.6 TD
18.00 30.00 1.60 TD 26 30 1.6 TD
26.00 30.00 1.60 TD 34 30 1.6 TD
34.00 30.00 1.60 TD 42 30 1.6 TD
42.00 30.00 1.60 TD 14 26 1.6 TD
14.00 26.00 1.60 TD 22 26 1.6 TD
22.00 26.00 1.60 TD 30 26 1.6 TD
30.00 26.00 1.60 TD 2 22 1.6 TD
2.00 22.00 1.60 TD 10 22 1.6 TD
10.00 22.00 1.60 TD 26 22 1.6 TD
26.00 22.00 1.60 TD 34 22 1.6 TD
34.00 22.00 1.60 TD 42 22 1.6 TD
42.00 22.00 1.60 TD 6 18 1.6 TD
6.00 18.00 1.60 TD 2 14 1.6 TD
2.00 14.00 1.60 TD 42 14 1.6 TD
42.00 14.00 1.60 TD 6 10 1.6 TD
6.00 10.00 1.60 TD 14 10 1.6 TD
14.00 10.00 1.60 TD 22 10 1.6 TD
22.00 10.00 1.60 TD 30 10 1.6 TD
30.00 10.00 1.60 TD 2 6 1.6 TD
2.00 6.00 1.60 TD 10 6 1.6 TD
10.00 6.00 1.60 TD 34 6 1.6 TD
34.00 6.00 1.60 TD 42 6 1.6 TD
42.00 6.00 1.60 TD 6 2 1.6 TD
6.00 2.00 1.60 TD 14 2 1.6 TD
14.00 2.00 1.60 TD 30 2 1.6 TD
30.00 2.00 1.60 TD 38 2 1.6 TD
38.00 2.00 1.60 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 44 32 %%BoundingBox: 0 0 44 32
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
32.00 0.00 TB 0.00 44.00 TR 32 44 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 2 30 1.8 TD
2.00 30.00 1.80 TD 18 30 1.8 TD
18.00 30.00 1.80 TD 26 30 1.8 TD
26.00 30.00 1.80 TD 34 30 1.8 TD
34.00 30.00 1.80 TD 42 30 1.8 TD
42.00 30.00 1.80 TD 14 26 1.8 TD
14.00 26.00 1.80 TD 22 26 1.8 TD
22.00 26.00 1.80 TD 30 26 1.8 TD
30.00 26.00 1.80 TD 2 22 1.8 TD
2.00 22.00 1.80 TD 10 22 1.8 TD
10.00 22.00 1.80 TD 26 22 1.8 TD
26.00 22.00 1.80 TD 34 22 1.8 TD
34.00 22.00 1.80 TD 42 22 1.8 TD
42.00 22.00 1.80 TD 6 18 1.8 TD
6.00 18.00 1.80 TD 2 14 1.8 TD
2.00 14.00 1.80 TD 42 14 1.8 TD
42.00 14.00 1.80 TD 6 10 1.8 TD
6.00 10.00 1.80 TD 14 10 1.8 TD
14.00 10.00 1.80 TD 22 10 1.8 TD
22.00 10.00 1.80 TD 30 10 1.8 TD
30.00 10.00 1.80 TD 2 6 1.8 TD
2.00 6.00 1.80 TD 10 6 1.8 TD
10.00 6.00 1.80 TD 34 6 1.8 TD
34.00 6.00 1.80 TD 42 6 1.8 TD
42.00 6.00 1.80 TD 6 2 1.8 TD
6.00 2.00 1.80 TD 14 2 1.8 TD
14.00 2.00 1.80 TD 30 2 1.8 TD
30.00 2.00 1.80 TD 38 2 1.8 TD
38.00 2.00 1.80 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 45 33 %%BoundingBox: 0 0 45 33
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
32.80 0.00 TB 0.00 44.80 TR 32.8 44.8 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 2.4 30.4 2.2 TD
2.40 30.40 2.20 TD 18.4 30.4 2.2 TD
18.40 30.40 2.20 TD 26.4 30.4 2.2 TD
26.40 30.40 2.20 TD 34.4 30.4 2.2 TD
34.40 30.40 2.20 TD 42.4 30.4 2.2 TD
42.40 30.40 2.20 TD 14.4 26.4 2.2 TD
14.40 26.40 2.20 TD 22.4 26.4 2.2 TD
22.40 26.40 2.20 TD 30.4 26.4 2.2 TD
30.40 26.40 2.20 TD 2.4 22.4 2.2 TD
2.40 22.40 2.20 TD 10.4 22.4 2.2 TD
10.40 22.40 2.20 TD 26.4 22.4 2.2 TD
26.40 22.40 2.20 TD 34.4 22.4 2.2 TD
34.40 22.40 2.20 TD 42.4 22.4 2.2 TD
42.40 22.40 2.20 TD 6.4 18.4 2.2 TD
6.40 18.40 2.20 TD 2.4 14.4 2.2 TD
2.40 14.40 2.20 TD 42.4 14.4 2.2 TD
42.40 14.40 2.20 TD 6.4 10.4 2.2 TD
6.40 10.40 2.20 TD 14.4 10.4 2.2 TD
14.40 10.40 2.20 TD 22.4 10.4 2.2 TD
22.40 10.40 2.20 TD 30.4 10.4 2.2 TD
30.40 10.40 2.20 TD 2.4 6.4 2.2 TD
2.40 6.40 2.20 TD 10.4 6.4 2.2 TD
10.40 6.40 2.20 TD 34.4 6.4 2.2 TD
34.40 6.40 2.20 TD 42.4 6.4 2.2 TD
42.40 6.40 2.20 TD 6.4 2.4 2.2 TD
6.40 2.40 2.20 TD 14.4 2.4 2.2 TD
14.40 2.40 2.20 TD 30.4 2.4 2.2 TD
30.40 2.40 2.20 TD 38.4 2.4 2.2 TD
38.40 2.40 2.20 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 66 48 %%BoundingBox: 0 0 66 48
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
48.00 0.00 TB 0.00 66.00 TR 48 66 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3 45 2.4 TD
3.00 45.00 2.40 TD 27 45 2.4 TD
27.00 45.00 2.40 TD 39 45 2.4 TD
39.00 45.00 2.40 TD 51 45 2.4 TD
51.00 45.00 2.40 TD 63 45 2.4 TD
63.00 45.00 2.40 TD 21 39 2.4 TD
21.00 39.00 2.40 TD 33 39 2.4 TD
33.00 39.00 2.40 TD 45 39 2.4 TD
45.00 39.00 2.40 TD 3 33 2.4 TD
3.00 33.00 2.40 TD 15 33 2.4 TD
15.00 33.00 2.40 TD 39 33 2.4 TD
39.00 33.00 2.40 TD 51 33 2.4 TD
51.00 33.00 2.40 TD 63 33 2.4 TD
63.00 33.00 2.40 TD 9 27 2.4 TD
9.00 27.00 2.40 TD 3 21 2.4 TD
3.00 21.00 2.40 TD 63 21 2.4 TD
63.00 21.00 2.40 TD 9 15 2.4 TD
9.00 15.00 2.40 TD 21 15 2.4 TD
21.00 15.00 2.40 TD 33 15 2.4 TD
33.00 15.00 2.40 TD 45 15 2.4 TD
45.00 15.00 2.40 TD 3 9 2.4 TD
3.00 9.00 2.40 TD 15 9 2.4 TD
15.00 9.00 2.40 TD 51 9 2.4 TD
51.00 9.00 2.40 TD 63 9 2.4 TD
63.00 9.00 2.40 TD 9 3 2.4 TD
9.00 3.00 2.40 TD 21 3 2.4 TD
21.00 3.00 2.40 TD 45 3 2.4 TD
45.00 3.00 2.40 TD 57 3 2.4 TD
57.00 3.00 2.40 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 66 48 %%BoundingBox: 0 0 66 48
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
48.00 0.00 TB 0.00 66.00 TR 48 66 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3 45 1.2 TD
3.00 45.00 1.20 TD 27 45 1.2 TD
27.00 45.00 1.20 TD 39 45 1.2 TD
39.00 45.00 1.20 TD 51 45 1.2 TD
51.00 45.00 1.20 TD 63 45 1.2 TD
63.00 45.00 1.20 TD 21 39 1.2 TD
21.00 39.00 1.20 TD 33 39 1.2 TD
33.00 39.00 1.20 TD 45 39 1.2 TD
45.00 39.00 1.20 TD 3 33 1.2 TD
3.00 33.00 1.20 TD 15 33 1.2 TD
15.00 33.00 1.20 TD 39 33 1.2 TD
39.00 33.00 1.20 TD 51 33 1.2 TD
51.00 33.00 1.20 TD 63 33 1.2 TD
63.00 33.00 1.20 TD 9 27 1.2 TD
9.00 27.00 1.20 TD 3 21 1.2 TD
3.00 21.00 1.20 TD 63 21 1.2 TD
63.00 21.00 1.20 TD 9 15 1.2 TD
9.00 15.00 1.20 TD 21 15 1.2 TD
21.00 15.00 1.20 TD 33 15 1.2 TD
33.00 15.00 1.20 TD 45 15 1.2 TD
45.00 15.00 1.20 TD 3 9 1.2 TD
3.00 9.00 1.20 TD 15 9 1.2 TD
15.00 9.00 1.20 TD 51 9 1.2 TD
51.00 9.00 1.20 TD 63 9 1.2 TD
63.00 9.00 1.20 TD 9 3 1.2 TD
9.00 3.00 1.20 TD 21 3 1.2 TD
21.00 3.00 1.20 TD 45 3 1.2 TD
45.00 3.00 1.20 TD 57 3 1.2 TD
57.00 3.00 1.20 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 68 50 %%BoundingBox: 0 0 68 50
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
49.20 0.00 TB 0.00 67.20 TR 49.2 67.2 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3.6 45.6 3.3 TD
3.60 45.60 3.30 TD 27.6 45.6 3.3 TD
27.60 45.60 3.30 TD 39.6 45.6 3.3 TD
39.60 45.60 3.30 TD 51.6 45.6 3.3 TD
51.60 45.60 3.30 TD 63.6 45.6 3.3 TD
63.60 45.60 3.30 TD 21.6 39.6 3.3 TD
21.60 39.60 3.30 TD 33.6 39.6 3.3 TD
33.60 39.60 3.30 TD 45.6 39.6 3.3 TD
45.60 39.60 3.30 TD 3.6 33.6 3.3 TD
3.60 33.60 3.30 TD 15.6 33.6 3.3 TD
15.60 33.60 3.30 TD 39.6 33.6 3.3 TD
39.60 33.60 3.30 TD 51.6 33.6 3.3 TD
51.60 33.60 3.30 TD 63.6 33.6 3.3 TD
63.60 33.60 3.30 TD 9.6 27.6 3.3 TD
9.60 27.60 3.30 TD 3.6 21.6 3.3 TD
3.60 21.60 3.30 TD 63.6 21.6 3.3 TD
63.60 21.60 3.30 TD 9.6 15.6 3.3 TD
9.60 15.60 3.30 TD 21.6 15.6 3.3 TD
21.60 15.60 3.30 TD 33.6 15.6 3.3 TD
33.60 15.60 3.30 TD 45.6 15.6 3.3 TD
45.60 15.60 3.30 TD 3.6 9.6 3.3 TD
3.60 9.60 3.30 TD 15.6 9.6 3.3 TD
15.60 9.60 3.30 TD 51.6 9.6 3.3 TD
51.60 9.60 3.30 TD 63.6 9.6 3.3 TD
63.60 9.60 3.30 TD 9.6 3.6 3.3 TD
9.60 3.60 3.30 TD 21.6 3.6 3.3 TD
21.60 3.60 3.30 TD 45.6 3.6 3.3 TD
45.60 3.60 3.30 TD 57.6 3.6 3.3 TD
57.60 3.60 3.30 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 77 56 %%BoundingBox: 0 0 77 56
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
56.00 0.00 TB 0.00 77.00 TR 56 77 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3.5 52.5 2.8 TD
3.50 52.50 2.80 TD 31.5 52.5 2.8 TD
31.50 52.50 2.80 TD 45.5 52.5 2.8 TD
45.50 52.50 2.80 TD 59.5 52.5 2.8 TD
59.50 52.50 2.80 TD 73.5 52.5 2.8 TD
73.50 52.50 2.80 TD 24.5 45.5 2.8 TD
24.50 45.50 2.80 TD 38.5 45.5 2.8 TD
38.50 45.50 2.80 TD 52.5 45.5 2.8 TD
52.50 45.50 2.80 TD 3.5 38.5 2.8 TD
3.50 38.50 2.80 TD 17.5 38.5 2.8 TD
17.50 38.50 2.80 TD 45.5 38.5 2.8 TD
45.50 38.50 2.80 TD 59.5 38.5 2.8 TD
59.50 38.50 2.80 TD 73.5 38.5 2.8 TD
73.50 38.50 2.80 TD 10.5 31.5 2.8 TD
10.50 31.50 2.80 TD 3.5 24.5 2.8 TD
3.50 24.50 2.80 TD 73.5 24.5 2.8 TD
73.50 24.50 2.80 TD 10.5 17.5 2.8 TD
10.50 17.50 2.80 TD 24.5 17.5 2.8 TD
24.50 17.50 2.80 TD 38.5 17.5 2.8 TD
38.50 17.50 2.80 TD 52.5 17.5 2.8 TD
52.50 17.50 2.80 TD 3.5 10.5 2.8 TD
3.50 10.50 2.80 TD 17.5 10.5 2.8 TD
17.50 10.50 2.80 TD 59.5 10.5 2.8 TD
59.50 10.50 2.80 TD 73.5 10.5 2.8 TD
73.50 10.50 2.80 TD 10.5 3.5 2.8 TD
10.50 3.50 2.80 TD 24.5 3.5 2.8 TD
24.50 3.50 2.80 TD 52.5 3.5 2.8 TD
52.50 3.50 2.80 TD 66.5 3.5 2.8 TD
66.50 3.50 2.80 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 77 56 %%BoundingBox: 0 0 77 56
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
56.00 0.00 TB 0.00 77.00 TR 56 77 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 3.5 52.5 1.4 TD
3.50 52.50 1.40 TD 31.5 52.5 1.4 TD
31.50 52.50 1.40 TD 45.5 52.5 1.4 TD
45.50 52.50 1.40 TD 59.5 52.5 1.4 TD
59.50 52.50 1.40 TD 73.5 52.5 1.4 TD
73.50 52.50 1.40 TD 24.5 45.5 1.4 TD
24.50 45.50 1.40 TD 38.5 45.5 1.4 TD
38.50 45.50 1.40 TD 52.5 45.5 1.4 TD
52.50 45.50 1.40 TD 3.5 38.5 1.4 TD
3.50 38.50 1.40 TD 17.5 38.5 1.4 TD
17.50 38.50 1.40 TD 45.5 38.5 1.4 TD
45.50 38.50 1.40 TD 59.5 38.5 1.4 TD
59.50 38.50 1.40 TD 73.5 38.5 1.4 TD
73.50 38.50 1.40 TD 10.5 31.5 1.4 TD
10.50 31.50 1.40 TD 3.5 24.5 1.4 TD
3.50 24.50 1.40 TD 73.5 24.5 1.4 TD
73.50 24.50 1.40 TD 10.5 17.5 1.4 TD
10.50 17.50 1.40 TD 24.5 17.5 1.4 TD
24.50 17.50 1.40 TD 38.5 17.5 1.4 TD
38.50 17.50 1.40 TD 52.5 17.5 1.4 TD
52.50 17.50 1.40 TD 3.5 10.5 1.4 TD
3.50 10.50 1.40 TD 17.5 10.5 1.4 TD
17.50 10.50 1.40 TD 59.5 10.5 1.4 TD
59.50 10.50 1.40 TD 73.5 10.5 1.4 TD
73.50 10.50 1.40 TD 10.5 3.5 1.4 TD
10.50 3.50 1.40 TD 24.5 3.5 1.4 TD
24.50 3.50 1.40 TD 52.5 3.5 1.4 TD
52.50 3.50 1.40 TD 66.5 3.5 1.4 TD
66.50 3.50 1.40 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 79 58 %%BoundingBox: 0 0 79 58
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
57.40 0.00 TB 0.00 78.40 TR 57.4 78.4 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 4.2 53.2 3.85 TD
4.20 53.20 3.85 TD 32.2 53.2 3.85 TD
32.20 53.20 3.85 TD 46.2 53.2 3.85 TD
46.20 53.20 3.85 TD 60.2 53.2 3.85 TD
60.20 53.20 3.85 TD 74.2 53.2 3.85 TD
74.20 53.20 3.85 TD 25.2 46.2 3.85 TD
25.20 46.20 3.85 TD 39.2 46.2 3.85 TD
39.20 46.20 3.85 TD 53.2 46.2 3.85 TD
53.20 46.20 3.85 TD 4.2 39.2 3.85 TD
4.20 39.20 3.85 TD 18.2 39.2 3.85 TD
18.20 39.20 3.85 TD 46.2 39.2 3.85 TD
46.20 39.20 3.85 TD 60.2 39.2 3.85 TD
60.20 39.20 3.85 TD 74.2 39.2 3.85 TD
74.20 39.20 3.85 TD 11.2 32.2 3.85 TD
11.20 32.20 3.85 TD 4.2 25.2 3.85 TD
4.20 25.20 3.85 TD 74.2 25.2 3.85 TD
74.20 25.20 3.85 TD 11.2 18.2 3.85 TD
11.20 18.20 3.85 TD 25.2 18.2 3.85 TD
25.20 18.20 3.85 TD 39.2 18.2 3.85 TD
39.20 18.20 3.85 TD 53.2 18.2 3.85 TD
53.20 18.20 3.85 TD 4.2 11.2 3.85 TD
4.20 11.20 3.85 TD 18.2 11.2 3.85 TD
18.20 11.20 3.85 TD 60.2 11.2 3.85 TD
60.20 11.20 3.85 TD 74.2 11.2 3.85 TD
74.20 11.20 3.85 TD 11.2 4.2 3.85 TD
11.20 4.20 3.85 TD 25.2 4.2 3.85 TD
25.20 4.20 3.85 TD 53.2 4.2 3.85 TD
53.20 4.20 3.85 TD 67.2 4.2 3.85 TD
67.20 4.20 3.85 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 110 80 %%BoundingBox: 0 0 110 80
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
80.00 0.00 TB 0.00 110.00 TR 80 110 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 5 75 4 TD
5.00 75.00 4.00 TD 45 75 4 TD
45.00 75.00 4.00 TD 65 75 4 TD
65.00 75.00 4.00 TD 85 75 4 TD
85.00 75.00 4.00 TD 105 75 4 TD
105.00 75.00 4.00 TD 35 65 4 TD
35.00 65.00 4.00 TD 55 65 4 TD
55.00 65.00 4.00 TD 75 65 4 TD
75.00 65.00 4.00 TD 5 55 4 TD
5.00 55.00 4.00 TD 25 55 4 TD
25.00 55.00 4.00 TD 65 55 4 TD
65.00 55.00 4.00 TD 85 55 4 TD
85.00 55.00 4.00 TD 105 55 4 TD
105.00 55.00 4.00 TD 15 45 4 TD
15.00 45.00 4.00 TD 5 35 4 TD
5.00 35.00 4.00 TD 105 35 4 TD
105.00 35.00 4.00 TD 15 25 4 TD
15.00 25.00 4.00 TD 35 25 4 TD
35.00 25.00 4.00 TD 55 25 4 TD
55.00 25.00 4.00 TD 75 25 4 TD
75.00 25.00 4.00 TD 5 15 4 TD
5.00 15.00 4.00 TD 25 15 4 TD
25.00 15.00 4.00 TD 85 15 4 TD
85.00 15.00 4.00 TD 105 15 4 TD
105.00 15.00 4.00 TD 15 5 4 TD
15.00 5.00 4.00 TD 35 5 4 TD
35.00 5.00 4.00 TD 75 5 4 TD
75.00 5.00 4.00 TD 95 5 4 TD
95.00 5.00 4.00 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 110 80 %%BoundingBox: 0 0 110 80
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
80.00 0.00 TB 0.00 110.00 TR 80 110 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 5 75 1 TD
5.00 75.00 1.00 TD 45 75 1 TD
45.00 75.00 1.00 TD 65 75 1 TD
65.00 75.00 1.00 TD 85 75 1 TD
85.00 75.00 1.00 TD 105 75 1 TD
105.00 75.00 1.00 TD 35 65 1 TD
35.00 65.00 1.00 TD 55 65 1 TD
55.00 65.00 1.00 TD 75 65 1 TD
75.00 65.00 1.00 TD 5 55 1 TD
5.00 55.00 1.00 TD 25 55 1 TD
25.00 55.00 1.00 TD 65 55 1 TD
65.00 55.00 1.00 TD 85 55 1 TD
85.00 55.00 1.00 TD 105 55 1 TD
105.00 55.00 1.00 TD 15 45 1 TD
15.00 45.00 1.00 TD 5 35 1 TD
5.00 35.00 1.00 TD 105 35 1 TD
105.00 35.00 1.00 TD 15 25 1 TD
15.00 25.00 1.00 TD 35 25 1 TD
35.00 25.00 1.00 TD 55 25 1 TD
55.00 25.00 1.00 TD 75 25 1 TD
75.00 25.00 1.00 TD 5 15 1 TD
5.00 15.00 1.00 TD 25 15 1 TD
25.00 15.00 1.00 TD 85 15 1 TD
85.00 15.00 1.00 TD 105 15 1 TD
105.00 15.00 1.00 TD 15 5 1 TD
15.00 5.00 1.00 TD 35 5 1 TD
35.00 5.00 1.00 TD 75 5 1 TD
75.00 5.00 1.00 TD 95 5 1 TD
95.00 5.00 1.00 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 112 82 %%BoundingBox: 0 0 112 82
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
82.00 0.00 TB 0.00 112.00 TR 82 112 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 6 76 5.5 TD
6.00 76.00 5.50 TD 46 76 5.5 TD
46.00 76.00 5.50 TD 66 76 5.5 TD
66.00 76.00 5.50 TD 86 76 5.5 TD
86.00 76.00 5.50 TD 106 76 5.5 TD
106.00 76.00 5.50 TD 36 66 5.5 TD
36.00 66.00 5.50 TD 56 66 5.5 TD
56.00 66.00 5.50 TD 76 66 5.5 TD
76.00 66.00 5.50 TD 6 56 5.5 TD
6.00 56.00 5.50 TD 26 56 5.5 TD
26.00 56.00 5.50 TD 66 56 5.5 TD
66.00 56.00 5.50 TD 86 56 5.5 TD
86.00 56.00 5.50 TD 106 56 5.5 TD
106.00 56.00 5.50 TD 16 46 5.5 TD
16.00 46.00 5.50 TD 6 36 5.5 TD
6.00 36.00 5.50 TD 106 36 5.5 TD
106.00 36.00 5.50 TD 16 26 5.5 TD
16.00 26.00 5.50 TD 36 26 5.5 TD
36.00 26.00 5.50 TD 56 26 5.5 TD
56.00 26.00 5.50 TD 76 26 5.5 TD
76.00 26.00 5.50 TD 6 16 5.5 TD
6.00 16.00 5.50 TD 26 16 5.5 TD
26.00 16.00 5.50 TD 86 16 5.5 TD
86.00 16.00 5.50 TD 106 16 5.5 TD
106.00 16.00 5.50 TD 16 6 5.5 TD
16.00 6.00 5.50 TD 36 6 5.5 TD
36.00 6.00 5.50 TD 76 6 5.5 TD
76.00 6.00 5.50 TD 96 6 5.5 TD
96.00 6.00 5.50 TD

View File

@ -1,43 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 118 88 %%BoundingBox: 0 0 118 88
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
88.00 0.00 TB 0.00 118.00 TR 88 118 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 9 79 8.5 TD
9.00 79.00 8.50 TD 49 79 8.5 TD
49.00 79.00 8.50 TD 69 79 8.5 TD
69.00 79.00 8.50 TD 89 79 8.5 TD
89.00 79.00 8.50 TD 109 79 8.5 TD
109.00 79.00 8.50 TD 39 69 8.5 TD
39.00 69.00 8.50 TD 59 69 8.5 TD
59.00 69.00 8.50 TD 79 69 8.5 TD
79.00 69.00 8.50 TD 9 59 8.5 TD
9.00 59.00 8.50 TD 29 59 8.5 TD
29.00 59.00 8.50 TD 69 59 8.5 TD
69.00 59.00 8.50 TD 89 59 8.5 TD
89.00 59.00 8.50 TD 109 59 8.5 TD
109.00 59.00 8.50 TD 19 49 8.5 TD
19.00 49.00 8.50 TD 9 39 8.5 TD
9.00 39.00 8.50 TD 109 39 8.5 TD
109.00 39.00 8.50 TD 19 29 8.5 TD
19.00 29.00 8.50 TD 39 29 8.5 TD
39.00 29.00 8.50 TD 59 29 8.5 TD
59.00 29.00 8.50 TD 79 29 8.5 TD
79.00 29.00 8.50 TD 9 19 8.5 TD
9.00 19.00 8.50 TD 29 19 8.5 TD
29.00 19.00 8.50 TD 89 19 8.5 TD
89.00 19.00 8.50 TD 109 19 8.5 TD
109.00 19.00 8.50 TD 19 9 8.5 TD
19.00 9.00 8.50 TD 39 9 8.5 TD
39.00 9.00 8.50 TD 79 9 8.5 TD
79.00 9.00 8.50 TD 99 9 8.5 TD
99.00 9.00 8.50 TD

View File

@ -1,40 +1,37 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 22 16 %%BoundingBox: 0 0 22 16
%%EndComments %%EndComments
/TD { newpath 0 360 arc fill } bind def /TD { newpath 0 360 arc fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 0.00 0.00 setrgbcolor 1 0 0 setrgbcolor
1.00 15.00 0.80 TD 1 15 0.8 TD
9.00 15.00 0.80 TD 9 15 0.8 TD
13.00 15.00 0.80 TD 13 15 0.8 TD
17.00 15.00 0.80 TD 17 15 0.8 TD
21.00 15.00 0.80 TD 21 15 0.8 TD
7.00 13.00 0.80 TD 7 13 0.8 TD
11.00 13.00 0.80 TD 11 13 0.8 TD
15.00 13.00 0.80 TD 15 13 0.8 TD
1.00 11.00 0.80 TD 1 11 0.8 TD
5.00 11.00 0.80 TD 5 11 0.8 TD
13.00 11.00 0.80 TD 13 11 0.8 TD
17.00 11.00 0.80 TD 17 11 0.8 TD
21.00 11.00 0.80 TD 21 11 0.8 TD
3.00 9.00 0.80 TD 3 9 0.8 TD
1.00 7.00 0.80 TD 1 7 0.8 TD
21.00 7.00 0.80 TD 21 7 0.8 TD
3.00 5.00 0.80 TD 3 5 0.8 TD
7.00 5.00 0.80 TD 7 5 0.8 TD
11.00 5.00 0.80 TD 11 5 0.8 TD
15.00 5.00 0.80 TD 15 5 0.8 TD
1.00 3.00 0.80 TD 1 3 0.8 TD
5.00 3.00 0.80 TD 5 3 0.8 TD
17.00 3.00 0.80 TD 17 3 0.8 TD
21.00 3.00 0.80 TD 21 3 0.8 TD
3.00 1.00 0.80 TD 3 1 0.8 TD
7.00 1.00 0.80 TD 7 1 0.8 TD
15.00 1.00 0.80 TD 15 1 0.8 TD
19.00 1.00 0.80 TD 19 1 0.8 TD

View File

@ -2,123 +2,60 @@
%%Creator: Zint 2.12.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 276 117 %%BoundingBox: 0 0 276 118
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
116.90 0.00 TB 0.00 276.00 TR 118 276 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 110 2 22 8 TR
110.00 6.90 TB 22.00 2.00 TR 110 2 26 8 TR
TE 100 6 30 18 TR
110.00 6.90 TB 26.00 2.00 TR 100 4 38 18 TR
TE 100 2 46 18 TR
100.00 16.90 TB 30.00 6.00 TR 100 2 54 18 TR
TE 100 4 58 18 TR
100.00 16.90 TB 38.00 4.00 TR 100 4 66 18 TR
TE 100 8 72 18 TR
100.00 16.90 TB 46.00 2.00 TR 100 2 82 18 TR
TE 100 2 90 18 TR
100.00 16.90 TB 54.00 2.00 TR 100 2 96 18 TR
TE 100 2 100 18 TR
100.00 16.90 TB 58.00 4.00 TR 100 4 108 18 TR
TE 110 2 114 8 TR
100.00 16.90 TB 66.00 4.00 TR 110 2 118 8 TR
TE 100 2 122 18 TR
100.00 16.90 TB 72.00 8.00 TR 100 6 128 18 TR
TE 100 4 136 18 TR
100.00 16.90 TB 82.00 2.00 TR 100 4 142 18 TR
TE 100 2 150 18 TR
100.00 16.90 TB 90.00 2.00 TR 100 6 154 18 TR
TE 100 6 164 18 TR
100.00 16.90 TB 96.00 2.00 TR 100 2 174 18 TR
TE 100 4 178 18 TR
100.00 16.90 TB 100.00 2.00 TR 100 4 186 18 TR
TE 100 2 192 18 TR
100.00 16.90 TB 108.00 4.00 TR 100 2 200 18 TR
TE 110 2 206 8 TR
110.00 6.90 TB 114.00 2.00 TR 110 2 210 8 TR
TE 92 2 226 8 TR
110.00 6.90 TB 118.00 2.00 TR 92 4 230 8 TR
TE 92 4 238 8 TR
100.00 16.90 TB 122.00 2.00 TR 92 2 246 8 TR
TE 92 2 250 8 TR
100.00 16.90 TB 128.00 6.00 TR 92 2 256 8 TR
TE 92 4 262 8 TR
100.00 16.90 TB 136.00 4.00 TR /Helvetica findfont 21.4 scalefont setfont
TE 12.2 0.8 moveto
100.00 16.90 TB 142.00 4.00 TR (9) stringwidth pop neg 0 rmoveto
TE
100.00 16.90 TB 150.00 2.00 TR
TE
100.00 16.90 TB 154.00 6.00 TR
TE
100.00 16.90 TB 164.00 6.00 TR
TE
100.00 16.90 TB 174.00 2.00 TR
TE
100.00 16.90 TB 178.00 4.00 TR
TE
100.00 16.90 TB 186.00 4.00 TR
TE
100.00 16.90 TB 192.00 2.00 TR
TE
100.00 16.90 TB 200.00 2.00 TR
TE
110.00 6.90 TB 206.00 2.00 TR
TE
110.00 6.90 TB 210.00 2.00 TR
TE
93.10 6.90 TB 226.00 2.00 TR
TE
93.10 6.90 TB 230.00 4.00 TR
TE
93.10 6.90 TB 238.00 4.00 TR
TE
93.10 6.90 TB 246.00 2.00 TR
TE
93.10 6.90 TB 250.00 2.00 TR
TE
93.10 6.90 TB 256.00 2.00 TR
TE
93.10 6.90 TB 262.00 4.00 TR
TE
matrix currentmatrix
/Helvetica findfont
20.00 scalefont setfont
0 0 moveto 12.20 0.80 translate 0.00 rotate 0 0 moveto
(9) stringwidth
pop
neg 0 rmoveto
(9) show (9) show
setmatrix 71 0.8 moveto
matrix currentmatrix (771384) stringwidth pop -2 div 0 rmoveto
/Helvetica findfont
20.00 scalefont setfont
0 0 moveto 71.00 0.80 translate 0.00 rotate 0 0 moveto
(771384) stringwidth
pop
-2 div 0 rmoveto
(771384) show (771384) show
setmatrix 163 0.8 moveto
matrix currentmatrix (524017) stringwidth pop -2 div 0 rmoveto
/Helvetica findfont
20.00 scalefont setfont
0 0 moveto 163.00 0.80 translate 0.00 rotate 0 0 moveto
(524017) stringwidth
pop
-2 div 0 rmoveto
(524017) show (524017) show
setmatrix 246 102.4 moveto
matrix currentmatrix (12) stringwidth pop -2 div 0 rmoveto
/Helvetica findfont
20.00 scalefont setfont
0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto
(12) stringwidth
pop
-2 div 0 rmoveto
(12) show (12) show
setmatrix

View File

@ -0,0 +1,63 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 276 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 276 0 0 TR
0 0 0 setrgbcolor
110 2 22 8 TR
110 2 26 8 TR
100 6 30 18 TR
100 4 38 18 TR
100 2 46 18 TR
100 2 54 18 TR
100 4 58 18 TR
100 4 66 18 TR
100 8 72 18 TR
100 2 82 18 TR
100 2 90 18 TR
100 2 96 18 TR
100 2 100 18 TR
100 4 108 18 TR
110 2 114 8 TR
110 2 118 8 TR
100 2 122 18 TR
100 6 128 18 TR
100 4 136 18 TR
100 4 142 18 TR
100 2 150 18 TR
100 6 154 18 TR
100 6 164 18 TR
100 2 174 18 TR
100 4 178 18 TR
100 4 186 18 TR
100 2 192 18 TR
100 2 200 18 TR
110 2 206 8 TR
110 2 210 8 TR
92 2 226 8 TR
92 4 230 8 TR
92 4 238 8 TR
92 2 246 8 TR
92 2 250 8 TR
92 2 256 8 TR
92 4 262 8 TR
/Helvetica findfont 21.4 scalefont setfont
12.2 0.8 moveto
(9) stringwidth pop neg 0 rmoveto
(9) show
71 0.8 moveto
(771384) stringwidth pop -2 div 0 rmoveto
(771384) show
163 0.8 moveto
(524017) stringwidth pop -2 div 0 rmoveto
(524017) show
246 102.4 moveto
(12) stringwidth pop -2 div 0 rmoveto
(12) show
264 102.4 moveto
(>) show

View File

@ -0,0 +1,51 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 226 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 226 0 0 TR
0 0 0 setrgbcolor
110 2 22 8 TR
110 2 26 8 TR
100 4 30 18 TR
100 2 40 18 TR
100 2 44 18 TR
100 6 50 18 TR
100 4 58 18 TR
100 4 66 18 TR
100 4 74 18 TR
100 2 82 18 TR
100 2 86 18 TR
100 6 92 18 TR
100 4 102 18 TR
100 2 110 18 TR
110 2 114 8 TR
110 2 118 8 TR
100 2 122 18 TR
100 6 128 18 TR
100 2 136 18 TR
100 2 146 18 TR
100 4 150 18 TR
100 4 158 18 TR
100 6 164 18 TR
100 2 174 18 TR
100 6 178 18 TR
100 2 188 18 TR
100 6 192 18 TR
100 2 202 18 TR
110 2 206 8 TR
110 2 210 8 TR
/Helvetica findfont 21.4 scalefont setfont
12.2 0.8 moveto
(9) stringwidth pop neg 0 rmoveto
(9) show
71 0.8 moveto
(501101) stringwidth pop -2 div 0 rmoveto
(501101) show
163 0.8 moveto
(531000) stringwidth pop -2 div 0 rmoveto
(531000) show

View File

@ -0,0 +1,53 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 226 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 226 0 0 TR
0 0 0 setrgbcolor
110 2 22 8 TR
110 2 26 8 TR
100 4 30 18 TR
100 2 40 18 TR
100 2 44 18 TR
100 6 50 18 TR
100 4 58 18 TR
100 4 66 18 TR
100 4 74 18 TR
100 2 82 18 TR
100 2 86 18 TR
100 6 92 18 TR
100 4 102 18 TR
100 2 110 18 TR
110 2 114 8 TR
110 2 118 8 TR
100 2 122 18 TR
100 6 128 18 TR
100 2 136 18 TR
100 2 146 18 TR
100 4 150 18 TR
100 4 158 18 TR
100 6 164 18 TR
100 2 174 18 TR
100 6 178 18 TR
100 2 188 18 TR
100 6 192 18 TR
100 2 202 18 TR
110 2 206 8 TR
110 2 210 8 TR
/Helvetica findfont 21.4 scalefont setfont
12.2 0.8 moveto
(9) stringwidth pop neg 0 rmoveto
(9) show
71 0.8 moveto
(501101) stringwidth pop -2 div 0 rmoveto
(501101) show
163 0.8 moveto
(531000) stringwidth pop -2 div 0 rmoveto
(531000) show
214 0.8 moveto
(>) show

View File

@ -0,0 +1,31 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 104 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 104 0 0 TR
0 0 0 setrgbcolor
100 2 0 0 TR
100 4 4 0 TR
100 2 14 0 TR
100 4 18 0 TR
100 2 24 0 TR
100 4 28 0 TR
100 6 34 0 TR
100 2 42 0 TR
100 2 48 0 TR
100 2 56 0 TR
100 2 60 0 TR
100 2 64 0 TR
100 8 68 0 TR
100 2 78 0 TR
100 6 82 0 TR
100 2 92 0 TR
/Helvetica findfont 21.4 scalefont setfont
47 102.4 moveto
(98765) stringwidth pop -2 div 0 rmoveto
(98765) show

View File

@ -0,0 +1,33 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 104 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 104 0 0 TR
0 0 0 setrgbcolor
100 2 0 0 TR
100 4 4 0 TR
100 2 14 0 TR
100 4 18 0 TR
100 2 24 0 TR
100 4 28 0 TR
100 6 34 0 TR
100 2 42 0 TR
100 2 48 0 TR
100 2 56 0 TR
100 2 60 0 TR
100 2 64 0 TR
100 8 68 0 TR
100 2 78 0 TR
100 6 82 0 TR
100 2 92 0 TR
/Helvetica findfont 21.4 scalefont setfont
47 102.4 moveto
(98765) stringwidth pop -2 div 0 rmoveto
(98765) show
91.5 102.4 moveto
(>) show

View File

@ -0,0 +1,40 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 162 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 162 0 0 TR
0 0 0 setrgbcolor
110 2 14 8 TR
110 2 18 8 TR
100 2 26 18 TR
100 4 30 18 TR
100 4 36 18 TR
100 2 46 18 TR
100 4 54 18 TR
100 2 60 18 TR
100 4 66 18 TR
100 2 74 18 TR
110 2 78 8 TR
110 2 82 8 TR
100 4 86 18 TR
100 4 92 18 TR
100 2 100 18 TR
100 2 110 18 TR
100 2 114 18 TR
100 6 118 18 TR
100 2 128 18 TR
100 2 132 18 TR
110 2 142 8 TR
110 2 146 8 TR
/Helvetica findfont 21.4 scalefont setfont
49 0.8 moveto
(9501) stringwidth pop -2 div 0 rmoveto
(9501) show
113 0.8 moveto
(2346) stringwidth pop -2 div 0 rmoveto
(2346) show

View File

@ -0,0 +1,45 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 162 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 162 0 0 TR
0 0 0 setrgbcolor
110 2 14 8 TR
110 2 18 8 TR
100 2 26 18 TR
100 4 30 18 TR
100 4 36 18 TR
100 2 46 18 TR
100 4 54 18 TR
100 2 60 18 TR
100 4 66 18 TR
100 2 74 18 TR
110 2 78 8 TR
110 2 82 8 TR
100 4 86 18 TR
100 4 92 18 TR
100 2 100 18 TR
100 2 110 18 TR
100 2 114 18 TR
100 6 118 18 TR
100 2 128 18 TR
100 2 132 18 TR
110 2 142 8 TR
110 2 146 8 TR
/Helvetica findfont 21.4 scalefont setfont
12.5 0.8 moveto
(<) stringwidth pop neg 0 rmoveto
(<) show
49 0.8 moveto
(9501) stringwidth pop -2 div 0 rmoveto
(9501) show
113 0.8 moveto
(2346) stringwidth pop -2 div 0 rmoveto
(2346) show
149.6 0.8 moveto
(>) show

View File

@ -1,370 +1,367 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 72 58 %%BoundingBox: 0 0 72 58
%%EndComments %%EndComments
/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def /TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def /TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.00 0.00 0.00 setrgbcolor 0 0 0 setrgbcolor
63.00 2.15 63.87 1.65 63.87 0.65 63.00 0.15 62.13 0.65 62.13 1.65 TH 63 2.15 63.87 1.65 63.87 0.65 63 0.15 62.13 0.65 62.13 1.65 TH
59.00 2.15 59.87 1.65 59.87 0.65 59.00 0.15 58.13 0.65 58.13 1.65 TH 59 2.15 59.87 1.65 59.87 0.65 59 0.15 58.13 0.65 58.13 1.65 TH
55.00 2.15 55.87 1.65 55.87 0.65 55.00 0.15 54.13 0.65 54.13 1.65 TH 55 2.15 55.87 1.65 55.87 0.65 55 0.15 54.13 0.65 54.13 1.65 TH
51.00 2.15 51.87 1.65 51.87 0.65 51.00 0.15 50.13 0.65 50.13 1.65 TH 51 2.15 51.87 1.65 51.87 0.65 51 0.15 50.13 0.65 50.13 1.65 TH
47.00 2.15 47.87 1.65 47.87 0.65 47.00 0.15 46.13 0.65 46.13 1.65 TH 47 2.15 47.87 1.65 47.87 0.65 47 0.15 46.13 0.65 46.13 1.65 TH
43.00 2.15 43.87 1.65 43.87 0.65 43.00 0.15 42.13 0.65 42.13 1.65 TH 43 2.15 43.87 1.65 43.87 0.65 43 0.15 42.13 0.65 42.13 1.65 TH
39.00 2.15 39.87 1.65 39.87 0.65 39.00 0.15 38.13 0.65 38.13 1.65 TH 39 2.15 39.87 1.65 39.87 0.65 39 0.15 38.13 0.65 38.13 1.65 TH
35.00 2.15 35.87 1.65 35.87 0.65 35.00 0.15 34.13 0.65 34.13 1.65 TH 35 2.15 35.87 1.65 35.87 0.65 35 0.15 34.13 0.65 34.13 1.65 TH
31.00 2.15 31.87 1.65 31.87 0.65 31.00 0.15 30.13 0.65 30.13 1.65 TH 31 2.15 31.87 1.65 31.87 0.65 31 0.15 30.13 0.65 30.13 1.65 TH
27.00 2.15 27.87 1.65 27.87 0.65 27.00 0.15 26.13 0.65 26.13 1.65 TH 27 2.15 27.87 1.65 27.87 0.65 27 0.15 26.13 0.65 26.13 1.65 TH
23.00 2.15 23.87 1.65 23.87 0.65 23.00 0.15 22.13 0.65 22.13 1.65 TH 23 2.15 23.87 1.65 23.87 0.65 23 0.15 22.13 0.65 22.13 1.65 TH
19.00 2.15 19.87 1.65 19.87 0.65 19.00 0.15 18.13 0.65 18.13 1.65 TH 19 2.15 19.87 1.65 19.87 0.65 19 0.15 18.13 0.65 18.13 1.65 TH
15.00 2.15 15.87 1.65 15.87 0.65 15.00 0.15 14.13 0.65 14.13 1.65 TH 15 2.15 15.87 1.65 15.87 0.65 15 0.15 14.13 0.65 14.13 1.65 TH
11.00 2.15 11.87 1.65 11.87 0.65 11.00 0.15 10.13 0.65 10.13 1.65 TH 11 2.15 11.87 1.65 11.87 0.65 11 0.15 10.13 0.65 10.13 1.65 TH
9.00 2.15 9.87 1.65 9.87 0.65 9.00 0.15 8.13 0.65 8.13 1.65 TH 9 2.15 9.87 1.65 9.87 0.65 9 0.15 8.13 0.65 8.13 1.65 TH
7.00 2.15 7.87 1.65 7.87 0.65 7.00 0.15 6.13 0.65 6.13 1.65 TH 7 2.15 7.87 1.65 7.87 0.65 7 0.15 6.13 0.65 6.13 1.65 TH
65.00 5.62 65.87 5.12 65.87 4.12 65.00 3.62 64.13 4.12 64.13 5.12 TH 65 5.62 65.87 5.12 65.87 4.12 65 3.62 64.13 4.12 64.13 5.12 TH
61.00 5.62 61.87 5.12 61.87 4.12 61.00 3.62 60.13 4.12 60.13 5.12 TH 61 5.62 61.87 5.12 61.87 4.12 61 3.62 60.13 4.12 60.13 5.12 TH
57.00 5.62 57.87 5.12 57.87 4.12 57.00 3.62 56.13 4.12 56.13 5.12 TH 57 5.62 57.87 5.12 57.87 4.12 57 3.62 56.13 4.12 56.13 5.12 TH
53.00 5.62 53.87 5.12 53.87 4.12 53.00 3.62 52.13 4.12 52.13 5.12 TH 53 5.62 53.87 5.12 53.87 4.12 53 3.62 52.13 4.12 52.13 5.12 TH
49.00 5.62 49.87 5.12 49.87 4.12 49.00 3.62 48.13 4.12 48.13 5.12 TH 49 5.62 49.87 5.12 49.87 4.12 49 3.62 48.13 4.12 48.13 5.12 TH
45.00 5.62 45.87 5.12 45.87 4.12 45.00 3.62 44.13 4.12 44.13 5.12 TH 45 5.62 45.87 5.12 45.87 4.12 45 3.62 44.13 4.12 44.13 5.12 TH
41.00 5.62 41.87 5.12 41.87 4.12 41.00 3.62 40.13 4.12 40.13 5.12 TH 41 5.62 41.87 5.12 41.87 4.12 41 3.62 40.13 4.12 40.13 5.12 TH
37.00 5.62 37.87 5.12 37.87 4.12 37.00 3.62 36.13 4.12 36.13 5.12 TH 37 5.62 37.87 5.12 37.87 4.12 37 3.62 36.13 4.12 36.13 5.12 TH
33.00 5.62 33.87 5.12 33.87 4.12 33.00 3.62 32.13 4.12 32.13 5.12 TH 33 5.62 33.87 5.12 33.87 4.12 33 3.62 32.13 4.12 32.13 5.12 TH
29.00 5.62 29.87 5.12 29.87 4.12 29.00 3.62 28.13 4.12 28.13 5.12 TH 29 5.62 29.87 5.12 29.87 4.12 29 3.62 28.13 4.12 28.13 5.12 TH
25.00 5.62 25.87 5.12 25.87 4.12 25.00 3.62 24.13 4.12 24.13 5.12 TH 25 5.62 25.87 5.12 25.87 4.12 25 3.62 24.13 4.12 24.13 5.12 TH
21.00 5.62 21.87 5.12 21.87 4.12 21.00 3.62 20.13 4.12 20.13 5.12 TH 21 5.62 21.87 5.12 21.87 4.12 21 3.62 20.13 4.12 20.13 5.12 TH
17.00 5.62 17.87 5.12 17.87 4.12 17.00 3.62 16.13 4.12 16.13 5.12 TH 17 5.62 17.87 5.12 17.87 4.12 17 3.62 16.13 4.12 16.13 5.12 TH
13.00 5.62 13.87 5.12 13.87 4.12 13.00 3.62 12.13 4.12 12.13 5.12 TH 13 5.62 13.87 5.12 13.87 4.12 13 3.62 12.13 4.12 12.13 5.12 TH
9.00 5.62 9.87 5.12 9.87 4.12 9.00 3.62 8.13 4.12 8.13 5.12 TH 9 5.62 9.87 5.12 9.87 4.12 9 3.62 8.13 4.12 8.13 5.12 TH
62.00 7.35 62.87 6.85 62.87 5.85 62.00 5.35 61.13 5.85 61.13 6.85 TH 62 7.35 62.87 6.85 62.87 5.85 62 5.35 61.13 5.85 61.13 6.85 TH
58.00 7.35 58.87 6.85 58.87 5.85 58.00 5.35 57.13 5.85 57.13 6.85 TH 58 7.35 58.87 6.85 58.87 5.85 58 5.35 57.13 5.85 57.13 6.85 TH
54.00 7.35 54.87 6.85 54.87 5.85 54.00 5.35 53.13 5.85 53.13 6.85 TH 54 7.35 54.87 6.85 54.87 5.85 54 5.35 53.13 5.85 53.13 6.85 TH
50.00 7.35 50.87 6.85 50.87 5.85 50.00 5.35 49.13 5.85 49.13 6.85 TH 50 7.35 50.87 6.85 50.87 5.85 50 5.35 49.13 5.85 49.13 6.85 TH
46.00 7.35 46.87 6.85 46.87 5.85 46.00 5.35 45.13 5.85 45.13 6.85 TH 46 7.35 46.87 6.85 46.87 5.85 46 5.35 45.13 5.85 45.13 6.85 TH
42.00 7.35 42.87 6.85 42.87 5.85 42.00 5.35 41.13 5.85 41.13 6.85 TH 42 7.35 42.87 6.85 42.87 5.85 42 5.35 41.13 5.85 41.13 6.85 TH
38.00 7.35 38.87 6.85 38.87 5.85 38.00 5.35 37.13 5.85 37.13 6.85 TH 38 7.35 38.87 6.85 38.87 5.85 38 5.35 37.13 5.85 37.13 6.85 TH
34.00 7.35 34.87 6.85 34.87 5.85 34.00 5.35 33.13 5.85 33.13 6.85 TH 34 7.35 34.87 6.85 34.87 5.85 34 5.35 33.13 5.85 33.13 6.85 TH
30.00 7.35 30.87 6.85 30.87 5.85 30.00 5.35 29.13 5.85 29.13 6.85 TH 30 7.35 30.87 6.85 30.87 5.85 30 5.35 29.13 5.85 29.13 6.85 TH
26.00 7.35 26.87 6.85 26.87 5.85 26.00 5.35 25.13 5.85 25.13 6.85 TH 26 7.35 26.87 6.85 26.87 5.85 26 5.35 25.13 5.85 25.13 6.85 TH
22.00 7.35 22.87 6.85 22.87 5.85 22.00 5.35 21.13 5.85 21.13 6.85 TH 22 7.35 22.87 6.85 22.87 5.85 22 5.35 21.13 5.85 21.13 6.85 TH
18.00 7.35 18.87 6.85 18.87 5.85 18.00 5.35 17.13 5.85 17.13 6.85 TH 18 7.35 18.87 6.85 18.87 5.85 18 5.35 17.13 5.85 17.13 6.85 TH
14.00 7.35 14.87 6.85 14.87 5.85 14.00 5.35 13.13 5.85 13.13 6.85 TH 14 7.35 14.87 6.85 14.87 5.85 14 5.35 13.13 5.85 13.13 6.85 TH
10.00 7.35 10.87 6.85 10.87 5.85 10.00 5.35 9.13 5.85 9.13 6.85 TH 10 7.35 10.87 6.85 10.87 5.85 10 5.35 9.13 5.85 9.13 6.85 TH
8.00 7.35 8.87 6.85 8.87 5.85 8.00 5.35 7.13 5.85 7.13 6.85 TH 8 7.35 8.87 6.85 8.87 5.85 8 5.35 7.13 5.85 7.13 6.85 TH
7.00 9.08 7.87 8.58 7.87 7.58 7.00 7.08 6.13 7.58 6.13 8.58 TH 7 9.08 7.87 8.58 7.87 7.58 7 7.08 6.13 7.58 6.13 8.58 TH
64.00 10.81 64.87 10.31 64.87 9.31 64.00 8.81 63.13 9.31 63.13 10.31 TH 64 10.81 64.87 10.31 64.87 9.31 64 8.81 63.13 9.31 63.13 10.31 TH
60.00 10.81 60.87 10.31 60.87 9.31 60.00 8.81 59.13 9.31 59.13 10.31 TH 60 10.81 60.87 10.31 60.87 9.31 60 8.81 59.13 9.31 59.13 10.31 TH
56.00 10.81 56.87 10.31 56.87 9.31 56.00 8.81 55.13 9.31 55.13 10.31 TH 56 10.81 56.87 10.31 56.87 9.31 56 8.81 55.13 9.31 55.13 10.31 TH
52.00 10.81 52.87 10.31 52.87 9.31 52.00 8.81 51.13 9.31 51.13 10.31 TH 52 10.81 52.87 10.31 52.87 9.31 52 8.81 51.13 9.31 51.13 10.31 TH
48.00 10.81 48.87 10.31 48.87 9.31 48.00 8.81 47.13 9.31 47.13 10.31 TH 48 10.81 48.87 10.31 48.87 9.31 48 8.81 47.13 9.31 47.13 10.31 TH
44.00 10.81 44.87 10.31 44.87 9.31 44.00 8.81 43.13 9.31 43.13 10.31 TH 44 10.81 44.87 10.31 44.87 9.31 44 8.81 43.13 9.31 43.13 10.31 TH
40.00 10.81 40.87 10.31 40.87 9.31 40.00 8.81 39.13 9.31 39.13 10.31 TH 40 10.81 40.87 10.31 40.87 9.31 40 8.81 39.13 9.31 39.13 10.31 TH
36.00 10.81 36.87 10.31 36.87 9.31 36.00 8.81 35.13 9.31 35.13 10.31 TH 36 10.81 36.87 10.31 36.87 9.31 36 8.81 35.13 9.31 35.13 10.31 TH
32.00 10.81 32.87 10.31 32.87 9.31 32.00 8.81 31.13 9.31 31.13 10.31 TH 32 10.81 32.87 10.31 32.87 9.31 32 8.81 31.13 9.31 31.13 10.31 TH
28.00 10.81 28.87 10.31 28.87 9.31 28.00 8.81 27.13 9.31 27.13 10.31 TH 28 10.81 28.87 10.31 28.87 9.31 28 8.81 27.13 9.31 27.13 10.31 TH
24.00 10.81 24.87 10.31 24.87 9.31 24.00 8.81 23.13 9.31 23.13 10.31 TH 24 10.81 24.87 10.31 24.87 9.31 24 8.81 23.13 9.31 23.13 10.31 TH
20.00 10.81 20.87 10.31 20.87 9.31 20.00 8.81 19.13 9.31 19.13 10.31 TH 20 10.81 20.87 10.31 20.87 9.31 20 8.81 19.13 9.31 19.13 10.31 TH
16.00 10.81 16.87 10.31 16.87 9.31 16.00 8.81 15.13 9.31 15.13 10.31 TH 16 10.81 16.87 10.31 16.87 9.31 16 8.81 15.13 9.31 15.13 10.31 TH
12.00 10.81 12.87 10.31 12.87 9.31 12.00 8.81 11.13 9.31 11.13 10.31 TH 12 10.81 12.87 10.31 12.87 9.31 12 8.81 11.13 9.31 11.13 10.31 TH
63.00 12.55 63.87 12.05 63.87 11.05 63.00 10.55 62.13 11.05 62.13 12.05 TH 63 12.55 63.87 12.05 63.87 11.05 63 10.55 62.13 11.05 62.13 12.05 TH
59.00 12.55 59.87 12.05 59.87 11.05 59.00 10.55 58.13 11.05 58.13 12.05 TH 59 12.55 59.87 12.05 59.87 11.05 59 10.55 58.13 11.05 58.13 12.05 TH
55.00 12.55 55.87 12.05 55.87 11.05 55.00 10.55 54.13 11.05 54.13 12.05 TH 55 12.55 55.87 12.05 55.87 11.05 55 10.55 54.13 11.05 54.13 12.05 TH
51.00 12.55 51.87 12.05 51.87 11.05 51.00 10.55 50.13 11.05 50.13 12.05 TH 51 12.55 51.87 12.05 51.87 11.05 51 10.55 50.13 11.05 50.13 12.05 TH
47.00 12.55 47.87 12.05 47.87 11.05 47.00 10.55 46.13 11.05 46.13 12.05 TH 47 12.55 47.87 12.05 47.87 11.05 47 10.55 46.13 11.05 46.13 12.05 TH
43.00 12.55 43.87 12.05 43.87 11.05 43.00 10.55 42.13 11.05 42.13 12.05 TH 43 12.55 43.87 12.05 43.87 11.05 43 10.55 42.13 11.05 42.13 12.05 TH
39.00 12.55 39.87 12.05 39.87 11.05 39.00 10.55 38.13 11.05 38.13 12.05 TH 39 12.55 39.87 12.05 39.87 11.05 39 10.55 38.13 11.05 38.13 12.05 TH
35.00 12.55 35.87 12.05 35.87 11.05 35.00 10.55 34.13 11.05 34.13 12.05 TH 35 12.55 35.87 12.05 35.87 11.05 35 10.55 34.13 11.05 34.13 12.05 TH
31.00 12.55 31.87 12.05 31.87 11.05 31.00 10.55 30.13 11.05 30.13 12.05 TH 31 12.55 31.87 12.05 31.87 11.05 31 10.55 30.13 11.05 30.13 12.05 TH
27.00 12.55 27.87 12.05 27.87 11.05 27.00 10.55 26.13 11.05 26.13 12.05 TH 27 12.55 27.87 12.05 27.87 11.05 27 10.55 26.13 11.05 26.13 12.05 TH
23.00 12.55 23.87 12.05 23.87 11.05 23.00 10.55 22.13 11.05 22.13 12.05 TH 23 12.55 23.87 12.05 23.87 11.05 23 10.55 22.13 11.05 22.13 12.05 TH
19.00 12.55 19.87 12.05 19.87 11.05 19.00 10.55 18.13 11.05 18.13 12.05 TH 19 12.55 19.87 12.05 19.87 11.05 19 10.55 18.13 11.05 18.13 12.05 TH
15.00 12.55 15.87 12.05 15.87 11.05 15.00 10.55 14.13 11.05 14.13 12.05 TH 15 12.55 15.87 12.05 15.87 11.05 15 10.55 14.13 11.05 14.13 12.05 TH
11.00 12.55 11.87 12.05 11.87 11.05 11.00 10.55 10.13 11.05 10.13 12.05 TH 11 12.55 11.87 12.05 11.87 11.05 11 10.55 10.13 11.05 10.13 12.05 TH
9.00 12.55 9.87 12.05 9.87 11.05 9.00 10.55 8.13 11.05 8.13 12.05 TH 9 12.55 9.87 12.05 9.87 11.05 9 10.55 8.13 11.05 8.13 12.05 TH
8.00 14.28 8.87 13.78 8.87 12.78 8.00 12.28 7.13 12.78 7.13 13.78 TH 8 14.28 8.87 13.78 8.87 12.78 8 12.28 7.13 12.78 7.13 13.78 TH
65.00 16.01 65.87 15.51 65.87 14.51 65.00 14.01 64.13 14.51 64.13 15.51 TH 65 16.01 65.87 15.51 65.87 14.51 65 14.01 64.13 14.51 64.13 15.51 TH
61.00 16.01 61.87 15.51 61.87 14.51 61.00 14.01 60.13 14.51 60.13 15.51 TH 61 16.01 61.87 15.51 61.87 14.51 61 14.01 60.13 14.51 60.13 15.51 TH
57.00 16.01 57.87 15.51 57.87 14.51 57.00 14.01 56.13 14.51 56.13 15.51 TH 57 16.01 57.87 15.51 57.87 14.51 57 14.01 56.13 14.51 56.13 15.51 TH
53.00 16.01 53.87 15.51 53.87 14.51 53.00 14.01 52.13 14.51 52.13 15.51 TH 53 16.01 53.87 15.51 53.87 14.51 53 14.01 52.13 14.51 52.13 15.51 TH
49.00 16.01 49.87 15.51 49.87 14.51 49.00 14.01 48.13 14.51 48.13 15.51 TH 49 16.01 49.87 15.51 49.87 14.51 49 14.01 48.13 14.51 48.13 15.51 TH
45.00 16.01 45.87 15.51 45.87 14.51 45.00 14.01 44.13 14.51 44.13 15.51 TH 45 16.01 45.87 15.51 45.87 14.51 45 14.01 44.13 14.51 44.13 15.51 TH
41.00 16.01 41.87 15.51 41.87 14.51 41.00 14.01 40.13 14.51 40.13 15.51 TH 41 16.01 41.87 15.51 41.87 14.51 41 14.01 40.13 14.51 40.13 15.51 TH
37.00 16.01 37.87 15.51 37.87 14.51 37.00 14.01 36.13 14.51 36.13 15.51 TH 37 16.01 37.87 15.51 37.87 14.51 37 14.01 36.13 14.51 36.13 15.51 TH
33.00 16.01 33.87 15.51 33.87 14.51 33.00 14.01 32.13 14.51 32.13 15.51 TH 33 16.01 33.87 15.51 33.87 14.51 33 14.01 32.13 14.51 32.13 15.51 TH
29.00 16.01 29.87 15.51 29.87 14.51 29.00 14.01 28.13 14.51 28.13 15.51 TH 29 16.01 29.87 15.51 29.87 14.51 29 14.01 28.13 14.51 28.13 15.51 TH
25.00 16.01 25.87 15.51 25.87 14.51 25.00 14.01 24.13 14.51 24.13 15.51 TH 25 16.01 25.87 15.51 25.87 14.51 25 14.01 24.13 14.51 24.13 15.51 TH
21.00 16.01 21.87 15.51 21.87 14.51 21.00 14.01 20.13 14.51 20.13 15.51 TH 21 16.01 21.87 15.51 21.87 14.51 21 14.01 20.13 14.51 20.13 15.51 TH
17.00 16.01 17.87 15.51 17.87 14.51 17.00 14.01 16.13 14.51 16.13 15.51 TH 17 16.01 17.87 15.51 17.87 14.51 17 14.01 16.13 14.51 16.13 15.51 TH
13.00 16.01 13.87 15.51 13.87 14.51 13.00 14.01 12.13 14.51 12.13 15.51 TH 13 16.01 13.87 15.51 13.87 14.51 13 14.01 12.13 14.51 12.13 15.51 TH
7.00 16.01 7.87 15.51 7.87 14.51 7.00 14.01 6.13 14.51 6.13 15.51 TH 7 16.01 7.87 15.51 7.87 14.51 7 14.01 6.13 14.51 6.13 15.51 TH
62.00 17.74 62.87 17.24 62.87 16.24 62.00 15.74 61.13 16.24 61.13 17.24 TH 62 17.74 62.87 17.24 62.87 16.24 62 15.74 61.13 16.24 61.13 17.24 TH
58.00 17.74 58.87 17.24 58.87 16.24 58.00 15.74 57.13 16.24 57.13 17.24 TH 58 17.74 58.87 17.24 58.87 16.24 58 15.74 57.13 16.24 57.13 17.24 TH
54.00 17.74 54.87 17.24 54.87 16.24 54.00 15.74 53.13 16.24 53.13 17.24 TH 54 17.74 54.87 17.24 54.87 16.24 54 15.74 53.13 16.24 53.13 17.24 TH
50.00 17.74 50.87 17.24 50.87 16.24 50.00 15.74 49.13 16.24 49.13 17.24 TH 50 17.74 50.87 17.24 50.87 16.24 50 15.74 49.13 16.24 49.13 17.24 TH
46.00 17.74 46.87 17.24 46.87 16.24 46.00 15.74 45.13 16.24 45.13 17.24 TH 46 17.74 46.87 17.24 46.87 16.24 46 15.74 45.13 16.24 45.13 17.24 TH
44.00 17.74 44.87 17.24 44.87 16.24 44.00 15.74 43.13 16.24 43.13 17.24 TH 44 17.74 44.87 17.24 44.87 16.24 44 15.74 43.13 16.24 43.13 17.24 TH
42.00 17.74 42.87 17.24 42.87 16.24 42.00 15.74 41.13 16.24 41.13 17.24 TH 42 17.74 42.87 17.24 42.87 16.24 42 15.74 41.13 16.24 41.13 17.24 TH
40.00 17.74 40.87 17.24 40.87 16.24 40.00 15.74 39.13 16.24 39.13 17.24 TH 40 17.74 40.87 17.24 40.87 16.24 40 15.74 39.13 16.24 39.13 17.24 TH
38.00 17.74 38.87 17.24 38.87 16.24 38.00 15.74 37.13 16.24 37.13 17.24 TH 38 17.74 38.87 17.24 38.87 16.24 38 15.74 37.13 16.24 37.13 17.24 TH
34.00 17.74 34.87 17.24 34.87 16.24 34.00 15.74 33.13 16.24 33.13 17.24 TH 34 17.74 34.87 17.24 34.87 16.24 34 15.74 33.13 16.24 33.13 17.24 TH
24.00 17.74 24.87 17.24 24.87 16.24 24.00 15.74 23.13 16.24 23.13 17.24 TH 24 17.74 24.87 17.24 24.87 16.24 24 15.74 23.13 16.24 23.13 17.24 TH
18.00 17.74 18.87 17.24 18.87 16.24 18.00 15.74 17.13 16.24 17.13 17.24 TH 18 17.74 18.87 17.24 18.87 16.24 18 15.74 17.13 16.24 17.13 17.24 TH
14.00 17.74 14.87 17.24 14.87 16.24 14.00 15.74 13.13 16.24 13.13 17.24 TH 14 17.74 14.87 17.24 14.87 16.24 14 15.74 13.13 16.24 13.13 17.24 TH
10.00 17.74 10.87 17.24 10.87 16.24 10.00 15.74 9.13 16.24 9.13 17.24 TH 10 17.74 10.87 17.24 10.87 16.24 10 15.74 9.13 16.24 9.13 17.24 TH
43.00 19.47 43.87 18.97 43.87 17.97 43.00 17.47 42.13 17.97 42.13 18.97 TH 43 19.47 43.87 18.97 43.87 17.97 43 17.47 42.13 17.97 42.13 18.97 TH
33.00 19.47 33.87 18.97 33.87 17.97 33.00 17.47 32.13 17.97 32.13 18.97 TH 33 19.47 33.87 18.97 33.87 17.97 33 17.47 32.13 17.97 32.13 18.97 TH
23.00 19.47 23.87 18.97 23.87 17.97 23.00 17.47 22.13 17.97 22.13 18.97 TH 23 19.47 23.87 18.97 23.87 17.97 23 17.47 22.13 17.97 22.13 18.97 TH
64.00 21.21 64.87 20.71 64.87 19.71 64.00 19.21 63.13 19.71 63.13 20.71 TH 64 21.21 64.87 20.71 64.87 19.71 64 19.21 63.13 19.71 63.13 20.71 TH
60.00 21.21 60.87 20.71 60.87 19.71 60.00 19.21 59.13 19.71 59.13 20.71 TH 60 21.21 60.87 20.71 60.87 19.71 60 19.21 59.13 19.71 59.13 20.71 TH
56.00 21.21 56.87 20.71 56.87 19.71 56.00 19.21 55.13 19.71 55.13 20.71 TH 56 21.21 56.87 20.71 56.87 19.71 56 19.21 55.13 19.71 55.13 20.71 TH
52.00 21.21 52.87 20.71 52.87 19.71 52.00 19.21 51.13 19.71 51.13 20.71 TH 52 21.21 52.87 20.71 52.87 19.71 52 19.21 51.13 19.71 51.13 20.71 TH
46.00 21.21 46.87 20.71 46.87 19.71 46.00 19.21 45.13 19.71 45.13 20.71 TH 46 21.21 46.87 20.71 46.87 19.71 46 19.21 45.13 19.71 45.13 20.71 TH
44.00 21.21 44.87 20.71 44.87 19.71 44.00 19.21 43.13 19.71 43.13 20.71 TH 44 21.21 44.87 20.71 44.87 19.71 44 19.21 43.13 19.71 43.13 20.71 TH
28.00 21.21 28.87 20.71 28.87 19.71 28.00 19.21 27.13 19.71 27.13 20.71 TH 28 21.21 28.87 20.71 28.87 19.71 28 19.21 27.13 19.71 27.13 20.71 TH
22.00 21.21 22.87 20.71 22.87 19.71 22.00 19.21 21.13 19.71 21.13 20.71 TH 22 21.21 22.87 20.71 22.87 19.71 22 19.21 21.13 19.71 21.13 20.71 TH
20.00 21.21 20.87 20.71 20.87 19.71 20.00 19.21 19.13 19.71 19.13 20.71 TH 20 21.21 20.87 20.71 20.87 19.71 20 19.21 19.13 19.71 19.13 20.71 TH
16.00 21.21 16.87 20.71 16.87 19.71 16.00 19.21 15.13 19.71 15.13 20.71 TH 16 21.21 16.87 20.71 16.87 19.71 16 19.21 15.13 19.71 15.13 20.71 TH
12.00 21.21 12.87 20.71 12.87 19.71 12.00 19.21 11.13 19.71 11.13 20.71 TH 12 21.21 12.87 20.71 12.87 19.71 12 19.21 11.13 19.71 11.13 20.71 TH
8.00 21.21 8.87 20.71 8.87 19.71 8.00 19.21 7.13 19.71 7.13 20.71 TH 8 21.21 8.87 20.71 8.87 19.71 8 19.21 7.13 19.71 7.13 20.71 TH
63.00 22.94 63.87 22.44 63.87 21.44 63.00 20.94 62.13 21.44 62.13 22.44 TH 63 22.94 63.87 22.44 63.87 21.44 63 20.94 62.13 21.44 62.13 22.44 TH
59.00 22.94 59.87 22.44 59.87 21.44 59.00 20.94 58.13 21.44 58.13 22.44 TH 59 22.94 59.87 22.44 59.87 21.44 59 20.94 58.13 21.44 58.13 22.44 TH
55.00 22.94 55.87 22.44 55.87 21.44 55.00 20.94 54.13 21.44 54.13 22.44 TH 55 22.94 55.87 22.44 55.87 21.44 55 20.94 54.13 21.44 54.13 22.44 TH
51.00 22.94 51.87 22.44 51.87 21.44 51.00 20.94 50.13 21.44 50.13 22.44 TH 51 22.94 51.87 22.44 51.87 21.44 51 20.94 50.13 21.44 50.13 22.44 TH
47.00 22.94 47.87 22.44 47.87 21.44 47.00 20.94 46.13 21.44 46.13 22.44 TH 47 22.94 47.87 22.44 47.87 21.44 47 20.94 46.13 21.44 46.13 22.44 TH
45.00 22.94 45.87 22.44 45.87 21.44 45.00 20.94 44.13 21.44 44.13 22.44 TH 45 22.94 45.87 22.44 45.87 21.44 45 20.94 44.13 21.44 44.13 22.44 TH
23.00 22.94 23.87 22.44 23.87 21.44 23.00 20.94 22.13 21.44 22.13 22.44 TH 23 22.94 23.87 22.44 23.87 21.44 23 20.94 22.13 21.44 22.13 22.44 TH
19.00 22.94 19.87 22.44 19.87 21.44 19.00 20.94 18.13 21.44 18.13 22.44 TH 19 22.94 19.87 22.44 19.87 21.44 19 20.94 18.13 21.44 18.13 22.44 TH
15.00 22.94 15.87 22.44 15.87 21.44 15.00 20.94 14.13 21.44 14.13 22.44 TH 15 22.94 15.87 22.44 15.87 21.44 15 20.94 14.13 21.44 14.13 22.44 TH
11.00 22.94 11.87 22.44 11.87 21.44 11.00 20.94 10.13 21.44 10.13 22.44 TH 11 22.94 11.87 22.44 11.87 21.44 11 20.94 10.13 21.44 10.13 22.44 TH
9.00 22.94 9.87 22.44 9.87 21.44 9.00 20.94 8.13 21.44 8.13 22.44 TH 9 22.94 9.87 22.44 9.87 21.44 9 20.94 8.13 21.44 8.13 22.44 TH
50.00 24.67 50.87 24.17 50.87 23.17 50.00 22.67 49.13 23.17 49.13 24.17 TH 50 24.67 50.87 24.17 50.87 23.17 50 22.67 49.13 23.17 49.13 24.17 TH
22.00 24.67 22.87 24.17 22.87 23.17 22.00 22.67 21.13 23.17 21.13 24.17 TH 22 24.67 22.87 24.17 22.87 23.17 22 22.67 21.13 23.17 21.13 24.17 TH
65.00 26.40 65.87 25.90 65.87 24.90 65.00 24.40 64.13 24.90 64.13 25.90 TH 65 26.4 65.87 25.9 65.87 24.9 65 24.4 64.13 24.9 64.13 25.9 TH
61.00 26.40 61.87 25.90 61.87 24.90 61.00 24.40 60.13 24.90 60.13 25.90 TH 61 26.4 61.87 25.9 61.87 24.9 61 24.4 60.13 24.9 60.13 25.9 TH
57.00 26.40 57.87 25.90 57.87 24.90 57.00 24.40 56.13 24.90 56.13 25.90 TH 57 26.4 57.87 25.9 57.87 24.9 57 24.4 56.13 24.9 56.13 25.9 TH
49.00 26.40 49.87 25.90 49.87 24.90 49.00 24.40 48.13 24.90 48.13 25.90 TH 49 26.4 49.87 25.9 49.87 24.9 49 24.4 48.13 24.9 48.13 25.9 TH
27.00 26.40 27.87 25.90 27.87 24.90 27.00 24.40 26.13 24.90 26.13 25.90 TH 27 26.4 27.87 25.9 27.87 24.9 27 24.4 26.13 24.9 26.13 25.9 TH
25.00 26.40 25.87 25.90 25.87 24.90 25.00 24.40 24.13 24.90 24.13 25.90 TH 25 26.4 25.87 25.9 25.87 24.9 25 24.4 24.13 24.9 24.13 25.9 TH
21.00 26.40 21.87 25.90 21.87 24.90 21.00 24.40 20.13 24.90 20.13 25.90 TH 21 26.4 21.87 25.9 21.87 24.9 21 24.4 20.13 24.9 20.13 25.9 TH
17.00 26.40 17.87 25.90 17.87 24.90 17.00 24.40 16.13 24.90 16.13 25.90 TH 17 26.4 17.87 25.9 17.87 24.9 17 24.4 16.13 24.9 16.13 25.9 TH
13.00 26.40 13.87 25.90 13.87 24.90 13.00 24.40 12.13 24.90 12.13 25.90 TH 13 26.4 13.87 25.9 13.87 24.9 13 24.4 12.13 24.9 12.13 25.9 TH
62.00 28.13 62.87 27.63 62.87 26.63 62.00 26.13 61.13 26.63 61.13 27.63 TH 62 28.13 62.87 27.63 62.87 26.63 62 26.13 61.13 26.63 61.13 27.63 TH
58.00 28.13 58.87 27.63 58.87 26.63 58.00 26.13 57.13 26.63 57.13 27.63 TH 58 28.13 58.87 27.63 58.87 26.63 58 26.13 57.13 26.63 57.13 27.63 TH
54.00 28.13 54.87 27.63 54.87 26.63 54.00 26.13 53.13 26.63 53.13 27.63 TH 54 28.13 54.87 27.63 54.87 26.63 54 26.13 53.13 26.63 53.13 27.63 TH
52.00 28.13 52.87 27.63 52.87 26.63 52.00 26.13 51.13 26.63 51.13 27.63 TH 52 28.13 52.87 27.63 52.87 26.63 52 26.13 51.13 26.63 51.13 27.63 TH
50.00 28.13 50.87 27.63 50.87 26.63 50.00 26.13 49.13 26.63 49.13 27.63 TH 50 28.13 50.87 27.63 50.87 26.63 50 26.13 49.13 26.63 49.13 27.63 TH
48.00 28.13 48.87 27.63 48.87 26.63 48.00 26.13 47.13 26.63 47.13 27.63 TH 48 28.13 48.87 27.63 48.87 26.63 48 26.13 47.13 26.63 47.13 27.63 TH
24.00 28.13 24.87 27.63 24.87 26.63 24.00 26.13 23.13 26.63 23.13 27.63 TH 24 28.13 24.87 27.63 24.87 26.63 24 26.13 23.13 26.63 23.13 27.63 TH
18.00 28.13 18.87 27.63 18.87 26.63 18.00 26.13 17.13 26.63 17.13 27.63 TH 18 28.13 18.87 27.63 18.87 26.63 18 26.13 17.13 26.63 17.13 27.63 TH
14.00 28.13 14.87 27.63 14.87 26.63 14.00 26.13 13.13 26.63 13.13 27.63 TH 14 28.13 14.87 27.63 14.87 26.63 14 26.13 13.13 26.63 13.13 27.63 TH
10.00 28.13 10.87 27.63 10.87 26.63 10.00 26.13 9.13 26.63 9.13 27.63 TH 10 28.13 10.87 27.63 10.87 26.63 10 26.13 9.13 26.63 9.13 27.63 TH
8.00 28.13 8.87 27.63 8.87 26.63 8.00 26.13 7.13 26.63 7.13 27.63 TH 8 28.13 8.87 27.63 8.87 26.63 8 26.13 7.13 26.63 7.13 27.63 TH
49.00 29.87 49.87 29.37 49.87 28.37 49.00 27.87 48.13 28.37 48.13 29.37 TH 49 29.87 49.87 29.37 49.87 28.37 49 27.87 48.13 28.37 48.13 29.37 TH
25.00 29.87 25.87 29.37 25.87 28.37 25.00 27.87 24.13 28.37 24.13 29.37 TH 25 29.87 25.87 29.37 25.87 28.37 25 27.87 24.13 28.37 24.13 29.37 TH
9.00 29.87 9.87 29.37 9.87 28.37 9.00 27.87 8.13 28.37 8.13 29.37 TH 9 29.87 9.87 29.37 9.87 28.37 9 27.87 8.13 28.37 8.13 29.37 TH
64.00 31.60 64.87 31.10 64.87 30.10 64.00 29.60 63.13 30.10 63.13 31.10 TH 64 31.6 64.87 31.1 64.87 30.1 64 29.6 63.13 30.1 63.13 31.1 TH
60.00 31.60 60.87 31.10 60.87 30.10 60.00 29.60 59.13 30.10 59.13 31.10 TH 60 31.6 60.87 31.1 60.87 30.1 60 29.6 59.13 30.1 59.13 31.1 TH
56.00 31.60 56.87 31.10 56.87 30.10 56.00 29.60 55.13 30.10 55.13 31.10 TH 56 31.6 56.87 31.1 56.87 30.1 56 29.6 55.13 30.1 55.13 31.1 TH
24.00 31.60 24.87 31.10 24.87 30.10 24.00 29.60 23.13 30.10 23.13 31.10 TH 24 31.6 24.87 31.1 24.87 30.1 24 29.6 23.13 30.1 23.13 31.1 TH
22.00 31.60 22.87 31.10 22.87 30.10 22.00 29.60 21.13 30.10 21.13 31.10 TH 22 31.6 22.87 31.1 22.87 30.1 22 29.6 21.13 30.1 21.13 31.1 TH
20.00 31.60 20.87 31.10 20.87 30.10 20.00 29.60 19.13 30.10 19.13 31.10 TH 20 31.6 20.87 31.1 20.87 30.1 20 29.6 19.13 30.1 19.13 31.1 TH
16.00 31.60 16.87 31.10 16.87 30.10 16.00 29.60 15.13 30.10 15.13 31.10 TH 16 31.6 16.87 31.1 16.87 30.1 16 29.6 15.13 30.1 15.13 31.1 TH
12.00 31.60 12.87 31.10 12.87 30.10 12.00 29.60 11.13 30.10 11.13 31.10 TH 12 31.6 12.87 31.1 12.87 30.1 12 29.6 11.13 30.1 11.13 31.1 TH
63.00 33.33 63.87 32.83 63.87 31.83 63.00 31.33 62.13 31.83 62.13 32.83 TH 63 33.33 63.87 32.83 63.87 31.83 63 31.33 62.13 31.83 62.13 32.83 TH
59.00 33.33 59.87 32.83 59.87 31.83 59.00 31.33 58.13 31.83 58.13 32.83 TH 59 33.33 59.87 32.83 59.87 31.83 59 31.33 58.13 31.83 58.13 32.83 TH
55.00 33.33 55.87 32.83 55.87 31.83 55.00 31.33 54.13 31.83 54.13 32.83 TH 55 33.33 55.87 32.83 55.87 31.83 55 31.33 54.13 31.83 54.13 32.83 TH
51.00 33.33 51.87 32.83 51.87 31.83 51.00 31.33 50.13 31.83 50.13 32.83 TH 51 33.33 51.87 32.83 51.87 31.83 51 31.33 50.13 31.83 50.13 32.83 TH
49.00 33.33 49.87 32.83 49.87 31.83 49.00 31.33 48.13 31.83 48.13 32.83 TH 49 33.33 49.87 32.83 49.87 31.83 49 31.33 48.13 31.83 48.13 32.83 TH
47.00 33.33 47.87 32.83 47.87 31.83 47.00 31.33 46.13 31.83 46.13 32.83 TH 47 33.33 47.87 32.83 47.87 31.83 47 31.33 46.13 31.83 46.13 32.83 TH
23.00 33.33 23.87 32.83 23.87 31.83 23.00 31.33 22.13 31.83 22.13 32.83 TH 23 33.33 23.87 32.83 23.87 31.83 23 31.33 22.13 31.83 22.13 32.83 TH
19.00 33.33 19.87 32.83 19.87 31.83 19.00 31.33 18.13 31.83 18.13 32.83 TH 19 33.33 19.87 32.83 19.87 31.83 19 31.33 18.13 31.83 18.13 32.83 TH
15.00 33.33 15.87 32.83 15.87 31.83 15.00 31.33 14.13 31.83 14.13 32.83 TH 15 33.33 15.87 32.83 15.87 31.83 15 31.33 14.13 31.83 14.13 32.83 TH
11.00 33.33 11.87 32.83 11.87 31.83 11.00 31.33 10.13 31.83 10.13 32.83 TH 11 33.33 11.87 32.83 11.87 31.83 11 31.33 10.13 31.83 10.13 32.83 TH
9.00 33.33 9.87 32.83 9.87 31.83 9.00 31.33 8.13 31.83 8.13 32.83 TH 9 33.33 9.87 32.83 9.87 31.83 9 31.33 8.13 31.83 8.13 32.83 TH
7.00 33.33 7.87 32.83 7.87 31.83 7.00 31.33 6.13 31.83 6.13 32.83 TH 7 33.33 7.87 32.83 7.87 31.83 7 31.33 6.13 31.83 6.13 32.83 TH
48.00 35.06 48.87 34.56 48.87 33.56 48.00 33.06 47.13 33.56 47.13 34.56 TH 48 35.06 48.87 34.56 48.87 33.56 48 33.06 47.13 33.56 47.13 34.56 TH
8.00 35.06 8.87 34.56 8.87 33.56 8.00 33.06 7.13 33.56 7.13 34.56 TH 8 35.06 8.87 34.56 8.87 33.56 8 33.06 7.13 33.56 7.13 34.56 TH
65.00 36.79 65.87 36.29 65.87 35.29 65.00 34.79 64.13 35.29 64.13 36.29 TH 65 36.79 65.87 36.29 65.87 35.29 65 34.79 64.13 35.29 64.13 36.29 TH
61.00 36.79 61.87 36.29 61.87 35.29 61.00 34.79 60.13 35.29 60.13 36.29 TH 61 36.79 61.87 36.29 61.87 35.29 61 34.79 60.13 35.29 60.13 36.29 TH
57.00 36.79 57.87 36.29 57.87 35.29 57.00 34.79 56.13 35.29 56.13 36.29 TH 57 36.79 57.87 36.29 57.87 35.29 57 34.79 56.13 35.29 56.13 36.29 TH
53.00 36.79 53.87 36.29 53.87 35.29 53.00 34.79 52.13 35.29 52.13 36.29 TH 53 36.79 53.87 36.29 53.87 35.29 53 34.79 52.13 35.29 52.13 36.29 TH
51.00 36.79 51.87 36.29 51.87 35.29 51.00 34.79 50.13 35.29 50.13 36.29 TH 51 36.79 51.87 36.29 51.87 35.29 51 34.79 50.13 35.29 50.13 36.29 TH
29.00 36.79 29.87 36.29 29.87 35.29 29.00 34.79 28.13 35.29 28.13 36.29 TH 29 36.79 29.87 36.29 29.87 35.29 29 34.79 28.13 35.29 28.13 36.29 TH
27.00 36.79 27.87 36.29 27.87 35.29 27.00 34.79 26.13 35.29 26.13 36.29 TH 27 36.79 27.87 36.29 27.87 35.29 27 34.79 26.13 35.29 26.13 36.29 TH
25.00 36.79 25.87 36.29 25.87 35.29 25.00 34.79 24.13 35.29 24.13 36.29 TH 25 36.79 25.87 36.29 25.87 35.29 25 34.79 24.13 35.29 24.13 36.29 TH
23.00 36.79 23.87 36.29 23.87 35.29 23.00 34.79 22.13 35.29 22.13 36.29 TH 23 36.79 23.87 36.29 23.87 35.29 23 34.79 22.13 35.29 22.13 36.29 TH
21.00 36.79 21.87 36.29 21.87 35.29 21.00 34.79 20.13 35.29 20.13 36.29 TH 21 36.79 21.87 36.29 21.87 35.29 21 34.79 20.13 35.29 20.13 36.29 TH
17.00 36.79 17.87 36.29 17.87 35.29 17.00 34.79 16.13 35.29 16.13 36.29 TH 17 36.79 17.87 36.29 17.87 35.29 17 34.79 16.13 35.29 16.13 36.29 TH
13.00 36.79 13.87 36.29 13.87 35.29 13.00 34.79 12.13 35.29 12.13 36.29 TH 13 36.79 13.87 36.29 13.87 35.29 13 34.79 12.13 35.29 12.13 36.29 TH
9.00 36.79 9.87 36.29 9.87 35.29 9.00 34.79 8.13 35.29 8.13 36.29 TH 9 36.79 9.87 36.29 9.87 35.29 9 34.79 8.13 35.29 8.13 36.29 TH
7.00 36.79 7.87 36.29 7.87 35.29 7.00 34.79 6.13 35.29 6.13 36.29 TH 7 36.79 7.87 36.29 7.87 35.29 7 34.79 6.13 35.29 6.13 36.29 TH
62.00 38.53 62.87 38.03 62.87 37.03 62.00 36.53 61.13 37.03 61.13 38.03 TH 62 38.53 62.87 38.03 62.87 37.03 62 36.53 61.13 37.03 61.13 38.03 TH
58.00 38.53 58.87 38.03 58.87 37.03 58.00 36.53 57.13 37.03 57.13 38.03 TH 58 38.53 58.87 38.03 58.87 37.03 58 36.53 57.13 37.03 57.13 38.03 TH
54.00 38.53 54.87 38.03 54.87 37.03 54.00 36.53 53.13 37.03 53.13 38.03 TH 54 38.53 54.87 38.03 54.87 37.03 54 36.53 53.13 37.03 53.13 38.03 TH
50.00 38.53 50.87 38.03 50.87 37.03 50.00 36.53 49.13 37.03 49.13 38.03 TH 50 38.53 50.87 38.03 50.87 37.03 50 36.53 49.13 37.03 49.13 38.03 TH
46.00 38.53 46.87 38.03 46.87 37.03 46.00 36.53 45.13 37.03 45.13 38.03 TH 46 38.53 46.87 38.03 46.87 37.03 46 36.53 45.13 37.03 45.13 38.03 TH
26.00 38.53 26.87 38.03 26.87 37.03 26.00 36.53 25.13 37.03 25.13 38.03 TH 26 38.53 26.87 38.03 26.87 37.03 26 36.53 25.13 37.03 25.13 38.03 TH
24.00 38.53 24.87 38.03 24.87 37.03 24.00 36.53 23.13 37.03 23.13 38.03 TH 24 38.53 24.87 38.03 24.87 37.03 24 36.53 23.13 37.03 23.13 38.03 TH
22.00 38.53 22.87 38.03 22.87 37.03 22.00 36.53 21.13 37.03 21.13 38.03 TH 22 38.53 22.87 38.03 22.87 37.03 22 36.53 21.13 37.03 21.13 38.03 TH
18.00 38.53 18.87 38.03 18.87 37.03 18.00 36.53 17.13 37.03 17.13 38.03 TH 18 38.53 18.87 38.03 18.87 37.03 18 36.53 17.13 37.03 17.13 38.03 TH
14.00 38.53 14.87 38.03 14.87 37.03 14.00 36.53 13.13 37.03 13.13 38.03 TH 14 38.53 14.87 38.03 14.87 37.03 14 36.53 13.13 37.03 13.13 38.03 TH
10.00 38.53 10.87 38.03 10.87 37.03 10.00 36.53 9.13 37.03 9.13 38.03 TH 10 38.53 10.87 38.03 10.87 37.03 10 36.53 9.13 37.03 9.13 38.03 TH
47.00 40.26 47.87 39.76 47.87 38.76 47.00 38.26 46.13 38.76 46.13 39.76 TH 47 40.26 47.87 39.76 47.87 38.76 47 38.26 46.13 38.76 46.13 39.76 TH
45.00 40.26 45.87 39.76 45.87 38.76 45.00 38.26 44.13 38.76 44.13 39.76 TH 45 40.26 45.87 39.76 45.87 38.76 45 38.26 44.13 38.76 44.13 39.76 TH
41.00 40.26 41.87 39.76 41.87 38.76 41.00 38.26 40.13 38.76 40.13 39.76 TH 41 40.26 41.87 39.76 41.87 38.76 41 38.26 40.13 38.76 40.13 39.76 TH
39.00 40.26 39.87 39.76 39.87 38.76 39.00 38.26 38.13 38.76 38.13 39.76 TH 39 40.26 39.87 39.76 39.87 38.76 39 38.26 38.13 38.76 38.13 39.76 TH
37.00 40.26 37.87 39.76 37.87 38.76 37.00 38.26 36.13 38.76 36.13 39.76 TH 37 40.26 37.87 39.76 37.87 38.76 37 38.26 36.13 38.76 36.13 39.76 TH
33.00 40.26 33.87 39.76 33.87 38.76 33.00 38.26 32.13 38.76 32.13 39.76 TH 33 40.26 33.87 39.76 33.87 38.76 33 38.26 32.13 38.76 32.13 39.76 TH
31.00 40.26 31.87 39.76 31.87 38.76 31.00 38.26 30.13 38.76 30.13 39.76 TH 31 40.26 31.87 39.76 31.87 38.76 31 38.26 30.13 38.76 30.13 39.76 TH
29.00 40.26 29.87 39.76 29.87 38.76 29.00 38.26 28.13 38.76 28.13 39.76 TH 29 40.26 29.87 39.76 29.87 38.76 29 38.26 28.13 38.76 28.13 39.76 TH
25.00 40.26 25.87 39.76 25.87 38.76 25.00 38.26 24.13 38.76 24.13 39.76 TH 25 40.26 25.87 39.76 25.87 38.76 25 38.26 24.13 38.76 24.13 39.76 TH
9.00 40.26 9.87 39.76 9.87 38.76 9.00 38.26 8.13 38.76 8.13 39.76 TH 9 40.26 9.87 39.76 9.87 38.76 9 38.26 8.13 38.76 8.13 39.76 TH
7.00 40.26 7.87 39.76 7.87 38.76 7.00 38.26 6.13 38.76 6.13 39.76 TH 7 40.26 7.87 39.76 7.87 38.76 7 38.26 6.13 38.76 6.13 39.76 TH
64.00 41.99 64.87 41.49 64.87 40.49 64.00 39.99 63.13 40.49 63.13 41.49 TH 64 41.99 64.87 41.49 64.87 40.49 64 39.99 63.13 40.49 63.13 41.49 TH
60.00 41.99 60.87 41.49 60.87 40.49 60.00 39.99 59.13 40.49 59.13 41.49 TH 60 41.99 60.87 41.49 60.87 40.49 60 39.99 59.13 40.49 59.13 41.49 TH
56.00 41.99 56.87 41.49 56.87 40.49 56.00 39.99 55.13 40.49 55.13 41.49 TH 56 41.99 56.87 41.49 56.87 40.49 56 39.99 55.13 40.49 55.13 41.49 TH
52.00 41.99 52.87 41.49 52.87 40.49 52.00 39.99 51.13 40.49 51.13 41.49 TH 52 41.99 52.87 41.49 52.87 40.49 52 39.99 51.13 40.49 51.13 41.49 TH
46.00 41.99 46.87 41.49 46.87 40.49 46.00 39.99 45.13 40.49 45.13 41.49 TH 46 41.99 46.87 41.49 46.87 40.49 46 39.99 45.13 40.49 45.13 41.49 TH
44.00 41.99 44.87 41.49 44.87 40.49 44.00 39.99 43.13 40.49 43.13 41.49 TH 44 41.99 44.87 41.49 44.87 40.49 44 39.99 43.13 40.49 43.13 41.49 TH
34.00 41.99 34.87 41.49 34.87 40.49 34.00 39.99 33.13 40.49 33.13 41.49 TH 34 41.99 34.87 41.49 34.87 40.49 34 39.99 33.13 40.49 33.13 41.49 TH
30.00 41.99 30.87 41.49 30.87 40.49 30.00 39.99 29.13 40.49 29.13 41.49 TH 30 41.99 30.87 41.49 30.87 40.49 30 39.99 29.13 40.49 29.13 41.49 TH
28.00 41.99 28.87 41.49 28.87 40.49 28.00 39.99 27.13 40.49 27.13 41.49 TH 28 41.99 28.87 41.49 28.87 40.49 28 39.99 27.13 40.49 27.13 41.49 TH
20.00 41.99 20.87 41.49 20.87 40.49 20.00 39.99 19.13 40.49 19.13 41.49 TH 20 41.99 20.87 41.49 20.87 40.49 20 39.99 19.13 40.49 19.13 41.49 TH
16.00 41.99 16.87 41.49 16.87 40.49 16.00 39.99 15.13 40.49 15.13 41.49 TH 16 41.99 16.87 41.49 16.87 40.49 16 39.99 15.13 40.49 15.13 41.49 TH
12.00 41.99 12.87 41.49 12.87 40.49 12.00 39.99 11.13 40.49 11.13 41.49 TH 12 41.99 12.87 41.49 12.87 40.49 12 39.99 11.13 40.49 11.13 41.49 TH
8.00 41.99 8.87 41.49 8.87 40.49 8.00 39.99 7.13 40.49 7.13 41.49 TH 8 41.99 8.87 41.49 8.87 40.49 8 39.99 7.13 40.49 7.13 41.49 TH
63.00 43.72 63.87 43.22 63.87 42.22 63.00 41.72 62.13 42.22 62.13 43.22 TH 63 43.72 63.87 43.22 63.87 42.22 63 41.72 62.13 42.22 62.13 43.22 TH
59.00 43.72 59.87 43.22 59.87 42.22 59.00 41.72 58.13 42.22 58.13 43.22 TH 59 43.72 59.87 43.22 59.87 42.22 59 41.72 58.13 42.22 58.13 43.22 TH
55.00 43.72 55.87 43.22 55.87 42.22 55.00 41.72 54.13 42.22 54.13 43.22 TH 55 43.72 55.87 43.22 55.87 42.22 55 41.72 54.13 42.22 54.13 43.22 TH
51.00 43.72 51.87 43.22 51.87 42.22 51.00 41.72 50.13 42.22 50.13 43.22 TH 51 43.72 51.87 43.22 51.87 42.22 51 41.72 50.13 42.22 50.13 43.22 TH
47.00 43.72 47.87 43.22 47.87 42.22 47.00 41.72 46.13 42.22 46.13 43.22 TH 47 43.72 47.87 43.22 47.87 42.22 47 41.72 46.13 42.22 46.13 43.22 TH
43.00 43.72 43.87 43.22 43.87 42.22 43.00 41.72 42.13 42.22 42.13 43.22 TH 43 43.72 43.87 43.22 43.87 42.22 43 41.72 42.13 42.22 42.13 43.22 TH
39.00 43.72 39.87 43.22 39.87 42.22 39.00 41.72 38.13 42.22 38.13 43.22 TH 39 43.72 39.87 43.22 39.87 42.22 39 41.72 38.13 42.22 38.13 43.22 TH
35.00 43.72 35.87 43.22 35.87 42.22 35.00 41.72 34.13 42.22 34.13 43.22 TH 35 43.72 35.87 43.22 35.87 42.22 35 41.72 34.13 42.22 34.13 43.22 TH
31.00 43.72 31.87 43.22 31.87 42.22 31.00 41.72 30.13 42.22 30.13 43.22 TH 31 43.72 31.87 43.22 31.87 42.22 31 41.72 30.13 42.22 30.13 43.22 TH
27.00 43.72 27.87 43.22 27.87 42.22 27.00 41.72 26.13 42.22 26.13 43.22 TH 27 43.72 27.87 43.22 27.87 42.22 27 41.72 26.13 42.22 26.13 43.22 TH
25.00 43.72 25.87 43.22 25.87 42.22 25.00 41.72 24.13 42.22 24.13 43.22 TH 25 43.72 25.87 43.22 25.87 42.22 25 41.72 24.13 42.22 24.13 43.22 TH
23.00 43.72 23.87 43.22 23.87 42.22 23.00 41.72 22.13 42.22 22.13 43.22 TH 23 43.72 23.87 43.22 23.87 42.22 23 41.72 22.13 42.22 22.13 43.22 TH
21.00 43.72 21.87 43.22 21.87 42.22 21.00 41.72 20.13 42.22 20.13 43.22 TH 21 43.72 21.87 43.22 21.87 42.22 21 41.72 20.13 42.22 20.13 43.22 TH
19.00 43.72 19.87 43.22 19.87 42.22 19.00 41.72 18.13 42.22 18.13 43.22 TH 19 43.72 19.87 43.22 19.87 42.22 19 41.72 18.13 42.22 18.13 43.22 TH
15.00 43.72 15.87 43.22 15.87 42.22 15.00 41.72 14.13 42.22 14.13 43.22 TH 15 43.72 15.87 43.22 15.87 42.22 15 41.72 14.13 42.22 14.13 43.22 TH
11.00 43.72 11.87 43.22 11.87 42.22 11.00 41.72 10.13 42.22 10.13 43.22 TH 11 43.72 11.87 43.22 11.87 42.22 11 41.72 10.13 42.22 10.13 43.22 TH
9.00 43.72 9.87 43.22 9.87 42.22 9.00 41.72 8.13 42.22 8.13 43.22 TH 9 43.72 9.87 43.22 9.87 42.22 9 41.72 8.13 42.22 8.13 43.22 TH
7.00 43.72 7.87 43.22 7.87 42.22 7.00 41.72 6.13 42.22 6.13 43.22 TH 7 43.72 7.87 43.22 7.87 42.22 7 41.72 6.13 42.22 6.13 43.22 TH
24.00 45.45 24.87 44.95 24.87 43.95 24.00 43.45 23.13 43.95 23.13 44.95 TH 24 45.45 24.87 44.95 24.87 43.95 24 43.45 23.13 43.95 23.13 44.95 TH
22.00 45.45 22.87 44.95 22.87 43.95 22.00 43.45 21.13 43.95 21.13 44.95 TH 22 45.45 22.87 44.95 22.87 43.95 22 43.45 21.13 43.95 21.13 44.95 TH
20.00 45.45 20.87 44.95 20.87 43.95 20.00 43.45 19.13 43.95 19.13 44.95 TH 20 45.45 20.87 44.95 20.87 43.95 20 43.45 19.13 43.95 19.13 44.95 TH
18.00 45.45 18.87 44.95 18.87 43.95 18.00 43.45 17.13 43.95 17.13 44.95 TH 18 45.45 18.87 44.95 18.87 43.95 18 43.45 17.13 43.95 17.13 44.95 TH
14.00 45.45 14.87 44.95 14.87 43.95 14.00 43.45 13.13 43.95 13.13 44.95 TH 14 45.45 14.87 44.95 14.87 43.95 14 43.45 13.13 43.95 13.13 44.95 TH
10.00 45.45 10.87 44.95 10.87 43.95 10.00 43.45 9.13 43.95 9.13 44.95 TH 10 45.45 10.87 44.95 10.87 43.95 10 43.45 9.13 43.95 9.13 44.95 TH
8.00 45.45 8.87 44.95 8.87 43.95 8.00 43.45 7.13 43.95 7.13 44.95 TH 8 45.45 8.87 44.95 8.87 43.95 8 43.45 7.13 43.95 7.13 44.95 TH
65.00 47.19 65.87 46.69 65.87 45.69 65.00 45.19 64.13 45.69 64.13 46.69 TH 65 47.19 65.87 46.69 65.87 45.69 65 45.19 64.13 45.69 64.13 46.69 TH
61.00 47.19 61.87 46.69 61.87 45.69 61.00 45.19 60.13 45.69 60.13 46.69 TH 61 47.19 61.87 46.69 61.87 45.69 61 45.19 60.13 45.69 60.13 46.69 TH
57.00 47.19 57.87 46.69 57.87 45.69 57.00 45.19 56.13 45.69 56.13 46.69 TH 57 47.19 57.87 46.69 57.87 45.69 57 45.19 56.13 45.69 56.13 46.69 TH
53.00 47.19 53.87 46.69 53.87 45.69 53.00 45.19 52.13 45.69 52.13 46.69 TH 53 47.19 53.87 46.69 53.87 45.69 53 45.19 52.13 45.69 52.13 46.69 TH
49.00 47.19 49.87 46.69 49.87 45.69 49.00 45.19 48.13 45.69 48.13 46.69 TH 49 47.19 49.87 46.69 49.87 45.69 49 45.19 48.13 45.69 48.13 46.69 TH
45.00 47.19 45.87 46.69 45.87 45.69 45.00 45.19 44.13 45.69 44.13 46.69 TH 45 47.19 45.87 46.69 45.87 45.69 45 45.19 44.13 45.69 44.13 46.69 TH
41.00 47.19 41.87 46.69 41.87 45.69 41.00 45.19 40.13 45.69 40.13 46.69 TH 41 47.19 41.87 46.69 41.87 45.69 41 45.19 40.13 45.69 40.13 46.69 TH
37.00 47.19 37.87 46.69 37.87 45.69 37.00 45.19 36.13 45.69 36.13 46.69 TH 37 47.19 37.87 46.69 37.87 45.69 37 45.19 36.13 45.69 36.13 46.69 TH
33.00 47.19 33.87 46.69 33.87 45.69 33.00 45.19 32.13 45.69 32.13 46.69 TH 33 47.19 33.87 46.69 33.87 45.69 33 45.19 32.13 45.69 32.13 46.69 TH
29.00 47.19 29.87 46.69 29.87 45.69 29.00 45.19 28.13 45.69 28.13 46.69 TH 29 47.19 29.87 46.69 29.87 45.69 29 45.19 28.13 45.69 28.13 46.69 TH
9.00 47.19 9.87 46.69 9.87 45.69 9.00 45.19 8.13 45.69 8.13 46.69 TH 9 47.19 9.87 46.69 9.87 45.69 9 45.19 8.13 45.69 8.13 46.69 TH
64.00 48.92 64.87 48.42 64.87 47.42 64.00 46.92 63.13 47.42 63.13 48.42 TH 64 48.92 64.87 48.42 64.87 47.42 64 46.92 63.13 47.42 63.13 48.42 TH
62.00 48.92 62.87 48.42 62.87 47.42 62.00 46.92 61.13 47.42 61.13 48.42 TH 62 48.92 62.87 48.42 62.87 47.42 62 46.92 61.13 47.42 61.13 48.42 TH
60.00 48.92 60.87 48.42 60.87 47.42 60.00 46.92 59.13 47.42 59.13 48.42 TH 60 48.92 60.87 48.42 60.87 47.42 60 46.92 59.13 47.42 59.13 48.42 TH
58.00 48.92 58.87 48.42 58.87 47.42 58.00 46.92 57.13 47.42 57.13 48.42 TH 58 48.92 58.87 48.42 58.87 47.42 58 46.92 57.13 47.42 57.13 48.42 TH
56.00 48.92 56.87 48.42 56.87 47.42 56.00 46.92 55.13 47.42 55.13 48.42 TH 56 48.92 56.87 48.42 56.87 47.42 56 46.92 55.13 47.42 55.13 48.42 TH
54.00 48.92 54.87 48.42 54.87 47.42 54.00 46.92 53.13 47.42 53.13 48.42 TH 54 48.92 54.87 48.42 54.87 47.42 54 46.92 53.13 47.42 53.13 48.42 TH
52.00 48.92 52.87 48.42 52.87 47.42 52.00 46.92 51.13 47.42 51.13 48.42 TH 52 48.92 52.87 48.42 52.87 47.42 52 46.92 51.13 47.42 51.13 48.42 TH
50.00 48.92 50.87 48.42 50.87 47.42 50.00 46.92 49.13 47.42 49.13 48.42 TH 50 48.92 50.87 48.42 50.87 47.42 50 46.92 49.13 47.42 49.13 48.42 TH
40.00 48.92 40.87 48.42 40.87 47.42 40.00 46.92 39.13 47.42 39.13 48.42 TH 40 48.92 40.87 48.42 40.87 47.42 40 46.92 39.13 47.42 39.13 48.42 TH
38.00 48.92 38.87 48.42 38.87 47.42 38.00 46.92 37.13 47.42 37.13 48.42 TH 38 48.92 38.87 48.42 38.87 47.42 38 46.92 37.13 47.42 37.13 48.42 TH
36.00 48.92 36.87 48.42 36.87 47.42 36.00 46.92 35.13 47.42 35.13 48.42 TH 36 48.92 36.87 48.42 36.87 47.42 36 46.92 35.13 47.42 35.13 48.42 TH
34.00 48.92 34.87 48.42 34.87 47.42 34.00 46.92 33.13 47.42 33.13 48.42 TH 34 48.92 34.87 48.42 34.87 47.42 34 46.92 33.13 47.42 33.13 48.42 TH
22.00 48.92 22.87 48.42 22.87 47.42 22.00 46.92 21.13 47.42 21.13 48.42 TH 22 48.92 22.87 48.42 22.87 47.42 22 46.92 21.13 47.42 21.13 48.42 TH
18.00 48.92 18.87 48.42 18.87 47.42 18.00 46.92 17.13 47.42 17.13 48.42 TH 18 48.92 18.87 48.42 18.87 47.42 18 46.92 17.13 47.42 17.13 48.42 TH
63.00 50.65 63.87 50.15 63.87 49.15 63.00 48.65 62.13 49.15 62.13 50.15 TH 63 50.65 63.87 50.15 63.87 49.15 63 48.65 62.13 49.15 62.13 50.15 TH
59.00 50.65 59.87 50.15 59.87 49.15 59.00 48.65 58.13 49.15 58.13 50.15 TH 59 50.65 59.87 50.15 59.87 49.15 59 48.65 58.13 49.15 58.13 50.15 TH
57.00 50.65 57.87 50.15 57.87 49.15 57.00 48.65 56.13 49.15 56.13 50.15 TH 57 50.65 57.87 50.15 57.87 49.15 57 48.65 56.13 49.15 56.13 50.15 TH
53.00 50.65 53.87 50.15 53.87 49.15 53.00 48.65 52.13 49.15 52.13 50.15 TH 53 50.65 53.87 50.15 53.87 49.15 53 48.65 52.13 49.15 52.13 50.15 TH
49.00 50.65 49.87 50.15 49.87 49.15 49.00 48.65 48.13 49.15 48.13 50.15 TH 49 50.65 49.87 50.15 49.87 49.15 49 48.65 48.13 49.15 48.13 50.15 TH
47.00 50.65 47.87 50.15 47.87 49.15 47.00 48.65 46.13 49.15 46.13 50.15 TH 47 50.65 47.87 50.15 47.87 49.15 47 48.65 46.13 49.15 46.13 50.15 TH
45.00 50.65 45.87 50.15 45.87 49.15 45.00 48.65 44.13 49.15 44.13 50.15 TH 45 50.65 45.87 50.15 45.87 49.15 45 48.65 44.13 49.15 44.13 50.15 TH
43.00 50.65 43.87 50.15 43.87 49.15 43.00 48.65 42.13 49.15 42.13 50.15 TH 43 50.65 43.87 50.15 43.87 49.15 43 48.65 42.13 49.15 42.13 50.15 TH
33.00 50.65 33.87 50.15 33.87 49.15 33.00 48.65 32.13 49.15 32.13 50.15 TH 33 50.65 33.87 50.15 33.87 49.15 33 48.65 32.13 49.15 32.13 50.15 TH
31.00 50.65 31.87 50.15 31.87 49.15 31.00 48.65 30.13 49.15 30.13 50.15 TH 31 50.65 31.87 50.15 31.87 49.15 31 48.65 30.13 49.15 30.13 50.15 TH
29.00 50.65 29.87 50.15 29.87 49.15 29.00 48.65 28.13 49.15 28.13 50.15 TH 29 50.65 29.87 50.15 29.87 49.15 29 48.65 28.13 49.15 28.13 50.15 TH
27.00 50.65 27.87 50.15 27.87 49.15 27.00 48.65 26.13 49.15 26.13 50.15 TH 27 50.65 27.87 50.15 27.87 49.15 27 48.65 26.13 49.15 26.13 50.15 TH
23.00 50.65 23.87 50.15 23.87 49.15 23.00 48.65 22.13 49.15 22.13 50.15 TH 23 50.65 23.87 50.15 23.87 49.15 23 48.65 22.13 49.15 22.13 50.15 TH
19.00 50.65 19.87 50.15 19.87 49.15 19.00 48.65 18.13 49.15 18.13 50.15 TH 19 50.65 19.87 50.15 19.87 49.15 19 48.65 18.13 49.15 18.13 50.15 TH
15.00 50.65 15.87 50.15 15.87 49.15 15.00 48.65 14.13 49.15 14.13 50.15 TH 15 50.65 15.87 50.15 15.87 49.15 15 48.65 14.13 49.15 14.13 50.15 TH
11.00 50.65 11.87 50.15 11.87 49.15 11.00 48.65 10.13 49.15 10.13 50.15 TH 11 50.65 11.87 50.15 11.87 49.15 11 48.65 10.13 49.15 10.13 50.15 TH
64.00 52.38 64.87 51.88 64.87 50.88 64.00 50.38 63.13 50.88 63.13 51.88 TH 64 52.38 64.87 51.88 64.87 50.88 64 50.38 63.13 50.88 63.13 51.88 TH
60.00 52.38 60.87 51.88 60.87 50.88 60.00 50.38 59.13 50.88 59.13 51.88 TH 60 52.38 60.87 51.88 60.87 50.88 60 50.38 59.13 50.88 59.13 51.88 TH
56.00 52.38 56.87 51.88 56.87 50.88 56.00 50.38 55.13 50.88 55.13 51.88 TH 56 52.38 56.87 51.88 56.87 50.88 56 50.38 55.13 50.88 55.13 51.88 TH
52.00 52.38 52.87 51.88 52.87 50.88 52.00 50.38 51.13 50.88 51.13 51.88 TH 52 52.38 52.87 51.88 52.87 50.88 52 50.38 51.13 50.88 51.13 51.88 TH
38.00 52.38 38.87 51.88 38.87 50.88 38.00 50.38 37.13 50.88 37.13 51.88 TH 38 52.38 38.87 51.88 38.87 50.88 38 50.38 37.13 50.88 37.13 51.88 TH
34.00 52.38 34.87 51.88 34.87 50.88 34.00 50.38 33.13 50.88 33.13 51.88 TH 34 52.38 34.87 51.88 34.87 50.88 34 50.38 33.13 50.88 33.13 51.88 TH
30.00 52.38 30.87 51.88 30.87 50.88 30.00 50.38 29.13 50.88 29.13 51.88 TH 30 52.38 30.87 51.88 30.87 50.88 30 50.38 29.13 50.88 29.13 51.88 TH
26.00 52.38 26.87 51.88 26.87 50.88 26.00 50.38 25.13 50.88 25.13 51.88 TH 26 52.38 26.87 51.88 26.87 50.88 26 50.38 25.13 50.88 25.13 51.88 TH
24.00 52.38 24.87 51.88 24.87 50.88 24.00 50.38 23.13 50.88 23.13 51.88 TH 24 52.38 24.87 51.88 24.87 50.88 24 50.38 23.13 50.88 23.13 51.88 TH
22.00 52.38 22.87 51.88 22.87 50.88 22.00 50.38 21.13 50.88 21.13 51.88 TH 22 52.38 22.87 51.88 22.87 50.88 22 50.38 21.13 50.88 21.13 51.88 TH
20.00 52.38 20.87 51.88 20.87 50.88 20.00 50.38 19.13 50.88 19.13 51.88 TH 20 52.38 20.87 51.88 20.87 50.88 20 50.38 19.13 50.88 19.13 51.88 TH
18.00 52.38 18.87 51.88 18.87 50.88 18.00 50.38 17.13 50.88 17.13 51.88 TH 18 52.38 18.87 51.88 18.87 50.88 18 50.38 17.13 50.88 17.13 51.88 TH
16.00 52.38 16.87 51.88 16.87 50.88 16.00 50.38 15.13 50.88 15.13 51.88 TH 16 52.38 16.87 51.88 16.87 50.88 16 50.38 15.13 50.88 15.13 51.88 TH
12.00 52.38 12.87 51.88 12.87 50.88 12.00 50.38 11.13 50.88 11.13 51.88 TH 12 52.38 12.87 51.88 12.87 50.88 12 50.38 11.13 50.88 11.13 51.88 TH
8.00 52.38 8.87 51.88 8.87 50.88 8.00 50.38 7.13 50.88 7.13 51.88 TH 8 52.38 8.87 51.88 8.87 50.88 8 50.38 7.13 50.88 7.13 51.88 TH
65.00 54.11 65.87 53.61 65.87 52.61 65.00 52.11 64.13 52.61 64.13 53.61 TH 65 54.11 65.87 53.61 65.87 52.61 65 52.11 64.13 52.61 64.13 53.61 TH
63.00 54.11 63.87 53.61 63.87 52.61 63.00 52.11 62.13 52.61 62.13 53.61 TH 63 54.11 63.87 53.61 63.87 52.61 63 52.11 62.13 52.61 62.13 53.61 TH
61.00 54.11 61.87 53.61 61.87 52.61 61.00 52.11 60.13 52.61 60.13 53.61 TH 61 54.11 61.87 53.61 61.87 52.61 61 52.11 60.13 52.61 60.13 53.61 TH
59.00 54.11 59.87 53.61 59.87 52.61 59.00 52.11 58.13 52.61 58.13 53.61 TH 59 54.11 59.87 53.61 59.87 52.61 59 52.11 58.13 52.61 58.13 53.61 TH
55.00 54.11 55.87 53.61 55.87 52.61 55.00 52.11 54.13 52.61 54.13 53.61 TH 55 54.11 55.87 53.61 55.87 52.61 55 52.11 54.13 52.61 54.13 53.61 TH
51.00 54.11 51.87 53.61 51.87 52.61 51.00 52.11 50.13 52.61 50.13 53.61 TH 51 54.11 51.87 53.61 51.87 52.61 51 52.11 50.13 52.61 50.13 53.61 TH
49.00 54.11 49.87 53.61 49.87 52.61 49.00 52.11 48.13 52.61 48.13 53.61 TH 49 54.11 49.87 53.61 49.87 52.61 49 52.11 48.13 52.61 48.13 53.61 TH
45.00 54.11 45.87 53.61 45.87 52.61 45.00 52.11 44.13 52.61 44.13 53.61 TH 45 54.11 45.87 53.61 45.87 52.61 45 52.11 44.13 52.61 44.13 53.61 TH
33.00 54.11 33.87 53.61 33.87 52.61 33.00 52.11 32.13 52.61 32.13 53.61 TH 33 54.11 33.87 53.61 33.87 52.61 33 52.11 32.13 52.61 32.13 53.61 TH
31.00 54.11 31.87 53.61 31.87 52.61 31.00 52.11 30.13 52.61 30.13 53.61 TH 31 54.11 31.87 53.61 31.87 52.61 31 52.11 30.13 52.61 30.13 53.61 TH
29.00 54.11 29.87 53.61 29.87 52.61 29.00 52.11 28.13 52.61 28.13 53.61 TH 29 54.11 29.87 53.61 29.87 52.61 29 52.11 28.13 52.61 28.13 53.61 TH
27.00 54.11 27.87 53.61 27.87 52.61 27.00 52.11 26.13 52.61 26.13 53.61 TH 27 54.11 27.87 53.61 27.87 52.61 27 52.11 26.13 52.61 26.13 53.61 TH
23.00 54.11 23.87 53.61 23.87 52.61 23.00 52.11 22.13 52.61 22.13 53.61 TH 23 54.11 23.87 53.61 23.87 52.61 23 52.11 22.13 52.61 22.13 53.61 TH
19.00 54.11 19.87 53.61 19.87 52.61 19.00 52.11 18.13 52.61 18.13 53.61 TH 19 54.11 19.87 53.61 19.87 52.61 19 52.11 18.13 52.61 18.13 53.61 TH
17.00 54.11 17.87 53.61 17.87 52.61 17.00 52.11 16.13 52.61 16.13 53.61 TH 17 54.11 17.87 53.61 17.87 52.61 17 52.11 16.13 52.61 16.13 53.61 TH
13.00 54.11 13.87 53.61 13.87 52.61 13.00 52.11 12.13 52.61 12.13 53.61 TH 13 54.11 13.87 53.61 13.87 52.61 13 52.11 12.13 52.61 12.13 53.61 TH
9.00 54.11 9.87 53.61 9.87 52.61 9.00 52.11 8.13 52.61 8.13 53.61 TH 9 54.11 9.87 53.61 9.87 52.61 9 52.11 8.13 52.61 8.13 53.61 TH
62.00 55.85 62.87 55.35 62.87 54.35 62.00 53.85 61.13 54.35 61.13 55.35 TH 62 55.85 62.87 55.35 62.87 54.35 62 53.85 61.13 54.35 61.13 55.35 TH
58.00 55.85 58.87 55.35 58.87 54.35 58.00 53.85 57.13 54.35 57.13 55.35 TH 58 55.85 58.87 55.35 58.87 54.35 58 53.85 57.13 54.35 57.13 55.35 TH
56.00 55.85 56.87 55.35 56.87 54.35 56.00 53.85 55.13 54.35 55.13 55.35 TH 56 55.85 56.87 55.35 56.87 54.35 56 53.85 55.13 54.35 55.13 55.35 TH
52.00 55.85 52.87 55.35 52.87 54.35 52.00 53.85 51.13 54.35 51.13 55.35 TH 52 55.85 52.87 55.35 52.87 54.35 52 53.85 51.13 54.35 51.13 55.35 TH
48.00 55.85 48.87 55.35 48.87 54.35 48.00 53.85 47.13 54.35 47.13 55.35 TH 48 55.85 48.87 55.35 48.87 54.35 48 53.85 47.13 54.35 47.13 55.35 TH
46.00 55.85 46.87 55.35 46.87 54.35 46.00 53.85 45.13 54.35 45.13 55.35 TH 46 55.85 46.87 55.35 46.87 54.35 46 53.85 45.13 54.35 45.13 55.35 TH
44.00 55.85 44.87 55.35 44.87 54.35 44.00 53.85 43.13 54.35 43.13 55.35 TH 44 55.85 44.87 55.35 44.87 54.35 44 53.85 43.13 54.35 43.13 55.35 TH
42.00 55.85 42.87 55.35 42.87 54.35 42.00 53.85 41.13 54.35 41.13 55.35 TH 42 55.85 42.87 55.35 42.87 54.35 42 53.85 41.13 54.35 41.13 55.35 TH
38.00 55.85 38.87 55.35 38.87 54.35 38.00 53.85 37.13 54.35 37.13 55.35 TH 38 55.85 38.87 55.35 38.87 54.35 38 53.85 37.13 54.35 37.13 55.35 TH
34.00 55.85 34.87 55.35 34.87 54.35 34.00 53.85 33.13 54.35 33.13 55.35 TH 34 55.85 34.87 55.35 34.87 54.35 34 53.85 33.13 54.35 33.13 55.35 TH
32.00 55.85 32.87 55.35 32.87 54.35 32.00 53.85 31.13 54.35 31.13 55.35 TH 32 55.85 32.87 55.35 32.87 54.35 32 53.85 31.13 54.35 31.13 55.35 TH
28.00 55.85 28.87 55.35 28.87 54.35 28.00 53.85 27.13 54.35 27.13 55.35 TH 28 55.85 28.87 55.35 28.87 54.35 28 53.85 27.13 54.35 27.13 55.35 TH
24.00 55.85 24.87 55.35 24.87 54.35 24.00 53.85 23.13 54.35 23.13 55.35 TH 24 55.85 24.87 55.35 24.87 54.35 24 53.85 23.13 54.35 23.13 55.35 TH
20.00 55.85 20.87 55.35 20.87 54.35 20.00 53.85 19.13 54.35 19.13 55.35 TH 20 55.85 20.87 55.35 20.87 54.35 20 53.85 19.13 54.35 19.13 55.35 TH
16.00 55.85 16.87 55.35 16.87 54.35 16.00 53.85 15.13 54.35 15.13 55.35 TH 16 55.85 16.87 55.35 16.87 54.35 16 53.85 15.13 54.35 15.13 55.35 TH
14.00 55.85 14.87 55.35 14.87 54.35 14.00 53.85 13.13 54.35 13.13 55.35 TH 14 55.85 14.87 55.35 14.87 54.35 14 53.85 13.13 54.35 13.13 55.35 TH
12.00 55.85 12.87 55.35 12.87 54.35 12.00 53.85 11.13 54.35 11.13 55.35 TH 12 55.85 12.87 55.35 12.87 54.35 12 53.85 11.13 54.35 11.13 55.35 TH
10.00 55.85 10.87 55.35 10.87 54.35 10.00 53.85 9.13 54.35 9.13 55.35 TH 10 55.85 10.87 55.35 10.87 54.35 10 53.85 9.13 54.35 9.13 55.35 TH
63.00 57.58 63.87 57.08 63.87 56.08 63.00 55.58 62.13 56.08 62.13 57.08 TH 63 57.58 63.87 57.08 63.87 56.08 63 55.58 62.13 56.08 62.13 57.08 TH
59.00 57.58 59.87 57.08 59.87 56.08 59.00 55.58 58.13 56.08 58.13 57.08 TH 59 57.58 59.87 57.08 59.87 56.08 59 55.58 58.13 56.08 58.13 57.08 TH
39.00 57.58 39.87 57.08 39.87 56.08 39.00 55.58 38.13 56.08 38.13 57.08 TH 39 57.58 39.87 57.08 39.87 56.08 39 55.58 38.13 56.08 38.13 57.08 TH
35.00 57.58 35.87 57.08 35.87 56.08 35.00 55.58 34.13 56.08 34.13 57.08 TH 35 57.58 35.87 57.08 35.87 56.08 35 55.58 34.13 56.08 34.13 57.08 TH
33.00 57.58 33.87 57.08 33.87 56.08 33.00 55.58 32.13 56.08 32.13 57.08 TH 33 57.58 33.87 57.08 33.87 56.08 33 55.58 32.13 56.08 32.13 57.08 TH
29.00 57.58 29.87 57.08 29.87 56.08 29.00 55.58 28.13 56.08 28.13 57.08 TH 29 57.58 29.87 57.08 29.87 56.08 29 55.58 28.13 56.08 28.13 57.08 TH
25.00 57.58 25.87 57.08 25.87 56.08 25.00 55.58 24.13 56.08 24.13 57.08 TH 25 57.58 25.87 57.08 25.87 56.08 25 55.58 24.13 56.08 24.13 57.08 TH
21.00 57.58 21.87 57.08 21.87 56.08 21.00 55.58 20.13 56.08 20.13 57.08 TH 21 57.58 21.87 57.08 21.87 56.08 21 55.58 20.13 56.08 20.13 57.08 TH
15.00 57.58 15.87 57.08 15.87 56.08 15.00 55.58 14.13 56.08 14.13 57.08 TH 15 57.58 15.87 57.08 15.87 56.08 15 55.58 14.13 56.08 14.13 57.08 TH
11.00 57.58 11.87 57.08 11.87 56.08 11.00 55.58 10.13 56.08 10.13 57.08 TH 11 57.58 11.87 57.08 11.87 56.08 11 55.58 10.13 56.08 10.13 57.08 TH
37.00 28.87 7.431 1.569 TC 37 28.87 7.431 1.569 TC
37.00 28.87 4.293 1.569 TC 37 28.87 4.293 1.569 TC
37.00 28.87 1.155 1.569 TC 37 28.87 1.155 1.569 TC

View File

@ -1,373 +1,370 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 58 60 %%BoundingBox: 0 0 58 60
%%EndComments %%EndComments
/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def /TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def /TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.00 0.00 0.00 0.00 setcmykcolor 0 0 0 0 setcmykcolor
60.00 0.00 TB 0.00 57.73 TR 60 57.73 0 0 TR
TE 0 0 0 1 setcmykcolor
0.00 0.00 0.00 1.00 setcmykcolor 0.15 3 0.65 3.87 1.65 3.87 2.15 3 1.65 2.13 0.65 2.13 TH
0.15 3.00 0.65 3.87 1.65 3.87 2.15 3.00 1.65 2.13 0.65 2.13 TH 0.15 7 0.65 7.87 1.65 7.87 2.15 7 1.65 6.13 0.65 6.13 TH
0.15 7.00 0.65 7.87 1.65 7.87 2.15 7.00 1.65 6.13 0.65 6.13 TH 0.15 11 0.65 11.87 1.65 11.87 2.15 11 1.65 10.13 0.65 10.13 TH
0.15 11.00 0.65 11.87 1.65 11.87 2.15 11.00 1.65 10.13 0.65 10.13 TH 0.15 15 0.65 15.87 1.65 15.87 2.15 15 1.65 14.13 0.65 14.13 TH
0.15 15.00 0.65 15.87 1.65 15.87 2.15 15.00 1.65 14.13 0.65 14.13 TH 0.15 19 0.65 19.87 1.65 19.87 2.15 19 1.65 18.13 0.65 18.13 TH
0.15 19.00 0.65 19.87 1.65 19.87 2.15 19.00 1.65 18.13 0.65 18.13 TH 0.15 23 0.65 23.87 1.65 23.87 2.15 23 1.65 22.13 0.65 22.13 TH
0.15 23.00 0.65 23.87 1.65 23.87 2.15 23.00 1.65 22.13 0.65 22.13 TH 0.15 27 0.65 27.87 1.65 27.87 2.15 27 1.65 26.13 0.65 26.13 TH
0.15 27.00 0.65 27.87 1.65 27.87 2.15 27.00 1.65 26.13 0.65 26.13 TH 0.15 31 0.65 31.87 1.65 31.87 2.15 31 1.65 30.13 0.65 30.13 TH
0.15 31.00 0.65 31.87 1.65 31.87 2.15 31.00 1.65 30.13 0.65 30.13 TH 0.15 35 0.65 35.87 1.65 35.87 2.15 35 1.65 34.13 0.65 34.13 TH
0.15 35.00 0.65 35.87 1.65 35.87 2.15 35.00 1.65 34.13 0.65 34.13 TH 0.15 39 0.65 39.87 1.65 39.87 2.15 39 1.65 38.13 0.65 38.13 TH
0.15 39.00 0.65 39.87 1.65 39.87 2.15 39.00 1.65 38.13 0.65 38.13 TH 0.15 43 0.65 43.87 1.65 43.87 2.15 43 1.65 42.13 0.65 42.13 TH
0.15 43.00 0.65 43.87 1.65 43.87 2.15 43.00 1.65 42.13 0.65 42.13 TH 0.15 47 0.65 47.87 1.65 47.87 2.15 47 1.65 46.13 0.65 46.13 TH
0.15 47.00 0.65 47.87 1.65 47.87 2.15 47.00 1.65 46.13 0.65 46.13 TH 0.15 51 0.65 51.87 1.65 51.87 2.15 51 1.65 50.13 0.65 50.13 TH
0.15 51.00 0.65 51.87 1.65 51.87 2.15 51.00 1.65 50.13 0.65 50.13 TH 0.15 55 0.65 55.87 1.65 55.87 2.15 55 1.65 54.13 0.65 54.13 TH
0.15 55.00 0.65 55.87 1.65 55.87 2.15 55.00 1.65 54.13 0.65 54.13 TH 0.15 57 0.65 57.87 1.65 57.87 2.15 57 1.65 56.13 0.65 56.13 TH
0.15 57.00 0.65 57.87 1.65 57.87 2.15 57.00 1.65 56.13 0.65 56.13 TH 0.15 59 0.65 59.87 1.65 59.87 2.15 59 1.65 58.13 0.65 58.13 TH
0.15 59.00 0.65 59.87 1.65 59.87 2.15 59.00 1.65 58.13 0.65 58.13 TH 3.62 1 4.12 1.87 5.12 1.87 5.62 1 5.12 0.13 4.12 0.13 TH
3.62 1.00 4.12 1.87 5.12 1.87 5.62 1.00 5.12 0.13 4.12 0.13 TH 3.62 5 4.12 5.87 5.12 5.87 5.62 5 5.12 4.13 4.12 4.13 TH
3.62 5.00 4.12 5.87 5.12 5.87 5.62 5.00 5.12 4.13 4.12 4.13 TH 3.62 9 4.12 9.87 5.12 9.87 5.62 9 5.12 8.13 4.12 8.13 TH
3.62 9.00 4.12 9.87 5.12 9.87 5.62 9.00 5.12 8.13 4.12 8.13 TH 3.62 13 4.12 13.87 5.12 13.87 5.62 13 5.12 12.13 4.12 12.13 TH
3.62 13.00 4.12 13.87 5.12 13.87 5.62 13.00 5.12 12.13 4.12 12.13 TH 3.62 17 4.12 17.87 5.12 17.87 5.62 17 5.12 16.13 4.12 16.13 TH
3.62 17.00 4.12 17.87 5.12 17.87 5.62 17.00 5.12 16.13 4.12 16.13 TH 3.62 21 4.12 21.87 5.12 21.87 5.62 21 5.12 20.13 4.12 20.13 TH
3.62 21.00 4.12 21.87 5.12 21.87 5.62 21.00 5.12 20.13 4.12 20.13 TH 3.62 25 4.12 25.87 5.12 25.87 5.62 25 5.12 24.13 4.12 24.13 TH
3.62 25.00 4.12 25.87 5.12 25.87 5.62 25.00 5.12 24.13 4.12 24.13 TH 3.62 29 4.12 29.87 5.12 29.87 5.62 29 5.12 28.13 4.12 28.13 TH
3.62 29.00 4.12 29.87 5.12 29.87 5.62 29.00 5.12 28.13 4.12 28.13 TH 3.62 33 4.12 33.87 5.12 33.87 5.62 33 5.12 32.13 4.12 32.13 TH
3.62 33.00 4.12 33.87 5.12 33.87 5.62 33.00 5.12 32.13 4.12 32.13 TH 3.62 37 4.12 37.87 5.12 37.87 5.62 37 5.12 36.13 4.12 36.13 TH
3.62 37.00 4.12 37.87 5.12 37.87 5.62 37.00 5.12 36.13 4.12 36.13 TH 3.62 41 4.12 41.87 5.12 41.87 5.62 41 5.12 40.13 4.12 40.13 TH
3.62 41.00 4.12 41.87 5.12 41.87 5.62 41.00 5.12 40.13 4.12 40.13 TH 3.62 45 4.12 45.87 5.12 45.87 5.62 45 5.12 44.13 4.12 44.13 TH
3.62 45.00 4.12 45.87 5.12 45.87 5.62 45.00 5.12 44.13 4.12 44.13 TH 3.62 49 4.12 49.87 5.12 49.87 5.62 49 5.12 48.13 4.12 48.13 TH
3.62 49.00 4.12 49.87 5.12 49.87 5.62 49.00 5.12 48.13 4.12 48.13 TH 3.62 53 4.12 53.87 5.12 53.87 5.62 53 5.12 52.13 4.12 52.13 TH
3.62 53.00 4.12 53.87 5.12 53.87 5.62 53.00 5.12 52.13 4.12 52.13 TH 3.62 57 4.12 57.87 5.12 57.87 5.62 57 5.12 56.13 4.12 56.13 TH
3.62 57.00 4.12 57.87 5.12 57.87 5.62 57.00 5.12 56.13 4.12 56.13 TH 5.35 4 5.85 4.87 6.85 4.87 7.35 4 6.85 3.13 5.85 3.13 TH
5.35 4.00 5.85 4.87 6.85 4.87 7.35 4.00 6.85 3.13 5.85 3.13 TH 5.35 8 5.85 8.87 6.85 8.87 7.35 8 6.85 7.13 5.85 7.13 TH
5.35 8.00 5.85 8.87 6.85 8.87 7.35 8.00 6.85 7.13 5.85 7.13 TH 5.35 12 5.85 12.87 6.85 12.87 7.35 12 6.85 11.13 5.85 11.13 TH
5.35 12.00 5.85 12.87 6.85 12.87 7.35 12.00 6.85 11.13 5.85 11.13 TH 5.35 16 5.85 16.87 6.85 16.87 7.35 16 6.85 15.13 5.85 15.13 TH
5.35 16.00 5.85 16.87 6.85 16.87 7.35 16.00 6.85 15.13 5.85 15.13 TH 5.35 20 5.85 20.87 6.85 20.87 7.35 20 6.85 19.13 5.85 19.13 TH
5.35 20.00 5.85 20.87 6.85 20.87 7.35 20.00 6.85 19.13 5.85 19.13 TH 5.35 24 5.85 24.87 6.85 24.87 7.35 24 6.85 23.13 5.85 23.13 TH
5.35 24.00 5.85 24.87 6.85 24.87 7.35 24.00 6.85 23.13 5.85 23.13 TH 5.35 28 5.85 28.87 6.85 28.87 7.35 28 6.85 27.13 5.85 27.13 TH
5.35 28.00 5.85 28.87 6.85 28.87 7.35 28.00 6.85 27.13 5.85 27.13 TH 5.35 32 5.85 32.87 6.85 32.87 7.35 32 6.85 31.13 5.85 31.13 TH
5.35 32.00 5.85 32.87 6.85 32.87 7.35 32.00 6.85 31.13 5.85 31.13 TH 5.35 36 5.85 36.87 6.85 36.87 7.35 36 6.85 35.13 5.85 35.13 TH
5.35 36.00 5.85 36.87 6.85 36.87 7.35 36.00 6.85 35.13 5.85 35.13 TH 5.35 40 5.85 40.87 6.85 40.87 7.35 40 6.85 39.13 5.85 39.13 TH
5.35 40.00 5.85 40.87 6.85 40.87 7.35 40.00 6.85 39.13 5.85 39.13 TH 5.35 44 5.85 44.87 6.85 44.87 7.35 44 6.85 43.13 5.85 43.13 TH
5.35 44.00 5.85 44.87 6.85 44.87 7.35 44.00 6.85 43.13 5.85 43.13 TH 5.35 48 5.85 48.87 6.85 48.87 7.35 48 6.85 47.13 5.85 47.13 TH
5.35 48.00 5.85 48.87 6.85 48.87 7.35 48.00 6.85 47.13 5.85 47.13 TH 5.35 52 5.85 52.87 6.85 52.87 7.35 52 6.85 51.13 5.85 51.13 TH
5.35 52.00 5.85 52.87 6.85 52.87 7.35 52.00 6.85 51.13 5.85 51.13 TH 5.35 56 5.85 56.87 6.85 56.87 7.35 56 6.85 55.13 5.85 55.13 TH
5.35 56.00 5.85 56.87 6.85 56.87 7.35 56.00 6.85 55.13 5.85 55.13 TH 5.35 58 5.85 58.87 6.85 58.87 7.35 58 6.85 57.13 5.85 57.13 TH
5.35 58.00 5.85 58.87 6.85 58.87 7.35 58.00 6.85 57.13 5.85 57.13 TH 7.08 59 7.58 59.87 8.58 59.87 9.08 59 8.58 58.13 7.58 58.13 TH
7.08 59.00 7.58 59.87 8.58 59.87 9.08 59.00 8.58 58.13 7.58 58.13 TH 8.81 2 9.31 2.87 10.31 2.87 10.81 2 10.31 1.13 9.31 1.13 TH
8.81 2.00 9.31 2.87 10.31 2.87 10.81 2.00 10.31 1.13 9.31 1.13 TH 8.81 6 9.31 6.87 10.31 6.87 10.81 6 10.31 5.13 9.31 5.13 TH
8.81 6.00 9.31 6.87 10.31 6.87 10.81 6.00 10.31 5.13 9.31 5.13 TH 8.81 10 9.31 10.87 10.31 10.87 10.81 10 10.31 9.13 9.31 9.13 TH
8.81 10.00 9.31 10.87 10.31 10.87 10.81 10.00 10.31 9.13 9.31 9.13 TH 8.81 14 9.31 14.87 10.31 14.87 10.81 14 10.31 13.13 9.31 13.13 TH
8.81 14.00 9.31 14.87 10.31 14.87 10.81 14.00 10.31 13.13 9.31 13.13 TH 8.81 18 9.31 18.87 10.31 18.87 10.81 18 10.31 17.13 9.31 17.13 TH
8.81 18.00 9.31 18.87 10.31 18.87 10.81 18.00 10.31 17.13 9.31 17.13 TH 8.81 22 9.31 22.87 10.31 22.87 10.81 22 10.31 21.13 9.31 21.13 TH
8.81 22.00 9.31 22.87 10.31 22.87 10.81 22.00 10.31 21.13 9.31 21.13 TH 8.81 26 9.31 26.87 10.31 26.87 10.81 26 10.31 25.13 9.31 25.13 TH
8.81 26.00 9.31 26.87 10.31 26.87 10.81 26.00 10.31 25.13 9.31 25.13 TH 8.81 30 9.31 30.87 10.31 30.87 10.81 30 10.31 29.13 9.31 29.13 TH
8.81 30.00 9.31 30.87 10.31 30.87 10.81 30.00 10.31 29.13 9.31 29.13 TH 8.81 34 9.31 34.87 10.31 34.87 10.81 34 10.31 33.13 9.31 33.13 TH
8.81 34.00 9.31 34.87 10.31 34.87 10.81 34.00 10.31 33.13 9.31 33.13 TH 8.81 38 9.31 38.87 10.31 38.87 10.81 38 10.31 37.13 9.31 37.13 TH
8.81 38.00 9.31 38.87 10.31 38.87 10.81 38.00 10.31 37.13 9.31 37.13 TH 8.81 42 9.31 42.87 10.31 42.87 10.81 42 10.31 41.13 9.31 41.13 TH
8.81 42.00 9.31 42.87 10.31 42.87 10.81 42.00 10.31 41.13 9.31 41.13 TH 8.81 46 9.31 46.87 10.31 46.87 10.81 46 10.31 45.13 9.31 45.13 TH
8.81 46.00 9.31 46.87 10.31 46.87 10.81 46.00 10.31 45.13 9.31 45.13 TH 8.81 50 9.31 50.87 10.31 50.87 10.81 50 10.31 49.13 9.31 49.13 TH
8.81 50.00 9.31 50.87 10.31 50.87 10.81 50.00 10.31 49.13 9.31 49.13 TH 8.81 54 9.31 54.87 10.31 54.87 10.81 54 10.31 53.13 9.31 53.13 TH
8.81 54.00 9.31 54.87 10.31 54.87 10.81 54.00 10.31 53.13 9.31 53.13 TH 10.55 3 11.05 3.87 12.05 3.87 12.55 3 12.05 2.13 11.05 2.13 TH
10.55 3.00 11.05 3.87 12.05 3.87 12.55 3.00 12.05 2.13 11.05 2.13 TH 10.55 7 11.05 7.87 12.05 7.87 12.55 7 12.05 6.13 11.05 6.13 TH
10.55 7.00 11.05 7.87 12.05 7.87 12.55 7.00 12.05 6.13 11.05 6.13 TH 10.55 11 11.05 11.87 12.05 11.87 12.55 11 12.05 10.13 11.05 10.13 TH
10.55 11.00 11.05 11.87 12.05 11.87 12.55 11.00 12.05 10.13 11.05 10.13 TH 10.55 15 11.05 15.87 12.05 15.87 12.55 15 12.05 14.13 11.05 14.13 TH
10.55 15.00 11.05 15.87 12.05 15.87 12.55 15.00 12.05 14.13 11.05 14.13 TH 10.55 19 11.05 19.87 12.05 19.87 12.55 19 12.05 18.13 11.05 18.13 TH
10.55 19.00 11.05 19.87 12.05 19.87 12.55 19.00 12.05 18.13 11.05 18.13 TH 10.55 23 11.05 23.87 12.05 23.87 12.55 23 12.05 22.13 11.05 22.13 TH
10.55 23.00 11.05 23.87 12.05 23.87 12.55 23.00 12.05 22.13 11.05 22.13 TH 10.55 27 11.05 27.87 12.05 27.87 12.55 27 12.05 26.13 11.05 26.13 TH
10.55 27.00 11.05 27.87 12.05 27.87 12.55 27.00 12.05 26.13 11.05 26.13 TH 10.55 31 11.05 31.87 12.05 31.87 12.55 31 12.05 30.13 11.05 30.13 TH
10.55 31.00 11.05 31.87 12.05 31.87 12.55 31.00 12.05 30.13 11.05 30.13 TH 10.55 35 11.05 35.87 12.05 35.87 12.55 35 12.05 34.13 11.05 34.13 TH
10.55 35.00 11.05 35.87 12.05 35.87 12.55 35.00 12.05 34.13 11.05 34.13 TH 10.55 39 11.05 39.87 12.05 39.87 12.55 39 12.05 38.13 11.05 38.13 TH
10.55 39.00 11.05 39.87 12.05 39.87 12.55 39.00 12.05 38.13 11.05 38.13 TH 10.55 43 11.05 43.87 12.05 43.87 12.55 43 12.05 42.13 11.05 42.13 TH
10.55 43.00 11.05 43.87 12.05 43.87 12.55 43.00 12.05 42.13 11.05 42.13 TH 10.55 47 11.05 47.87 12.05 47.87 12.55 47 12.05 46.13 11.05 46.13 TH
10.55 47.00 11.05 47.87 12.05 47.87 12.55 47.00 12.05 46.13 11.05 46.13 TH 10.55 51 11.05 51.87 12.05 51.87 12.55 51 12.05 50.13 11.05 50.13 TH
10.55 51.00 11.05 51.87 12.05 51.87 12.55 51.00 12.05 50.13 11.05 50.13 TH 10.55 55 11.05 55.87 12.05 55.87 12.55 55 12.05 54.13 11.05 54.13 TH
10.55 55.00 11.05 55.87 12.05 55.87 12.55 55.00 12.05 54.13 11.05 54.13 TH 10.55 57 11.05 57.87 12.05 57.87 12.55 57 12.05 56.13 11.05 56.13 TH
10.55 57.00 11.05 57.87 12.05 57.87 12.55 57.00 12.05 56.13 11.05 56.13 TH 12.28 58 12.78 58.87 13.78 58.87 14.28 58 13.78 57.13 12.78 57.13 TH
12.28 58.00 12.78 58.87 13.78 58.87 14.28 58.00 13.78 57.13 12.78 57.13 TH 14.01 1 14.51 1.87 15.51 1.87 16.01 1 15.51 0.13 14.51 0.13 TH
14.01 1.00 14.51 1.87 15.51 1.87 16.01 1.00 15.51 0.13 14.51 0.13 TH 14.01 5 14.51 5.87 15.51 5.87 16.01 5 15.51 4.13 14.51 4.13 TH
14.01 5.00 14.51 5.87 15.51 5.87 16.01 5.00 15.51 4.13 14.51 4.13 TH 14.01 9 14.51 9.87 15.51 9.87 16.01 9 15.51 8.13 14.51 8.13 TH
14.01 9.00 14.51 9.87 15.51 9.87 16.01 9.00 15.51 8.13 14.51 8.13 TH 14.01 13 14.51 13.87 15.51 13.87 16.01 13 15.51 12.13 14.51 12.13 TH
14.01 13.00 14.51 13.87 15.51 13.87 16.01 13.00 15.51 12.13 14.51 12.13 TH 14.01 17 14.51 17.87 15.51 17.87 16.01 17 15.51 16.13 14.51 16.13 TH
14.01 17.00 14.51 17.87 15.51 17.87 16.01 17.00 15.51 16.13 14.51 16.13 TH 14.01 21 14.51 21.87 15.51 21.87 16.01 21 15.51 20.13 14.51 20.13 TH
14.01 21.00 14.51 21.87 15.51 21.87 16.01 21.00 15.51 20.13 14.51 20.13 TH 14.01 25 14.51 25.87 15.51 25.87 16.01 25 15.51 24.13 14.51 24.13 TH
14.01 25.00 14.51 25.87 15.51 25.87 16.01 25.00 15.51 24.13 14.51 24.13 TH 14.01 29 14.51 29.87 15.51 29.87 16.01 29 15.51 28.13 14.51 28.13 TH
14.01 29.00 14.51 29.87 15.51 29.87 16.01 29.00 15.51 28.13 14.51 28.13 TH 14.01 33 14.51 33.87 15.51 33.87 16.01 33 15.51 32.13 14.51 32.13 TH
14.01 33.00 14.51 33.87 15.51 33.87 16.01 33.00 15.51 32.13 14.51 32.13 TH 14.01 37 14.51 37.87 15.51 37.87 16.01 37 15.51 36.13 14.51 36.13 TH
14.01 37.00 14.51 37.87 15.51 37.87 16.01 37.00 15.51 36.13 14.51 36.13 TH 14.01 41 14.51 41.87 15.51 41.87 16.01 41 15.51 40.13 14.51 40.13 TH
14.01 41.00 14.51 41.87 15.51 41.87 16.01 41.00 15.51 40.13 14.51 40.13 TH 14.01 45 14.51 45.87 15.51 45.87 16.01 45 15.51 44.13 14.51 44.13 TH
14.01 45.00 14.51 45.87 15.51 45.87 16.01 45.00 15.51 44.13 14.51 44.13 TH 14.01 49 14.51 49.87 15.51 49.87 16.01 49 15.51 48.13 14.51 48.13 TH
14.01 49.00 14.51 49.87 15.51 49.87 16.01 49.00 15.51 48.13 14.51 48.13 TH 14.01 53 14.51 53.87 15.51 53.87 16.01 53 15.51 52.13 14.51 52.13 TH
14.01 53.00 14.51 53.87 15.51 53.87 16.01 53.00 15.51 52.13 14.51 52.13 TH 14.01 59 14.51 59.87 15.51 59.87 16.01 59 15.51 58.13 14.51 58.13 TH
14.01 59.00 14.51 59.87 15.51 59.87 16.01 59.00 15.51 58.13 14.51 58.13 TH 15.74 4 16.24 4.87 17.24 4.87 17.74 4 17.24 3.13 16.24 3.13 TH
15.74 4.00 16.24 4.87 17.24 4.87 17.74 4.00 17.24 3.13 16.24 3.13 TH 15.74 8 16.24 8.87 17.24 8.87 17.74 8 17.24 7.13 16.24 7.13 TH
15.74 8.00 16.24 8.87 17.24 8.87 17.74 8.00 17.24 7.13 16.24 7.13 TH 15.74 12 16.24 12.87 17.24 12.87 17.74 12 17.24 11.13 16.24 11.13 TH
15.74 12.00 16.24 12.87 17.24 12.87 17.74 12.00 17.24 11.13 16.24 11.13 TH 15.74 16 16.24 16.87 17.24 16.87 17.74 16 17.24 15.13 16.24 15.13 TH
15.74 16.00 16.24 16.87 17.24 16.87 17.74 16.00 17.24 15.13 16.24 15.13 TH 15.74 20 16.24 20.87 17.24 20.87 17.74 20 17.24 19.13 16.24 19.13 TH
15.74 20.00 16.24 20.87 17.24 20.87 17.74 20.00 17.24 19.13 16.24 19.13 TH 15.74 22 16.24 22.87 17.24 22.87 17.74 22 17.24 21.13 16.24 21.13 TH
15.74 22.00 16.24 22.87 17.24 22.87 17.74 22.00 17.24 21.13 16.24 21.13 TH 15.74 24 16.24 24.87 17.24 24.87 17.74 24 17.24 23.13 16.24 23.13 TH
15.74 24.00 16.24 24.87 17.24 24.87 17.74 24.00 17.24 23.13 16.24 23.13 TH 15.74 26 16.24 26.87 17.24 26.87 17.74 26 17.24 25.13 16.24 25.13 TH
15.74 26.00 16.24 26.87 17.24 26.87 17.74 26.00 17.24 25.13 16.24 25.13 TH 15.74 28 16.24 28.87 17.24 28.87 17.74 28 17.24 27.13 16.24 27.13 TH
15.74 28.00 16.24 28.87 17.24 28.87 17.74 28.00 17.24 27.13 16.24 27.13 TH 15.74 32 16.24 32.87 17.24 32.87 17.74 32 17.24 31.13 16.24 31.13 TH
15.74 32.00 16.24 32.87 17.24 32.87 17.74 32.00 17.24 31.13 16.24 31.13 TH 15.74 42 16.24 42.87 17.24 42.87 17.74 42 17.24 41.13 16.24 41.13 TH
15.74 42.00 16.24 42.87 17.24 42.87 17.74 42.00 17.24 41.13 16.24 41.13 TH 15.74 48 16.24 48.87 17.24 48.87 17.74 48 17.24 47.13 16.24 47.13 TH
15.74 48.00 16.24 48.87 17.24 48.87 17.74 48.00 17.24 47.13 16.24 47.13 TH 15.74 52 16.24 52.87 17.24 52.87 17.74 52 17.24 51.13 16.24 51.13 TH
15.74 52.00 16.24 52.87 17.24 52.87 17.74 52.00 17.24 51.13 16.24 51.13 TH 15.74 56 16.24 56.87 17.24 56.87 17.74 56 17.24 55.13 16.24 55.13 TH
15.74 56.00 16.24 56.87 17.24 56.87 17.74 56.00 17.24 55.13 16.24 55.13 TH 17.47 23 17.97 23.87 18.97 23.87 19.47 23 18.97 22.13 17.97 22.13 TH
17.47 23.00 17.97 23.87 18.97 23.87 19.47 23.00 18.97 22.13 17.97 22.13 TH 17.47 33 17.97 33.87 18.97 33.87 19.47 33 18.97 32.13 17.97 32.13 TH
17.47 33.00 17.97 33.87 18.97 33.87 19.47 33.00 18.97 32.13 17.97 32.13 TH 17.47 43 17.97 43.87 18.97 43.87 19.47 43 18.97 42.13 17.97 42.13 TH
17.47 43.00 17.97 43.87 18.97 43.87 19.47 43.00 18.97 42.13 17.97 42.13 TH 19.21 2 19.71 2.87 20.71 2.87 21.21 2 20.71 1.13 19.71 1.13 TH
19.21 2.00 19.71 2.87 20.71 2.87 21.21 2.00 20.71 1.13 19.71 1.13 TH 19.21 6 19.71 6.87 20.71 6.87 21.21 6 20.71 5.13 19.71 5.13 TH
19.21 6.00 19.71 6.87 20.71 6.87 21.21 6.00 20.71 5.13 19.71 5.13 TH 19.21 10 19.71 10.87 20.71 10.87 21.21 10 20.71 9.13 19.71 9.13 TH
19.21 10.00 19.71 10.87 20.71 10.87 21.21 10.00 20.71 9.13 19.71 9.13 TH 19.21 14 19.71 14.87 20.71 14.87 21.21 14 20.71 13.13 19.71 13.13 TH
19.21 14.00 19.71 14.87 20.71 14.87 21.21 14.00 20.71 13.13 19.71 13.13 TH 19.21 20 19.71 20.87 20.71 20.87 21.21 20 20.71 19.13 19.71 19.13 TH
19.21 20.00 19.71 20.87 20.71 20.87 21.21 20.00 20.71 19.13 19.71 19.13 TH 19.21 22 19.71 22.87 20.71 22.87 21.21 22 20.71 21.13 19.71 21.13 TH
19.21 22.00 19.71 22.87 20.71 22.87 21.21 22.00 20.71 21.13 19.71 21.13 TH 19.21 38 19.71 38.87 20.71 38.87 21.21 38 20.71 37.13 19.71 37.13 TH
19.21 38.00 19.71 38.87 20.71 38.87 21.21 38.00 20.71 37.13 19.71 37.13 TH 19.21 44 19.71 44.87 20.71 44.87 21.21 44 20.71 43.13 19.71 43.13 TH
19.21 44.00 19.71 44.87 20.71 44.87 21.21 44.00 20.71 43.13 19.71 43.13 TH 19.21 46 19.71 46.87 20.71 46.87 21.21 46 20.71 45.13 19.71 45.13 TH
19.21 46.00 19.71 46.87 20.71 46.87 21.21 46.00 20.71 45.13 19.71 45.13 TH 19.21 50 19.71 50.87 20.71 50.87 21.21 50 20.71 49.13 19.71 49.13 TH
19.21 50.00 19.71 50.87 20.71 50.87 21.21 50.00 20.71 49.13 19.71 49.13 TH 19.21 54 19.71 54.87 20.71 54.87 21.21 54 20.71 53.13 19.71 53.13 TH
19.21 54.00 19.71 54.87 20.71 54.87 21.21 54.00 20.71 53.13 19.71 53.13 TH 19.21 58 19.71 58.87 20.71 58.87 21.21 58 20.71 57.13 19.71 57.13 TH
19.21 58.00 19.71 58.87 20.71 58.87 21.21 58.00 20.71 57.13 19.71 57.13 TH 20.94 3 21.44 3.87 22.44 3.87 22.94 3 22.44 2.13 21.44 2.13 TH
20.94 3.00 21.44 3.87 22.44 3.87 22.94 3.00 22.44 2.13 21.44 2.13 TH 20.94 7 21.44 7.87 22.44 7.87 22.94 7 22.44 6.13 21.44 6.13 TH
20.94 7.00 21.44 7.87 22.44 7.87 22.94 7.00 22.44 6.13 21.44 6.13 TH 20.94 11 21.44 11.87 22.44 11.87 22.94 11 22.44 10.13 21.44 10.13 TH
20.94 11.00 21.44 11.87 22.44 11.87 22.94 11.00 22.44 10.13 21.44 10.13 TH 20.94 15 21.44 15.87 22.44 15.87 22.94 15 22.44 14.13 21.44 14.13 TH
20.94 15.00 21.44 15.87 22.44 15.87 22.94 15.00 22.44 14.13 21.44 14.13 TH 20.94 19 21.44 19.87 22.44 19.87 22.94 19 22.44 18.13 21.44 18.13 TH
20.94 19.00 21.44 19.87 22.44 19.87 22.94 19.00 22.44 18.13 21.44 18.13 TH 20.94 21 21.44 21.87 22.44 21.87 22.94 21 22.44 20.13 21.44 20.13 TH
20.94 21.00 21.44 21.87 22.44 21.87 22.94 21.00 22.44 20.13 21.44 20.13 TH 20.94 43 21.44 43.87 22.44 43.87 22.94 43 22.44 42.13 21.44 42.13 TH
20.94 43.00 21.44 43.87 22.44 43.87 22.94 43.00 22.44 42.13 21.44 42.13 TH 20.94 47 21.44 47.87 22.44 47.87 22.94 47 22.44 46.13 21.44 46.13 TH
20.94 47.00 21.44 47.87 22.44 47.87 22.94 47.00 22.44 46.13 21.44 46.13 TH 20.94 51 21.44 51.87 22.44 51.87 22.94 51 22.44 50.13 21.44 50.13 TH
20.94 51.00 21.44 51.87 22.44 51.87 22.94 51.00 22.44 50.13 21.44 50.13 TH 20.94 55 21.44 55.87 22.44 55.87 22.94 55 22.44 54.13 21.44 54.13 TH
20.94 55.00 21.44 55.87 22.44 55.87 22.94 55.00 22.44 54.13 21.44 54.13 TH 20.94 57 21.44 57.87 22.44 57.87 22.94 57 22.44 56.13 21.44 56.13 TH
20.94 57.00 21.44 57.87 22.44 57.87 22.94 57.00 22.44 56.13 21.44 56.13 TH 22.67 16 23.17 16.87 24.17 16.87 24.67 16 24.17 15.13 23.17 15.13 TH
22.67 16.00 23.17 16.87 24.17 16.87 24.67 16.00 24.17 15.13 23.17 15.13 TH 22.67 44 23.17 44.87 24.17 44.87 24.67 44 24.17 43.13 23.17 43.13 TH
22.67 44.00 23.17 44.87 24.17 44.87 24.67 44.00 24.17 43.13 23.17 43.13 TH 24.4 1 24.9 1.87 25.9 1.87 26.4 1 25.9 0.13 24.9 0.13 TH
24.40 1.00 24.90 1.87 25.90 1.87 26.40 1.00 25.90 0.13 24.90 0.13 TH 24.4 5 24.9 5.87 25.9 5.87 26.4 5 25.9 4.13 24.9 4.13 TH
24.40 5.00 24.90 5.87 25.90 5.87 26.40 5.00 25.90 4.13 24.90 4.13 TH 24.4 9 24.9 9.87 25.9 9.87 26.4 9 25.9 8.13 24.9 8.13 TH
24.40 9.00 24.90 9.87 25.90 9.87 26.40 9.00 25.90 8.13 24.90 8.13 TH 24.4 17 24.9 17.87 25.9 17.87 26.4 17 25.9 16.13 24.9 16.13 TH
24.40 17.00 24.90 17.87 25.90 17.87 26.40 17.00 25.90 16.13 24.90 16.13 TH 24.4 39 24.9 39.87 25.9 39.87 26.4 39 25.9 38.13 24.9 38.13 TH
24.40 39.00 24.90 39.87 25.90 39.87 26.40 39.00 25.90 38.13 24.90 38.13 TH 24.4 41 24.9 41.87 25.9 41.87 26.4 41 25.9 40.13 24.9 40.13 TH
24.40 41.00 24.90 41.87 25.90 41.87 26.40 41.00 25.90 40.13 24.90 40.13 TH 24.4 45 24.9 45.87 25.9 45.87 26.4 45 25.9 44.13 24.9 44.13 TH
24.40 45.00 24.90 45.87 25.90 45.87 26.40 45.00 25.90 44.13 24.90 44.13 TH 24.4 49 24.9 49.87 25.9 49.87 26.4 49 25.9 48.13 24.9 48.13 TH
24.40 49.00 24.90 49.87 25.90 49.87 26.40 49.00 25.90 48.13 24.90 48.13 TH 24.4 53 24.9 53.87 25.9 53.87 26.4 53 25.9 52.13 24.9 52.13 TH
24.40 53.00 24.90 53.87 25.90 53.87 26.40 53.00 25.90 52.13 24.90 52.13 TH 26.13 4 26.63 4.87 27.63 4.87 28.13 4 27.63 3.13 26.63 3.13 TH
26.13 4.00 26.63 4.87 27.63 4.87 28.13 4.00 27.63 3.13 26.63 3.13 TH 26.13 8 26.63 8.87 27.63 8.87 28.13 8 27.63 7.13 26.63 7.13 TH
26.13 8.00 26.63 8.87 27.63 8.87 28.13 8.00 27.63 7.13 26.63 7.13 TH 26.13 12 26.63 12.87 27.63 12.87 28.13 12 27.63 11.13 26.63 11.13 TH
26.13 12.00 26.63 12.87 27.63 12.87 28.13 12.00 27.63 11.13 26.63 11.13 TH 26.13 14 26.63 14.87 27.63 14.87 28.13 14 27.63 13.13 26.63 13.13 TH
26.13 14.00 26.63 14.87 27.63 14.87 28.13 14.00 27.63 13.13 26.63 13.13 TH 26.13 16 26.63 16.87 27.63 16.87 28.13 16 27.63 15.13 26.63 15.13 TH
26.13 16.00 26.63 16.87 27.63 16.87 28.13 16.00 27.63 15.13 26.63 15.13 TH 26.13 18 26.63 18.87 27.63 18.87 28.13 18 27.63 17.13 26.63 17.13 TH
26.13 18.00 26.63 18.87 27.63 18.87 28.13 18.00 27.63 17.13 26.63 17.13 TH 26.13 42 26.63 42.87 27.63 42.87 28.13 42 27.63 41.13 26.63 41.13 TH
26.13 42.00 26.63 42.87 27.63 42.87 28.13 42.00 27.63 41.13 26.63 41.13 TH 26.13 48 26.63 48.87 27.63 48.87 28.13 48 27.63 47.13 26.63 47.13 TH
26.13 48.00 26.63 48.87 27.63 48.87 28.13 48.00 27.63 47.13 26.63 47.13 TH 26.13 52 26.63 52.87 27.63 52.87 28.13 52 27.63 51.13 26.63 51.13 TH
26.13 52.00 26.63 52.87 27.63 52.87 28.13 52.00 27.63 51.13 26.63 51.13 TH 26.13 56 26.63 56.87 27.63 56.87 28.13 56 27.63 55.13 26.63 55.13 TH
26.13 56.00 26.63 56.87 27.63 56.87 28.13 56.00 27.63 55.13 26.63 55.13 TH 26.13 58 26.63 58.87 27.63 58.87 28.13 58 27.63 57.13 26.63 57.13 TH
26.13 58.00 26.63 58.87 27.63 58.87 28.13 58.00 27.63 57.13 26.63 57.13 TH 27.87 17 28.37 17.87 29.37 17.87 29.87 17 29.37 16.13 28.37 16.13 TH
27.87 17.00 28.37 17.87 29.37 17.87 29.87 17.00 29.37 16.13 28.37 16.13 TH 27.87 41 28.37 41.87 29.37 41.87 29.87 41 29.37 40.13 28.37 40.13 TH
27.87 41.00 28.37 41.87 29.37 41.87 29.87 41.00 29.37 40.13 28.37 40.13 TH 27.87 57 28.37 57.87 29.37 57.87 29.87 57 29.37 56.13 28.37 56.13 TH
27.87 57.00 28.37 57.87 29.37 57.87 29.87 57.00 29.37 56.13 28.37 56.13 TH 29.6 2 30.1 2.87 31.1 2.87 31.6 2 31.1 1.13 30.1 1.13 TH
29.60 2.00 30.10 2.87 31.10 2.87 31.60 2.00 31.10 1.13 30.10 1.13 TH 29.6 6 30.1 6.87 31.1 6.87 31.6 6 31.1 5.13 30.1 5.13 TH
29.60 6.00 30.10 6.87 31.10 6.87 31.60 6.00 31.10 5.13 30.10 5.13 TH 29.6 10 30.1 10.87 31.1 10.87 31.6 10 31.1 9.13 30.1 9.13 TH
29.60 10.00 30.10 10.87 31.10 10.87 31.60 10.00 31.10 9.13 30.10 9.13 TH 29.6 42 30.1 42.87 31.1 42.87 31.6 42 31.1 41.13 30.1 41.13 TH
29.60 42.00 30.10 42.87 31.10 42.87 31.60 42.00 31.10 41.13 30.10 41.13 TH 29.6 44 30.1 44.87 31.1 44.87 31.6 44 31.1 43.13 30.1 43.13 TH
29.60 44.00 30.10 44.87 31.10 44.87 31.60 44.00 31.10 43.13 30.10 43.13 TH 29.6 46 30.1 46.87 31.1 46.87 31.6 46 31.1 45.13 30.1 45.13 TH
29.60 46.00 30.10 46.87 31.10 46.87 31.60 46.00 31.10 45.13 30.10 45.13 TH 29.6 50 30.1 50.87 31.1 50.87 31.6 50 31.1 49.13 30.1 49.13 TH
29.60 50.00 30.10 50.87 31.10 50.87 31.60 50.00 31.10 49.13 30.10 49.13 TH 29.6 54 30.1 54.87 31.1 54.87 31.6 54 31.1 53.13 30.1 53.13 TH
29.60 54.00 30.10 54.87 31.10 54.87 31.60 54.00 31.10 53.13 30.10 53.13 TH 31.33 3 31.83 3.87 32.83 3.87 33.33 3 32.83 2.13 31.83 2.13 TH
31.33 3.00 31.83 3.87 32.83 3.87 33.33 3.00 32.83 2.13 31.83 2.13 TH 31.33 7 31.83 7.87 32.83 7.87 33.33 7 32.83 6.13 31.83 6.13 TH
31.33 7.00 31.83 7.87 32.83 7.87 33.33 7.00 32.83 6.13 31.83 6.13 TH 31.33 11 31.83 11.87 32.83 11.87 33.33 11 32.83 10.13 31.83 10.13 TH
31.33 11.00 31.83 11.87 32.83 11.87 33.33 11.00 32.83 10.13 31.83 10.13 TH 31.33 15 31.83 15.87 32.83 15.87 33.33 15 32.83 14.13 31.83 14.13 TH
31.33 15.00 31.83 15.87 32.83 15.87 33.33 15.00 32.83 14.13 31.83 14.13 TH 31.33 17 31.83 17.87 32.83 17.87 33.33 17 32.83 16.13 31.83 16.13 TH
31.33 17.00 31.83 17.87 32.83 17.87 33.33 17.00 32.83 16.13 31.83 16.13 TH 31.33 19 31.83 19.87 32.83 19.87 33.33 19 32.83 18.13 31.83 18.13 TH
31.33 19.00 31.83 19.87 32.83 19.87 33.33 19.00 32.83 18.13 31.83 18.13 TH 31.33 43 31.83 43.87 32.83 43.87 33.33 43 32.83 42.13 31.83 42.13 TH
31.33 43.00 31.83 43.87 32.83 43.87 33.33 43.00 32.83 42.13 31.83 42.13 TH 31.33 47 31.83 47.87 32.83 47.87 33.33 47 32.83 46.13 31.83 46.13 TH
31.33 47.00 31.83 47.87 32.83 47.87 33.33 47.00 32.83 46.13 31.83 46.13 TH 31.33 51 31.83 51.87 32.83 51.87 33.33 51 32.83 50.13 31.83 50.13 TH
31.33 51.00 31.83 51.87 32.83 51.87 33.33 51.00 32.83 50.13 31.83 50.13 TH 31.33 55 31.83 55.87 32.83 55.87 33.33 55 32.83 54.13 31.83 54.13 TH
31.33 55.00 31.83 55.87 32.83 55.87 33.33 55.00 32.83 54.13 31.83 54.13 TH 31.33 57 31.83 57.87 32.83 57.87 33.33 57 32.83 56.13 31.83 56.13 TH
31.33 57.00 31.83 57.87 32.83 57.87 33.33 57.00 32.83 56.13 31.83 56.13 TH 31.33 59 31.83 59.87 32.83 59.87 33.33 59 32.83 58.13 31.83 58.13 TH
31.33 59.00 31.83 59.87 32.83 59.87 33.33 59.00 32.83 58.13 31.83 58.13 TH 33.06 18 33.56 18.87 34.56 18.87 35.06 18 34.56 17.13 33.56 17.13 TH
33.06 18.00 33.56 18.87 34.56 18.87 35.06 18.00 34.56 17.13 33.56 17.13 TH 33.06 58 33.56 58.87 34.56 58.87 35.06 58 34.56 57.13 33.56 57.13 TH
33.06 58.00 33.56 58.87 34.56 58.87 35.06 58.00 34.56 57.13 33.56 57.13 TH 34.79 1 35.29 1.87 36.29 1.87 36.79 1 36.29 0.13 35.29 0.13 TH
34.79 1.00 35.29 1.87 36.29 1.87 36.79 1.00 36.29 0.13 35.29 0.13 TH 34.79 5 35.29 5.87 36.29 5.87 36.79 5 36.29 4.13 35.29 4.13 TH
34.79 5.00 35.29 5.87 36.29 5.87 36.79 5.00 36.29 4.13 35.29 4.13 TH 34.79 9 35.29 9.87 36.29 9.87 36.79 9 36.29 8.13 35.29 8.13 TH
34.79 9.00 35.29 9.87 36.29 9.87 36.79 9.00 36.29 8.13 35.29 8.13 TH 34.79 13 35.29 13.87 36.29 13.87 36.79 13 36.29 12.13 35.29 12.13 TH
34.79 13.00 35.29 13.87 36.29 13.87 36.79 13.00 36.29 12.13 35.29 12.13 TH 34.79 15 35.29 15.87 36.29 15.87 36.79 15 36.29 14.13 35.29 14.13 TH
34.79 15.00 35.29 15.87 36.29 15.87 36.79 15.00 36.29 14.13 35.29 14.13 TH 34.79 37 35.29 37.87 36.29 37.87 36.79 37 36.29 36.13 35.29 36.13 TH
34.79 37.00 35.29 37.87 36.29 37.87 36.79 37.00 36.29 36.13 35.29 36.13 TH 34.79 39 35.29 39.87 36.29 39.87 36.79 39 36.29 38.13 35.29 38.13 TH
34.79 39.00 35.29 39.87 36.29 39.87 36.79 39.00 36.29 38.13 35.29 38.13 TH 34.79 41 35.29 41.87 36.29 41.87 36.79 41 36.29 40.13 35.29 40.13 TH
34.79 41.00 35.29 41.87 36.29 41.87 36.79 41.00 36.29 40.13 35.29 40.13 TH 34.79 43 35.29 43.87 36.29 43.87 36.79 43 36.29 42.13 35.29 42.13 TH
34.79 43.00 35.29 43.87 36.29 43.87 36.79 43.00 36.29 42.13 35.29 42.13 TH 34.79 45 35.29 45.87 36.29 45.87 36.79 45 36.29 44.13 35.29 44.13 TH
34.79 45.00 35.29 45.87 36.29 45.87 36.79 45.00 36.29 44.13 35.29 44.13 TH 34.79 49 35.29 49.87 36.29 49.87 36.79 49 36.29 48.13 35.29 48.13 TH
34.79 49.00 35.29 49.87 36.29 49.87 36.79 49.00 36.29 48.13 35.29 48.13 TH 34.79 53 35.29 53.87 36.29 53.87 36.79 53 36.29 52.13 35.29 52.13 TH
34.79 53.00 35.29 53.87 36.29 53.87 36.79 53.00 36.29 52.13 35.29 52.13 TH 34.79 57 35.29 57.87 36.29 57.87 36.79 57 36.29 56.13 35.29 56.13 TH
34.79 57.00 35.29 57.87 36.29 57.87 36.79 57.00 36.29 56.13 35.29 56.13 TH 34.79 59 35.29 59.87 36.29 59.87 36.79 59 36.29 58.13 35.29 58.13 TH
34.79 59.00 35.29 59.87 36.29 59.87 36.79 59.00 36.29 58.13 35.29 58.13 TH 36.53 4 37.03 4.87 38.03 4.87 38.53 4 38.03 3.13 37.03 3.13 TH
36.53 4.00 37.03 4.87 38.03 4.87 38.53 4.00 38.03 3.13 37.03 3.13 TH 36.53 8 37.03 8.87 38.03 8.87 38.53 8 38.03 7.13 37.03 7.13 TH
36.53 8.00 37.03 8.87 38.03 8.87 38.53 8.00 38.03 7.13 37.03 7.13 TH 36.53 12 37.03 12.87 38.03 12.87 38.53 12 38.03 11.13 37.03 11.13 TH
36.53 12.00 37.03 12.87 38.03 12.87 38.53 12.00 38.03 11.13 37.03 11.13 TH 36.53 16 37.03 16.87 38.03 16.87 38.53 16 38.03 15.13 37.03 15.13 TH
36.53 16.00 37.03 16.87 38.03 16.87 38.53 16.00 38.03 15.13 37.03 15.13 TH 36.53 20 37.03 20.87 38.03 20.87 38.53 20 38.03 19.13 37.03 19.13 TH
36.53 20.00 37.03 20.87 38.03 20.87 38.53 20.00 38.03 19.13 37.03 19.13 TH 36.53 40 37.03 40.87 38.03 40.87 38.53 40 38.03 39.13 37.03 39.13 TH
36.53 40.00 37.03 40.87 38.03 40.87 38.53 40.00 38.03 39.13 37.03 39.13 TH 36.53 42 37.03 42.87 38.03 42.87 38.53 42 38.03 41.13 37.03 41.13 TH
36.53 42.00 37.03 42.87 38.03 42.87 38.53 42.00 38.03 41.13 37.03 41.13 TH 36.53 44 37.03 44.87 38.03 44.87 38.53 44 38.03 43.13 37.03 43.13 TH
36.53 44.00 37.03 44.87 38.03 44.87 38.53 44.00 38.03 43.13 37.03 43.13 TH 36.53 48 37.03 48.87 38.03 48.87 38.53 48 38.03 47.13 37.03 47.13 TH
36.53 48.00 37.03 48.87 38.03 48.87 38.53 48.00 38.03 47.13 37.03 47.13 TH 36.53 52 37.03 52.87 38.03 52.87 38.53 52 38.03 51.13 37.03 51.13 TH
36.53 52.00 37.03 52.87 38.03 52.87 38.53 52.00 38.03 51.13 37.03 51.13 TH 36.53 56 37.03 56.87 38.03 56.87 38.53 56 38.03 55.13 37.03 55.13 TH
36.53 56.00 37.03 56.87 38.03 56.87 38.53 56.00 38.03 55.13 37.03 55.13 TH 38.26 19 38.76 19.87 39.76 19.87 40.26 19 39.76 18.13 38.76 18.13 TH
38.26 19.00 38.76 19.87 39.76 19.87 40.26 19.00 39.76 18.13 38.76 18.13 TH 38.26 21 38.76 21.87 39.76 21.87 40.26 21 39.76 20.13 38.76 20.13 TH
38.26 21.00 38.76 21.87 39.76 21.87 40.26 21.00 39.76 20.13 38.76 20.13 TH 38.26 25 38.76 25.87 39.76 25.87 40.26 25 39.76 24.13 38.76 24.13 TH
38.26 25.00 38.76 25.87 39.76 25.87 40.26 25.00 39.76 24.13 38.76 24.13 TH 38.26 27 38.76 27.87 39.76 27.87 40.26 27 39.76 26.13 38.76 26.13 TH
38.26 27.00 38.76 27.87 39.76 27.87 40.26 27.00 39.76 26.13 38.76 26.13 TH 38.26 29 38.76 29.87 39.76 29.87 40.26 29 39.76 28.13 38.76 28.13 TH
38.26 29.00 38.76 29.87 39.76 29.87 40.26 29.00 39.76 28.13 38.76 28.13 TH 38.26 33 38.76 33.87 39.76 33.87 40.26 33 39.76 32.13 38.76 32.13 TH
38.26 33.00 38.76 33.87 39.76 33.87 40.26 33.00 39.76 32.13 38.76 32.13 TH 38.26 35 38.76 35.87 39.76 35.87 40.26 35 39.76 34.13 38.76 34.13 TH
38.26 35.00 38.76 35.87 39.76 35.87 40.26 35.00 39.76 34.13 38.76 34.13 TH 38.26 37 38.76 37.87 39.76 37.87 40.26 37 39.76 36.13 38.76 36.13 TH
38.26 37.00 38.76 37.87 39.76 37.87 40.26 37.00 39.76 36.13 38.76 36.13 TH 38.26 41 38.76 41.87 39.76 41.87 40.26 41 39.76 40.13 38.76 40.13 TH
38.26 41.00 38.76 41.87 39.76 41.87 40.26 41.00 39.76 40.13 38.76 40.13 TH 38.26 57 38.76 57.87 39.76 57.87 40.26 57 39.76 56.13 38.76 56.13 TH
38.26 57.00 38.76 57.87 39.76 57.87 40.26 57.00 39.76 56.13 38.76 56.13 TH 38.26 59 38.76 59.87 39.76 59.87 40.26 59 39.76 58.13 38.76 58.13 TH
38.26 59.00 38.76 59.87 39.76 59.87 40.26 59.00 39.76 58.13 38.76 58.13 TH 39.99 2 40.49 2.87 41.49 2.87 41.99 2 41.49 1.13 40.49 1.13 TH
39.99 2.00 40.49 2.87 41.49 2.87 41.99 2.00 41.49 1.13 40.49 1.13 TH 39.99 6 40.49 6.87 41.49 6.87 41.99 6 41.49 5.13 40.49 5.13 TH
39.99 6.00 40.49 6.87 41.49 6.87 41.99 6.00 41.49 5.13 40.49 5.13 TH 39.99 10 40.49 10.87 41.49 10.87 41.99 10 41.49 9.13 40.49 9.13 TH
39.99 10.00 40.49 10.87 41.49 10.87 41.99 10.00 41.49 9.13 40.49 9.13 TH 39.99 14 40.49 14.87 41.49 14.87 41.99 14 41.49 13.13 40.49 13.13 TH
39.99 14.00 40.49 14.87 41.49 14.87 41.99 14.00 41.49 13.13 40.49 13.13 TH 39.99 20 40.49 20.87 41.49 20.87 41.99 20 41.49 19.13 40.49 19.13 TH
39.99 20.00 40.49 20.87 41.49 20.87 41.99 20.00 41.49 19.13 40.49 19.13 TH 39.99 22 40.49 22.87 41.49 22.87 41.99 22 41.49 21.13 40.49 21.13 TH
39.99 22.00 40.49 22.87 41.49 22.87 41.99 22.00 41.49 21.13 40.49 21.13 TH 39.99 32 40.49 32.87 41.49 32.87 41.99 32 41.49 31.13 40.49 31.13 TH
39.99 32.00 40.49 32.87 41.49 32.87 41.99 32.00 41.49 31.13 40.49 31.13 TH 39.99 36 40.49 36.87 41.49 36.87 41.99 36 41.49 35.13 40.49 35.13 TH
39.99 36.00 40.49 36.87 41.49 36.87 41.99 36.00 41.49 35.13 40.49 35.13 TH 39.99 38 40.49 38.87 41.49 38.87 41.99 38 41.49 37.13 40.49 37.13 TH
39.99 38.00 40.49 38.87 41.49 38.87 41.99 38.00 41.49 37.13 40.49 37.13 TH 39.99 46 40.49 46.87 41.49 46.87 41.99 46 41.49 45.13 40.49 45.13 TH
39.99 46.00 40.49 46.87 41.49 46.87 41.99 46.00 41.49 45.13 40.49 45.13 TH 39.99 50 40.49 50.87 41.49 50.87 41.99 50 41.49 49.13 40.49 49.13 TH
39.99 50.00 40.49 50.87 41.49 50.87 41.99 50.00 41.49 49.13 40.49 49.13 TH 39.99 54 40.49 54.87 41.49 54.87 41.99 54 41.49 53.13 40.49 53.13 TH
39.99 54.00 40.49 54.87 41.49 54.87 41.99 54.00 41.49 53.13 40.49 53.13 TH 39.99 58 40.49 58.87 41.49 58.87 41.99 58 41.49 57.13 40.49 57.13 TH
39.99 58.00 40.49 58.87 41.49 58.87 41.99 58.00 41.49 57.13 40.49 57.13 TH 41.72 3 42.22 3.87 43.22 3.87 43.72 3 43.22 2.13 42.22 2.13 TH
41.72 3.00 42.22 3.87 43.22 3.87 43.72 3.00 43.22 2.13 42.22 2.13 TH 41.72 7 42.22 7.87 43.22 7.87 43.72 7 43.22 6.13 42.22 6.13 TH
41.72 7.00 42.22 7.87 43.22 7.87 43.72 7.00 43.22 6.13 42.22 6.13 TH 41.72 11 42.22 11.87 43.22 11.87 43.72 11 43.22 10.13 42.22 10.13 TH
41.72 11.00 42.22 11.87 43.22 11.87 43.72 11.00 43.22 10.13 42.22 10.13 TH 41.72 15 42.22 15.87 43.22 15.87 43.72 15 43.22 14.13 42.22 14.13 TH
41.72 15.00 42.22 15.87 43.22 15.87 43.72 15.00 43.22 14.13 42.22 14.13 TH 41.72 19 42.22 19.87 43.22 19.87 43.72 19 43.22 18.13 42.22 18.13 TH
41.72 19.00 42.22 19.87 43.22 19.87 43.72 19.00 43.22 18.13 42.22 18.13 TH 41.72 23 42.22 23.87 43.22 23.87 43.72 23 43.22 22.13 42.22 22.13 TH
41.72 23.00 42.22 23.87 43.22 23.87 43.72 23.00 43.22 22.13 42.22 22.13 TH 41.72 27 42.22 27.87 43.22 27.87 43.72 27 43.22 26.13 42.22 26.13 TH
41.72 27.00 42.22 27.87 43.22 27.87 43.72 27.00 43.22 26.13 42.22 26.13 TH 41.72 31 42.22 31.87 43.22 31.87 43.72 31 43.22 30.13 42.22 30.13 TH
41.72 31.00 42.22 31.87 43.22 31.87 43.72 31.00 43.22 30.13 42.22 30.13 TH 41.72 35 42.22 35.87 43.22 35.87 43.72 35 43.22 34.13 42.22 34.13 TH
41.72 35.00 42.22 35.87 43.22 35.87 43.72 35.00 43.22 34.13 42.22 34.13 TH 41.72 39 42.22 39.87 43.22 39.87 43.72 39 43.22 38.13 42.22 38.13 TH
41.72 39.00 42.22 39.87 43.22 39.87 43.72 39.00 43.22 38.13 42.22 38.13 TH 41.72 41 42.22 41.87 43.22 41.87 43.72 41 43.22 40.13 42.22 40.13 TH
41.72 41.00 42.22 41.87 43.22 41.87 43.72 41.00 43.22 40.13 42.22 40.13 TH 41.72 43 42.22 43.87 43.22 43.87 43.72 43 43.22 42.13 42.22 42.13 TH
41.72 43.00 42.22 43.87 43.22 43.87 43.72 43.00 43.22 42.13 42.22 42.13 TH 41.72 45 42.22 45.87 43.22 45.87 43.72 45 43.22 44.13 42.22 44.13 TH
41.72 45.00 42.22 45.87 43.22 45.87 43.72 45.00 43.22 44.13 42.22 44.13 TH 41.72 47 42.22 47.87 43.22 47.87 43.72 47 43.22 46.13 42.22 46.13 TH
41.72 47.00 42.22 47.87 43.22 47.87 43.72 47.00 43.22 46.13 42.22 46.13 TH 41.72 51 42.22 51.87 43.22 51.87 43.72 51 43.22 50.13 42.22 50.13 TH
41.72 51.00 42.22 51.87 43.22 51.87 43.72 51.00 43.22 50.13 42.22 50.13 TH 41.72 55 42.22 55.87 43.22 55.87 43.72 55 43.22 54.13 42.22 54.13 TH
41.72 55.00 42.22 55.87 43.22 55.87 43.72 55.00 43.22 54.13 42.22 54.13 TH 41.72 57 42.22 57.87 43.22 57.87 43.72 57 43.22 56.13 42.22 56.13 TH
41.72 57.00 42.22 57.87 43.22 57.87 43.72 57.00 43.22 56.13 42.22 56.13 TH 41.72 59 42.22 59.87 43.22 59.87 43.72 59 43.22 58.13 42.22 58.13 TH
41.72 59.00 42.22 59.87 43.22 59.87 43.72 59.00 43.22 58.13 42.22 58.13 TH 43.45 42 43.95 42.87 44.95 42.87 45.45 42 44.95 41.13 43.95 41.13 TH
43.45 42.00 43.95 42.87 44.95 42.87 45.45 42.00 44.95 41.13 43.95 41.13 TH 43.45 44 43.95 44.87 44.95 44.87 45.45 44 44.95 43.13 43.95 43.13 TH
43.45 44.00 43.95 44.87 44.95 44.87 45.45 44.00 44.95 43.13 43.95 43.13 TH 43.45 46 43.95 46.87 44.95 46.87 45.45 46 44.95 45.13 43.95 45.13 TH
43.45 46.00 43.95 46.87 44.95 46.87 45.45 46.00 44.95 45.13 43.95 45.13 TH 43.45 48 43.95 48.87 44.95 48.87 45.45 48 44.95 47.13 43.95 47.13 TH
43.45 48.00 43.95 48.87 44.95 48.87 45.45 48.00 44.95 47.13 43.95 47.13 TH 43.45 52 43.95 52.87 44.95 52.87 45.45 52 44.95 51.13 43.95 51.13 TH
43.45 52.00 43.95 52.87 44.95 52.87 45.45 52.00 44.95 51.13 43.95 51.13 TH 43.45 56 43.95 56.87 44.95 56.87 45.45 56 44.95 55.13 43.95 55.13 TH
43.45 56.00 43.95 56.87 44.95 56.87 45.45 56.00 44.95 55.13 43.95 55.13 TH 43.45 58 43.95 58.87 44.95 58.87 45.45 58 44.95 57.13 43.95 57.13 TH
43.45 58.00 43.95 58.87 44.95 58.87 45.45 58.00 44.95 57.13 43.95 57.13 TH 45.19 1 45.69 1.87 46.69 1.87 47.19 1 46.69 0.13 45.69 0.13 TH
45.19 1.00 45.69 1.87 46.69 1.87 47.19 1.00 46.69 0.13 45.69 0.13 TH 45.19 5 45.69 5.87 46.69 5.87 47.19 5 46.69 4.13 45.69 4.13 TH
45.19 5.00 45.69 5.87 46.69 5.87 47.19 5.00 46.69 4.13 45.69 4.13 TH 45.19 9 45.69 9.87 46.69 9.87 47.19 9 46.69 8.13 45.69 8.13 TH
45.19 9.00 45.69 9.87 46.69 9.87 47.19 9.00 46.69 8.13 45.69 8.13 TH 45.19 13 45.69 13.87 46.69 13.87 47.19 13 46.69 12.13 45.69 12.13 TH
45.19 13.00 45.69 13.87 46.69 13.87 47.19 13.00 46.69 12.13 45.69 12.13 TH 45.19 17 45.69 17.87 46.69 17.87 47.19 17 46.69 16.13 45.69 16.13 TH
45.19 17.00 45.69 17.87 46.69 17.87 47.19 17.00 46.69 16.13 45.69 16.13 TH 45.19 21 45.69 21.87 46.69 21.87 47.19 21 46.69 20.13 45.69 20.13 TH
45.19 21.00 45.69 21.87 46.69 21.87 47.19 21.00 46.69 20.13 45.69 20.13 TH 45.19 25 45.69 25.87 46.69 25.87 47.19 25 46.69 24.13 45.69 24.13 TH
45.19 25.00 45.69 25.87 46.69 25.87 47.19 25.00 46.69 24.13 45.69 24.13 TH 45.19 29 45.69 29.87 46.69 29.87 47.19 29 46.69 28.13 45.69 28.13 TH
45.19 29.00 45.69 29.87 46.69 29.87 47.19 29.00 46.69 28.13 45.69 28.13 TH 45.19 33 45.69 33.87 46.69 33.87 47.19 33 46.69 32.13 45.69 32.13 TH
45.19 33.00 45.69 33.87 46.69 33.87 47.19 33.00 46.69 32.13 45.69 32.13 TH 45.19 37 45.69 37.87 46.69 37.87 47.19 37 46.69 36.13 45.69 36.13 TH
45.19 37.00 45.69 37.87 46.69 37.87 47.19 37.00 46.69 36.13 45.69 36.13 TH 45.19 57 45.69 57.87 46.69 57.87 47.19 57 46.69 56.13 45.69 56.13 TH
45.19 57.00 45.69 57.87 46.69 57.87 47.19 57.00 46.69 56.13 45.69 56.13 TH 46.92 2 47.42 2.87 48.42 2.87 48.92 2 48.42 1.13 47.42 1.13 TH
46.92 2.00 47.42 2.87 48.42 2.87 48.92 2.00 48.42 1.13 47.42 1.13 TH 46.92 4 47.42 4.87 48.42 4.87 48.92 4 48.42 3.13 47.42 3.13 TH
46.92 4.00 47.42 4.87 48.42 4.87 48.92 4.00 48.42 3.13 47.42 3.13 TH 46.92 6 47.42 6.87 48.42 6.87 48.92 6 48.42 5.13 47.42 5.13 TH
46.92 6.00 47.42 6.87 48.42 6.87 48.92 6.00 48.42 5.13 47.42 5.13 TH 46.92 8 47.42 8.87 48.42 8.87 48.92 8 48.42 7.13 47.42 7.13 TH
46.92 8.00 47.42 8.87 48.42 8.87 48.92 8.00 48.42 7.13 47.42 7.13 TH 46.92 10 47.42 10.87 48.42 10.87 48.92 10 48.42 9.13 47.42 9.13 TH
46.92 10.00 47.42 10.87 48.42 10.87 48.92 10.00 48.42 9.13 47.42 9.13 TH 46.92 12 47.42 12.87 48.42 12.87 48.92 12 48.42 11.13 47.42 11.13 TH
46.92 12.00 47.42 12.87 48.42 12.87 48.92 12.00 48.42 11.13 47.42 11.13 TH 46.92 14 47.42 14.87 48.42 14.87 48.92 14 48.42 13.13 47.42 13.13 TH
46.92 14.00 47.42 14.87 48.42 14.87 48.92 14.00 48.42 13.13 47.42 13.13 TH 46.92 16 47.42 16.87 48.42 16.87 48.92 16 48.42 15.13 47.42 15.13 TH
46.92 16.00 47.42 16.87 48.42 16.87 48.92 16.00 48.42 15.13 47.42 15.13 TH 46.92 26 47.42 26.87 48.42 26.87 48.92 26 48.42 25.13 47.42 25.13 TH
46.92 26.00 47.42 26.87 48.42 26.87 48.92 26.00 48.42 25.13 47.42 25.13 TH 46.92 28 47.42 28.87 48.42 28.87 48.92 28 48.42 27.13 47.42 27.13 TH
46.92 28.00 47.42 28.87 48.42 28.87 48.92 28.00 48.42 27.13 47.42 27.13 TH 46.92 30 47.42 30.87 48.42 30.87 48.92 30 48.42 29.13 47.42 29.13 TH
46.92 30.00 47.42 30.87 48.42 30.87 48.92 30.00 48.42 29.13 47.42 29.13 TH 46.92 32 47.42 32.87 48.42 32.87 48.92 32 48.42 31.13 47.42 31.13 TH
46.92 32.00 47.42 32.87 48.42 32.87 48.92 32.00 48.42 31.13 47.42 31.13 TH 46.92 44 47.42 44.87 48.42 44.87 48.92 44 48.42 43.13 47.42 43.13 TH
46.92 44.00 47.42 44.87 48.42 44.87 48.92 44.00 48.42 43.13 47.42 43.13 TH 46.92 48 47.42 48.87 48.42 48.87 48.92 48 48.42 47.13 47.42 47.13 TH
46.92 48.00 47.42 48.87 48.42 48.87 48.92 48.00 48.42 47.13 47.42 47.13 TH 48.65 3 49.15 3.87 50.15 3.87 50.65 3 50.15 2.13 49.15 2.13 TH
48.65 3.00 49.15 3.87 50.15 3.87 50.65 3.00 50.15 2.13 49.15 2.13 TH 48.65 7 49.15 7.87 50.15 7.87 50.65 7 50.15 6.13 49.15 6.13 TH
48.65 7.00 49.15 7.87 50.15 7.87 50.65 7.00 50.15 6.13 49.15 6.13 TH 48.65 9 49.15 9.87 50.15 9.87 50.65 9 50.15 8.13 49.15 8.13 TH
48.65 9.00 49.15 9.87 50.15 9.87 50.65 9.00 50.15 8.13 49.15 8.13 TH 48.65 13 49.15 13.87 50.15 13.87 50.65 13 50.15 12.13 49.15 12.13 TH
48.65 13.00 49.15 13.87 50.15 13.87 50.65 13.00 50.15 12.13 49.15 12.13 TH 48.65 17 49.15 17.87 50.15 17.87 50.65 17 50.15 16.13 49.15 16.13 TH
48.65 17.00 49.15 17.87 50.15 17.87 50.65 17.00 50.15 16.13 49.15 16.13 TH 48.65 19 49.15 19.87 50.15 19.87 50.65 19 50.15 18.13 49.15 18.13 TH
48.65 19.00 49.15 19.87 50.15 19.87 50.65 19.00 50.15 18.13 49.15 18.13 TH 48.65 21 49.15 21.87 50.15 21.87 50.65 21 50.15 20.13 49.15 20.13 TH
48.65 21.00 49.15 21.87 50.15 21.87 50.65 21.00 50.15 20.13 49.15 20.13 TH 48.65 23 49.15 23.87 50.15 23.87 50.65 23 50.15 22.13 49.15 22.13 TH
48.65 23.00 49.15 23.87 50.15 23.87 50.65 23.00 50.15 22.13 49.15 22.13 TH 48.65 33 49.15 33.87 50.15 33.87 50.65 33 50.15 32.13 49.15 32.13 TH
48.65 33.00 49.15 33.87 50.15 33.87 50.65 33.00 50.15 32.13 49.15 32.13 TH 48.65 35 49.15 35.87 50.15 35.87 50.65 35 50.15 34.13 49.15 34.13 TH
48.65 35.00 49.15 35.87 50.15 35.87 50.65 35.00 50.15 34.13 49.15 34.13 TH 48.65 37 49.15 37.87 50.15 37.87 50.65 37 50.15 36.13 49.15 36.13 TH
48.65 37.00 49.15 37.87 50.15 37.87 50.65 37.00 50.15 36.13 49.15 36.13 TH 48.65 39 49.15 39.87 50.15 39.87 50.65 39 50.15 38.13 49.15 38.13 TH
48.65 39.00 49.15 39.87 50.15 39.87 50.65 39.00 50.15 38.13 49.15 38.13 TH 48.65 43 49.15 43.87 50.15 43.87 50.65 43 50.15 42.13 49.15 42.13 TH
48.65 43.00 49.15 43.87 50.15 43.87 50.65 43.00 50.15 42.13 49.15 42.13 TH 48.65 47 49.15 47.87 50.15 47.87 50.65 47 50.15 46.13 49.15 46.13 TH
48.65 47.00 49.15 47.87 50.15 47.87 50.65 47.00 50.15 46.13 49.15 46.13 TH 48.65 51 49.15 51.87 50.15 51.87 50.65 51 50.15 50.13 49.15 50.13 TH
48.65 51.00 49.15 51.87 50.15 51.87 50.65 51.00 50.15 50.13 49.15 50.13 TH 48.65 55 49.15 55.87 50.15 55.87 50.65 55 50.15 54.13 49.15 54.13 TH
48.65 55.00 49.15 55.87 50.15 55.87 50.65 55.00 50.15 54.13 49.15 54.13 TH 50.38 2 50.88 2.87 51.88 2.87 52.38 2 51.88 1.13 50.88 1.13 TH
50.38 2.00 50.88 2.87 51.88 2.87 52.38 2.00 51.88 1.13 50.88 1.13 TH 50.38 6 50.88 6.87 51.88 6.87 52.38 6 51.88 5.13 50.88 5.13 TH
50.38 6.00 50.88 6.87 51.88 6.87 52.38 6.00 51.88 5.13 50.88 5.13 TH 50.38 10 50.88 10.87 51.88 10.87 52.38 10 51.88 9.13 50.88 9.13 TH
50.38 10.00 50.88 10.87 51.88 10.87 52.38 10.00 51.88 9.13 50.88 9.13 TH 50.38 14 50.88 14.87 51.88 14.87 52.38 14 51.88 13.13 50.88 13.13 TH
50.38 14.00 50.88 14.87 51.88 14.87 52.38 14.00 51.88 13.13 50.88 13.13 TH 50.38 28 50.88 28.87 51.88 28.87 52.38 28 51.88 27.13 50.88 27.13 TH
50.38 28.00 50.88 28.87 51.88 28.87 52.38 28.00 51.88 27.13 50.88 27.13 TH 50.38 32 50.88 32.87 51.88 32.87 52.38 32 51.88 31.13 50.88 31.13 TH
50.38 32.00 50.88 32.87 51.88 32.87 52.38 32.00 51.88 31.13 50.88 31.13 TH 50.38 36 50.88 36.87 51.88 36.87 52.38 36 51.88 35.13 50.88 35.13 TH
50.38 36.00 50.88 36.87 51.88 36.87 52.38 36.00 51.88 35.13 50.88 35.13 TH 50.38 40 50.88 40.87 51.88 40.87 52.38 40 51.88 39.13 50.88 39.13 TH
50.38 40.00 50.88 40.87 51.88 40.87 52.38 40.00 51.88 39.13 50.88 39.13 TH 50.38 42 50.88 42.87 51.88 42.87 52.38 42 51.88 41.13 50.88 41.13 TH
50.38 42.00 50.88 42.87 51.88 42.87 52.38 42.00 51.88 41.13 50.88 41.13 TH 50.38 44 50.88 44.87 51.88 44.87 52.38 44 51.88 43.13 50.88 43.13 TH
50.38 44.00 50.88 44.87 51.88 44.87 52.38 44.00 51.88 43.13 50.88 43.13 TH 50.38 46 50.88 46.87 51.88 46.87 52.38 46 51.88 45.13 50.88 45.13 TH
50.38 46.00 50.88 46.87 51.88 46.87 52.38 46.00 51.88 45.13 50.88 45.13 TH 50.38 48 50.88 48.87 51.88 48.87 52.38 48 51.88 47.13 50.88 47.13 TH
50.38 48.00 50.88 48.87 51.88 48.87 52.38 48.00 51.88 47.13 50.88 47.13 TH 50.38 50 50.88 50.87 51.88 50.87 52.38 50 51.88 49.13 50.88 49.13 TH
50.38 50.00 50.88 50.87 51.88 50.87 52.38 50.00 51.88 49.13 50.88 49.13 TH 50.38 54 50.88 54.87 51.88 54.87 52.38 54 51.88 53.13 50.88 53.13 TH
50.38 54.00 50.88 54.87 51.88 54.87 52.38 54.00 51.88 53.13 50.88 53.13 TH 50.38 58 50.88 58.87 51.88 58.87 52.38 58 51.88 57.13 50.88 57.13 TH
50.38 58.00 50.88 58.87 51.88 58.87 52.38 58.00 51.88 57.13 50.88 57.13 TH 52.11 1 52.61 1.87 53.61 1.87 54.11 1 53.61 0.13 52.61 0.13 TH
52.11 1.00 52.61 1.87 53.61 1.87 54.11 1.00 53.61 0.13 52.61 0.13 TH 52.11 3 52.61 3.87 53.61 3.87 54.11 3 53.61 2.13 52.61 2.13 TH
52.11 3.00 52.61 3.87 53.61 3.87 54.11 3.00 53.61 2.13 52.61 2.13 TH 52.11 5 52.61 5.87 53.61 5.87 54.11 5 53.61 4.13 52.61 4.13 TH
52.11 5.00 52.61 5.87 53.61 5.87 54.11 5.00 53.61 4.13 52.61 4.13 TH 52.11 7 52.61 7.87 53.61 7.87 54.11 7 53.61 6.13 52.61 6.13 TH
52.11 7.00 52.61 7.87 53.61 7.87 54.11 7.00 53.61 6.13 52.61 6.13 TH 52.11 11 52.61 11.87 53.61 11.87 54.11 11 53.61 10.13 52.61 10.13 TH
52.11 11.00 52.61 11.87 53.61 11.87 54.11 11.00 53.61 10.13 52.61 10.13 TH 52.11 15 52.61 15.87 53.61 15.87 54.11 15 53.61 14.13 52.61 14.13 TH
52.11 15.00 52.61 15.87 53.61 15.87 54.11 15.00 53.61 14.13 52.61 14.13 TH 52.11 17 52.61 17.87 53.61 17.87 54.11 17 53.61 16.13 52.61 16.13 TH
52.11 17.00 52.61 17.87 53.61 17.87 54.11 17.00 53.61 16.13 52.61 16.13 TH 52.11 21 52.61 21.87 53.61 21.87 54.11 21 53.61 20.13 52.61 20.13 TH
52.11 21.00 52.61 21.87 53.61 21.87 54.11 21.00 53.61 20.13 52.61 20.13 TH 52.11 33 52.61 33.87 53.61 33.87 54.11 33 53.61 32.13 52.61 32.13 TH
52.11 33.00 52.61 33.87 53.61 33.87 54.11 33.00 53.61 32.13 52.61 32.13 TH 52.11 35 52.61 35.87 53.61 35.87 54.11 35 53.61 34.13 52.61 34.13 TH
52.11 35.00 52.61 35.87 53.61 35.87 54.11 35.00 53.61 34.13 52.61 34.13 TH 52.11 37 52.61 37.87 53.61 37.87 54.11 37 53.61 36.13 52.61 36.13 TH
52.11 37.00 52.61 37.87 53.61 37.87 54.11 37.00 53.61 36.13 52.61 36.13 TH 52.11 39 52.61 39.87 53.61 39.87 54.11 39 53.61 38.13 52.61 38.13 TH
52.11 39.00 52.61 39.87 53.61 39.87 54.11 39.00 53.61 38.13 52.61 38.13 TH 52.11 43 52.61 43.87 53.61 43.87 54.11 43 53.61 42.13 52.61 42.13 TH
52.11 43.00 52.61 43.87 53.61 43.87 54.11 43.00 53.61 42.13 52.61 42.13 TH 52.11 47 52.61 47.87 53.61 47.87 54.11 47 53.61 46.13 52.61 46.13 TH
52.11 47.00 52.61 47.87 53.61 47.87 54.11 47.00 53.61 46.13 52.61 46.13 TH 52.11 49 52.61 49.87 53.61 49.87 54.11 49 53.61 48.13 52.61 48.13 TH
52.11 49.00 52.61 49.87 53.61 49.87 54.11 49.00 53.61 48.13 52.61 48.13 TH 52.11 53 52.61 53.87 53.61 53.87 54.11 53 53.61 52.13 52.61 52.13 TH
52.11 53.00 52.61 53.87 53.61 53.87 54.11 53.00 53.61 52.13 52.61 52.13 TH 52.11 57 52.61 57.87 53.61 57.87 54.11 57 53.61 56.13 52.61 56.13 TH
52.11 57.00 52.61 57.87 53.61 57.87 54.11 57.00 53.61 56.13 52.61 56.13 TH 53.85 4 54.35 4.87 55.35 4.87 55.85 4 55.35 3.13 54.35 3.13 TH
53.85 4.00 54.35 4.87 55.35 4.87 55.85 4.00 55.35 3.13 54.35 3.13 TH 53.85 8 54.35 8.87 55.35 8.87 55.85 8 55.35 7.13 54.35 7.13 TH
53.85 8.00 54.35 8.87 55.35 8.87 55.85 8.00 55.35 7.13 54.35 7.13 TH 53.85 10 54.35 10.87 55.35 10.87 55.85 10 55.35 9.13 54.35 9.13 TH
53.85 10.00 54.35 10.87 55.35 10.87 55.85 10.00 55.35 9.13 54.35 9.13 TH 53.85 14 54.35 14.87 55.35 14.87 55.85 14 55.35 13.13 54.35 13.13 TH
53.85 14.00 54.35 14.87 55.35 14.87 55.85 14.00 55.35 13.13 54.35 13.13 TH 53.85 18 54.35 18.87 55.35 18.87 55.85 18 55.35 17.13 54.35 17.13 TH
53.85 18.00 54.35 18.87 55.35 18.87 55.85 18.00 55.35 17.13 54.35 17.13 TH 53.85 20 54.35 20.87 55.35 20.87 55.85 20 55.35 19.13 54.35 19.13 TH
53.85 20.00 54.35 20.87 55.35 20.87 55.85 20.00 55.35 19.13 54.35 19.13 TH 53.85 22 54.35 22.87 55.35 22.87 55.85 22 55.35 21.13 54.35 21.13 TH
53.85 22.00 54.35 22.87 55.35 22.87 55.85 22.00 55.35 21.13 54.35 21.13 TH 53.85 24 54.35 24.87 55.35 24.87 55.85 24 55.35 23.13 54.35 23.13 TH
53.85 24.00 54.35 24.87 55.35 24.87 55.85 24.00 55.35 23.13 54.35 23.13 TH 53.85 28 54.35 28.87 55.35 28.87 55.85 28 55.35 27.13 54.35 27.13 TH
53.85 28.00 54.35 28.87 55.35 28.87 55.85 28.00 55.35 27.13 54.35 27.13 TH 53.85 32 54.35 32.87 55.35 32.87 55.85 32 55.35 31.13 54.35 31.13 TH
53.85 32.00 54.35 32.87 55.35 32.87 55.85 32.00 55.35 31.13 54.35 31.13 TH 53.85 34 54.35 34.87 55.35 34.87 55.85 34 55.35 33.13 54.35 33.13 TH
53.85 34.00 54.35 34.87 55.35 34.87 55.85 34.00 55.35 33.13 54.35 33.13 TH 53.85 38 54.35 38.87 55.35 38.87 55.85 38 55.35 37.13 54.35 37.13 TH
53.85 38.00 54.35 38.87 55.35 38.87 55.85 38.00 55.35 37.13 54.35 37.13 TH 53.85 42 54.35 42.87 55.35 42.87 55.85 42 55.35 41.13 54.35 41.13 TH
53.85 42.00 54.35 42.87 55.35 42.87 55.85 42.00 55.35 41.13 54.35 41.13 TH 53.85 46 54.35 46.87 55.35 46.87 55.85 46 55.35 45.13 54.35 45.13 TH
53.85 46.00 54.35 46.87 55.35 46.87 55.85 46.00 55.35 45.13 54.35 45.13 TH 53.85 50 54.35 50.87 55.35 50.87 55.85 50 55.35 49.13 54.35 49.13 TH
53.85 50.00 54.35 50.87 55.35 50.87 55.85 50.00 55.35 49.13 54.35 49.13 TH 53.85 52 54.35 52.87 55.35 52.87 55.85 52 55.35 51.13 54.35 51.13 TH
53.85 52.00 54.35 52.87 55.35 52.87 55.85 52.00 55.35 51.13 54.35 51.13 TH 53.85 54 54.35 54.87 55.35 54.87 55.85 54 55.35 53.13 54.35 53.13 TH
53.85 54.00 54.35 54.87 55.35 54.87 55.85 54.00 55.35 53.13 54.35 53.13 TH 53.85 56 54.35 56.87 55.35 56.87 55.85 56 55.35 55.13 54.35 55.13 TH
53.85 56.00 54.35 56.87 55.35 56.87 55.85 56.00 55.35 55.13 54.35 55.13 TH 55.58 3 56.08 3.87 57.08 3.87 57.58 3 57.08 2.13 56.08 2.13 TH
55.58 3.00 56.08 3.87 57.08 3.87 57.58 3.00 57.08 2.13 56.08 2.13 TH 55.58 7 56.08 7.87 57.08 7.87 57.58 7 57.08 6.13 56.08 6.13 TH
55.58 7.00 56.08 7.87 57.08 7.87 57.58 7.00 57.08 6.13 56.08 6.13 TH 55.58 27 56.08 27.87 57.08 27.87 57.58 27 57.08 26.13 56.08 26.13 TH
55.58 27.00 56.08 27.87 57.08 27.87 57.58 27.00 57.08 26.13 56.08 26.13 TH 55.58 31 56.08 31.87 57.08 31.87 57.58 31 57.08 30.13 56.08 30.13 TH
55.58 31.00 56.08 31.87 57.08 31.87 57.58 31.00 57.08 30.13 56.08 30.13 TH 55.58 33 56.08 33.87 57.08 33.87 57.58 33 57.08 32.13 56.08 32.13 TH
55.58 33.00 56.08 33.87 57.08 33.87 57.58 33.00 57.08 32.13 56.08 32.13 TH 55.58 37 56.08 37.87 57.08 37.87 57.58 37 57.08 36.13 56.08 36.13 TH
55.58 37.00 56.08 37.87 57.08 37.87 57.58 37.00 57.08 36.13 56.08 36.13 TH 55.58 41 56.08 41.87 57.08 41.87 57.58 41 57.08 40.13 56.08 40.13 TH
55.58 41.00 56.08 41.87 57.08 41.87 57.58 41.00 57.08 40.13 56.08 40.13 TH 55.58 45 56.08 45.87 57.08 45.87 57.58 45 57.08 44.13 56.08 44.13 TH
55.58 45.00 56.08 45.87 57.08 45.87 57.58 45.00 57.08 44.13 56.08 44.13 TH 55.58 51 56.08 51.87 57.08 51.87 57.58 51 57.08 50.13 56.08 50.13 TH
55.58 51.00 56.08 51.87 57.08 51.87 57.58 51.00 57.08 50.13 56.08 50.13 TH 55.58 55 56.08 55.87 57.08 55.87 57.58 55 57.08 54.13 56.08 54.13 TH
55.58 55.00 56.08 55.87 57.08 55.87 57.58 55.00 57.08 54.13 56.08 54.13 TH 28.87 29 7.431 1.569 TC
28.87 29.00 7.431 1.569 TC 28.87 29 4.293 1.569 TC
28.87 29.00 4.293 1.569 TC 28.87 29 1.155 1.569 TC
28.87 29.00 1.155 1.569 TC

View File

@ -4,212 +4,111 @@
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 28 26 %%BoundingBox: 0 0 28 26
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.99 0.59 0.19 setrgbcolor 0.99 0.59 0.19 setrgbcolor
26.00 0.00 TB 0.00 28.00 TR 26 28 0 0 TR
TE 0 1 1 setrgbcolor
0.00 1.00 1.00 setrgbcolor 2 4 16 22 TR
2.00 22.00 TB 16.00 4.00 TR 2 4 22 22 TR
TE 2 2 12 20 TR
2.00 22.00 TB 22.00 4.00 TR 2 2 4 18 TR
TE 2 2 16 18 TR
2.00 20.00 TB 12.00 2.00 TR 2 4 22 18 TR
TE 2 2 10 14 TR
2.00 18.00 TB 4.00 2.00 TR 2 2 10 10 TR
TE 2 2 14 10 TR
2.00 18.00 TB 16.00 2.00 TR 2 8 18 10 TR
TE 2 2 4 8 TR
2.00 18.00 TB 22.00 4.00 TR 2 2 16 8 TR
TE 2 4 20 6 TR
2.00 14.00 TB 10.00 2.00 TR 2 6 10 4 TR
TE 2 2 24 4 TR
2.00 10.00 TB 10.00 2.00 TR 2 2 4 2 TR
TE 1 0 1 setrgbcolor
2.00 10.00 TB 14.00 2.00 TR 2 2 14 22 TR
TE 2 2 4 20 TR
2.00 10.00 TB 18.00 8.00 TR 2 2 10 20 TR
TE 2 4 16 20 TR
2.00 8.00 TB 4.00 2.00 TR 2 2 12 18 TR
TE 2 2 14 16 TR
2.00 8.00 TB 16.00 2.00 TR 2 2 18 16 TR
TE 2 2 4 14 TR
2.00 6.00 TB 20.00 4.00 TR 2 2 16 14 TR
TE 2 2 22 14 TR
2.00 4.00 TB 10.00 6.00 TR 2 2 10 8 TR
TE 2 4 18 8 TR
2.00 4.00 TB 24.00 2.00 TR 2 2 24 8 TR
TE 2 2 14 6 TR
2.00 2.00 TB 4.00 2.00 TR 2 12 10 2 TR
TE 1 1 0 setrgbcolor
1.00 0.00 1.00 setrgbcolor 2 2 4 22 TR
2.00 22.00 TB 14.00 2.00 TR 2 2 12 22 TR
TE 2 2 20 22 TR
2.00 20.00 TB 4.00 2.00 TR 2 2 14 18 TR
TE 2 2 20 18 TR
2.00 20.00 TB 10.00 2.00 TR 2 2 4 16 TR
TE 2 2 10 16 TR
2.00 20.00 TB 16.00 4.00 TR 2 2 16 16 TR
TE 2 2 22 16 TR
2.00 18.00 TB 12.00 2.00 TR 2 4 12 14 TR
TE 2 2 20 14 TR
2.00 16.00 TB 14.00 2.00 TR 2 2 24 14 TR
TE 2 2 16 10 TR
2.00 16.00 TB 18.00 2.00 TR 2 4 12 8 TR
TE 2 2 4 6 TR
2.00 14.00 TB 4.00 2.00 TR 2 2 10 6 TR
TE 2 4 16 6 TR
2.00 14.00 TB 16.00 2.00 TR 2 2 24 6 TR
TE 2 2 22 4 TR
2.00 14.00 TB 22.00 2.00 TR 2 2 24 2 TR
TE 0 1 0 setrgbcolor
2.00 8.00 TB 10.00 2.00 TR 2 2 10 22 TR
TE 2 2 14 20 TR
2.00 8.00 TB 18.00 4.00 TR 2 6 20 20 TR
TE 2 2 10 18 TR
2.00 8.00 TB 24.00 2.00 TR 2 2 18 18 TR
TE 2 2 12 16 TR
2.00 6.00 TB 14.00 2.00 TR 2 2 20 16 TR
TE 2 2 24 16 TR
2.00 2.00 TB 10.00 12.00 TR 2 2 18 14 TR
TE 2 2 4 10 TR
1.00 1.00 0.00 setrgbcolor 2 2 12 10 TR
2.00 22.00 TB 4.00 2.00 TR 2 2 22 8 TR
TE 2 2 12 6 TR
2.00 22.00 TB 12.00 2.00 TR 2 2 4 4 TR
TE 2 6 16 4 TR
2.00 22.00 TB 20.00 2.00 TR 2 2 22 2 TR
TE 0 0 0 setrgbcolor
2.00 18.00 TB 14.00 2.00 TR 2 28 0 24 TR
TE 2 2 0 22 TR
2.00 18.00 TB 20.00 2.00 TR 22 2 6 2 TR
TE 22 2 26 2 TR
2.00 16.00 TB 4.00 2.00 TR 2 4 0 20 TR
TE 2 2 0 18 TR
2.00 16.00 TB 10.00 2.00 TR 2 4 0 16 TR
TE 2 2 0 14 TR
2.00 16.00 TB 16.00 2.00 TR 2 4 0 12 TR
TE 2 2 10 12 TR
2.00 16.00 TB 22.00 2.00 TR 2 2 14 12 TR
TE 2 2 18 12 TR
2.00 14.00 TB 12.00 4.00 TR 2 2 22 12 TR
TE 2 2 0 10 TR
2.00 14.00 TB 20.00 2.00 TR 2 4 0 8 TR
TE 2 2 0 6 TR
2.00 14.00 TB 24.00 2.00 TR 2 4 0 4 TR
TE 2 2 0 2 TR
2.00 10.00 TB 16.00 2.00 TR 2 28 0 0 TR
TE 1 1 1 setrgbcolor
2.00 8.00 TB 12.00 4.00 TR 2 2 2 22 TR
TE 22 2 8 2 TR
2.00 6.00 TB 4.00 2.00 TR 2 2 2 18 TR
TE 2 2 2 14 TR
2.00 6.00 TB 10.00 2.00 TR 2 2 4 12 TR
TE 2 2 12 12 TR
2.00 6.00 TB 16.00 4.00 TR 2 2 16 12 TR
TE 2 2 20 12 TR
2.00 6.00 TB 24.00 2.00 TR 2 2 24 12 TR
TE 2 2 2 10 TR
2.00 4.00 TB 22.00 2.00 TR 2 2 2 6 TR
TE 2 2 2 2 TR
2.00 2.00 TB 24.00 2.00 TR
TE
0.00 1.00 0.00 setrgbcolor
2.00 22.00 TB 10.00 2.00 TR
TE
2.00 20.00 TB 14.00 2.00 TR
TE
2.00 20.00 TB 20.00 6.00 TR
TE
2.00 18.00 TB 10.00 2.00 TR
TE
2.00 18.00 TB 18.00 2.00 TR
TE
2.00 16.00 TB 12.00 2.00 TR
TE
2.00 16.00 TB 20.00 2.00 TR
TE
2.00 16.00 TB 24.00 2.00 TR
TE
2.00 14.00 TB 18.00 2.00 TR
TE
2.00 10.00 TB 4.00 2.00 TR
TE
2.00 10.00 TB 12.00 2.00 TR
TE
2.00 8.00 TB 22.00 2.00 TR
TE
2.00 6.00 TB 12.00 2.00 TR
TE
2.00 4.00 TB 4.00 2.00 TR
TE
2.00 4.00 TB 16.00 6.00 TR
TE
2.00 2.00 TB 22.00 2.00 TR
TE
0.00 0.00 0.00 setrgbcolor
2.00 24.00 TB 0.00 28.00 TR
TE
2.00 22.00 TB 0.00 2.00 TR
TE
22.00 2.00 TB 6.00 2.00 TR
TE
22.00 2.00 TB 26.00 2.00 TR
TE
2.00 20.00 TB 0.00 4.00 TR
TE
2.00 18.00 TB 0.00 2.00 TR
TE
2.00 16.00 TB 0.00 4.00 TR
TE
2.00 14.00 TB 0.00 2.00 TR
TE
2.00 12.00 TB 0.00 4.00 TR
TE
2.00 12.00 TB 10.00 2.00 TR
TE
2.00 12.00 TB 14.00 2.00 TR
TE
2.00 12.00 TB 18.00 2.00 TR
TE
2.00 12.00 TB 22.00 2.00 TR
TE
2.00 10.00 TB 0.00 2.00 TR
TE
2.00 8.00 TB 0.00 4.00 TR
TE
2.00 6.00 TB 0.00 2.00 TR
TE
2.00 4.00 TB 0.00 4.00 TR
TE
2.00 2.00 TB 0.00 2.00 TR
TE
2.00 0.00 TB 0.00 28.00 TR
TE
1.00 1.00 1.00 setrgbcolor
2.00 22.00 TB 2.00 2.00 TR
TE
22.00 2.00 TB 8.00 2.00 TR
TE
2.00 18.00 TB 2.00 2.00 TR
TE
2.00 14.00 TB 2.00 2.00 TR
TE
2.00 12.00 TB 4.00 2.00 TR
TE
2.00 12.00 TB 12.00 2.00 TR
TE
2.00 12.00 TB 16.00 2.00 TR
TE
2.00 12.00 TB 20.00 2.00 TR
TE
2.00 12.00 TB 24.00 2.00 TR
TE
2.00 10.00 TB 2.00 2.00 TR
TE
2.00 6.00 TB 2.00 2.00 TR
TE
2.00 2.00 TB 2.00 2.00 TR
TE

View File

@ -1,224 +1,119 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 40 30 %%BoundingBox: 0 0 40 30
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 0.00 0.00 setrgbcolor 1 0 0 setrgbcolor
30.00 0.00 TB 0.00 40.00 TR 30 40 0 0 TR
TE 0 0 1 setrgbcolor
0.00 0.00 1.00 setrgbcolor 2 40 0 28 TR
2.00 28.00 TB 0.00 40.00 TR 2 40 0 0 TR
TE 26 2 0 2 TR
2.00 0.00 TB 0.00 40.00 TR 26 2 38 2 TR
TE 0 1 1 setrgbcolor
26.00 2.00 TB 0.00 2.00 TR 2 4 22 24 TR
TE 2 4 28 24 TR
26.00 2.00 TB 38.00 2.00 TR 2 2 18 22 TR
TE 2 2 10 20 TR
0.00 1.00 1.00 setrgbcolor 2 2 22 20 TR
2.00 24.00 TB 22.00 4.00 TR 2 4 28 20 TR
TE 2 2 16 16 TR
2.00 24.00 TB 28.00 4.00 TR 2 2 16 12 TR
TE 2 2 20 12 TR
2.00 22.00 TB 18.00 2.00 TR 2 8 24 12 TR
TE 2 2 10 10 TR
2.00 20.00 TB 10.00 2.00 TR 2 2 22 10 TR
TE 2 4 26 8 TR
2.00 20.00 TB 22.00 2.00 TR 2 6 16 6 TR
TE 2 2 30 6 TR
2.00 20.00 TB 28.00 4.00 TR 2 2 10 4 TR
TE 1 0 1 setrgbcolor
2.00 16.00 TB 16.00 2.00 TR 2 2 20 24 TR
TE 2 2 10 22 TR
2.00 12.00 TB 16.00 2.00 TR 2 2 16 22 TR
TE 2 4 22 22 TR
2.00 12.00 TB 20.00 2.00 TR 2 2 18 20 TR
TE 2 2 20 18 TR
2.00 12.00 TB 24.00 8.00 TR 2 2 24 18 TR
TE 2 2 10 16 TR
2.00 10.00 TB 10.00 2.00 TR 2 2 22 16 TR
TE 2 2 28 16 TR
2.00 10.00 TB 22.00 2.00 TR 2 2 16 10 TR
TE 2 4 24 10 TR
2.00 8.00 TB 26.00 4.00 TR 2 2 30 10 TR
TE 2 2 20 8 TR
2.00 6.00 TB 16.00 6.00 TR 2 12 16 4 TR
TE 1 1 0 setrgbcolor
2.00 6.00 TB 30.00 2.00 TR 2 2 10 24 TR
TE 2 2 18 24 TR
2.00 4.00 TB 10.00 2.00 TR 2 2 26 24 TR
TE 2 2 20 20 TR
1.00 0.00 1.00 setrgbcolor 2 2 26 20 TR
2.00 24.00 TB 20.00 2.00 TR 2 2 10 18 TR
TE 2 2 16 18 TR
2.00 22.00 TB 10.00 2.00 TR 2 2 22 18 TR
TE 2 2 28 18 TR
2.00 22.00 TB 16.00 2.00 TR 2 4 18 16 TR
TE 2 2 26 16 TR
2.00 22.00 TB 22.00 4.00 TR 2 2 30 16 TR
TE 2 2 22 12 TR
2.00 20.00 TB 18.00 2.00 TR 2 4 18 10 TR
TE 2 2 10 8 TR
2.00 18.00 TB 20.00 2.00 TR 2 2 16 8 TR
TE 2 4 22 8 TR
2.00 18.00 TB 24.00 2.00 TR 2 2 30 8 TR
TE 2 2 28 6 TR
2.00 16.00 TB 10.00 2.00 TR 2 2 30 4 TR
TE 0 1 0 setrgbcolor
2.00 16.00 TB 22.00 2.00 TR 2 2 16 24 TR
TE 2 2 20 22 TR
2.00 16.00 TB 28.00 2.00 TR 2 6 26 22 TR
TE 2 2 16 20 TR
2.00 10.00 TB 16.00 2.00 TR 2 2 24 20 TR
TE 2 2 18 18 TR
2.00 10.00 TB 24.00 4.00 TR 2 2 26 18 TR
TE 2 2 30 18 TR
2.00 10.00 TB 30.00 2.00 TR 2 2 24 16 TR
TE 2 2 10 12 TR
2.00 8.00 TB 20.00 2.00 TR 2 2 18 12 TR
TE 2 2 28 10 TR
2.00 4.00 TB 16.00 12.00 TR 2 2 18 8 TR
TE 2 2 10 6 TR
1.00 1.00 0.00 setrgbcolor 2 6 22 6 TR
2.00 24.00 TB 10.00 2.00 TR 2 2 28 4 TR
TE 0 0 0 setrgbcolor
2.00 24.00 TB 18.00 2.00 TR 2 28 6 26 TR
TE 2 2 6 24 TR
2.00 24.00 TB 26.00 2.00 TR 22 2 12 4 TR
TE 22 2 32 4 TR
2.00 20.00 TB 20.00 2.00 TR 2 4 6 22 TR
TE 2 2 6 20 TR
2.00 20.00 TB 26.00 2.00 TR 2 4 6 18 TR
TE 2 2 6 16 TR
2.00 18.00 TB 10.00 2.00 TR 2 4 6 14 TR
TE 2 2 16 14 TR
2.00 18.00 TB 16.00 2.00 TR 2 2 20 14 TR
TE 2 2 24 14 TR
2.00 18.00 TB 22.00 2.00 TR 2 2 28 14 TR
TE 2 2 6 12 TR
2.00 18.00 TB 28.00 2.00 TR 2 4 6 10 TR
TE 2 2 6 8 TR
2.00 16.00 TB 18.00 4.00 TR 2 4 6 6 TR
TE 2 2 6 4 TR
2.00 16.00 TB 26.00 2.00 TR 2 28 6 2 TR
TE 1 1 1 setrgbcolor
2.00 16.00 TB 30.00 2.00 TR 2 2 8 24 TR
TE 22 2 14 4 TR
2.00 12.00 TB 22.00 2.00 TR 2 2 8 20 TR
TE 2 2 8 16 TR
2.00 10.00 TB 18.00 4.00 TR 2 2 10 14 TR
TE 2 2 18 14 TR
2.00 8.00 TB 10.00 2.00 TR 2 2 22 14 TR
TE 2 2 26 14 TR
2.00 8.00 TB 16.00 2.00 TR 2 2 30 14 TR
TE 2 2 8 12 TR
2.00 8.00 TB 22.00 4.00 TR 2 2 8 8 TR
TE 2 2 8 4 TR
2.00 8.00 TB 30.00 2.00 TR
TE
2.00 6.00 TB 28.00 2.00 TR
TE
2.00 4.00 TB 30.00 2.00 TR
TE
0.00 1.00 0.00 setrgbcolor
2.00 24.00 TB 16.00 2.00 TR
TE
2.00 22.00 TB 20.00 2.00 TR
TE
2.00 22.00 TB 26.00 6.00 TR
TE
2.00 20.00 TB 16.00 2.00 TR
TE
2.00 20.00 TB 24.00 2.00 TR
TE
2.00 18.00 TB 18.00 2.00 TR
TE
2.00 18.00 TB 26.00 2.00 TR
TE
2.00 18.00 TB 30.00 2.00 TR
TE
2.00 16.00 TB 24.00 2.00 TR
TE
2.00 12.00 TB 10.00 2.00 TR
TE
2.00 12.00 TB 18.00 2.00 TR
TE
2.00 10.00 TB 28.00 2.00 TR
TE
2.00 8.00 TB 18.00 2.00 TR
TE
2.00 6.00 TB 10.00 2.00 TR
TE
2.00 6.00 TB 22.00 6.00 TR
TE
2.00 4.00 TB 28.00 2.00 TR
TE
0.00 0.00 0.00 setrgbcolor
2.00 26.00 TB 6.00 28.00 TR
TE
2.00 24.00 TB 6.00 2.00 TR
TE
22.00 4.00 TB 12.00 2.00 TR
TE
22.00 4.00 TB 32.00 2.00 TR
TE
2.00 22.00 TB 6.00 4.00 TR
TE
2.00 20.00 TB 6.00 2.00 TR
TE
2.00 18.00 TB 6.00 4.00 TR
TE
2.00 16.00 TB 6.00 2.00 TR
TE
2.00 14.00 TB 6.00 4.00 TR
TE
2.00 14.00 TB 16.00 2.00 TR
TE
2.00 14.00 TB 20.00 2.00 TR
TE
2.00 14.00 TB 24.00 2.00 TR
TE
2.00 14.00 TB 28.00 2.00 TR
TE
2.00 12.00 TB 6.00 2.00 TR
TE
2.00 10.00 TB 6.00 4.00 TR
TE
2.00 8.00 TB 6.00 2.00 TR
TE
2.00 6.00 TB 6.00 4.00 TR
TE
2.00 4.00 TB 6.00 2.00 TR
TE
2.00 2.00 TB 6.00 28.00 TR
TE
1.00 1.00 1.00 setrgbcolor
2.00 24.00 TB 8.00 2.00 TR
TE
22.00 4.00 TB 14.00 2.00 TR
TE
2.00 20.00 TB 8.00 2.00 TR
TE
2.00 16.00 TB 8.00 2.00 TR
TE
2.00 14.00 TB 10.00 2.00 TR
TE
2.00 14.00 TB 18.00 2.00 TR
TE
2.00 14.00 TB 22.00 2.00 TR
TE
2.00 14.00 TB 26.00 2.00 TR
TE
2.00 14.00 TB 30.00 2.00 TR
TE
2.00 12.00 TB 8.00 2.00 TR
TE
2.00 8.00 TB 8.00 2.00 TR
TE
2.00 4.00 TB 8.00 2.00 TR
TE

View File

@ -1,224 +1,119 @@
%!PS-Adobe-3.0 EPSF-3.0 %!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.10.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 40 38 %%BoundingBox: 0 0 40 38
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
0.00 1.00 1.00 0.00 setcmykcolor 0 1 1 0 setcmykcolor
38.00 0.00 TB 0.00 40.00 TR 38 40 0 0 TR
TE 1 1 0 0 setcmykcolor
1.00 1.00 0.00 0.00 setcmykcolor 4 40 0 34 TR
4.00 34.00 TB 0.00 40.00 TR 4 40 0 0 TR
TE 30 4 0 4 TR
4.00 0.00 TB 0.00 40.00 TR 30 4 36 4 TR
TE 1 0 0 0 setcmykcolor
30.00 4.00 TB 0.00 4.00 TR 2 4 22 28 TR
TE 2 4 28 28 TR
30.00 4.00 TB 36.00 4.00 TR 2 2 18 26 TR
TE 2 2 10 24 TR
1.00 0.00 0.00 0.00 setcmykcolor 2 2 22 24 TR
2.00 28.00 TB 22.00 4.00 TR 2 4 28 24 TR
TE 2 2 16 20 TR
2.00 28.00 TB 28.00 4.00 TR 2 2 16 16 TR
TE 2 2 20 16 TR
2.00 26.00 TB 18.00 2.00 TR 2 8 24 16 TR
TE 2 2 10 14 TR
2.00 24.00 TB 10.00 2.00 TR 2 2 22 14 TR
TE 2 4 26 12 TR
2.00 24.00 TB 22.00 2.00 TR 2 6 16 10 TR
TE 2 2 30 10 TR
2.00 24.00 TB 28.00 4.00 TR 2 2 10 8 TR
TE 0 1 0 0 setcmykcolor
2.00 20.00 TB 16.00 2.00 TR 2 2 20 28 TR
TE 2 2 10 26 TR
2.00 16.00 TB 16.00 2.00 TR 2 2 16 26 TR
TE 2 4 22 26 TR
2.00 16.00 TB 20.00 2.00 TR 2 2 18 24 TR
TE 2 2 20 22 TR
2.00 16.00 TB 24.00 8.00 TR 2 2 24 22 TR
TE 2 2 10 20 TR
2.00 14.00 TB 10.00 2.00 TR 2 2 22 20 TR
TE 2 2 28 20 TR
2.00 14.00 TB 22.00 2.00 TR 2 2 16 14 TR
TE 2 4 24 14 TR
2.00 12.00 TB 26.00 4.00 TR 2 2 30 14 TR
TE 2 2 20 12 TR
2.00 10.00 TB 16.00 6.00 TR 2 12 16 8 TR
TE 0 0 1 0 setcmykcolor
2.00 10.00 TB 30.00 2.00 TR 2 2 10 28 TR
TE 2 2 18 28 TR
2.00 8.00 TB 10.00 2.00 TR 2 2 26 28 TR
TE 2 2 20 24 TR
0.00 1.00 0.00 0.00 setcmykcolor 2 2 26 24 TR
2.00 28.00 TB 20.00 2.00 TR 2 2 10 22 TR
TE 2 2 16 22 TR
2.00 26.00 TB 10.00 2.00 TR 2 2 22 22 TR
TE 2 2 28 22 TR
2.00 26.00 TB 16.00 2.00 TR 2 4 18 20 TR
TE 2 2 26 20 TR
2.00 26.00 TB 22.00 4.00 TR 2 2 30 20 TR
TE 2 2 22 16 TR
2.00 24.00 TB 18.00 2.00 TR 2 4 18 14 TR
TE 2 2 10 12 TR
2.00 22.00 TB 20.00 2.00 TR 2 2 16 12 TR
TE 2 4 22 12 TR
2.00 22.00 TB 24.00 2.00 TR 2 2 30 12 TR
TE 2 2 28 10 TR
2.00 20.00 TB 10.00 2.00 TR 2 2 30 8 TR
TE 1 0 1 0 setcmykcolor
2.00 20.00 TB 22.00 2.00 TR 2 2 16 28 TR
TE 2 2 20 26 TR
2.00 20.00 TB 28.00 2.00 TR 2 6 26 26 TR
TE 2 2 16 24 TR
2.00 14.00 TB 16.00 2.00 TR 2 2 24 24 TR
TE 2 2 18 22 TR
2.00 14.00 TB 24.00 4.00 TR 2 2 26 22 TR
TE 2 2 30 22 TR
2.00 14.00 TB 30.00 2.00 TR 2 2 24 20 TR
TE 2 2 10 16 TR
2.00 12.00 TB 20.00 2.00 TR 2 2 18 16 TR
TE 2 2 28 14 TR
2.00 8.00 TB 16.00 12.00 TR 2 2 18 12 TR
TE 2 2 10 10 TR
0.00 0.00 1.00 0.00 setcmykcolor 2 6 22 10 TR
2.00 28.00 TB 10.00 2.00 TR 2 2 28 8 TR
TE 0 0 0 1 setcmykcolor
2.00 28.00 TB 18.00 2.00 TR 2 28 6 30 TR
TE 2 2 6 28 TR
2.00 28.00 TB 26.00 2.00 TR 22 2 12 8 TR
TE 22 2 32 8 TR
2.00 24.00 TB 20.00 2.00 TR 2 4 6 26 TR
TE 2 2 6 24 TR
2.00 24.00 TB 26.00 2.00 TR 2 4 6 22 TR
TE 2 2 6 20 TR
2.00 22.00 TB 10.00 2.00 TR 2 4 6 18 TR
TE 2 2 16 18 TR
2.00 22.00 TB 16.00 2.00 TR 2 2 20 18 TR
TE 2 2 24 18 TR
2.00 22.00 TB 22.00 2.00 TR 2 2 28 18 TR
TE 2 2 6 16 TR
2.00 22.00 TB 28.00 2.00 TR 2 4 6 14 TR
TE 2 2 6 12 TR
2.00 20.00 TB 18.00 4.00 TR 2 4 6 10 TR
TE 2 2 6 8 TR
2.00 20.00 TB 26.00 2.00 TR 2 28 6 6 TR
TE 0 0 0 0 setcmykcolor
2.00 20.00 TB 30.00 2.00 TR 2 2 8 28 TR
TE 22 2 14 8 TR
2.00 16.00 TB 22.00 2.00 TR 2 2 8 24 TR
TE 2 2 8 20 TR
2.00 14.00 TB 18.00 4.00 TR 2 2 10 18 TR
TE 2 2 18 18 TR
2.00 12.00 TB 10.00 2.00 TR 2 2 22 18 TR
TE 2 2 26 18 TR
2.00 12.00 TB 16.00 2.00 TR 2 2 30 18 TR
TE 2 2 8 16 TR
2.00 12.00 TB 22.00 4.00 TR 2 2 8 12 TR
TE 2 2 8 8 TR
2.00 12.00 TB 30.00 2.00 TR
TE
2.00 10.00 TB 28.00 2.00 TR
TE
2.00 8.00 TB 30.00 2.00 TR
TE
1.00 0.00 1.00 0.00 setcmykcolor
2.00 28.00 TB 16.00 2.00 TR
TE
2.00 26.00 TB 20.00 2.00 TR
TE
2.00 26.00 TB 26.00 6.00 TR
TE
2.00 24.00 TB 16.00 2.00 TR
TE
2.00 24.00 TB 24.00 2.00 TR
TE
2.00 22.00 TB 18.00 2.00 TR
TE
2.00 22.00 TB 26.00 2.00 TR
TE
2.00 22.00 TB 30.00 2.00 TR
TE
2.00 20.00 TB 24.00 2.00 TR
TE
2.00 16.00 TB 10.00 2.00 TR
TE
2.00 16.00 TB 18.00 2.00 TR
TE
2.00 14.00 TB 28.00 2.00 TR
TE
2.00 12.00 TB 18.00 2.00 TR
TE
2.00 10.00 TB 10.00 2.00 TR
TE
2.00 10.00 TB 22.00 6.00 TR
TE
2.00 8.00 TB 28.00 2.00 TR
TE
0.00 0.00 0.00 1.00 setcmykcolor
2.00 30.00 TB 6.00 28.00 TR
TE
2.00 28.00 TB 6.00 2.00 TR
TE
22.00 8.00 TB 12.00 2.00 TR
TE
22.00 8.00 TB 32.00 2.00 TR
TE
2.00 26.00 TB 6.00 4.00 TR
TE
2.00 24.00 TB 6.00 2.00 TR
TE
2.00 22.00 TB 6.00 4.00 TR
TE
2.00 20.00 TB 6.00 2.00 TR
TE
2.00 18.00 TB 6.00 4.00 TR
TE
2.00 18.00 TB 16.00 2.00 TR
TE
2.00 18.00 TB 20.00 2.00 TR
TE
2.00 18.00 TB 24.00 2.00 TR
TE
2.00 18.00 TB 28.00 2.00 TR
TE
2.00 16.00 TB 6.00 2.00 TR
TE
2.00 14.00 TB 6.00 4.00 TR
TE
2.00 12.00 TB 6.00 2.00 TR
TE
2.00 10.00 TB 6.00 4.00 TR
TE
2.00 8.00 TB 6.00 2.00 TR
TE
2.00 6.00 TB 6.00 28.00 TR
TE
0.00 0.00 0.00 0.00 setcmykcolor
2.00 28.00 TB 8.00 2.00 TR
TE
22.00 8.00 TB 14.00 2.00 TR
TE
2.00 24.00 TB 8.00 2.00 TR
TE
2.00 20.00 TB 8.00 2.00 TR
TE
2.00 18.00 TB 10.00 2.00 TR
TE
2.00 18.00 TB 18.00 2.00 TR
TE
2.00 18.00 TB 22.00 2.00 TR
TE
2.00 18.00 TB 26.00 2.00 TR
TE
2.00 18.00 TB 30.00 2.00 TR
TE
2.00 16.00 TB 8.00 2.00 TR
TE
2.00 12.00 TB 8.00 2.00 TR
TE
2.00 8.00 TB 8.00 2.00 TR
TE

View File

@ -2,129 +2,65 @@
%%Creator: Zint 2.12.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 276 117 %%BoundingBox: 0 0 276 118
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
116.90 0.00 TB 0.00 276.00 TR 118 276 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 110 2 18 8 TR
110.00 6.90 TB 18.00 2.00 TR 110 2 22 8 TR
TE 110 4 30 8 TR
110.00 6.90 TB 22.00 2.00 TR 110 2 36 8 TR
TE 100 4 42 18 TR
110.00 6.90 TB 30.00 4.00 TR 100 2 50 18 TR
TE 100 2 56 18 TR
110.00 6.90 TB 36.00 2.00 TR 100 4 62 18 TR
TE 100 8 68 18 TR
100.00 16.90 TB 42.00 4.00 TR 100 2 78 18 TR
TE 100 2 82 18 TR
100.00 16.90 TB 50.00 2.00 TR 100 4 90 18 TR
TE 100 4 96 18 TR
100.00 16.90 TB 56.00 2.00 TR 100 2 106 18 TR
TE 110 2 110 8 TR
100.00 16.90 TB 62.00 4.00 TR 110 2 114 8 TR
TE 100 2 118 18 TR
100.00 16.90 TB 68.00 8.00 TR 100 2 122 18 TR
TE 100 2 132 18 TR
100.00 16.90 TB 78.00 2.00 TR 100 2 140 18 TR
TE 100 2 146 18 TR
100.00 16.90 TB 82.00 2.00 TR 100 2 152 18 TR
TE 100 6 160 18 TR
100.00 16.90 TB 90.00 4.00 TR 100 2 168 18 TR
TE 100 6 174 18 TR
100.00 16.90 TB 96.00 4.00 TR 100 2 184 18 TR
TE 110 2 188 8 TR
100.00 16.90 TB 106.00 2.00 TR 110 6 194 8 TR
TE 110 2 202 8 TR
110.00 6.90 TB 110.00 2.00 TR 110 2 206 8 TR
TE 82 2 226 18 TR
110.00 6.90 TB 114.00 2.00 TR 82 4 230 18 TR
TE 82 2 238 18 TR
100.00 16.90 TB 118.00 2.00 TR 82 4 244 18 TR
TE 82 2 250 18 TR
100.00 16.90 TB 122.00 2.00 TR 82 2 254 18 TR
TE 82 4 262 18 TR
100.00 16.90 TB 132.00 2.00 TR /Helvetica findfont 14.98 scalefont setfont
TE 8.7 0.8 moveto
100.00 16.90 TB 140.00 2.00 TR (0) stringwidth pop neg 0 rmoveto
TE
100.00 16.90 TB 146.00 2.00 TR
TE
100.00 16.90 TB 152.00 2.00 TR
TE
100.00 16.90 TB 160.00 6.00 TR
TE
100.00 16.90 TB 168.00 2.00 TR
TE
100.00 16.90 TB 174.00 6.00 TR
TE
100.00 16.90 TB 184.00 2.00 TR
TE
110.00 6.90 TB 188.00 2.00 TR
TE
110.00 6.90 TB 194.00 6.00 TR
TE
110.00 6.90 TB 202.00 2.00 TR
TE
110.00 6.90 TB 206.00 2.00 TR
TE
83.10 16.90 TB 226.00 2.00 TR
TE
83.10 16.90 TB 230.00 4.00 TR
TE
83.10 16.90 TB 238.00 2.00 TR
TE
83.10 16.90 TB 244.00 4.00 TR
TE
83.10 16.90 TB 250.00 2.00 TR
TE
83.10 16.90 TB 254.00 2.00 TR
TE
83.10 16.90 TB 262.00 4.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto
(0) stringwidth
pop
neg 0 rmoveto
(0) show (0) show
setmatrix /Helvetica findfont 21.4 scalefont setfont
matrix currentmatrix 74 0.8 moveto
/Helvetica findfont (12345) stringwidth pop -2 div 0 rmoveto
20.00 scalefont setfont
0 0 moveto 74.00 0.80 translate 0.00 rotate 0 0 moveto
(12345) stringwidth
pop
-2 div 0 rmoveto
(12345) show (12345) show
setmatrix 152 0.8 moveto
matrix currentmatrix (67890) stringwidth pop -2 div 0 rmoveto
/Helvetica findfont
20.00 scalefont setfont
0 0 moveto 152.00 0.80 translate 0.00 rotate 0 0 moveto
(67890) stringwidth
pop
-2 div 0 rmoveto
(67890) show (67890) show
setmatrix /Helvetica findfont 14.98 scalefont setfont
matrix currentmatrix 217.3 0.8 moveto
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 217.30 0.80 translate 0.00 rotate 0 0 moveto
(5) show (5) show
setmatrix /Helvetica findfont 21.4 scalefont setfont
matrix currentmatrix 246 102.4 moveto
/Helvetica findfont (24) stringwidth pop -2 div 0 rmoveto
20.00 scalefont setfont
0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto
(24) stringwidth
pop
-2 div 0 rmoveto
(24) show (24) show
setmatrix

View File

@ -0,0 +1,68 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 276 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 276 0 0 TR
0 0 0 setrgbcolor
110 2 18 8 TR
110 2 22 8 TR
110 4 30 8 TR
110 2 36 8 TR
100 4 42 18 TR
100 2 50 18 TR
100 2 56 18 TR
100 4 62 18 TR
100 8 68 18 TR
100 2 78 18 TR
100 2 82 18 TR
100 4 90 18 TR
100 4 96 18 TR
100 2 106 18 TR
110 2 110 8 TR
110 2 114 8 TR
100 2 118 18 TR
100 2 122 18 TR
100 2 132 18 TR
100 2 140 18 TR
100 2 146 18 TR
100 2 152 18 TR
100 6 160 18 TR
100 2 168 18 TR
100 6 174 18 TR
100 2 184 18 TR
110 2 188 8 TR
110 6 194 8 TR
110 2 202 8 TR
110 2 206 8 TR
82 2 226 18 TR
82 4 230 18 TR
82 2 238 18 TR
82 4 244 18 TR
82 2 250 18 TR
82 2 254 18 TR
82 4 262 18 TR
/Helvetica findfont 14.98 scalefont setfont
8.7 0.8 moveto
(0) stringwidth pop neg 0 rmoveto
(0) show
/Helvetica findfont 21.4 scalefont setfont
74 0.8 moveto
(12345) stringwidth pop -2 div 0 rmoveto
(12345) show
152 0.8 moveto
(67890) stringwidth pop -2 div 0 rmoveto
(67890) show
/Helvetica findfont 14.98 scalefont setfont
217.3 0.8 moveto
(5) show
/Helvetica findfont 21.4 scalefont setfont
246 102.4 moveto
(24) stringwidth pop -2 div 0 rmoveto
(24) show
263.6 102.4 moveto
(>) show

View File

@ -2,112 +2,58 @@
%%Creator: Zint 2.12.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 238 117 %%BoundingBox: 0 0 238 118
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
116.90 0.00 TB 0.00 238.00 TR 118 238 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 110 2 18 8 TR
110.00 6.90 TB 18.00 2.00 TR 110 2 22 8 TR
TE 100 4 26 18 TR
110.00 6.90 TB 22.00 2.00 TR 100 4 34 18 TR
TE 100 2 42 18 TR
100.00 16.90 TB 26.00 4.00 TR 100 4 48 18 TR
TE 100 8 54 18 TR
100.00 16.90 TB 34.00 4.00 TR 100 2 64 18 TR
TE 100 6 70 18 TR
100.00 16.90 TB 42.00 2.00 TR 100 2 78 18 TR
TE 100 6 82 18 TR
100.00 16.90 TB 48.00 4.00 TR 100 2 92 18 TR
TE 100 2 96 18 TR
100.00 16.90 TB 54.00 8.00 TR 100 8 100 18 TR
TE 110 2 110 8 TR
100.00 16.90 TB 64.00 2.00 TR 110 2 114 8 TR
TE 110 2 118 8 TR
100.00 16.90 TB 70.00 6.00 TR 82 2 134 18 TR
TE 82 4 138 18 TR
100.00 16.90 TB 78.00 2.00 TR 82 4 144 18 TR
TE 82 4 152 18 TR
100.00 16.90 TB 82.00 6.00 TR 82 2 158 18 TR
TE 82 2 164 18 TR
100.00 16.90 TB 92.00 2.00 TR 82 4 170 18 TR
TE 82 2 176 18 TR
100.00 16.90 TB 96.00 2.00 TR 82 2 180 18 TR
TE 82 2 190 18 TR
100.00 16.90 TB 100.00 8.00 TR 82 2 194 18 TR
TE 82 2 198 18 TR
110.00 6.90 TB 110.00 2.00 TR 82 4 206 18 TR
TE 82 2 212 18 TR
110.00 6.90 TB 114.00 2.00 TR 82 4 216 18 TR
TE 82 2 226 18 TR
110.00 6.90 TB 118.00 2.00 TR /Helvetica findfont 14.98 scalefont setfont
TE 8.7 0.8 moveto
83.10 16.90 TB 134.00 2.00 TR (0) stringwidth pop neg 0 rmoveto
TE
83.10 16.90 TB 138.00 4.00 TR
TE
83.10 16.90 TB 144.00 4.00 TR
TE
83.10 16.90 TB 152.00 4.00 TR
TE
83.10 16.90 TB 158.00 2.00 TR
TE
83.10 16.90 TB 164.00 2.00 TR
TE
83.10 16.90 TB 170.00 4.00 TR
TE
83.10 16.90 TB 176.00 2.00 TR
TE
83.10 16.90 TB 180.00 2.00 TR
TE
83.10 16.90 TB 190.00 2.00 TR
TE
83.10 16.90 TB 194.00 2.00 TR
TE
83.10 16.90 TB 198.00 2.00 TR
TE
83.10 16.90 TB 206.00 4.00 TR
TE
83.10 16.90 TB 212.00 2.00 TR
TE
83.10 16.90 TB 216.00 4.00 TR
TE
83.10 16.90 TB 226.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto
(0) stringwidth
pop
neg 0 rmoveto
(0) show (0) show
setmatrix /Helvetica findfont 21.4 scalefont setfont
matrix currentmatrix 67 0.8 moveto
/Helvetica findfont (123456) stringwidth pop -2 div 0 rmoveto
20.00 scalefont setfont
0 0 moveto 67.00 0.80 translate 0.00 rotate 0 0 moveto
(123456) stringwidth
pop
-2 div 0 rmoveto
(123456) show (123456) show
setmatrix /Helvetica findfont 14.98 scalefont setfont
matrix currentmatrix 125.3 0.8 moveto
/Helvetica findfont
14.00 scalefont setfont
0 0 moveto 125.30 0.80 translate 0.00 rotate 0 0 moveto
(5) show (5) show
setmatrix /Helvetica findfont 21.4 scalefont setfont
matrix currentmatrix 182 102.4 moveto
/Helvetica findfont (12345) stringwidth pop -2 div 0 rmoveto
20.00 scalefont setfont
0 0 moveto 182.00 101.90 translate 0.00 rotate 0 0 moveto
(12345) stringwidth
pop
-2 div 0 rmoveto
(12345) show (12345) show
setmatrix

View File

@ -0,0 +1,61 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 238 118
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
118 238 0 0 TR
0 0 0 setrgbcolor
110 2 18 8 TR
110 2 22 8 TR
100 4 26 18 TR
100 4 34 18 TR
100 2 42 18 TR
100 4 48 18 TR
100 8 54 18 TR
100 2 64 18 TR
100 6 70 18 TR
100 2 78 18 TR
100 6 82 18 TR
100 2 92 18 TR
100 2 96 18 TR
100 8 100 18 TR
110 2 110 8 TR
110 2 114 8 TR
110 2 118 8 TR
82 2 134 18 TR
82 4 138 18 TR
82 4 144 18 TR
82 4 152 18 TR
82 2 158 18 TR
82 2 164 18 TR
82 4 170 18 TR
82 2 176 18 TR
82 2 180 18 TR
82 2 190 18 TR
82 2 194 18 TR
82 2 198 18 TR
82 4 206 18 TR
82 2 212 18 TR
82 4 216 18 TR
82 2 226 18 TR
/Helvetica findfont 14.98 scalefont setfont
8.7 0.8 moveto
(0) stringwidth pop neg 0 rmoveto
(0) show
/Helvetica findfont 21.4 scalefont setfont
67 0.8 moveto
(123456) stringwidth pop -2 div 0 rmoveto
(123456) show
/Helvetica findfont 14.98 scalefont setfont
125.3 0.8 moveto
(5) show
/Helvetica findfont 21.4 scalefont setfont
182 102.4 moveto
(12345) stringwidth pop -2 div 0 rmoveto
(12345) show
225.6 102.4 moveto
(>) show

View File

@ -2,112 +2,58 @@
%%Creator: Zint 2.12.0.9 %%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol %%Title: Zint Generated Symbol
%%Pages: 0 %%Pages: 0
%%BoundingBox: 0 0 238 113 %%BoundingBox: 0 0 238 114
%%EndComments %%EndComments
/TB { 2 copy } bind def /TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def
newpath newpath
1.00 1.00 1.00 setrgbcolor 1 1 1 setrgbcolor
112.28 0.00 TB 0.00 238.00 TR 113.2 238 0 0 TR
TE 0 0 0 setrgbcolor
0.00 0.00 0.00 setrgbcolor 110 2 18 3.2 TR
110.00 2.28 TB 18.00 2.00 TR 110 2 22 3.2 TR
TE 100 4 26 13.2 TR
110.00 2.28 TB 22.00 2.00 TR 100 4 34 13.2 TR
TE 100 2 42 13.2 TR
100.00 12.28 TB 26.00 4.00 TR 100 4 48 13.2 TR
TE 100 8 54 13.2 TR
100.00 12.28 TB 34.00 4.00 TR 100 2 64 13.2 TR
TE 100 6 70 13.2 TR
100.00 12.28 TB 42.00 2.00 TR 100 2 78 13.2 TR
TE 100 6 82 13.2 TR
100.00 12.28 TB 48.00 4.00 TR 100 2 92 13.2 TR
TE 100 2 96 13.2 TR
100.00 12.28 TB 54.00 8.00 TR 100 8 100 13.2 TR
TE 110 2 110 3.2 TR
100.00 12.28 TB 64.00 2.00 TR 110 2 114 3.2 TR
TE 110 2 118 3.2 TR
100.00 12.28 TB 70.00 6.00 TR 86.8 2 134 13.2 TR
TE 86.8 4 138 13.2 TR
100.00 12.28 TB 78.00 2.00 TR 86.8 4 144 13.2 TR
TE 86.8 4 152 13.2 TR
100.00 12.28 TB 82.00 6.00 TR 86.8 2 158 13.2 TR
TE 86.8 2 164 13.2 TR
100.00 12.28 TB 92.00 2.00 TR 86.8 4 170 13.2 TR
TE 86.8 2 176 13.2 TR
100.00 12.28 TB 96.00 2.00 TR 86.8 2 180 13.2 TR
TE 86.8 2 190 13.2 TR
100.00 12.28 TB 100.00 8.00 TR 86.8 2 194 13.2 TR
TE 86.8 2 198 13.2 TR
110.00 2.28 TB 110.00 2.00 TR 86.8 4 206 13.2 TR
TE 86.8 2 212 13.2 TR
110.00 2.28 TB 114.00 2.00 TR 86.8 4 216 13.2 TR
TE 86.8 2 226 13.2 TR
110.00 2.28 TB 118.00 2.00 TR /Helvetica findfont 12.84 scalefont setfont
TE 8.7 0.56 moveto
87.72 12.28 TB 134.00 2.00 TR (0) stringwidth pop neg 0 rmoveto
TE
87.72 12.28 TB 138.00 4.00 TR
TE
87.72 12.28 TB 144.00 4.00 TR
TE
87.72 12.28 TB 152.00 4.00 TR
TE
87.72 12.28 TB 158.00 2.00 TR
TE
87.72 12.28 TB 164.00 2.00 TR
TE
87.72 12.28 TB 170.00 4.00 TR
TE
87.72 12.28 TB 176.00 2.00 TR
TE
87.72 12.28 TB 180.00 2.00 TR
TE
87.72 12.28 TB 190.00 2.00 TR
TE
87.72 12.28 TB 194.00 2.00 TR
TE
87.72 12.28 TB 198.00 2.00 TR
TE
87.72 12.28 TB 206.00 4.00 TR
TE
87.72 12.28 TB 212.00 2.00 TR
TE
87.72 12.28 TB 216.00 4.00 TR
TE
87.72 12.28 TB 226.00 2.00 TR
TE
matrix currentmatrix
/Helvetica findfont
12.00 scalefont setfont
0 0 moveto 8.70 0.56 translate 0.00 rotate 0 0 moveto
(0) stringwidth
pop
neg 0 rmoveto
(0) show (0) show
setmatrix /Helvetica findfont 14.98 scalefont setfont
matrix currentmatrix 67 0.56 moveto
/Helvetica findfont (123456) stringwidth pop -2 div 0 rmoveto
14.00 scalefont setfont
0 0 moveto 67.00 0.56 translate 0.00 rotate 0 0 moveto
(123456) stringwidth
pop
-2 div 0 rmoveto
(123456) show (123456) show
setmatrix /Helvetica findfont 12.84 scalefont setfont
matrix currentmatrix 125.3 0.56 moveto
/Helvetica findfont
12.00 scalefont setfont
0 0 moveto 125.30 0.56 translate 0.00 rotate 0 0 moveto
(5) show (5) show
setmatrix /Helvetica findfont 14.98 scalefont setfont
matrix currentmatrix 182 102.28 moveto
/Helvetica findfont (12345) stringwidth pop -2 div 0 rmoveto
14.00 scalefont setfont
0 0 moveto 182.00 101.78 translate 0.00 rotate 0 0 moveto
(12345) stringwidth
pop
-2 div 0 rmoveto
(12345) show (12345) show
setmatrix

View File

@ -0,0 +1,61 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.12.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 238 114
%%EndComments
/TR { newpath moveto dup 3 1 roll 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
newpath
1 1 1 setrgbcolor
113.2 238 0 0 TR
0 0 0 setrgbcolor
110 2 18 3.2 TR
110 2 22 3.2 TR
100 4 26 13.2 TR
100 4 34 13.2 TR
100 2 42 13.2 TR
100 4 48 13.2 TR
100 8 54 13.2 TR
100 2 64 13.2 TR
100 6 70 13.2 TR
100 2 78 13.2 TR
100 6 82 13.2 TR
100 2 92 13.2 TR
100 2 96 13.2 TR
100 8 100 13.2 TR
110 2 110 3.2 TR
110 2 114 3.2 TR
110 2 118 3.2 TR
86.8 2 134 13.2 TR
86.8 4 138 13.2 TR
86.8 4 144 13.2 TR
86.8 4 152 13.2 TR
86.8 2 158 13.2 TR
86.8 2 164 13.2 TR
86.8 4 170 13.2 TR
86.8 2 176 13.2 TR
86.8 2 180 13.2 TR
86.8 2 190 13.2 TR
86.8 2 194 13.2 TR
86.8 2 198 13.2 TR
86.8 4 206 13.2 TR
86.8 2 212 13.2 TR
86.8 4 216 13.2 TR
86.8 2 226 13.2 TR
/Helvetica findfont 12.84 scalefont setfont
8.7 0.56 moveto
(0) stringwidth pop neg 0 rmoveto
(0) show
/Helvetica findfont 14.98 scalefont setfont
67 0.56 moveto
(123456) stringwidth pop -2 div 0 rmoveto
(123456) show
/Helvetica findfont 12.84 scalefont setfont
125.3 0.56 moveto
(5) show
/Helvetica findfont 14.98 scalefont setfont
182 102.28 moveto
(12345) stringwidth pop -2 div 0 rmoveto
(12345) show
225.6 102.28 moveto
(>) show

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Some files were not shown because too many files have changed in this diff Show More