summaryrefslogtreecommitdiff
path: root/debian/patches/02_composite_fonts.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/02_composite_fonts.diff')
-rw-r--r--debian/patches/02_composite_fonts.diff851
1 files changed, 0 insertions, 851 deletions
diff --git a/debian/patches/02_composite_fonts.diff b/debian/patches/02_composite_fonts.diff
deleted file mode 100644
index a2c0744..0000000
--- a/debian/patches/02_composite_fonts.diff
+++ /dev/null
@@ -1,851 +0,0 @@
-## 02_composite_fonts.dpatch by Masayuki Hatta <mhatta@debian.org>
-
-Index: b/encoding/Makefile.am
-===================================================================
---- a/encoding/Makefile.am
-+++ b/encoding/Makefile.am
-@@ -16,7 +16,7 @@
- minor_encodings = \
- ms-cp1250.edf hp.edf mac.edf ibm-cp437.edf ibm-cp850.edf iso2.edf \
- iso3.edf iso4.edf iso5.edf iso7.edf iso9.edf iso10.edf iso13.edf \
--iso15.edf koi8.edf ms-cp1251.edf
-+iso15.edf koi8.edf ms-cp1251.edf euc-jp.edf
-
- if EXTENSIONS
- encodings_DATA = encoding.map $(major_encodings) $(minor_encodings)
-Index: b/encoding/Makefile.in
-===================================================================
---- a/encoding/Makefile.in
-+++ b/encoding/Makefile.in
-@@ -270,7 +270,7 @@
- minor_encodings = \
- ms-cp1250.edf hp.edf mac.edf ibm-cp437.edf ibm-cp850.edf iso2.edf \
- iso3.edf iso4.edf iso5.edf iso7.edf iso9.edf iso10.edf iso13.edf \
--iso15.edf koi8.edf ms-cp1251.edf
-+iso15.edf koi8.edf ms-cp1251.edf euc-jp.edf
-
- @EXTENSIONS_FALSE@encodings_DATA = encoding.map $(major_encodings)
- @EXTENSIONS_TRUE@encodings_DATA = encoding.map $(major_encodings) $(minor_encodings)
-Index: b/encoding/encoding.map
-===================================================================
---- a/encoding/encoding.map
-+++ b/encoding/encoding.map
-@@ -93,6 +93,12 @@
- koi8 koi8
- koi koi8
-
-+euc-jp euc-jp
-+eucjp euc-jp
-+japanese euc-jp
-+ja euc-jp
-+jp euc-jp
-+
- ########################################################################
- # Some architectures specific char sets
- ########################################################################
-Index: b/encoding/euc-jp.edf
-===================================================================
---- /dev/null
-+++ b/encoding/euc-jp.edf
-@@ -0,0 +1,95 @@
-+# Description of the EUC-JP encoding
-+# Copyright (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
-+# Copyright (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
-+# Copyright (c) 2003 Masayuki Hatta
-+#
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; see the file COPYING. If not, write to
-+# the Free Software Foundation, 59 Temple Place - Suite 330,
-+# Boston, MA 02111-1307, USA.
-+#
-+
-+Name: EUC-JP
-+
-+Documentation
-+The EUC-JP encoding is a 8-bit character set widely used in Japan.
-+EndDocumentation
-+
-+# If there is an unknown font requested, use Courier
-+Default: Courier
-+
-+# Automatic spell checking :)
-+Substitute: Times Times-Roman
-+Substitute: Helvetica-Italic Helvetica-Oblique
-+Substitute: Helvetica-BoldItalic Helvetica-BoldOblique
-+
-+
-+# SlantFont for Japanese Italic Kanji font
-+# new font source font value
-+SlantFont: Ryumin-Light-EUC-H-Italic Ryumin-Light-EUC-H 0.2
-+SlantFont: GothicBBB-Medium-EUC-H-Italic GothicBBB-Medium-EUC-H 0.2
-+
-+# Compose fonts for Japanese EUC code
-+# target font additional font width size rate
-+DefaultComposite: Ryumin-Light-EUC-H 1.0 1.1
-+
-+# 1:2 fixed
-+#DefaultComposite: Ryumin-Light-EUC-H 1.0 0.8333
-+
-+# 1:1 fixed
-+#DefaultComposite: Ryumin-Light-EUC-H 1.0 1.6666
-+
-+Composite: Helvetica GothicBBB-Medium-EUC-H 1.0 1.1
-+Composite: Helvetica-Oblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
-+Composite: Helvetica-Bold GothicBBB-Medium-EUC-H 1.0 1.1
-+Composite: Helvetica-BoldOblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
-+
-+Composite: Courier-Oblique Ryumin-Light-EUC-H-Italic 1.0 1.1
-+Composite: Courier-Bold GothicBBB-Medium-EUC-H 1.0 1.1
-+Composite: Courier-BoldOblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
-+Composite: Times-Bold GothicBBB-Medium-EUC-H 1.0 1.1
-+
-+Vector:
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+space exclam quotedbl numbersign dollar percent ampersand quoteright
-+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
-+quoteleft 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 .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
-+space exclamdown cent sterling currency yen brokenbar section
-+dieresis copyright ordfeminine guillemotleft logicalnot hyphen registered macron
-+degree plusminus twosuperior threesuperior acute mu paragraph bullet
-+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
-Index: b/lib/encoding.c
-===================================================================
---- a/lib/encoding.c
-+++ b/lib/encoding.c
-@@ -389,15 +389,25 @@
- * Association of suffixes rules, and corresponding style sheet
- * (The hashing is upon `alias')
- */
-+struct slantfont_info {
-+ char * name;
-+ char * src;
-+ float ratio;
-+};
-+
- struct encoding {
- char * key; /* e.g. latin1 */
- char * name; /* e.g. ISO Latin 1 */
-+ int composite_flag; /* flag for composite font */
- uchar * documentation; /* Useful pieces of text */
-
- char * default_font; /* When a font can't be used
- define the font to use */
- struct pair_htable * substitutes; /* e.g. in latin2, don't use
- * Courier, but Courier-Ogonki */
-+ struct pair_htable * composite;
-+
-+ struct slantfont_info slantfont[NB_FACES];
-
- char * vector[256]; /* Define the char set */
- struct darray * font_names_used;
-@@ -407,6 +417,9 @@
- struct hash_table_s * fonts; /* Contains cells that are
- * 1. name of font, 2. int wx[256] */
- unsigned int * faces_wx[NB_FACES];
-+
-+ unsigned int composite_wx[NB_FACES]; /* fixed length font width */
-+ float composite_ratio[NB_FACES]; /* size ratio of additonal and original font */
- };
-
- /*
-@@ -423,9 +436,12 @@
- res->name = NULL;
- res->default_font = NULL;
- res->documentation = NULL;
-+ res->composite_flag = false;
-
- /* Vector will be set by setup */
- res->substitutes = pair_table_new ();
-+ res->composite = pair_table_new ();
-+ res->slantfont[0].name = NULL;
- res->font_names_used = da_new ("List of font names", 10,
- da_linear, 10,
- (da_print_func_t) da_str_print,
-@@ -471,6 +487,34 @@
- }
-
- /*
-+ * Add a composite font in the current encoding
-+ */
-+static void
-+encoding_add_composite_font (struct encoding * encoding,
-+ const char * orig, const char * subs,
-+ int wx, float ratio)
-+{
-+ encoding->composite_flag = true;
-+ pair_add2 (encoding->composite, orig, subs, wx, ratio);
-+}
-+
-+/*
-+ * Add a composite font in the current encoding
-+ */
-+static void
-+encoding_add_slant_font (struct encoding * encoding,
-+ const char * new, const char * src,
-+ float ratio)
-+{
-+ static num = 0;
-+ encoding->slantfont[num].name = strdup(new);
-+ encoding->slantfont[num].src = strdup(src);
-+ encoding->slantfont[num].ratio = ratio;
-+ encoding->slantfont[num+1].name = NULL;
-+ num++;
-+}
-+
-+/*
- * When FONT_NAME is used with ENCODING, return the
- * real font name to use (e.g., in latin2, Courier-Ogonki
- * should be returned when asked for Courier).
-@@ -514,6 +558,77 @@
- }
-
- message (msg_enc,
-+ (stderr, "In encoding %s, composite font for %s is resolved as %s\n",
-+ encoding->key, font_name, res));
-+ return res;
-+}
-+
-+/*
-+ * Get composite font size and ratio
-+ */
-+static int
-+composite_font_info_get_wx(struct a2ps_job * job,
-+ struct encoding * encoding,
-+ const char * font_list)
-+{
-+ int wx= -1;
-+ char * font_list_copy;
-+ char * font_name;
-+ astrcpy (font_list_copy, font_list);
-+ font_name = strtok (font_list_copy, ",<>;");
-+
-+ wx = pair_get_wx (encoding->composite, font_name);
-+ if (wx<0)
-+ wx = pair_get_wx (encoding->composite, "default_composite__");
-+
-+ return wx;
-+}
-+
-+static float
-+composite_font_info_get_ratio(struct a2ps_job * job,
-+ struct encoding * encoding,
-+ const char * font_list)
-+{
-+ float ratio= -1;
-+ char * font_list_copy;
-+ char * font_name;
-+
-+ astrcpy (font_list_copy, font_list);
-+ font_name = strtok (font_list_copy, ",<>;");
-+
-+ ratio = pair_get_ratio (encoding->composite, font_name);
-+ if (ratio<0)
-+ ratio = pair_get_ratio (encoding->composite, "default_composite__");
-+ return ratio;
-+}
-+
-+const char *
-+encoding_resolve_composite_font (struct a2ps_job * job,
-+ struct encoding * encoding,
-+ const char * font_list)
-+{
-+ const char * res = NULL;
-+ char * font_list_copy;
-+ char * font_name;
-+
-+ astrcpy (font_list_copy, font_list);
-+ font_name = strtok (font_list_copy, ",<>;");
-+
-+ /* Find if there is a substitute for that font */
-+ res = pair_get (encoding->composite, font_name);
-+
-+ /* We've found nothing interesting. Last chance is the default
-+ * font */
-+ if (!res)
-+ {
-+ res = pair_get (encoding->composite, "default_composite__");
-+
-+ if (!res)
-+ error (1, 0, "Cannot find font %s, nor any composite font",
-+ font_name);
-+ }
-+
-+ message (msg_enc,
- (stderr, "In encoding %s, font %s is resolved as %s\n",
- encoding->key, font_name, res));
- return res;
-@@ -633,6 +748,66 @@
- subs = token2;
- encoding_add_font_substitute (encoding, orig, subs);
- }
-+ else if (strequ (token, "DefaultComposite:"))
-+ {
-+ char * orig, * subs;
-+ int wx;
-+ float ratio;
-+
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ subs = token2;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ wx = (int)atof(token2)*1000;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ ratio = atof(token2);
-+ encoding_add_composite_font(encoding, "default_composite__",
-+ subs, wx, ratio);
-+ }
-+ else if (strequ (token, "Composite:"))
-+ {
-+ char * orig, * subs;
-+ int wx;
-+ float ratio;
-+
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ orig = token2;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ subs = token2;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ wx = (int)atof(token2)*1000;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ ratio = atof(token2);
-+ encoding_add_composite_font(encoding, orig, subs, wx, ratio);
-+ }
-+ else if (strequ (token, "SlantFont:"))
-+ {
-+ char * new, * src;
-+ float ratio;
-+ unsigned int num;
-+
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ new = token2;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ src = token2;
-+ token2 = GET_TOKEN (NULL);
-+ CHECK_TOKEN ();
-+ ratio = atof(token2);
-+ for (num = 0 ; encoding->slantfont[num].name ; num ++ );
-+ if (num > sizeof encoding->slantfont - 1){
-+ error_at_line (1, 0, fname, firstline,
-+ _("too many slant font: `%s'"), new);
-+ }
-+ encoding_add_slant_font(encoding, new, src, ratio);
-+ }
- else
- error_at_line (1, 0, fname, firstline,
- _("invalid option `%s'"), quotearg (token));
-@@ -754,6 +929,15 @@
- }
-
- /*
-+ * Return the flag of composite flag
-+ */
-+int
-+encoding_get_composite_flag (struct encoding * enc)
-+{
-+ return enc->composite_flag;
-+}
-+
-+/*
- * Prepare the environment (a dictionary) for the support
- * of ENCODING, dump it into STREAM.
- *
-@@ -766,9 +950,11 @@
- struct encoding * encoding)
- {
- size_t i, nb;
-+ size_t ns;
- const char * real_font_name; /* After subsitution */
- char ** font_names = (char **) encoding->font_names_used->content;
-
-+
- /* How many fonts are there? */
- da_qsort (encoding->font_names_used);
- da_unique (encoding->font_names_used, (da_map_func_t) free);
-@@ -787,15 +973,46 @@
- * in the current ENCODING */
- nb = encoding->font_names_used->len;
-
-+ /* The number of slant fonts */
-+ for (i= 0, ns=0 ; encoding->slantfont[i].name ; i++ )
-+ ns++;
-+
- /* Create the dictionary and fill it */
- fprintf (stream, "%% Dictionary for %s support\n",
- encoding->name);
-- fprintf (stream, "/%sdict %d dict begin\n", encoding->key, nb);
-+ fprintf (stream, "/%sdict %d dict begin\n", encoding->key,
-+ (encoding->composite_flag == true)? nb+nb+ns:nb+ns);
- for (i = 0 ; i < nb ; i++)
- fprintf (stream, " /f%s %sEncoding /%s reencode_font\n",
- font_names [i],
- encoding->name,
- encoding_resolve_font_substitute (job, encoding, font_names [i]));
-+
-+ /* Slant font setting */
-+ for (i = 0 ; encoding->slantfont[i].name ; i++ )
-+ fprintf (stream, " /%s /%s %f slantfont definefont pop\n",
-+ encoding->slantfont[i].name,
-+ encoding->slantfont[i].src,
-+ encoding->slantfont[i].ratio);
-+
-+ /*
-+ * Composite font setting.
-+ * If kanji font size is larger than alphabet character,
-+ * set base font size to kanji charactor size.
-+ */
-+ if (encoding->composite_flag == true) {
-+ for (i = 0 ; i < nb ; i++)
-+ fprintf (stream, " /f%s /f%s /%s %f %f false compositefont "
-+ "%f scalefont def\n",
-+ font_names [i],
-+ font_names [i],
-+ encoding_resolve_composite_font (job, encoding, font_names [i]),
-+ encoding->composite_ratio[i],
-+ (encoding->composite_ratio[i] > 1.0)?
-+ 0: (1-encoding->composite_ratio[i])/2.0,
-+ (encoding->composite_ratio[i] > 1.0)?
-+ 1.0/encoding->composite_ratio[i]: 1.0 );
-+ }
- fputs ("currentdict end def\n", stream);
- }
-
-@@ -939,6 +1156,22 @@
- true_font_name,
- encoding->vector,
- encoding->faces_wx [face]);
-+
-+ if (encoding->composite_flag)
-+ {
-+ encoding->composite_ratio[i] =
-+ composite_font_info_get_ratio(job, encoding,
-+ job->face_eo_font [face]);
-+
-+ encoding->composite_wx[i] =
-+ composite_font_info_get_wx(job, encoding,
-+ job->face_eo_font [face]);
-+
-+ /* If kanji font size is larger than alphabet character,
-+ fit kanji charactor size to base font size */
-+ if (encoding->composite_ratio[i] < 1.0)
-+ encoding->composite_wx[i] *= encoding->composite_ratio[i];
-+ }
- }
- }
-
-@@ -1073,6 +1306,13 @@
- return 0; /* For -Wall */
- }
-
-+unsigned int
-+char_composite_WX (a2ps_job * job, uchar c)
-+{
-+ return (job->encoding->composite_wx[job->status->face]/
-+ job->encoding->composite_ratio[job->status->face]);
-+}
-+
- /*
- * Returns the WX of a string (including M- and ^)
- */
-Index: b/lib/encoding.h
-===================================================================
---- a/lib/encoding.h
-+++ b/lib/encoding.h
-@@ -43,6 +43,7 @@
- */
- unsigned int char_WX PARAMS ((struct a2ps_job * job, uchar c));
- unsigned int string_WX PARAMS ((struct a2ps_job * job, uchar * string));
-+unsigned int char_composite_WX PARAMS ((struct a2ps_job * job, uchar c));
-
-
- /************************************************************************/
-@@ -56,6 +57,7 @@
- FILE * stream));
- int encoding_char_exists PARAMS ((struct encoding * enc,
- enum face_e face, uchar c));
-+int encoding_get_composite_flag (struct encoding * enc);
- struct encoding *
- get_encoding_by_alias PARAMS ((struct a2ps_job * job,
- char *string));
-@@ -70,6 +72,12 @@
- PARAMS ((struct a2ps_job * job,
- struct encoding * encoding,
- const char * font_name));
-+
-+
-+const char * encoding_resolve_composite_font
-+ PARAMS ((struct a2ps_job * job,
-+ struct encoding * encoding,
-+ const char * font_name));
-
- /*
- * Have a struct encoding determine the faces_wx
-Index: b/lib/pair_ht.c
-===================================================================
---- a/lib/pair_ht.c
-+++ b/lib/pair_ht.c
-@@ -49,6 +49,8 @@
- {
- char * key;
- char * value;
-+ float ratio;
-+ int wx;
- };
-
- /*
-@@ -165,6 +167,37 @@
- }
-
- /*
-+ * Add a pair, with your own allocation for them.
-+ * It KEY is yet used, override its value with VALUE
-+ */
-+void
-+pair_add2 (struct hash_table_s * table,
-+ const char * key, const char * value, int wx, float ratio)
-+{
-+ struct pair * item, token;
-+
-+ token.key = (char *) key;
-+ item = (struct pair *) hash_find_item (table, &token);
-+
-+ if (item) {
-+ if (item->value)
-+ free (item->value);
-+ } else {
-+ item = XMALLOC (struct pair, 1);
-+ item->key = xstrdup(key);
-+ item->wx = wx;
-+ item->ratio = ratio;
-+ }
-+
-+ if (value)
-+ item->value = xstrdup (value);
-+ else
-+ item->value = NULL;
-+
-+ hash_insert (table, item);
-+}
-+
-+/*
- * Remove a pair and free it.
- * It KEY is yet used, override its value with VALUE
- */
-@@ -201,6 +234,34 @@
- return NULL;
- }
-
-+int
-+pair_get_wx (struct hash_table_s * table, const char * key)
-+{
-+ struct pair * item, token;
-+
-+ token.key = (char *) key;
-+ item = (struct pair *) hash_find_item (table, &token);
-+
-+ if (item)
-+ return item->wx;
-+ else
-+ return -1;
-+}
-+
-+float
-+pair_get_ratio (struct hash_table_s * table, const char * key)
-+{
-+ struct pair * item, token;
-+
-+ token.key = (char *) key;
-+ item = (struct pair *) hash_find_item (table, &token);
-+
-+ if (item)
-+ return item->ratio;
-+ else
-+ return -1;
-+}
-+
- /*
- * Return the content of the hash table, ordered
- */
-Index: b/lib/pair_ht.h
-===================================================================
---- a/lib/pair_ht.h
-+++ b/lib/pair_ht.h
-@@ -56,6 +56,10 @@
- void pair_add PARAMS ((struct pair_htable * table,
- const char * key, const char * value));
-
-+void pair_add2 PARAMS ((struct pair_htable * table,
-+ const char * key, const char * value,
-+ int wx, float ratio));
-+
- /*
- * The key and value of the matching item will be free'd
- * (No problem if KEY matches nothing)
-@@ -68,6 +72,10 @@
- */
- char * pair_get PARAMS ((struct pair_htable * table,
- const char * key));
-+int pair_get_wx PARAMS ((struct pair_htable * table,
-+ const char * key));
-+float pair_get_ratio PARAMS ((struct pair_htable * table,
-+ const char * key));
-
- void pair_table_list_short PARAMS ((struct pair_htable * table,
- FILE * stream));
-Index: b/lib/psgen.c
-===================================================================
---- a/lib/psgen.c
-+++ b/lib/psgen.c
-@@ -875,6 +875,7 @@
- print:
- default:
- {
-+ static mb_flag= 0;
- uchar buf[256];
- int nchars;
- *buf = '\0';
-@@ -889,6 +890,29 @@
- job->status->face_declared = false;
- }
-
-+ if (c > 127 && encoding_get_composite_flag (job->encoding) &&
-+ job->status->face != Symbol) {
-+ if (mb_flag) {
-+ nchars = ps_escape_char (job, mb_flag, buf) +
-+ ps_escape_char (job, c, buf);
-+ job->status->wx += char_composite_WX(job, c);
-+ job->status->column += nchars;
-+ if (line_full) {
-+ if (job->folding) {
-+ fold_line (job, new_face);
-+ job->status->column = nchars*2;
-+ job->status->wx = char_composite_WX(job, c);
-+ } else {
-+ job->status->is_in_cut = true;
-+ return;
-+ }
-+ }
-+ mb_flag = 0;
-+ } else {
-+ mb_flag = c;
-+ return;
-+ }
-+ } else {
- nchars = ps_escape_char (job, c, buf);
- job->status->wx += char_WX (job, c);
- job->status->column += nchars;
-@@ -902,8 +926,9 @@
- return;
- }
- }
-+ }
- output (jdiv, "%s", buf);
-- job->status->chars++;
-+ job->status->chars+=nchars;
- }
- break;
- }
-Index: b/ps/base.ps
-===================================================================
---- a/ps/base.ps
-+++ b/ps/base.ps
-@@ -153,7 +153,11 @@
- % Return the y size of the current font
- % - => fontsize
- /currentfontsize {
-- currentfont /FontMatrix get 3 get 1000 mul
-+ currentfont /FontType get 0 eq {
-+ currentfont /FontMatrix get 3 get
-+ }{
-+ currentfont /FontMatrix get 3 get 1000 mul
-+ } ifelse
- } bind def
-
- % reencode the font
-@@ -200,6 +204,144 @@
- end
- } bind def
-
-+% composite fonts for ASCII-EUC mixed strings
-+% Version 1.2 1/31/1990
-+% Original Ken'ichi HANDA (handa@etl.go.jp)
-+% Modified Norio Katayama (katayama@rd.nacsis.ac.jp),1998
-+% Extend & Fix Koji Nakamaru (maru@on.cs.keio.ac.jp), 1999
-+% Anyone can freely copy, modify, distribute this program.
-+
-+/copyfont { % font-dic extra-entry-count copyfont font-dic
-+ 1 index maxlength add dict begin
-+ { 1 index /FID ne 2 index /UniqueID ne and
-+ {def} {pop pop} ifelse
-+ } forall
-+ currentdict
-+ end
-+} bind def
-+
-+/compositefont { % ASCIIFontName EUCFontName RomanScale RomanOffset Rot(T/F) compositefont font
-+ /RomanRotation exch def
-+ /RomanOffset exch def
-+ /RomanScale exch def
-+ userdict /fixeucfont_dict known not {
-+ userdict begin
-+ /fixeucfont_dict 2 dict begin
-+ /UpperByteEncoding [
-+ 16#00 1 16#20 { pop 0 } for
-+ 16#21 1 16#28 { 16#20 sub } for
-+ 16#29 1 16#2F { pop 0 } for
-+ 16#30 1 16#74 { 16#27 sub } for
-+ 16#75 1 16#FF { pop 0 } for
-+ ] def
-+ /LowerByteEncoding [
-+ 16#00 1 16#A0 { pop /.notdef } for
-+ 16#A1 1 16#FE { 16#80 sub 16 2 string cvrs
-+ (cXX) dup 1 4 -1 roll
-+ putinterval cvn } for
-+ /.notdef
-+ ] def
-+ currentdict
-+ end def
-+ end
-+ } if
-+ findfont dup /FontType get 0 eq {
-+ 14 dict begin
-+ %
-+ % 7+8 bit EUC font
-+ %
-+ 12 dict begin
-+ /EUCFont exch def
-+ /FontInfo (7+8 bit EUC font) readonly def
-+ /PaintType 0 def
-+ /FontType 0 def
-+ /FontMatrix matrix def
-+ % /FontName
-+ /Encoding fixeucfont_dict /UpperByteEncoding get def
-+ /FMapType 2 def
-+ EUCFont /WMode known
-+ { EUCFont /WMode get /WMode exch def }
-+ { /WMode 0 def } ifelse
-+ /FDepVector [
-+ EUCFont /FDepVector get 0 get
-+ [ 16#21 1 16#28 {} for 16#30 1 16#74 {} for ]
-+ {
-+ 13 dict begin
-+ /EUCFont EUCFont def
-+ /UpperByte exch 16#80 add def
-+ % /FontName
-+ /FontInfo (EUC lower byte font) readonly def
-+ /PaintType 0 def
-+ /FontType 3 def
-+ /FontMatrix matrix def
-+ /FontBBox {0 0 0 0} def
-+ /Encoding
-+ fixeucfont_dict /LowerByteEncoding get def
-+ % /UniqueID
-+ % /WMode
-+ /BuildChar {
-+ gsave
-+ exch dup /EUCFont get setfont
-+ /UpperByte get
-+ 2 string
-+ dup 0 4 -1 roll put
-+ dup 1 4 -1 roll put
-+ dup stringwidth setcharwidth
-+ 0 0 moveto show
-+ grestore
-+ } bind def
-+ currentdict
-+ end
-+ /lowerbytefont exch definefont
-+ } forall
-+ ] def
-+ currentdict
-+ end
-+ /eucfont exch definefont
-+ exch
-+ findfont 1 copyfont dup begin
-+ RomanRotation {
-+ /FontMatrix FontMatrix
-+ [ 0 RomanScale neg RomanScale 0 RomanOffset neg 0 ]
-+ matrix concatmatrix def
-+ }{
-+ /FontMatrix FontMatrix
-+ [ RomanScale 0 0 RomanScale 0 RomanOffset ] matrix concatmatrix
-+ def
-+ /CDevProc
-+ {pop pop pop pop 0 exch -1000 exch 2 div 880} def
-+ } ifelse
-+ end
-+ /asciifont exch definefont
-+ exch
-+ /FDepVector [ 4 2 roll ] def
-+ /FontType 0 def
-+ /WMode 0 def
-+ /FMapType 4 def
-+ /FontMatrix matrix def
-+ /Encoding [0 1] def
-+ /FontBBox {0 0 0 0} def
-+% /FontHeight 1.0 def % XXXX
-+ /FontHeight RomanScale 1.0 ge { RomanScale }{ 1.0 } ifelse def
-+ /Descent -0.3 def % XXXX
-+ currentdict
-+ end
-+ /tmpfont exch definefont
-+ pop
-+ /tmpfont findfont
-+ }{
-+ pop findfont 0 copyfont
-+ } ifelse
-+} def
-+
-+/slantfont { % FontName slant-degree slantfont font'
-+ exch findfont 1 copyfont begin
-+ [ 1 0 4 -1 roll 1 0 0 ] FontMatrix exch matrix concatmatrix
-+ /FontMatrix exch def
-+ currentdict
-+ end
-+} def
-+
- % Function print line number (<string> # -)
- /# {
- gsave