Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 546376b7fe |
+46
-1
@@ -1,6 +1,51 @@
|
||||
CHANGES.txt - 07/10/2000
|
||||
CHANGES.txt - 07/21/2000
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS v1.1.1
|
||||
|
||||
- The pstoraster Makefile still referenced one of the
|
||||
old PDF filter files.
|
||||
- The filter Makefile used INSTALL_DATA instead of
|
||||
INSTALL_LIB to install the CUPS image library.
|
||||
- The administration CGI didn't work properly with
|
||||
network devices.
|
||||
- The BrowseACL variable was not updated after the
|
||||
cupsd.conf file was loaded.
|
||||
- The lpd mini-daemon didn't support printer instances.
|
||||
- Now use a default umask of 077 for child processes.
|
||||
- Now put temp files in /var/spool/cups/tmp for child
|
||||
processes and the root user, unless TMPDIR or TempDir
|
||||
is defined otherwise.
|
||||
- cupsGetPPD() no longer uses easy-to-guess filenames.
|
||||
- The CUPS-Delete-Class and CUPS-Delete-Printer
|
||||
operations now save classes.conf file as needed.
|
||||
- The lppasswd command wouldn't add a user.
|
||||
- The ppdOpen() function could cause a segfault if a
|
||||
0-length PPD file was read.
|
||||
- The image filters were not handling images with
|
||||
different X and Y resolutions properly.
|
||||
- The imagetoraster filter defaulted to RGB output
|
||||
instead of black output like pstoraster.
|
||||
- The pstops filter didn't handle binary data properly.
|
||||
- The pstops filter didn't handle copies properly for
|
||||
PS files lacking DSC comments.
|
||||
- The pstops filter now appends %%EOF to the end of
|
||||
documents if they don't have it.
|
||||
- The cupsGetPPD() function didn't work with remote
|
||||
printers lacking the @server in the name.
|
||||
- The configure script didn't work right when only
|
||||
--prefix was specified.
|
||||
- The ppdEmit() code now wraps all printer commands so
|
||||
that buggy PostScript printers will still print a file
|
||||
after receiving an option that isn't available.
|
||||
- Fixed the DeskJet margin bug, and disabled 600dpi
|
||||
color mode until it can be fixed.
|
||||
- The cupsAddDest() function didn't sort instances
|
||||
correctly in all cases.
|
||||
- The time-at-xyz attributes now expand to the date and
|
||||
time in banner files.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1
|
||||
|
||||
- Documentation updates.
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
README - CUPS v1.1 - 07/10/2000
|
||||
-------------------------------
|
||||
README - CUPS v1.1.1 - 07/21/2000
|
||||
---------------------------------
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
|
||||
+26
-22
@@ -192,33 +192,37 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
|
||||
break;
|
||||
|
||||
case IPP_TAG_URI :
|
||||
httpSeparate(attr->values[i].string.text, method, username,
|
||||
hostname, &port, resource);
|
||||
if (strchr(attr->values[i].string.text, ':') != NULL)
|
||||
{
|
||||
httpSeparate(attr->values[i].string.text, method, username,
|
||||
hostname, &port, resource);
|
||||
|
||||
if (strcmp(method, "ipp") == 0 ||
|
||||
strcmp(method, "http") == 0)
|
||||
{
|
||||
/*
|
||||
* Map localhost access to localhost...
|
||||
*/
|
||||
if (strcmp(method, "ipp") == 0 ||
|
||||
strcmp(method, "http") == 0)
|
||||
{
|
||||
/*
|
||||
* Map localhost access to localhost...
|
||||
*/
|
||||
|
||||
if (strcasecmp(hostname, server) == 0 &&
|
||||
strcmp(getenv("REMOTE_ADDR"), "127.0.0.1") == 0)
|
||||
strcpy(hostname, "localhost");
|
||||
if (strcasecmp(hostname, server) == 0 &&
|
||||
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
|
||||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0))
|
||||
strcpy(hostname, "localhost");
|
||||
|
||||
/*
|
||||
* Rewrite URI with HTTP address...
|
||||
*/
|
||||
/*
|
||||
* Rewrite URI with HTTP address...
|
||||
*/
|
||||
|
||||
if (username[0])
|
||||
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
|
||||
hostname, port, resource);
|
||||
else
|
||||
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
|
||||
resource);
|
||||
if (username[0])
|
||||
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
|
||||
hostname, port, resource);
|
||||
else
|
||||
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
|
||||
resource);
|
||||
|
||||
strcat(valptr, uri);
|
||||
break;
|
||||
strcat(valptr, uri);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case IPP_TAG_STRING :
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
* Version of software...
|
||||
*/
|
||||
|
||||
#define CUPS_SVERSION "CUPS v1.1"
|
||||
#define CUPS_SVERSION "CUPS v1.1.1"
|
||||
|
||||
/*
|
||||
* Where are files stored?
|
||||
|
||||
+18
-6
@@ -328,8 +328,12 @@ if test "$prefix" = "NONE"; then
|
||||
fi
|
||||
|
||||
dnl Fix "exec_prefix" variable if it hasn't been specified...
|
||||
if test "$exec_prefix" = "NONE" -a "$prefix" = "/"; then
|
||||
exec_prefix="/usr"
|
||||
if test "$exec_prefix" = "NONE"; then
|
||||
if test "$prefix" = "/"; then
|
||||
exec_prefix="/usr"
|
||||
else
|
||||
exec_prefix="$prefix"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Fix "sharedstatedir" variable if it hasn't been specified...
|
||||
@@ -353,13 +357,21 @@ if test "$includedir" = "\${prefix}/include" -a "$prefix" = "/"; then
|
||||
fi
|
||||
|
||||
dnl Fix "localstatedir" variable if it hasn't been specified...
|
||||
if test "$localstatedir" = "\${prefix}/var" -a "$prefix" = "/"; then
|
||||
localstatedir="/var"
|
||||
if test "$localstatedir" = "\${prefix}/var"; then
|
||||
if test "$prefix" = "/"; then
|
||||
localstatedir="/var"
|
||||
else
|
||||
localstatedir="$prefix/var"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Fix "sysconfdir" variable if it hasn't been specified...
|
||||
if test "$sysconfdir" = "\${prefix}/etc" -a "$prefix" = "/"; then
|
||||
sysconfdir="/etc"
|
||||
if test "$sysconfdir" = "\${prefix}/etc"; then
|
||||
if test "$prefix" = "/"; then
|
||||
sysconfdir="/etc"
|
||||
else
|
||||
sysconfdir="$prefix/etc"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Fix "libdir" variable for IRIX 6.x...
|
||||
|
||||
+5
-4
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $"
|
||||
# "$Id: cups.list 1229 2000-07-20 16:51:42Z mike $"
|
||||
#
|
||||
# ESP Package Manager (EPM) file list for the Common UNIX Printing
|
||||
# System (CUPS).
|
||||
@@ -28,7 +28,7 @@
|
||||
%vendor Easy Software Products
|
||||
%license LICENSE.txt
|
||||
%readme README.txt
|
||||
%version 1.1
|
||||
%version 1.1.1
|
||||
%incompat printpro
|
||||
|
||||
%system all
|
||||
@@ -111,7 +111,8 @@ l 0555 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
|
||||
|
||||
# Directories
|
||||
d 0755 root sys $LOGDIR -
|
||||
d 0755 root sys $REQUESTS -
|
||||
d 0710 root sys $REQUESTS -
|
||||
d 1770 root sys $REQUESTS/tmp -
|
||||
|
||||
# Data files
|
||||
f 0444 root sys $LOCALEDIR/C/cups_C locale/C/cups_C
|
||||
@@ -502,5 +503,5 @@ f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
|
||||
i 0555 root sys cups cups.sh
|
||||
|
||||
#
|
||||
# End of "$Id: cups.list 1202 2000-07-07 21:25:17Z mike $".
|
||||
# End of "$Id: cups.list 1229 2000-07-20 16:51:42Z mike $".
|
||||
#
|
||||
|
||||
+2
-3
@@ -87,9 +87,8 @@ cupsAddDest(const char *name, /* I - Name of destination */
|
||||
for (i = num_dests; i > 0; i --, dest ++)
|
||||
if (strcasecmp(name, dest->name) < 0)
|
||||
break;
|
||||
else if (instance == NULL && dest->instance != NULL)
|
||||
break;
|
||||
else if (instance != NULL && dest->instance != NULL &&
|
||||
else if (strcasecmp(name, dest->name) == 0 &&
|
||||
instance != NULL && dest->instance != NULL &&
|
||||
strcasecmp(instance, dest->instance) < 0)
|
||||
break;
|
||||
|
||||
|
||||
@@ -86,6 +86,8 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
|
||||
return (-1);
|
||||
}
|
||||
|
||||
fputs("[{\n", fp);
|
||||
|
||||
if (strcasecmp(((ppd_option_t *)choices[i]->option)->keyword, "PageSize") == 0 &&
|
||||
strcasecmp(choices[i]->choice, "Custom") == 0)
|
||||
{
|
||||
@@ -123,6 +125,8 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
|
||||
putc('\n', fp);
|
||||
}
|
||||
|
||||
fputs("} stopped cleartomark\n", fp);
|
||||
|
||||
if (fputs("%%EndFeature\n", fp) < 0)
|
||||
{
|
||||
free(choices);
|
||||
|
||||
+46
-2
@@ -1573,7 +1573,7 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
*textptr, /* Text pointer */
|
||||
*strptr, /* Pointer into string */
|
||||
*lineptr, /* Current position in line buffer */
|
||||
line[262144]; /* Line buffer (256k) */
|
||||
line[65536]; /* Line buffer (64k) */
|
||||
|
||||
|
||||
/*
|
||||
@@ -1588,6 +1588,8 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
* Now loop until we have a valid line...
|
||||
*/
|
||||
|
||||
*string = NULL;
|
||||
|
||||
do
|
||||
{
|
||||
/*
|
||||
@@ -1621,10 +1623,12 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
ungetc(ch, fp);
|
||||
}
|
||||
|
||||
*lineptr++ = '\n';
|
||||
ch = '\n';
|
||||
|
||||
if (!endquote) /* Continue for multi-line text */
|
||||
break;
|
||||
|
||||
*lineptr++ = '\n';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1639,6 +1643,46 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
}
|
||||
}
|
||||
|
||||
if (endquote)
|
||||
{
|
||||
/*
|
||||
* Didn't finish this quoted string...
|
||||
*/
|
||||
|
||||
while ((ch = getc(fp)) != EOF)
|
||||
if (ch == '\"')
|
||||
break;
|
||||
}
|
||||
|
||||
if (ch != '\n')
|
||||
{
|
||||
/*
|
||||
* Didn't finish this line...
|
||||
*/
|
||||
|
||||
while ((ch = getc(fp)) != EOF)
|
||||
if (ch == '\r' || ch == '\n')
|
||||
{
|
||||
/*
|
||||
* Line feed or carriage return...
|
||||
*/
|
||||
|
||||
if (ch == '\r')
|
||||
{
|
||||
/*
|
||||
* Check for a trailing line feed...
|
||||
*/
|
||||
|
||||
if ((ch = getc(fp)) == EOF)
|
||||
break;
|
||||
if (ch != 0x0a)
|
||||
ungetc(ch, fp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lineptr > line && lineptr[-1] == '\n')
|
||||
lineptr --;
|
||||
|
||||
|
||||
+105
-26
@@ -29,8 +29,10 @@
|
||||
* cupsGetDefault() - Get the default printer or class.
|
||||
* cupsGetPPD() - Get the PPD file for a printer.
|
||||
* cupsGetPrinters() - Get a list of printers.
|
||||
* cupsLastError() - Return the last IPP error that occurred.
|
||||
* cupsPrintFile() - Print a file to a printer or class.
|
||||
* cupsPrintFiles() - Print one or more files to a printer or class.
|
||||
* cupsTempFile() - Generate a temporary filename.
|
||||
* cups_connect() - Connect to the specified host...
|
||||
* cups_local_auth() - Get the local authorization certificate if
|
||||
* available/applicable...
|
||||
@@ -650,13 +652,19 @@ cupsGetDefault(void)
|
||||
const char * /* O - Filename for PPD file */
|
||||
cupsGetPPD(const char *name) /* I - Printer name */
|
||||
{
|
||||
ipp_t *request, /* IPP request */
|
||||
*response; /* IPP response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Local language */
|
||||
FILE *fp; /* PPD file */
|
||||
int bytes; /* Number of bytes read */
|
||||
char buffer[8192]; /* Buffer for file */
|
||||
char printer[HTTP_MAX_URI], /* Printer name */
|
||||
method[HTTP_MAX_URI], /* Method/scheme name */
|
||||
username[HTTP_MAX_URI], /* Username:password */
|
||||
hostname[HTTP_MAX_URI], /* Hostname */
|
||||
resource[HTTP_MAX_URI]; /* Resource name */
|
||||
char *tempdir; /* Temporary file directory */
|
||||
int port; /* Port number */
|
||||
const char *password; /* Password string */
|
||||
char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
|
||||
nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
|
||||
@@ -676,20 +684,89 @@ cupsGetPPD(const char *name) /* I - Printer name */
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
if (strchr(name, '@') == NULL)
|
||||
{
|
||||
/*
|
||||
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
|
||||
* attributes:
|
||||
*
|
||||
* attributes-charset
|
||||
* attributes-natural-language
|
||||
* printer-uri
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
|
||||
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
language = cupsLangDefault();
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
|
||||
"printer-uri", NULL, buffer);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
*/
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
if ((attr = ippFindAttribute(response, "printer-uri-supported",
|
||||
IPP_TAG_URI)) != NULL)
|
||||
{
|
||||
/*
|
||||
* Get the actual server and printer names...
|
||||
*/
|
||||
|
||||
httpSeparate(attr->values[0].string.text, method, username, hostname,
|
||||
&port, resource);
|
||||
strcpy(printer, strrchr(resource, '/') + 1);
|
||||
|
||||
/*
|
||||
* Remap local hostname to localhost...
|
||||
*/
|
||||
|
||||
gethostname(buffer, sizeof(buffer));
|
||||
|
||||
if (strcasecmp(buffer, hostname) == 0)
|
||||
strcpy(hostname, "localhost");
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
}
|
||||
|
||||
cupsLangFree(language);
|
||||
|
||||
/*
|
||||
* Reconnect to the correct server as needed...
|
||||
*/
|
||||
|
||||
if (strcasecmp(cups_server->hostname, hostname) != 0)
|
||||
{
|
||||
httpClose(cups_server);
|
||||
|
||||
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
|
||||
{
|
||||
last_error = IPP_SERVICE_UNAVAILABLE;
|
||||
return (NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Then check for the cache file...
|
||||
* Get a temp file...
|
||||
*/
|
||||
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
tempdir = "C:/WINDOWS/TEMP";
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%s.ppd", tempdir, printer);
|
||||
#else
|
||||
if ((tempdir = getenv("TMPDIR")) == NULL)
|
||||
tempdir = "/tmp";
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%d.%s.ppd", tempdir, getuid(), printer);
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
cupsTempFile(filename, sizeof(filename));
|
||||
|
||||
/*
|
||||
* And send a request to the HTTP server...
|
||||
@@ -788,6 +865,7 @@ cupsGetPPD(const char *name) /* I - Printer name */
|
||||
* Can't open file; close the server connection and return NULL...
|
||||
*/
|
||||
|
||||
httpFlush(cups_server);
|
||||
httpClose(cups_server);
|
||||
cups_server = NULL;
|
||||
return (NULL);
|
||||
@@ -1272,26 +1350,27 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
|
||||
*/
|
||||
|
||||
if ((tmpdir = getenv("TMPDIR")) == NULL)
|
||||
tmpdir = "/var/tmp";
|
||||
|
||||
if ((int)(strlen(tmpdir) + 8) > len)
|
||||
{
|
||||
#ifdef WIN32
|
||||
tmpdir = "C:/WINDOWS/TEMP";
|
||||
#else
|
||||
/*
|
||||
* The specified directory exceeds the size of the buffer; default it...
|
||||
* Put root temp files in restricted temp directory...
|
||||
*/
|
||||
|
||||
strcpy(buf, "/var/tmp/XXXXXX");
|
||||
return (mktemp(buf));
|
||||
if (getuid() == 0)
|
||||
tmpdir = CUPS_REQUESTS "/tmp";
|
||||
else
|
||||
tmpdir = "/var/tmp";
|
||||
#endif /* WIN32 */
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Make the temporary name using the specified directory...
|
||||
*/
|
||||
|
||||
sprintf(filename, "%s/XXXXXX", tmpdir);
|
||||
return (mktemp(filename));
|
||||
}
|
||||
/*
|
||||
* Make the temporary name using the specified directory...
|
||||
*/
|
||||
|
||||
snprintf(filename, len, "%s/XXXXXX", tmpdir);
|
||||
return (mktemp(filename));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description
|
||||
</UL>
|
||||
|
||||
<H2>Other Documents</H2>
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
<TITLE> CUPS Software Administrators Manual</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
@@ -22,7 +22,7 @@ PRE { font-size: 9.0pt }
|
||||
<BODY BGCOLOR="#ffffff">
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.1<BR>
|
||||
CUPS-SAM-1.1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
@@ -245,7 +245,7 @@ Machine!</A></LI>
|
||||
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
|
||||
<P>This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System<SUP>TM</SUP> ("CUPS<SUP>
|
||||
TM</SUP>"), version 1.1. </P>
|
||||
TM</SUP>"), version 1.1.1. </P>
|
||||
<H2><A NAME="1_1">System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
|
||||
+466
-468
@@ -1,6 +1,6 @@
|
||||
%PDF-1.2
|
||||
%âãÏÓ
|
||||
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000710174129Z)/Title( CUPS Software Administrators Manual)/Author(Easy Software Products)>>endobj
|
||||
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000721160117Z)/Title( CUPS Software Administrators Manual)/Author(Easy Software Products)>>endobj
|
||||
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
|
||||
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
|
||||
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
|
||||
@@ -1022,11 +1022,10 @@ h)
|
||||
Wuáiè†X!d | ||||