[gs-commits] rev 10838 - in branches/icc_work: . Resource/Init base doc lib man psi toolbin toolbin/localcluster

mvrhel at ghostscript.com mvrhel at ghostscript.com
Tue Mar 2 09:24:26 UTC 2010


Author: mvrhel
Date: 2010-03-02 09:24:00 +0000 (Tue, 02 Mar 2010)
New Revision: 10838

Added:
   branches/icc_work/base/freetype.mak
   branches/icc_work/freetype/
Modified:
   branches/icc_work/Resource/Init/gs_agl.ps
   branches/icc_work/Resource/Init/gs_cidfn.ps
   branches/icc_work/Resource/Init/gs_dps2.ps
   branches/icc_work/Resource/Init/gs_init.ps
   branches/icc_work/Resource/Init/gs_ttf.ps
   branches/icc_work/Resource/Init/pdf_draw.ps
   branches/icc_work/Resource/Init/pdf_font.ps
   branches/icc_work/Resource/Init/pdf_main.ps
   branches/icc_work/base/Makefile.in
   branches/icc_work/base/bcwin32.mak
   branches/icc_work/base/configure.ac
   branches/icc_work/base/devs.mak
   branches/icc_work/base/gdevp14.c
   branches/icc_work/base/gdevpdfe.c
   branches/icc_work/base/gdevpdtt.c
   branches/icc_work/base/gdevpx.c
   branches/icc_work/base/gdevtfax.c
   branches/icc_work/base/gdevtfnx.c
   branches/icc_work/base/gdevtifs.c
   branches/icc_work/base/gdevtsep.c
   branches/icc_work/base/gdevwts.c
   branches/icc_work/base/gs.mak
   branches/icc_work/base/gsalloc.c
   branches/icc_work/base/gsnogc.c
   branches/icc_work/base/gxipixel.c
   branches/icc_work/base/lib.mak
   branches/icc_work/base/macos-mcp.mak
   branches/icc_work/base/macosx.mak
   branches/icc_work/base/msvclib.mak
   branches/icc_work/base/openvms.mak
   branches/icc_work/base/stdio_.h
   branches/icc_work/base/ttinterp.c
   branches/icc_work/base/ugcclib.mak
   branches/icc_work/base/unix-gcc.mak
   branches/icc_work/base/unixansi.mak
   branches/icc_work/base/version.mak
   branches/icc_work/base/watclib.mak
   branches/icc_work/base/watcw32.mak
   branches/icc_work/base/winlib.mak
   branches/icc_work/doc/API.htm
   branches/icc_work/doc/C-style.htm
   branches/icc_work/doc/Changes.htm
   branches/icc_work/doc/Commprod.htm
   branches/icc_work/doc/DLL.htm
   branches/icc_work/doc/Deprecated.htm
   branches/icc_work/doc/Details.htm
   branches/icc_work/doc/Details8.htm
   branches/icc_work/doc/Develop.htm
   branches/icc_work/doc/Devices.htm
   branches/icc_work/doc/Drivers.htm
   branches/icc_work/doc/Fonts.htm
   branches/icc_work/doc/Helpers.htm
   branches/icc_work/doc/History1.htm
   branches/icc_work/doc/History2.htm
   branches/icc_work/doc/History3.htm
   branches/icc_work/doc/History4.htm
   branches/icc_work/doc/History5.htm
   branches/icc_work/doc/History6.htm
   branches/icc_work/doc/History7.htm
   branches/icc_work/doc/History8.htm
   branches/icc_work/doc/Install.htm
   branches/icc_work/doc/Issues.htm
   branches/icc_work/doc/Language.htm
   branches/icc_work/doc/Lib.htm
   branches/icc_work/doc/Make.htm
   branches/icc_work/doc/News.htm
   branches/icc_work/doc/Projects.htm
   branches/icc_work/doc/Ps-style.htm
   branches/icc_work/doc/Ps2epsi.htm
   branches/icc_work/doc/Ps2pdf.htm
   branches/icc_work/doc/Ps2ps2.htm
   branches/icc_work/doc/Psfiles.htm
   branches/icc_work/doc/Readme.htm
   branches/icc_work/doc/Release.htm
   branches/icc_work/doc/Source.htm
   branches/icc_work/doc/Unix-lpr.htm
   branches/icc_work/doc/Use.htm
   branches/icc_work/doc/Xfonts.htm
   branches/icc_work/doc/gs-vms.hlp
   branches/icc_work/lib/pdf2dsc.ps
   branches/icc_work/man/dvipdf.1
   branches/icc_work/man/font2c.1
   branches/icc_work/man/gs.1
   branches/icc_work/man/gslp.1
   branches/icc_work/man/gsnd.1
   branches/icc_work/man/pdf2dsc.1
   branches/icc_work/man/pdf2ps.1
   branches/icc_work/man/pdfopt.1
   branches/icc_work/man/pf2afm.1
   branches/icc_work/man/pfbtopfa.1
   branches/icc_work/man/printafm.1
   branches/icc_work/man/ps2ascii.1
   branches/icc_work/man/ps2epsi.1
   branches/icc_work/man/ps2pdf.1
   branches/icc_work/man/ps2pdfwr.1
   branches/icc_work/man/ps2ps.1
   branches/icc_work/man/wftopfa.1
   branches/icc_work/psi/int.mak
   branches/icc_work/psi/msvc32.mak
   branches/icc_work/psi/os2.mak
   branches/icc_work/psi/write_t2.c
   branches/icc_work/psi/zcolor.c
   branches/icc_work/psi/zfapi.c
   branches/icc_work/toolbin/bmpcmp.c
   branches/icc_work/toolbin/localcluster/build.pl
   branches/icc_work/toolbin/localcluster/cachearchive.pl
   branches/icc_work/toolbin/localcluster/clustermaster.pl
   branches/icc_work/toolbin/localcluster/clusterpush.pl
   branches/icc_work/toolbin/localcluster/compare.pl
   branches/icc_work/toolbin/localcluster/run.pl
Log:
Merge of trunk into branch through rev 10837

Modified: branches/icc_work/Resource/Init/gs_agl.ps
===================================================================
--- branches/icc_work/Resource/Init/gs_agl.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/gs_agl.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -15,1055 +15,4291 @@
 
 % $Id$
 
-% This file was derived from the Adobe Glyph List, version 1.2, dated
-% 22 Oct 1998, at
-%	http://partners.adobe.com/asn/developer/typeforum/glyphlist.txt
+% This file was derived from the Adobe Glyph List, version 2.0, dated
+% September 20, 2002.
+% See http://partners.adobe.com/asn/developer/typeforum/unicodegn.html
 % That file does not contain any copyright notice.
 
-% The AdobeGlyphList dictionary maps glyph names to Unicode values.
-% Nearly all names map to a single value; however, a few names map to
-% multiple values.  See the above file, and also
-%	http://www.adobe.com/devnet/opentype/archives/glyph.html
-% for more details.
-
-/AdobeGlyphList 1500 dict
-dup /A 16#0041 put
-dup /AE 16#00C6 put
-dup /AEacute 16#01FC put
-dup /AEsmall 16#F7E6 put
-dup /Aacute 16#00C1 put
-dup /Aacutesmall 16#F7E1 put
-dup /Abreve 16#0102 put
-dup /Acircumflex 16#00C2 put
-dup /Acircumflexsmall 16#F7E2 put
-dup /Acute 16#F6C9 put
-dup /Acutesmall 16#F7B4 put
-dup /Adieresis 16#00C4 put
-dup /Adieresissmall 16#F7E4 put
-dup /Agrave 16#00C0 put
-dup /Agravesmall 16#F7E0 put
-dup /Alpha 16#0391 put
-dup /Alphatonos 16#0386 put
-dup /Amacron 16#0100 put
-dup /Aogonek 16#0104 put
-dup /Aring 16#00C5 put
-dup /Aringacute 16#01FA put
-dup /Aringsmall 16#F7E5 put
-dup /Asmall 16#F761 put
-dup /Atilde 16#00C3 put
-dup /Atildesmall 16#F7E3 put
-dup /B 16#0042 put
-dup /Beta 16#0392 put
-dup /Brevesmall 16#F6F4 put
-dup /Bsmall 16#F762 put
-dup /C 16#0043 put
-dup /Cacute 16#0106 put
-dup /Caron 16#F6CA put
-dup /Caronsmall 16#F6F5 put
-dup /Ccaron 16#010C put
-dup /Ccedilla 16#00C7 put
-dup /Ccedillasmall 16#F7E7 put
-dup /Ccircumflex 16#0108 put
-dup /Cdotaccent 16#010A put
-dup /Cedillasmall 16#F7B8 put
-dup /Chi 16#03A7 put
-dup /Circumflexsmall 16#F6F6 put
-dup /Csmall 16#F763 put
-dup /D 16#0044 put
-dup /Dcaron 16#010E put
-dup /Dcroat 16#0110 put
-dup /Delta [16#2206 16#0394] put
-dup /Dieresis 16#F6CB put
-dup /DieresisAcute 16#F6CC put
-dup /DieresisGrave 16#F6CD put
-dup /Dieresissmall 16#F7A8 put
-dup /Dotaccentsmall 16#F6F7 put
-dup /Dsmall 16#F764 put
-dup /E 16#0045 put
-dup /Eacute 16#00C9 put
-dup /Eacutesmall 16#F7E9 put
-dup /Ebreve 16#0114 put
-dup /Ecaron 16#011A put
-dup /Ecircumflex 16#00CA put
-dup /Ecircumflexsmall 16#F7EA put
-dup /Edieresis 16#00CB put
-dup /Edieresissmall 16#F7EB put
-dup /Edotaccent 16#0116 put
-dup /Egrave 16#00C8 put
-dup /Egravesmall 16#F7E8 put
-dup /Emacron 16#0112 put
-dup /Eng 16#014A put
-dup /Eogonek 16#0118 put
-dup /Epsilon 16#0395 put
-dup /Epsilontonos 16#0388 put
-dup /Esmall 16#F765 put
-dup /Eta 16#0397 put
-dup /Etatonos 16#0389 put
-dup /Eth 16#00D0 put
-dup /Ethsmall 16#F7F0 put
-dup /Euro 16#20AC put
-dup /F 16#0046 put
-dup /Fsmall 16#F766 put
-dup /G 16#0047 put
-dup /Gamma 16#0393 put
-dup /Gbreve 16#011E put
-dup /Gcaron 16#01E6 put
-dup /Gcircumflex 16#011C put
-dup /Gcommaaccent 16#0122 put
-dup /Gdotaccent 16#0120 put
-dup /Grave 16#F6CE put
-dup /Gravesmall 16#F760 put
-dup /Gsmall 16#F767 put
-dup /H 16#0048 put
-dup /H18533 16#25CF put
-dup /H18543 16#25AA put
-dup /H18551 16#25AB put
-dup /H22073 16#25A1 put
-dup /Hbar 16#0126 put
-dup /Hcircumflex 16#0124 put
-dup /Hsmall 16#F768 put
-dup /Hungarumlaut 16#F6CF put
-dup /Hungarumlautsmall 16#F6F8 put
-dup /I 16#0049 put
-dup /IJ 16#0132 put
-dup /Iacute 16#00CD put
-dup /Iacutesmall 16#F7ED put
-dup /Ibreve 16#012C put
-dup /Icircumflex 16#00CE put
-dup /Icircumflexsmall 16#F7EE put
-dup /Idieresis 16#00CF put
-dup /Idieresissmall 16#F7EF put
-dup /Idotaccent 16#0130 put
-dup /Ifraktur 16#2111 put
-dup /Igrave 16#00CC put
-dup /Igravesmall 16#F7EC put
-dup /Imacron 16#012A put
-dup /Iogonek 16#012E put
-dup /Iota 16#0399 put
-dup /Iotadieresis 16#03AA put
-dup /Iotatonos 16#038A put
-dup /Ismall 16#F769 put
-dup /Itilde 16#0128 put
-dup /J 16#004A put
-dup /Jcircumflex 16#0134 put
-dup /Jsmall 16#F76A put
-dup /K 16#004B put
-dup /Kappa 16#039A put
-dup /Kcommaaccent 16#0136 put
-dup /Ksmall 16#F76B put
-dup /L 16#004C put
-dup /LL 16#F6BF put
-dup /Lacute 16#0139 put
-dup /Lambda 16#039B put
-dup /Lcaron 16#013D put
-dup /Lcommaaccent 16#013B put
-dup /Ldot 16#013F put
-dup /Lslash 16#0141 put
-dup /Lslashsmall 16#F6F9 put
-dup /Lsmall 16#F76C put
-dup /M 16#004D put
-dup /Macron 16#F6D0 put
-dup /Macronsmall 16#F7AF put
-dup /Msmall 16#F76D put
-dup /Mu 16#039C put
-dup /N 16#004E put
-dup /Nacute 16#0143 put
-dup /Ncaron 16#0147 put
-dup /Ncommaaccent 16#0145 put
-dup /Nsmall 16#F76E put
-dup /Ntilde 16#00D1 put
-dup /Ntildesmall 16#F7F1 put
-dup /Nu 16#039D put
-dup /O 16#004F put
-dup /OE 16#0152 put
-dup /OEsmall 16#F6FA put
-dup /Oacute 16#00D3 put
-dup /Oacutesmall 16#F7F3 put
-dup /Obreve 16#014E put
-dup /Ocircumflex 16#00D4 put
-dup /Ocircumflexsmall 16#F7F4 put
-dup /Odieresis 16#00D6 put
-dup /Odieresissmall 16#F7F6 put
-dup /Ogoneksmall 16#F6FB put
-dup /Ograve 16#00D2 put
-dup /Ogravesmall 16#F7F2 put
-dup /Ohorn 16#01A0 put
-dup /Ohungarumlaut 16#0150 put
-dup /Omacron 16#014C put
-dup /Omega [16#2126 16#03A9] put
-dup /Omegatonos 16#038F put
-dup /Omicron 16#039F put
-dup /Omicrontonos 16#038C put
-dup /Oslash 16#00D8 put
-dup /Oslashacute 16#01FE put
-dup /Oslashsmall 16#F7F8 put
-dup /Osmall 16#F76F put
-dup /Otilde 16#00D5 put
-dup /Otildesmall 16#F7F5 put
-dup /P 16#0050 put
-dup /Phi 16#03A6 put
-dup /Pi 16#03A0 put
-dup /Psi 16#03A8 put
-dup /Psmall 16#F770 put
-dup /Q 16#0051 put
-dup /Qsmall 16#F771 put
-dup /R 16#0052 put
-dup /Racute 16#0154 put
-dup /Rcaron 16#0158 put
-dup /Rcommaaccent 16#0156 put
-dup /Rfraktur 16#211C put
-dup /Rho 16#03A1 put
-dup /Ringsmall 16#F6FC put
-dup /Rsmall 16#F772 put
-dup /S 16#0053 put
-dup /SF010000 16#250C put
-dup /SF020000 16#2514 put
-dup /SF030000 16#2510 put
-dup /SF040000 16#2518 put
-dup /SF050000 16#253C put
-dup /SF060000 16#252C put
-dup /SF070000 16#2534 put
-dup /SF080000 16#251C put
-dup /SF090000 16#2524 put
-dup /SF100000 16#2500 put
-dup /SF110000 16#2502 put
-dup /SF190000 16#2561 put
-dup /SF200000 16#2562 put
-dup /SF210000 16#2556 put
-dup /SF220000 16#2555 put
-dup /SF230000 16#2563 put
-dup /SF240000 16#2551 put
-dup /SF250000 16#2557 put
-dup /SF260000 16#255D put
-dup /SF270000 16#255C put
-dup /SF280000 16#255B put
-dup /SF360000 16#255E put
-dup /SF370000 16#255F put
-dup /SF380000 16#255A put
-dup /SF390000 16#2554 put
-dup /SF400000 16#2569 put
-dup /SF410000 16#2566 put
-dup /SF420000 16#2560 put
-dup /SF430000 16#2550 put
-dup /SF440000 16#256C put
-dup /SF450000 16#2567 put
-dup /SF460000 16#2568 put
-dup /SF470000 16#2564 put
-dup /SF480000 16#2565 put
-dup /SF490000 16#2559 put
-dup /SF500000 16#2558 put
-dup /SF510000 16#2552 put
-dup /SF520000 16#2553 put
-dup /SF530000 16#256B put
-dup /SF540000 16#256A put
-dup /Sacute 16#015A put
-dup /Scaron 16#0160 put
-dup /Scaronsmall 16#F6FD put
-dup /Scedilla [16#015E 16#F6C1] put
-dup /Scircumflex 16#015C put
-dup /Scommaaccent 16#0218 put
-dup /Sigma 16#03A3 put
-dup /Ssmall 16#F773 put
-dup /T 16#0054 put
-dup /Tau 16#03A4 put
-dup /Tbar 16#0166 put
-dup /Tcaron 16#0164 put
-dup /Tcommaaccent [16#0162 16#021A] put
-dup /Theta 16#0398 put
-dup /Thorn 16#00DE put
-dup /Thornsmall 16#F7FE put
-dup /Tildesmall 16#F6FE put
-dup /Tsmall 16#F774 put
-dup /U 16#0055 put
-dup /Uacute 16#00DA put
-dup /Uacutesmall 16#F7FA put
-dup /Ubreve 16#016C put
-dup /Ucircumflex 16#00DB put
-dup /Ucircumflexsmall 16#F7FB put
-dup /Udieresis 16#00DC put
-dup /Udieresissmall 16#F7FC put
-dup /Ugrave 16#00D9 put
-dup /Ugravesmall 16#F7F9 put
-dup /Uhorn 16#01AF put
-dup /Uhungarumlaut 16#0170 put
-dup /Umacron 16#016A put
-dup /Uogonek 16#0172 put
-dup /Upsilon 16#03A5 put
-dup /Upsilon1 16#03D2 put
-dup /Upsilondieresis 16#03AB put
-dup /Upsilontonos 16#038E put
-dup /Uring 16#016E put
-dup /Usmall 16#F775 put
-dup /Utilde 16#0168 put
-dup /V 16#0056 put
-dup /Vsmall 16#F776 put
-dup /W 16#0057 put
-dup /Wacute 16#1E82 put
-dup /Wcircumflex 16#0174 put
-dup /Wdieresis 16#1E84 put
-dup /Wgrave 16#1E80 put
-dup /Wsmall 16#F777 put
-dup /X 16#0058 put
-dup /Xi 16#039E put
-dup /Xsmall 16#F778 put
-dup /Y 16#0059 put
-dup /Yacute 16#00DD put
-dup /Yacutesmall 16#F7FD put
-dup /Ycircumflex 16#0176 put
-dup /Ydieresis 16#0178 put
-dup /Ydieresissmall 16#F7FF put
-dup /Ygrave 16#1EF2 put
-dup /Ysmall 16#F779 put
-dup /Z 16#005A put
-dup /Zacute 16#0179 put
-dup /Zcaron 16#017D put
-dup /Zcaronsmall 16#F6FF put
-dup /Zdotaccent 16#017B put
-dup /Zeta 16#0396 put
-dup /Zsmall 16#F77A put
-dup /a 16#0061 put
-dup /aacute 16#00E1 put
-dup /abreve 16#0103 put
-dup /acircumflex 16#00E2 put
-dup /acute 16#00B4 put
-dup /acutecomb 16#0301 put
-dup /adieresis 16#00E4 put
-dup /ae 16#00E6 put
-dup /aeacute 16#01FD put
-dup /afii00208 16#2015 put
-dup /afii10017 16#0410 put
-dup /afii10018 16#0411 put
-dup /afii10019 16#0412 put
-dup /afii10020 16#0413 put
-dup /afii10021 16#0414 put
-dup /afii10022 16#0415 put
-dup /afii10023 16#0401 put
-dup /afii10024 16#0416 put
-dup /afii10025 16#0417 put
-dup /afii10026 16#0418 put
-dup /afii10027 16#0419 put
-dup /afii10028 16#041A put
-dup /afii10029 16#041B put
-dup /afii10030 16#041C put
-dup /afii10031 16#041D put
-dup /afii10032 16#041E put
-dup /afii10033 16#041F put
-dup /afii10034 16#0420 put
-dup /afii10035 16#0421 put
-dup /afii10036 16#0422 put
-dup /afii10037 16#0423 put
-dup /afii10038 16#0424 put
-dup /afii10039 16#0425 put
-dup /afii10040 16#0426 put
-dup /afii10041 16#0427 put
-dup /afii10042 16#0428 put
-dup /afii10043 16#0429 put
-dup /afii10044 16#042A put
-dup /afii10045 16#042B put
-dup /afii10046 16#042C put
-dup /afii10047 16#042D put
-dup /afii10048 16#042E put
-dup /afii10049 16#042F put
-dup /afii10050 16#0490 put
-dup /afii10051 16#0402 put
-dup /afii10052 16#0403 put
-dup /afii10053 16#0404 put
-dup /afii10054 16#0405 put
-dup /afii10055 16#0406 put
-dup /afii10056 16#0407 put
-dup /afii10057 16#0408 put
-dup /afii10058 16#0409 put
-dup /afii10059 16#040A put
-dup /afii10060 16#040B put
-dup /afii10061 16#040C put
-dup /afii10062 16#040E put
-dup /afii10063 16#F6C4 put
-dup /afii10064 16#F6C5 put
-dup /afii10065 16#0430 put
-dup /afii10066 16#0431 put
-dup /afii10067 16#0432 put
-dup /afii10068 16#0433 put
-dup /afii10069 16#0434 put
-dup /afii10070 16#0435 put
-dup /afii10071 16#0451 put
-dup /afii10072 16#0436 put
-dup /afii10073 16#0437 put
-dup /afii10074 16#0438 put
-dup /afii10075 16#0439 put
-dup /afii10076 16#043A put
-dup /afii10077 16#043B put
-dup /afii10078 16#043C put
-dup /afii10079 16#043D put
-dup /afii10080 16#043E put
-dup /afii10081 16#043F put
-dup /afii10082 16#0440 put
-dup /afii10083 16#0441 put
-dup /afii10084 16#0442 put
-dup /afii10085 16#0443 put
-dup /afii10086 16#0444 put
-dup /afii10087 16#0445 put
-dup /afii10088 16#0446 put
-dup /afii10089 16#0447 put
-dup /afii10090 16#0448 put
-dup /afii10091 16#0449 put
-dup /afii10092 16#044A put
-dup /afii10093 16#044B put
-dup /afii10094 16#044C put
-dup /afii10095 16#044D put
-dup /afii10096 16#044E put
-dup /afii10097 16#044F put
-dup /afii10098 16#0491 put
-dup /afii10099 16#0452 put
-dup /afii10100 16#0453 put
-dup /afii10101 16#0454 put
-dup /afii10102 16#0455 put
-dup /afii10103 16#0456 put
-dup /afii10104 16#0457 put
-dup /afii10105 16#0458 put
-dup /afii10106 16#0459 put
-dup /afii10107 16#045A put
-dup /afii10108 16#045B put
-dup /afii10109 16#045C put
-dup /afii10110 16#045E put
-dup /afii10145 16#040F put
-dup /afii10146 16#0462 put
-dup /afii10147 16#0472 put
-dup /afii10148 16#0474 put
-dup /afii10192 16#F6C6 put
-dup /afii10193 16#045F put
-dup /afii10194 16#0463 put
-dup /afii10195 16#0473 put
-dup /afii10196 16#0475 put
-dup /afii10831 16#F6C7 put
-dup /afii10832 16#F6C8 put
-dup /afii10846 16#04D9 put
-dup /afii299 16#200E put
-dup /afii300 16#200F put
-dup /afii301 16#200D put
-dup /afii57381 16#066A put
-dup /afii57388 16#060C put
-dup /afii57392 16#0660 put
-dup /afii57393 16#0661 put
-dup /afii57394 16#0662 put
-dup /afii57395 16#0663 put
-dup /afii57396 16#0664 put
-dup /afii57397 16#0665 put
-dup /afii57398 16#0666 put
-dup /afii57399 16#0667 put
-dup /afii57400 16#0668 put
-dup /afii57401 16#0669 put
-dup /afii57403 16#061B put
-dup /afii57407 16#061F put
-dup /afii57409 16#0621 put
-dup /afii57410 16#0622 put
-dup /afii57411 16#0623 put
-dup /afii57412 16#0624 put
-dup /afii57413 16#0625 put
-dup /afii57414 16#0626 put
-dup /afii57415 16#0627 put
-dup /afii57416 16#0628 put
-dup /afii57417 16#0629 put
-dup /afii57418 16#062A put
-dup /afii57419 16#062B put
-dup /afii57420 16#062C put
-dup /afii57421 16#062D put
-dup /afii57422 16#062E put
-dup /afii57423 16#062F put
-dup /afii57424 16#0630 put
-dup /afii57425 16#0631 put
-dup /afii57426 16#0632 put
-dup /afii57427 16#0633 put
-dup /afii57428 16#0634 put
-dup /afii57429 16#0635 put
-dup /afii57430 16#0636 put
-dup /afii57431 16#0637 put
-dup /afii57432 16#0638 put
-dup /afii57433 16#0639 put
-dup /afii57434 16#063A put
-dup /afii57440 16#0640 put
-dup /afii57441 16#0641 put
-dup /afii57442 16#0642 put
-dup /afii57443 16#0643 put
-dup /afii57444 16#0644 put
-dup /afii57445 16#0645 put
-dup /afii57446 16#0646 put
-dup /afii57448 16#0648 put
-dup /afii57449 16#0649 put
-dup /afii57450 16#064A put
-dup /afii57451 16#064B put
-dup /afii57452 16#064C put
-dup /afii57453 16#064D put
-dup /afii57454 16#064E put
-dup /afii57455 16#064F put
-dup /afii57456 16#0650 put
-dup /afii57457 16#0651 put
-dup /afii57458 16#0652 put
-dup /afii57470 16#0647 put
-dup /afii57505 16#06A4 put
-dup /afii57506 16#067E put
-dup /afii57507 16#0686 put
-dup /afii57508 16#0698 put
-dup /afii57509 16#06AF put
-dup /afii57511 16#0679 put
-dup /afii57512 16#0688 put
-dup /afii57513 16#0691 put
-dup /afii57514 16#06BA put
-dup /afii57519 16#06D2 put
-dup /afii57534 16#06D5 put
-dup /afii57636 16#20AA put
-dup /afii57645 16#05BE put
-dup /afii57658 16#05C3 put
-dup /afii57664 16#05D0 put
-dup /afii57665 16#05D1 put
-dup /afii57666 16#05D2 put
-dup /afii57667 16#05D3 put
-dup /afii57668 16#05D4 put
-dup /afii57669 16#05D5 put
-dup /afii57670 16#05D6 put
-dup /afii57671 16#05D7 put
-dup /afii57672 16#05D8 put
-dup /afii57673 16#05D9 put
-dup /afii57674 16#05DA put
-dup /afii57675 16#05DB put
-dup /afii57676 16#05DC put
-dup /afii57677 16#05DD put
-dup /afii57678 16#05DE put
-dup /afii57679 16#05DF put
-dup /afii57680 16#05E0 put
-dup /afii57681 16#05E1 put
-dup /afii57682 16#05E2 put
-dup /afii57683 16#05E3 put
-dup /afii57684 16#05E4 put
-dup /afii57685 16#05E5 put
-dup /afii57686 16#05E6 put
-dup /afii57687 16#05E7 put
-dup /afii57688 16#05E8 put
-dup /afii57689 16#05E9 put
-dup /afii57690 16#05EA put
-dup /afii57694 16#FB2A put
-dup /afii57695 16#FB2B put
-dup /afii57700 16#FB4B put
-dup /afii57705 16#FB1F put
-dup /afii57716 16#05F0 put
-dup /afii57717 16#05F1 put
-dup /afii57718 16#05F2 put
-dup /afii57723 16#FB35 put
-dup /afii57793 16#05B4 put
-dup /afii57794 16#05B5 put
-dup /afii57795 16#05B6 put
-dup /afii57796 16#05BB put
-dup /afii57797 16#05B8 put
-dup /afii57798 16#05B7 put
-dup /afii57799 16#05B0 put
-dup /afii57800 16#05B2 put
-dup /afii57801 16#05B1 put
-dup /afii57802 16#05B3 put
-dup /afii57803 16#05C2 put
-dup /afii57804 16#05C1 put
-dup /afii57806 16#05B9 put
-dup /afii57807 16#05BC put
-dup /afii57839 16#05BD put
-dup /afii57841 16#05BF put
-dup /afii57842 16#05C0 put
-dup /afii57929 16#02BC put
-dup /afii61248 16#2105 put
-dup /afii61289 16#2113 put
-dup /afii61352 16#2116 put
-dup /afii61573 16#202C put
-dup /afii61574 16#202D put
-dup /afii61575 16#202E put
-dup /afii61664 16#200C put
-dup /afii63167 16#066D put
-dup /afii64937 16#02BD put
-dup /agrave 16#00E0 put
-dup /aleph 16#2135 put
-dup /alpha 16#03B1 put
-dup /alphatonos 16#03AC put
-dup /amacron 16#0101 put
-dup /ampersand 16#0026 put
-dup /ampersandsmall 16#F726 put
-dup /angle 16#2220 put
-dup /angleleft 16#2329 put
-dup /angleright 16#232A put
-dup /anoteleia 16#0387 put
-dup /aogonek 16#0105 put
-dup /approxequal 16#2248 put
-dup /aring 16#00E5 put
-dup /aringacute 16#01FB put
-dup /arrowboth 16#2194 put
-dup /arrowdblboth 16#21D4 put
-dup /arrowdbldown 16#21D3 put
-dup /arrowdblleft 16#21D0 put
-dup /arrowdblright 16#21D2 put
-dup /arrowdblup 16#21D1 put
-dup /arrowdown 16#2193 put
-dup /arrowhorizex 16#F8E7 put
-dup /arrowleft 16#2190 put
-dup /arrowright 16#2192 put
-dup /arrowup 16#2191 put
-dup /arrowupdn 16#2195 put
-dup /arrowupdnbse 16#21A8 put
-dup /arrowvertex 16#F8E6 put
-dup /asciicircum 16#005E put
-dup /asciitilde 16#007E put
-dup /asterisk 16#002A put
-dup /asteriskmath 16#2217 put
-dup /asuperior 16#F6E9 put
-dup /at 16#0040 put
-dup /atilde 16#00E3 put
-dup /b 16#0062 put
-dup /backslash 16#005C put
-dup /bar 16#007C put
-dup /beta 16#03B2 put
-dup /block 16#2588 put
-dup /braceex 16#F8F4 put
-dup /braceleft 16#007B put
-dup /braceleftbt 16#F8F3 put
-dup /braceleftmid 16#F8F2 put
-dup /bracelefttp 16#F8F1 put
-dup /braceright 16#007D put
-dup /bracerightbt 16#F8FE put
-dup /bracerightmid 16#F8FD put
-dup /bracerighttp 16#F8FC put
-dup /bracketleft 16#005B put
-dup /bracketleftbt 16#F8F0 put
-dup /bracketleftex 16#F8EF put
-dup /bracketlefttp 16#F8EE put
-dup /bracketright 16#005D put
-dup /bracketrightbt 16#F8FB put
-dup /bracketrightex 16#F8FA put
-dup /bracketrighttp 16#F8F9 put
-dup /breve 16#02D8 put
-dup /brokenbar 16#00A6 put
-dup /bsuperior 16#F6EA put
-dup /bullet 16#2022 put
-dup /c 16#0063 put
-dup /cacute 16#0107 put
-dup /caron 16#02C7 put
-dup /carriagereturn 16#21B5 put
-dup /ccaron 16#010D put
-dup /ccedilla 16#00E7 put
-dup /ccircumflex 16#0109 put
-dup /cdotaccent 16#010B put
-dup /cedilla 16#00B8 put
-dup /cent 16#00A2 put
-dup /centinferior 16#F6DF put
-dup /centoldstyle 16#F7A2 put
-dup /centsuperior 16#F6E0 put
-dup /chi 16#03C7 put
-dup /circle 16#25CB put
-dup /circlemultiply 16#2297 put
-dup /circleplus 16#2295 put
-dup /circumflex 16#02C6 put
-dup /club 16#2663 put
-dup /colon 16#003A put
-dup /colonmonetary 16#20A1 put
-dup /comma 16#002C put
-dup /commaaccent 16#F6C3 put
-dup /commainferior 16#F6E1 put
-dup /commasuperior 16#F6E2 put
-dup /congruent 16#2245 put
-dup /copyright 16#00A9 put
-dup /copyrightsans 16#F8E9 put
-dup /copyrightserif 16#F6D9 put
-dup /currency 16#00A4 put
-dup /cyrBreve 16#F6D1 put
-dup /cyrFlex 16#F6D2 put
-dup /cyrbreve 16#F6D4 put
-dup /cyrflex 16#F6D5 put
-dup /d 16#0064 put
-dup /dagger 16#2020 put
-dup /daggerdbl 16#2021 put
-dup /dblGrave 16#F6D3 put
-dup /dblgrave 16#F6D6 put
-dup /dcaron 16#010F put
-dup /dcroat 16#0111 put
-dup /degree 16#00B0 put
-dup /delta 16#03B4 put
-dup /diamond 16#2666 put
-dup /dieresis 16#00A8 put
-dup /dieresisacute 16#F6D7 put
-dup /dieresisgrave 16#F6D8 put
-dup /dieresistonos 16#0385 put
-dup /divide 16#00F7 put
-dup /dkshade 16#2593 put
-dup /dnblock 16#2584 put
-dup /dollar 16#0024 put
-dup /dollarinferior 16#F6E3 put
-dup /dollaroldstyle 16#F724 put
-dup /dollarsuperior 16#F6E4 put
-dup /dong 16#20AB put
-dup /dotaccent 16#02D9 put
-dup /dotbelowcomb 16#0323 put
-dup /dotlessi 16#0131 put
-dup /dotlessj 16#F6BE put
-dup /dotmath 16#22C5 put
-dup /dsuperior 16#F6EB put
-dup /e 16#0065 put
-dup /eacute 16#00E9 put
-dup /ebreve 16#0115 put
-dup /ecaron 16#011B put
-dup /ecircumflex 16#00EA put
-dup /edieresis 16#00EB put
-dup /edotaccent 16#0117 put
-dup /egrave 16#00E8 put
-dup /eight 16#0038 put
-dup /eightinferior 16#2088 put
-dup /eightoldstyle 16#F738 put
-dup /eightsuperior 16#2078 put
-dup /element 16#2208 put
-dup /ellipsis 16#2026 put
-dup /emacron 16#0113 put
-dup /emdash 16#2014 put
-dup /emptyset 16#2205 put
-dup /endash 16#2013 put
-dup /eng 16#014B put
-dup /eogonek 16#0119 put
-dup /epsilon 16#03B5 put
-dup /epsilontonos 16#03AD put
-dup /equal 16#003D put
-dup /equivalence 16#2261 put
-dup /estimated 16#212E put
-dup /esuperior 16#F6EC put
-dup /eta 16#03B7 put
-dup /etatonos 16#03AE put
-dup /eth 16#00F0 put
-dup /exclam 16#0021 put
-dup /exclamdbl 16#203C put
-dup /exclamdown 16#00A1 put
-dup /exclamdownsmall 16#F7A1 put
-dup /exclamsmall 16#F721 put
-dup /existential 16#2203 put
-dup /f 16#0066 put
-dup /female 16#2640 put
-dup /ff 16#FB00 put
-dup /ffi 16#FB03 put
-dup /ffl 16#FB04 put
-dup /fi 16#FB01 put
-dup /figuredash 16#2012 put
-dup /filledbox 16#25A0 put
-dup /filledrect 16#25AC put
-dup /five 16#0035 put
-dup /fiveeighths 16#215D put
-dup /fiveinferior 16#2085 put
-dup /fiveoldstyle 16#F735 put
-dup /fivesuperior 16#2075 put
-dup /fl 16#FB02 put
-dup /florin 16#0192 put
-dup /four 16#0034 put
-dup /fourinferior 16#2084 put
-dup /fouroldstyle 16#F734 put
-dup /foursuperior 16#2074 put
-dup /fraction [16#2044 16#2215] put
-dup /franc 16#20A3 put
-dup /g 16#0067 put
-dup /gamma 16#03B3 put
-dup /gbreve 16#011F put
-dup /gcaron 16#01E7 put
-dup /gcircumflex 16#011D put
-dup /gcommaaccent 16#0123 put
-dup /gdotaccent 16#0121 put
-dup /germandbls 16#00DF put
-dup /gradient 16#2207 put
-dup /grave 16#0060 put
-dup /gravecomb 16#0300 put
-dup /greater 16#003E put
-dup /greaterequal 16#2265 put
-dup /guillemotleft 16#00AB put
-dup /guillemotright 16#00BB put
-dup /guilsinglleft 16#2039 put
-dup /guilsinglright 16#203A put
-dup /h 16#0068 put
-dup /hbar 16#0127 put
-dup /hcircumflex 16#0125 put
-dup /heart 16#2665 put
-dup /hookabovecomb 16#0309 put
-dup /house 16#2302 put
-dup /hungarumlaut 16#02DD put
-dup /hyphen [16#002D 16#00AD] put
-dup /hypheninferior 16#F6E5 put
-dup /hyphensuperior 16#F6E6 put
-dup /i 16#0069 put
-dup /iacute 16#00ED put
-dup /ibreve 16#012D put
-dup /icircumflex 16#00EE put
-dup /idieresis 16#00EF put
-dup /igrave 16#00EC put
-dup /ij 16#0133 put
-dup /imacron 16#012B put
-dup /infinity 16#221E put
-dup /integral 16#222B put
-dup /integralbt 16#2321 put
-dup /integralex 16#F8F5 put
-dup /integraltp 16#2320 put
-dup /intersection 16#2229 put
-dup /invbullet 16#25D8 put
-dup /invcircle 16#25D9 put
-dup /invsmileface 16#263B put
-dup /iogonek 16#012F put
-dup /iota 16#03B9 put
-dup /iotadieresis 16#03CA put
-dup /iotadieresistonos 16#0390 put
-dup /iotatonos 16#03AF put
-dup /isuperior 16#F6ED put
-dup /itilde 16#0129 put
-dup /j 16#006A put
-dup /jcircumflex 16#0135 put
-dup /k 16#006B put
-dup /kappa 16#03BA put
-dup /kcommaaccent 16#0137 put
-dup /kgreenlandic 16#0138 put
-dup /l 16#006C put
-dup /lacute 16#013A put
-dup /lambda 16#03BB put
-dup /lcaron 16#013E put
-dup /lcommaaccent 16#013C put
-dup /ldot 16#0140 put
-dup /less 16#003C put
-dup /lessequal 16#2264 put
-dup /lfblock 16#258C put
-dup /lira 16#20A4 put
-dup /ll 16#F6C0 put
-dup /logicaland 16#2227 put
-dup /logicalnot 16#00AC put
-dup /logicalor 16#2228 put
-dup /longs 16#017F put
-dup /lozenge 16#25CA put
-dup /lslash 16#0142 put
-dup /lsuperior 16#F6EE put
-dup /ltshade 16#2591 put
-dup /m 16#006D put
-dup /macron [16#00AF 16#02C9] put
-dup /male 16#2642 put
-dup /minus 16#2212 put
-dup /minute 16#2032 put
-dup /msuperior 16#F6EF put
-dup /mu [16#00B5 16#03BC] put
-dup /multiply 16#00D7 put
-dup /musicalnote 16#266A put
-dup /musicalnotedbl 16#266B put
-dup /n 16#006E put
-dup /nacute 16#0144 put
-dup /napostrophe 16#0149 put
-dup /ncaron 16#0148 put
-dup /ncommaaccent 16#0146 put
-dup /nine 16#0039 put
-dup /nineinferior 16#2089 put
-dup /nineoldstyle 16#F739 put
-dup /ninesuperior 16#2079 put
-dup /notelement 16#2209 put
-dup /notequal 16#2260 put
-dup /notsubset 16#2284 put
-dup /nsuperior 16#207F put
-dup /ntilde 16#00F1 put
-dup /nu 16#03BD put
-dup /numbersign 16#0023 put
-dup /o 16#006F put
-dup /oacute 16#00F3 put
-dup /obreve 16#014F put
-dup /ocircumflex 16#00F4 put
-dup /odieresis 16#00F6 put
-dup /oe 16#0153 put
-dup /ogonek 16#02DB put
-dup /ograve 16#00F2 put
-dup /ohorn 16#01A1 put
-dup /ohungarumlaut 16#0151 put
-dup /omacron 16#014D put
-dup /omega 16#03C9 put
-dup /omega1 16#03D6 put
-dup /omegatonos 16#03CE put
-dup /omicron 16#03BF put
-dup /omicrontonos 16#03CC put
-dup /one 16#0031 put
-dup /onedotenleader 16#2024 put
-dup /oneeighth 16#215B put
-dup /onefitted 16#F6DC put
-dup /onehalf 16#00BD put
-dup /oneinferior 16#2081 put
-dup /oneoldstyle 16#F731 put
-dup /onequarter 16#00BC put
-dup /onesuperior 16#00B9 put
-dup /onethird 16#2153 put
-dup /openbullet 16#25E6 put
-dup /ordfeminine 16#00AA put
-dup /ordmasculine 16#00BA put
-dup /orthogonal 16#221F put
-dup /oslash 16#00F8 put
-dup /oslashacute 16#01FF put
-dup /osuperior 16#F6F0 put
-dup /otilde 16#00F5 put
-dup /p 16#0070 put
-dup /paragraph 16#00B6 put
-dup /parenleft 16#0028 put
-dup /parenleftbt 16#F8ED put
-dup /parenleftex 16#F8EC put
-dup /parenleftinferior 16#208D put
-dup /parenleftsuperior 16#207D put
-dup /parenlefttp 16#F8EB put
-dup /parenright 16#0029 put
-dup /parenrightbt 16#F8F8 put
-dup /parenrightex 16#F8F7 put
-dup /parenrightinferior 16#208E put
-dup /parenrightsuperior 16#207E put
-dup /parenrighttp 16#F8F6 put
-dup /partialdiff 16#2202 put
-dup /percent 16#0025 put
-dup /period 16#002E put
-dup /periodcentered [16#00B7 16#2219] put
-dup /periodinferior 16#F6E7 put
-dup /periodsuperior 16#F6E8 put
-dup /perpendicular 16#22A5 put
-dup /perthousand 16#2030 put
-dup /peseta 16#20A7 put
-dup /phi 16#03C6 put
-dup /phi1 16#03D5 put
-dup /pi 16#03C0 put
-dup /plus 16#002B put
-dup /plusminus 16#00B1 put
-dup /prescription 16#211E put
-dup /product 16#220F put
-dup /propersubset 16#2282 put
-dup /propersuperset 16#2283 put
-dup /proportional 16#221D put
-dup /psi 16#03C8 put
-dup /q 16#0071 put
-dup /question 16#003F put
-dup /questiondown 16#00BF put
-dup /questiondownsmall 16#F7BF put
-dup /questionsmall 16#F73F put
-dup /quotedbl 16#0022 put
-dup /quotedblbase 16#201E put
-dup /quotedblleft 16#201C put
-dup /quotedblright 16#201D put
-dup /quoteleft 16#2018 put
-dup /quotereversed 16#201B put
-dup /quoteright 16#2019 put
-dup /quotesinglbase 16#201A put
-dup /quotesingle 16#0027 put
-dup /r 16#0072 put
-dup /racute 16#0155 put
-dup /radical 16#221A put
-dup /radicalex 16#F8E5 put
-dup /rcaron 16#0159 put
-dup /rcommaaccent 16#0157 put
-dup /reflexsubset 16#2286 put
-dup /reflexsuperset 16#2287 put
-dup /registered 16#00AE put
-dup /registersans 16#F8E8 put
-dup /registerserif 16#F6DA put
-dup /revlogicalnot 16#2310 put
-dup /rho 16#03C1 put
-dup /ring 16#02DA put
-dup /rsuperior 16#F6F1 put
-dup /rtblock 16#2590 put
-dup /rupiah 16#F6DD put
-dup /s 16#0073 put
-dup /sacute 16#015B put
-dup /scaron 16#0161 put
-dup /scedilla [16#015F 16#F6C2] put
-dup /scircumflex 16#015D put
-dup /scommaaccent 16#0219 put
-dup /second 16#2033 put
-dup /section 16#00A7 put
-dup /semicolon 16#003B put
-dup /seven 16#0037 put
-dup /seveneighths 16#215E put
-dup /seveninferior 16#2087 put
-dup /sevenoldstyle 16#F737 put
-dup /sevensuperior 16#2077 put
-dup /shade 16#2592 put
-dup /sigma 16#03C3 put
-dup /sigma1 16#03C2 put
-dup /similar 16#223C put
-dup /six 16#0036 put
-dup /sixinferior 16#2086 put
-dup /sixoldstyle 16#F736 put
-dup /sixsuperior 16#2076 put
-dup /slash 16#002F put
-dup /smileface 16#263A put
-dup /space [16#0020 16#00A0] put
-dup /spade 16#2660 put
-dup /ssuperior 16#F6F2 put
-dup /sterling 16#00A3 put
-dup /suchthat 16#220B put
-dup /summation 16#2211 put
-dup /sun 16#263C put
-dup /t 16#0074 put
-dup /tau 16#03C4 put
-dup /tbar 16#0167 put
-dup /tcaron 16#0165 put
-dup /tcommaaccent [16#0163 16#021B] put
-dup /therefore 16#2234 put
-dup /theta 16#03B8 put
-dup /theta1 16#03D1 put
-dup /thorn 16#00FE put
-dup /three 16#0033 put
-dup /threeeighths 16#215C put
-dup /threeinferior 16#2083 put
-dup /threeoldstyle 16#F733 put
-dup /threequarters 16#00BE put
-dup /threequartersemdash 16#F6DE put
-dup /threesuperior 16#00B3 put
-dup /tilde 16#02DC put
-dup /tildecomb 16#0303 put
-dup /tonos 16#0384 put
-dup /trademark 16#2122 put
-dup /trademarksans 16#F8EA put
-dup /trademarkserif 16#F6DB put
-dup /triagdn 16#25BC put
-dup /triaglf 16#25C4 put
-dup /triagrt 16#25BA put
-dup /triagup 16#25B2 put
-dup /tsuperior 16#F6F3 put
-dup /two 16#0032 put
-dup /twodotenleader 16#2025 put
-dup /twoinferior 16#2082 put
-dup /twooldstyle 16#F732 put
-dup /twosuperior 16#00B2 put
-dup /twothirds 16#2154 put
-dup /u 16#0075 put
-dup /uacute 16#00FA put
-dup /ubreve 16#016D put
-dup /ucircumflex 16#00FB put
-dup /udieresis 16#00FC put
-dup /ugrave 16#00F9 put
-dup /uhorn 16#01B0 put
-dup /uhungarumlaut 16#0171 put
-dup /umacron 16#016B put
-dup /underscore 16#005F put
-dup /underscoredbl 16#2017 put
-dup /union 16#222A put
-dup /universal 16#2200 put
-dup /uogonek 16#0173 put
-dup /upblock 16#2580 put
-dup /upsilon 16#03C5 put
-dup /upsilondieresis 16#03CB put
-dup /upsilondieresistonos 16#03B0 put
-dup /upsilontonos 16#03CD put
-dup /uring 16#016F put
-dup /utilde 16#0169 put
-dup /v 16#0076 put
-dup /w 16#0077 put
-dup /wacute 16#1E83 put
-dup /wcircumflex 16#0175 put
-dup /wdieresis 16#1E85 put
-dup /weierstrass 16#2118 put
-dup /wgrave 16#1E81 put
-dup /x 16#0078 put
-dup /xi 16#03BE put
-dup /y 16#0079 put
-dup /yacute 16#00FD put
-dup /ycircumflex 16#0177 put
-dup /ydieresis 16#00FF put
-dup /yen 16#00A5 put
-dup /ygrave 16#1EF3 put
-dup /z 16#007A put
-dup /zacute 16#017A put
-dup /zcaron 16#017E put
-dup /zdotaccent 16#017C put
-dup /zero 16#0030 put
-dup /zeroinferior 16#2080 put
-dup /zerooldstyle 16#F730 put
-dup /zerosuperior 16#2070 put
-dup /zeta 16#03B6 put
-def
+/AdobeGlyphList mark
+/A 16#0041
+/AE 16#00C6
+/AEacute 16#01FC
+/AEmacron 16#01E2
+/AEsmall 16#F7E6
+/Aacute 16#00C1
+/Aacutesmall 16#F7E1
+/Abreve 16#0102
+/Abreveacute 16#1EAE
+/Abrevecyrillic 16#04D0
+/Abrevedotbelow 16#1EB6
+/Abrevegrave 16#1EB0
+/Abrevehookabove 16#1EB2
+/Abrevetilde 16#1EB4
+/Acaron 16#01CD
+/Acircle 16#24B6
+/Acircumflex 16#00C2
+/Acircumflexacute 16#1EA4
+/Acircumflexdotbelow 16#1EAC
+/Acircumflexgrave 16#1EA6
+/Acircumflexhookabove 16#1EA8
+/Acircumflexsmall 16#F7E2
+/Acircumflextilde 16#1EAA
+/Acute 16#F6C9
+/Acutesmall 16#F7B4
+/Acyrillic 16#0410
+/Adblgrave 16#0200
+/Adieresis 16#00C4
+/Adieresiscyrillic 16#04D2
+/Adieresismacron 16#01DE
+/Adieresissmall 16#F7E4
+/Adotbelow 16#1EA0
+/Adotmacron 16#01E0
+/Agrave 16#00C0
+/Agravesmall 16#F7E0
+/Ahookabove 16#1EA2
+/Aiecyrillic 16#04D4
+/Ainvertedbreve 16#0202
+/Alpha 16#0391
+/Alphatonos 16#0386
+/Amacron 16#0100
+/Amonospace 16#FF21
+/Aogonek 16#0104
+/Aring 16#00C5
+/Aringacute 16#01FA
+/Aringbelow 16#1E00
+/Aringsmall 16#F7E5
+/Asmall 16#F761
+/Atilde 16#00C3
+/Atildesmall 16#F7E3
+/Aybarmenian 16#0531
+/B 16#0042
+/Bcircle 16#24B7
+/Bdotaccent 16#1E02
+/Bdotbelow 16#1E04
+/Becyrillic 16#0411
+/Benarmenian 16#0532
+/Beta 16#0392
+/Bhook 16#0181
+/Blinebelow 16#1E06
+/Bmonospace 16#FF22
+/Brevesmall 16#F6F4
+/Bsmall 16#F762
+/Btopbar 16#0182
+/C 16#0043
+/Caarmenian 16#053E
+/Cacute 16#0106
+/Caron 16#F6CA
+/Caronsmall 16#F6F5
+/Ccaron 16#010C
+/Ccedilla 16#00C7
+/Ccedillaacute 16#1E08
+/Ccedillasmall 16#F7E7
+/Ccircle 16#24B8
+/Ccircumflex 16#0108
+/Cdot 16#010A
+/Cdotaccent 16#010A
+/Cedillasmall 16#F7B8
+/Chaarmenian 16#0549
+/Cheabkhasiancyrillic 16#04BC
+/Checyrillic 16#0427
+/Chedescenderabkhasiancyrillic 16#04BE
+/Chedescendercyrillic 16#04B6
+/Chedieresiscyrillic 16#04F4
+/Cheharmenian 16#0543
+/Chekhakassiancyrillic 16#04CB
+/Cheverticalstrokecyrillic 16#04B8
+/Chi 16#03A7
+/Chook 16#0187
+/Circumflexsmall 16#F6F6
+/Cmonospace 16#FF23
+/Coarmenian 16#0551
+/Csmall 16#F763
+/D 16#0044
+/DZ 16#01F1
+/DZcaron 16#01C4
+/Daarmenian 16#0534
+/Dafrican 16#0189
+/Dcaron 16#010E
+/Dcedilla 16#1E10
+/Dcircle 16#24B9
+/Dcircumflexbelow 16#1E12
+/Dcroat 16#0110
+/Ddotaccent 16#1E0A
+/Ddotbelow 16#1E0C
+/Decyrillic 16#0414
+/Deicoptic 16#03EE
+/Delta 16#2206
+/Deltagreek 16#0394
+/Dhook 16#018A
+/Dieresis 16#F6CB
+/DieresisAcute 16#F6CC
+/DieresisGrave 16#F6CD
+/Dieresissmall 16#F7A8
+/Digammagreek 16#03DC
+/Djecyrillic 16#0402
+/Dlinebelow 16#1E0E
+/Dmonospace 16#FF24
+/Dotaccentsmall 16#F6F7
+/Dslash 16#0110
+/Dsmall 16#F764
+/Dtopbar 16#018B
+/Dz 16#01F2
+/Dzcaron 16#01C5
+/Dzeabkhasiancyrillic 16#04E0
+/Dzecyrillic 16#0405
+/Dzhecyrillic 16#040F
+/E 16#0045
+/Eacute 16#00C9
+/Eacutesmall 16#F7E9
+/Ebreve 16#0114
+/Ecaron 16#011A
+/Ecedillabreve 16#1E1C
+/Echarmenian 16#0535
+/Ecircle 16#24BA
+/Ecircumflex 16#00CA
+/Ecircumflexacute 16#1EBE
+/Ecircumflexbelow 16#1E18
+/Ecircumflexdotbelow 16#1EC6
+/Ecircumflexgrave 16#1EC0
+/Ecircumflexhookabove 16#1EC2
+/Ecircumflexsmall 16#F7EA
+/Ecircumflextilde 16#1EC4
+/Ecyrillic 16#0404
+/Edblgrave 16#0204
+/Edieresis 16#00CB
+/Edieresissmall 16#F7EB
+/Edot 16#0116
+/Edotaccent 16#0116
+/Edotbelow 16#1EB8
+/Efcyrillic 16#0424
+/Egrave 16#00C8
+/Egravesmall 16#F7E8
+/Eharmenian 16#0537
+/Ehookabove 16#1EBA
+/Eightroman 16#2167
+/Einvertedbreve 16#0206
+/Eiotifiedcyrillic 16#0464
+/Elcyrillic 16#041B
+/Elevenroman 16#216A
+/Emacron 16#0112
+/Emacronacute 16#1E16
+/Emacrongrave 16#1E14
+/Emcyrillic 16#041C
+/Emonospace 16#FF25
+/Encyrillic 16#041D
+/Endescendercyrillic 16#04A2
+/Eng 16#014A
+/Enghecyrillic 16#04A4
+/Enhookcyrillic 16#04C7
+/Eogonek 16#0118
+/Eopen 16#0190
+/Epsilon 16#0395
+/Epsilontonos 16#0388
+/Ercyrillic 16#0420
+/Ereversed 16#018E
+/Ereversedcyrillic 16#042D
+/Escyrillic 16#0421
+/Esdescendercyrillic 16#04AA
+/Esh 16#01A9
+/Esmall 16#F765
+/Eta 16#0397
+/Etarmenian 16#0538
+/Etatonos 16#0389
+/Eth 16#00D0
+/Ethsmall 16#F7F0
+/Etilde 16#1EBC
+/Etildebelow 16#1E1A
+/Euro 16#20AC
+/Ezh 16#01B7
+/Ezhcaron 16#01EE
+/Ezhreversed 16#01B8
+/F 16#0046
+/Fcircle 16#24BB
+/Fdotaccent 16#1E1E
+/Feharmenian 16#0556
+/Feicoptic 16#03E4
+/Fhook 16#0191
+/Fitacyrillic 16#0472
+/Fiveroman 16#2164
+/Fmonospace 16#FF26
+/Fourroman 16#2163
+/Fsmall 16#F766
+/G 16#0047
+/GBsquare 16#3387
+/Gacute 16#01F4
+/Gamma 16#0393
+/Gammaafrican 16#0194
+/Gangiacoptic 16#03EA
+/Gbreve 16#011E
+/Gcaron 16#01E6
+/Gcedilla 16#0122
+/Gcircle 16#24BC
+/Gcircumflex 16#011C
+/Gcommaaccent 16#0122
+/Gdot 16#0120
+/Gdotaccent 16#0120
+/Gecyrillic 16#0413
+/Ghadarmenian 16#0542
+/Ghemiddlehookcyrillic 16#0494
+/Ghestrokecyrillic 16#0492
+/Gheupturncyrillic 16#0490
+/Ghook 16#0193
+/Gimarmenian 16#0533
+/Gjecyrillic 16#0403
+/Gmacron 16#1E20
+/Gmonospace 16#FF27
+/Grave 16#F6CE
+/Gravesmall 16#F760
+/Gsmall 16#F767
+/Gsmallhook 16#029B
+/Gstroke 16#01E4
+/H 16#0048
+/H18533 16#25CF
+/H18543 16#25AA
+/H18551 16#25AB
+/H22073 16#25A1
+/HPsquare 16#33CB
+/Haabkhasiancyrillic 16#04A8
+/Hadescendercyrillic 16#04B2
+/Hardsigncyrillic 16#042A
+/Hbar 16#0126
+/Hbrevebelow 16#1E2A
+/Hcedilla 16#1E28
+/Hcircle 16#24BD
+/Hcircumflex 16#0124
+/Hdieresis 16#1E26
+/Hdotaccent 16#1E22
+/Hdotbelow 16#1E24
+/Hmonospace 16#FF28
+/Hoarmenian 16#0540
+/Horicoptic 16#03E8
+/Hsmall 16#F768
+/Hungarumlaut 16#F6CF
+/Hungarumlautsmall 16#F6F8
+/Hzsquare 16#3390
+/I 16#0049
+/IAcyrillic 16#042F
+/IJ 16#0132
+/IUcyrillic 16#042E
+/Iacute 16#00CD
+/Iacutesmall 16#F7ED
+/Ibreve 16#012C
+/Icaron 16#01CF
+/Icircle 16#24BE
+/Icircumflex 16#00CE
+/Icircumflexsmall 16#F7EE
+/Icyrillic 16#0406
+/Idblgrave 16#0208
+/Idieresis 16#00CF
+/Idieresisacute 16#1E2E
+/Idieresiscyrillic 16#04E4
+/Idieresissmall 16#F7EF
+/Idot 16#0130
+/Idotaccent 16#0130
+/Idotbelow 16#1ECA
+/Iebrevecyrillic 16#04D6
+/Iecyrillic 16#0415
+/Ifraktur 16#2111
+/Igrave 16#00CC
+/Igravesmall 16#F7EC
+/Ihookabove 16#1EC8
+/Iicyrillic 16#0418
+/Iinvertedbreve 16#020A
+/Iishortcyrillic 16#0419
+/Imacron 16#012A
+/Imacroncyrillic 16#04E2
+/Imonospace 16#FF29
+/Iniarmenian 16#053B
+/Iocyrillic 16#0401
+/Iogonek 16#012E
+/Iota 16#0399
+/Iotaafrican 16#0196
+/Iotadieresis 16#03AA
+/Iotatonos 16#038A
+/Ismall 16#F769
+/Istroke 16#0197
+/Itilde 16#0128
+/Itildebelow 16#1E2C
+/Izhitsacyrillic 16#0474
+/Izhitsadblgravecyrillic 16#0476
+/J 16#004A
+/Jaarmenian 16#0541
+/Jcircle 16#24BF
+/Jcircumflex 16#0134
+/Jecyrillic 16#0408
+/Jheharmenian 16#054B
+/Jmonospace 16#FF2A
+/Jsmall 16#F76A
+/K 16#004B
+/KBsquare 16#3385
+/KKsquare 16#33CD
+/Kabashkircyrillic 16#04A0
+/Kacute 16#1E30
+/Kacyrillic 16#041A
+/Kadescendercyrillic 16#049A
+/Kahookcyrillic 16#04C3
+/Kappa 16#039A
+/Kastrokecyrillic 16#049E
+/Kaverticalstrokecyrillic 16#049C
+/Kcaron 16#01E8
+/Kcedilla 16#0136
+/Kcircle 16#24C0
+/Kcommaaccent 16#0136
+/Kdotbelow 16#1E32
+/Keharmenian 16#0554
+/Kenarmenian 16#053F
+/Khacyrillic 16#0425
+/Kheicoptic 16#03E6
+/Khook 16#0198
+/Kjecyrillic 16#040C
+/Klinebelow 16#1E34
+/Kmonospace 16#FF2B
+/Koppacyrillic 16#0480
+/Koppagreek 16#03DE
+/Ksicyrillic 16#046E
+/Ksmall 16#F76B
+/L 16#004C
+/LJ 16#01C7
+/LL 16#F6BF
+/Lacute 16#0139
+/Lambda 16#039B
+/Lcaron 16#013D
+/Lcedilla 16#013B
+/Lcircle 16#24C1
+/Lcircumflexbelow 16#1E3C
+/Lcommaaccent 16#013B
+/Ldot 16#013F
+/Ldotaccent 16#013F
+/Ldotbelow 16#1E36
+/Ldotbelowmacron 16#1E38
+/Liwnarmenian 16#053C
+/Lj 16#01C8
+/Ljecyrillic 16#0409
+/Llinebelow 16#1E3A
+/Lmonospace 16#FF2C
+/Lslash 16#0141
+/Lslashsmall 16#F6F9
+/Lsmall 16#F76C
+/M 16#004D
+/MBsquare 16#3386
+/Macron 16#F6D0
+/Macronsmall 16#F7AF
+/Macute 16#1E3E
+/Mcircle 16#24C2
+/Mdotaccent 16#1E40
+/Mdotbelow 16#1E42
+/Menarmenian 16#0544
+/Mmonospace 16#FF2D
+/Msmall 16#F76D
+/Mturned 16#019C
+/Mu 16#039C
+/N 16#004E
+/NJ 16#01CA
+/Nacute 16#0143
+/Ncaron 16#0147
+/Ncedilla 16#0145
+/Ncircle 16#24C3
+/Ncircumflexbelow 16#1E4A
+/Ncommaaccent 16#0145
+/Ndotaccent 16#1E44
+/Ndotbelow 16#1E46
+/Nhookleft 16#019D
+/Nineroman 16#2168
+/Nj 16#01CB
+/Njecyrillic 16#040A
+/Nlinebelow 16#1E48
+/Nmonospace 16#FF2E
+/Nowarmenian 16#0546
+/Nsmall 16#F76E
+/Ntilde 16#00D1
+/Ntildesmall 16#F7F1
+/Nu 16#039D
+/O 16#004F
+/OE 16#0152
+/OEsmall 16#F6FA
+/Oacute 16#00D3
+/Oacutesmall 16#F7F3
+/Obarredcyrillic 16#04E8
+/Obarreddieresiscyrillic 16#04EA
+/Obreve 16#014E
+/Ocaron 16#01D1
+/Ocenteredtilde 16#019F
+/Ocircle 16#24C4
+/Ocircumflex 16#00D4
+/Ocircumflexacute 16#1ED0
+/Ocircumflexdotbelow 16#1ED8
+/Ocircumflexgrave 16#1ED2
+/Ocircumflexhookabove 16#1ED4
+/Ocircumflexsmall 16#F7F4
+/Ocircumflextilde 16#1ED6
+/Ocyrillic 16#041E
+/Odblacute 16#0150
+/Odblgrave 16#020C
+/Odieresis 16#00D6
+/Odieresiscyrillic 16#04E6
+/Odieresissmall 16#F7F6
+/Odotbelow 16#1ECC
+/Ogoneksmall 16#F6FB
+/Ograve 16#00D2
+/Ogravesmall 16#F7F2
+/Oharmenian 16#0555
+/Ohm 16#2126
+/Ohookabove 16#1ECE
+/Ohorn 16#01A0
+/Ohornacute 16#1EDA
+/Ohorndotbelow 16#1EE2
+/Ohorngrave 16#1EDC
+/Ohornhookabove 16#1EDE
+/Ohorntilde 16#1EE0
+/Ohungarumlaut 16#0150
+/Oi 16#01A2
+/Oinvertedbreve 16#020E
+/Omacron 16#014C
+/Omacronacute 16#1E52
+/Omacrongrave 16#1E50
+/Omega 16#2126
+/Omegacyrillic 16#0460
+/Omegagreek 16#03A9
+/Omegaroundcyrillic 16#047A
+/Omegatitlocyrillic 16#047C
+/Omegatonos 16#038F
+/Omicron 16#039F
+/Omicrontonos 16#038C
+/Omonospace 16#FF2F
+/Oneroman 16#2160
+/Oogonek 16#01EA
+/Oogonekmacron 16#01EC
+/Oopen 16#0186
+/Oslash 16#00D8
+/Oslashacute 16#01FE
+/Oslashsmall 16#F7F8
+/Osmall 16#F76F
+/Ostrokeacute 16#01FE
+/Otcyrillic 16#047E
+/Otilde 16#00D5
+/Otildeacute 16#1E4C
+/Otildedieresis 16#1E4E
+/Otildesmall 16#F7F5
+/P 16#0050
+/Pacute 16#1E54
+/Pcircle 16#24C5
+/Pdotaccent 16#1E56
+/Pecyrillic 16#041F
+/Peharmenian 16#054A
+/Pemiddlehookcyrillic 16#04A6
+/Phi 16#03A6
+/Phook 16#01A4
+/Pi 16#03A0
+/Piwrarmenian 16#0553
+/Pmonospace 16#FF30
+/Psi 16#03A8
+/Psicyrillic 16#0470
+/Psmall 16#F770
+/Q 16#0051
+/Qcircle 16#24C6
+/Qmonospace 16#FF31
+/Qsmall 16#F771
+/R 16#0052
+/Raarmenian 16#054C
+/Racute 16#0154
+/Rcaron 16#0158
+/Rcedilla 16#0156
+/Rcircle 16#24C7
+/Rcommaaccent 16#0156
+/Rdblgrave 16#0210
+/Rdotaccent 16#1E58
+/Rdotbelow 16#1E5A
+/Rdotbelowmacron 16#1E5C
+/Reharmenian 16#0550
+/Rfraktur 16#211C
+/Rho 16#03A1
+/Ringsmall 16#F6FC
+/Rinvertedbreve 16#0212
+/Rlinebelow 16#1E5E
+/Rmonospace 16#FF32
+/Rsmall 16#F772
+/Rsmallinverted 16#0281
+/Rsmallinvertedsuperior 16#02B6
+/S 16#0053
+/SF010000 16#250C
+/SF020000 16#2514
+/SF030000 16#2510
+/SF040000 16#2518
+/SF050000 16#253C
+/SF060000 16#252C
+/SF070000 16#2534
+/SF080000 16#251C
+/SF090000 16#2524
+/SF100000 16#2500
+/SF110000 16#2502
+/SF190000 16#2561
+/SF200000 16#2562
+/SF210000 16#2556
+/SF220000 16#2555
+/SF230000 16#2563
+/SF240000 16#2551
+/SF250000 16#2557
+/SF260000 16#255D
+/SF270000 16#255C
+/SF280000 16#255B
+/SF360000 16#255E
+/SF370000 16#255F
+/SF380000 16#255A
+/SF390000 16#2554
+/SF400000 16#2569
+/SF410000 16#2566
+/SF420000 16#2560
+/SF430000 16#2550
+/SF440000 16#256C
+/SF450000 16#2567
+/SF460000 16#2568
+/SF470000 16#2564
+/SF480000 16#2565
+/SF490000 16#2559
+/SF500000 16#2558
+/SF510000 16#2552
+/SF520000 16#2553
+/SF530000 16#256B
+/SF540000 16#256A
+/Sacute 16#015A
+/Sacutedotaccent 16#1E64
+/Sampigreek 16#03E0
+/Scaron 16#0160
+/Scarondotaccent 16#1E66
+/Scaronsmall 16#F6FD
+/Scedilla 16#015E
+/Schwa 16#018F
+/Schwacyrillic 16#04D8
+/Schwadieresiscyrillic 16#04DA
+/Scircle 16#24C8
+/Scircumflex 16#015C
+/Scommaaccent 16#0218
+/Sdotaccent 16#1E60
+/Sdotbelow 16#1E62
+/Sdotbelowdotaccent 16#1E68
+/Seharmenian 16#054D
+/Sevenroman 16#2166
+/Shaarmenian 16#0547
+/Shacyrillic 16#0428
+/Shchacyrillic 16#0429
+/Sheicoptic 16#03E2
+/Shhacyrillic 16#04BA
+/Shimacoptic 16#03EC
+/Sigma 16#03A3
+/Sixroman 16#2165
+/Smonospace 16#FF33
+/Softsigncyrillic 16#042C
+/Ssmall 16#F773
+/Stigmagreek 16#03DA
+/T 16#0054
+/Tau 16#03A4
+/Tbar 16#0166
+/Tcaron 16#0164
+/Tcedilla 16#0162
+/Tcircle 16#24C9
+/Tcircumflexbelow 16#1E70
+/Tcommaaccent 16#0162
+/Tdotaccent 16#1E6A
+/Tdotbelow 16#1E6C
+/Tecyrillic 16#0422
+/Tedescendercyrillic 16#04AC
+/Tenroman 16#2169
+/Tetsecyrillic 16#04B4
+/Theta 16#0398
+/Thook 16#01AC
+/Thorn 16#00DE
+/Thornsmall 16#F7FE
+/Threeroman 16#2162
+/Tildesmall 16#F6FE
+/Tiwnarmenian 16#054F
+/Tlinebelow 16#1E6E
+/Tmonospace 16#FF34
+/Toarmenian 16#0539
+/Tonefive 16#01BC
+/Tonesix 16#0184
+/Tonetwo 16#01A7
+/Tretroflexhook 16#01AE
+/Tsecyrillic 16#0426
+/Tshecyrillic 16#040B
+/Tsmall 16#F774
+/Twelveroman 16#216B
+/Tworoman 16#2161
+/U 16#0055
+/Uacute 16#00DA
+/Uacutesmall 16#F7FA
+/Ubreve 16#016C
+/Ucaron 16#01D3
+/Ucircle 16#24CA
+/Ucircumflex 16#00DB
+/Ucircumflexbelow 16#1E76
+/Ucircumflexsmall 16#F7FB
+/Ucyrillic 16#0423
+/Udblacute 16#0170
+/Udblgrave 16#0214
+/Udieresis 16#00DC
+/Udieresisacute 16#01D7
+/Udieresisbelow 16#1E72
+/Udieresiscaron 16#01D9
+/Udieresiscyrillic 16#04F0
+/Udieresisgrave 16#01DB
+/Udieresismacron 16#01D5
+/Udieresissmall 16#F7FC
+/Udotbelow 16#1EE4
+/Ugrave 16#00D9
+/Ugravesmall 16#F7F9
+/Uhookabove 16#1EE6
+/Uhorn 16#01AF
+/Uhornacute 16#1EE8
+/Uhorndotbelow 16#1EF0
+/Uhorngrave 16#1EEA
+/Uhornhookabove 16#1EEC
+/Uhorntilde 16#1EEE
+/Uhungarumlaut 16#0170
+/Uhungarumlautcyrillic 16#04F2
+/Uinvertedbreve 16#0216
+/Ukcyrillic 16#0478
+/Umacron 16#016A
+/Umacroncyrillic 16#04EE
+/Umacrondieresis 16#1E7A
+/Umonospace 16#FF35
+/Uogonek 16#0172
+/Upsilon 16#03A5
+/Upsilon1 16#03D2
+/Upsilonacutehooksymbolgreek 16#03D3
+/Upsilonafrican 16#01B1
+/Upsilondieresis 16#03AB
+/Upsilondieresishooksymbolgreek 16#03D4
+/Upsilonhooksymbol 16#03D2
+/Upsilontonos 16#038E
+/Uring 16#016E
+/Ushortcyrillic 16#040E
+/Usmall 16#F775
+/Ustraightcyrillic 16#04AE
+/Ustraightstrokecyrillic 16#04B0
+/Utilde 16#0168
+/Utildeacute 16#1E78
+/Utildebelow 16#1E74
+/V 16#0056
+/Vcircle 16#24CB
+/Vdotbelow 16#1E7E
+/Vecyrillic 16#0412
+/Vewarmenian 16#054E
+/Vhook 16#01B2
+/Vmonospace 16#FF36
+/Voarmenian 16#0548
+/Vsmall 16#F776
+/Vtilde 16#1E7C
+/W 16#0057
+/Wacute 16#1E82
+/Wcircle 16#24CC
+/Wcircumflex 16#0174
+/Wdieresis 16#1E84
+/Wdotaccent 16#1E86
+/Wdotbelow 16#1E88
+/Wgrave 16#1E80
+/Wmonospace 16#FF37
+/Wsmall 16#F777
+/X 16#0058
+/Xcircle 16#24CD
+/Xdieresis 16#1E8C
+/Xdotaccent 16#1E8A
+/Xeharmenian 16#053D
+/Xi 16#039E
+/Xmonospace 16#FF38
+/Xsmall 16#F778
+/Y 16#0059
+/Yacute 16#00DD
+/Yacutesmall 16#F7FD
+/Yatcyrillic 16#0462
+/Ycircle 16#24CE
+/Ycircumflex 16#0176
+/Ydieresis 16#0178
+/Ydieresissmall 16#F7FF
+/Ydotaccent 16#1E8E
+/Ydotbelow 16#1EF4
+/Yericyrillic 16#042B
+/Yerudieresiscyrillic 16#04F8
+/Ygrave 16#1EF2
+/Yhook 16#01B3
+/Yhookabove 16#1EF6
+/Yiarmenian 16#0545
+/Yicyrillic 16#0407
+/Yiwnarmenian 16#0552
+/Ymonospace 16#FF39
+/Ysmall 16#F779
+/Ytilde 16#1EF8
+/Yusbigcyrillic 16#046A
+/Yusbigiotifiedcyrillic 16#046C
+/Yuslittlecyrillic 16#0466
+/Yuslittleiotifiedcyrillic 16#0468
+/Z 16#005A
+/Zaarmenian 16#0536
+/Zacute 16#0179
+/Zcaron 16#017D
+/Zcaronsmall 16#F6FF
+/Zcircle 16#24CF
+/Zcircumflex 16#1E90
+/Zdot 16#017B
+/Zdotaccent 16#017B
+/Zdotbelow 16#1E92
+/Zecyrillic 16#0417
+/Zedescendercyrillic 16#0498
+/Zedieresiscyrillic 16#04DE
+/Zeta 16#0396
+/Zhearmenian 16#053A
+/Zhebrevecyrillic 16#04C1
+/Zhecyrillic 16#0416
+/Zhedescendercyrillic 16#0496
+/Zhedieresiscyrillic 16#04DC
+/Zlinebelow 16#1E94
+/Zmonospace 16#FF3A
+/Zsmall 16#F77A
+/Zstroke 16#01B5
+/a 16#0061
+/aabengali 16#0986
+/aacute 16#00E1
+/aadeva 16#0906
+/aagujarati 16#0A86
+/aagurmukhi 16#0A06
+/aamatragurmukhi 16#0A3E
+/aarusquare 16#3303
+/aavowelsignbengali 16#09BE
+/aavowelsigndeva 16#093E
+/aavowelsigngujarati 16#0ABE
+/abbreviationmarkarmenian 16#055F
+/abbreviationsigndeva 16#0970
+/abengali 16#0985
+/abopomofo 16#311A
+/abreve 16#0103
+/abreveacute 16#1EAF
+/abrevecyrillic 16#04D1
+/abrevedotbelow 16#1EB7
+/abrevegrave 16#1EB1
+/abrevehookabove 16#1EB3
+/abrevetilde 16#1EB5
+/acaron 16#01CE
+/acircle 16#24D0
+/acircumflex 16#00E2
+/acircumflexacute 16#1EA5
+/acircumflexdotbelow 16#1EAD
+/acircumflexgrave 16#1EA7
+/acircumflexhookabove 16#1EA9
+/acircumflextilde 16#1EAB
+/acute 16#00B4
+/acutebelowcmb 16#0317
+/acutecmb 16#0301
+/acutecomb 16#0301
+/acutedeva 16#0954
+/acutelowmod 16#02CF
+/acutetonecmb 16#0341
+/acyrillic 16#0430
+/adblgrave 16#0201
+/addakgurmukhi 16#0A71
+/adeva 16#0905
+/adieresis 16#00E4
+/adieresiscyrillic 16#04D3
+/adieresismacron 16#01DF
+/adotbelow 16#1EA1
+/adotmacron 16#01E1
+/ae 16#00E6
+/aeacute 16#01FD
+/aekorean 16#3150
+/aemacron 16#01E3
+/afii00208 16#2015
+/afii08941 16#20A4
+/afii10017 16#0410
+/afii10018 16#0411
+/afii10019 16#0412
+/afii10020 16#0413
+/afii10021 16#0414
+/afii10022 16#0415
+/afii10023 16#0401
+/afii10024 16#0416
+/afii10025 16#0417
+/afii10026 16#0418
+/afii10027 16#0419
+/afii10028 16#041A
+/afii10029 16#041B
+/afii10030 16#041C
+/afii10031 16#041D
+/afii10032 16#041E
+/afii10033 16#041F
+/afii10034 16#0420
+/afii10035 16#0421
+/afii10036 16#0422
+/afii10037 16#0423
+/afii10038 16#0424
+/afii10039 16#0425
+/afii10040 16#0426
+/afii10041 16#0427
+/afii10042 16#0428
+/afii10043 16#0429
+/afii10044 16#042A
+/afii10045 16#042B
+/afii10046 16#042C
+/afii10047 16#042D
+/afii10048 16#042E
+/afii10049 16#042F
+/afii10050 16#0490
+/afii10051 16#0402
+/afii10052 16#0403
+/afii10053 16#0404
+/afii10054 16#0405
+/afii10055 16#0406
+/afii10056 16#0407
+/afii10057 16#0408
+/afii10058 16#0409
+/afii10059 16#040A
+/afii10060 16#040B
+/afii10061 16#040C
+/afii10062 16#040E
+/afii10063 16#F6C4
+/afii10064 16#F6C5
+/afii10065 16#0430
+/afii10066 16#0431
+/afii10067 16#0432
+/afii10068 16#0433
+/afii10069 16#0434
+/afii10070 16#0435
+/afii10071 16#0451
+/afii10072 16#0436
+/afii10073 16#0437
+/afii10074 16#0438
+/afii10075 16#0439
+/afii10076 16#043A
+/afii10077 16#043B
+/afii10078 16#043C
+/afii10079 16#043D
+/afii10080 16#043E
+/afii10081 16#043F
+/afii10082 16#0440
+/afii10083 16#0441
+/afii10084 16#0442
+/afii10085 16#0443
+/afii10086 16#0444
+/afii10087 16#0445
+/afii10088 16#0446
+/afii10089 16#0447
+/afii10090 16#0448
+/afii10091 16#0449
+/afii10092 16#044A
+/afii10093 16#044B
+/afii10094 16#044C
+/afii10095 16#044D
+/afii10096 16#044E
+/afii10097 16#044F
+/afii10098 16#0491
+/afii10099 16#0452
+/afii10100 16#0453
+/afii10101 16#0454
+/afii10102 16#0455
+/afii10103 16#0456
+/afii10104 16#0457
+/afii10105 16#0458
+/afii10106 16#0459
+/afii10107 16#045A
+/afii10108 16#045B
+/afii10109 16#045C
+/afii10110 16#045E
+/afii10145 16#040F
+/afii10146 16#0462
+/afii10147 16#0472
+/afii10148 16#0474
+/afii10192 16#F6C6
+/afii10193 16#045F
+/afii10194 16#0463
+/afii10195 16#0473
+/afii10196 16#0475
+/afii10831 16#F6C7
+/afii10832 16#F6C8
+/afii10846 16#04D9
+/afii299 16#200E
+/afii300 16#200F
+/afii301 16#200D
+/afii57381 16#066A
+/afii57388 16#060C
+/afii57392 16#0660
+/afii57393 16#0661
+/afii57394 16#0662
+/afii57395 16#0663
+/afii57396 16#0664
+/afii57397 16#0665
+/afii57398 16#0666
+/afii57399 16#0667
+/afii57400 16#0668
+/afii57401 16#0669
+/afii57403 16#061B
+/afii57407 16#061F
+/afii57409 16#0621
+/afii57410 16#0622
+/afii57411 16#0623
+/afii57412 16#0624
+/afii57413 16#0625
+/afii57414 16#0626
+/afii57415 16#0627
+/afii57416 16#0628
+/afii57417 16#0629
+/afii57418 16#062A
+/afii57419 16#062B
+/afii57420 16#062C
+/afii57421 16#062D
+/afii57422 16#062E
+/afii57423 16#062F
+/afii57424 16#0630
+/afii57425 16#0631
+/afii57426 16#0632
+/afii57427 16#0633
+/afii57428 16#0634
+/afii57429 16#0635
+/afii57430 16#0636
+/afii57431 16#0637
+/afii57432 16#0638
+/afii57433 16#0639
+/afii57434 16#063A
+/afii57440 16#0640
+/afii57441 16#0641
+/afii57442 16#0642
+/afii57443 16#0643
+/afii57444 16#0644
+/afii57445 16#0645
+/afii57446 16#0646
+/afii57448 16#0648
+/afii57449 16#0649
+/afii57450 16#064A
+/afii57451 16#064B
+/afii57452 16#064C
+/afii57453 16#064D
+/afii57454 16#064E
+/afii57455 16#064F
+/afii57456 16#0650
+/afii57457 16#0651
+/afii57458 16#0652
+/afii57470 16#0647
+/afii57505 16#06A4
+/afii57506 16#067E
+/afii57507 16#0686
+/afii57508 16#0698
+/afii57509 16#06AF
+/afii57511 16#0679
+/afii57512 16#0688
+/afii57513 16#0691
+/afii57514 16#06BA
+/afii57519 16#06D2
+/afii57534 16#06D5
+/afii57636 16#20AA
+/afii57645 16#05BE
+/afii57658 16#05C3
+/afii57664 16#05D0
+/afii57665 16#05D1
+/afii57666 16#05D2
+/afii57667 16#05D3
+/afii57668 16#05D4
+/afii57669 16#05D5
+/afii57670 16#05D6
+/afii57671 16#05D7
+/afii57672 16#05D8
+/afii57673 16#05D9
+/afii57674 16#05DA
+/afii57675 16#05DB
+/afii57676 16#05DC
+/afii57677 16#05DD
+/afii57678 16#05DE
+/afii57679 16#05DF
+/afii57680 16#05E0
+/afii57681 16#05E1
+/afii57682 16#05E2
+/afii57683 16#05E3
+/afii57684 16#05E4
+/afii57685 16#05E5
+/afii57686 16#05E6
+/afii57687 16#05E7
+/afii57688 16#05E8
+/afii57689 16#05E9
+/afii57690 16#05EA
+/afii57694 16#FB2A
+/afii57695 16#FB2B
+/afii57700 16#FB4B
+/afii57705 16#FB1F
+/afii57716 16#05F0
+/afii57717 16#05F1
+/afii57718 16#05F2
+/afii57723 16#FB35
+/afii57793 16#05B4
+/afii57794 16#05B5
+/afii57795 16#05B6
+/afii57796 16#05BB
+/afii57797 16#05B8
+/afii57798 16#05B7
+/afii57799 16#05B0
+/afii57800 16#05B2
+/afii57801 16#05B1
+/afii57802 16#05B3
+/afii57803 16#05C2
+/afii57804 16#05C1
+/afii57806 16#05B9
+/afii57807 16#05BC
+/afii57839 16#05BD
+/afii57841 16#05BF
+/afii57842 16#05C0
+/afii57929 16#02BC
+/afii61248 16#2105
+/afii61289 16#2113
+/afii61352 16#2116
+/afii61573 16#202C
+/afii61574 16#202D
+/afii61575 16#202E
+/afii61664 16#200C
+/afii63167 16#066D
+/afii64937 16#02BD
+/agrave 16#00E0
+/agujarati 16#0A85
+/agurmukhi 16#0A05
+/ahiragana 16#3042
+/ahookabove 16#1EA3
+/aibengali 16#0990
+/aibopomofo 16#311E
+/aideva 16#0910
+/aiecyrillic 16#04D5
+/aigujarati 16#0A90
+/aigurmukhi 16#0A10
+/aimatragurmukhi 16#0A48
+/ainarabic 16#0639
+/ainfinalarabic 16#FECA
+/aininitialarabic 16#FECB
+/ainmedialarabic 16#FECC
+/ainvertedbreve 16#0203
+/aivowelsignbengali 16#09C8
+/aivowelsigndeva 16#0948
+/aivowelsigngujarati 16#0AC8
+/akatakana 16#30A2
+/akatakanahalfwidth 16#FF71
+/akorean 16#314F
+/alef 16#05D0
+/alefarabic 16#0627
+/alefdageshhebrew 16#FB30
+/aleffinalarabic 16#FE8E
+/alefhamzaabovearabic 16#0623
+/alefhamzaabovefinalarabic 16#FE84
+/alefhamzabelowarabic 16#0625
+/alefhamzabelowfinalarabic 16#FE88
+/alefhebrew 16#05D0
+/aleflamedhebrew 16#FB4F
+/alefmaddaabovearabic 16#0622
+/alefmaddaabovefinalarabic 16#FE82
+/alefmaksuraarabic 16#0649
+/alefmaksurafinalarabic 16#FEF0
+/alefmaksurainitialarabic 16#FEF3
+/alefmaksuramedialarabic 16#FEF4
+/alefpatahhebrew 16#FB2E
+/alefqamatshebrew 16#FB2F
+/aleph 16#2135
+/allequal 16#224C
+/alpha 16#03B1
+/alphatonos 16#03AC
+/amacron 16#0101
+/amonospace 16#FF41
+/ampersand 16#0026
+/ampersandmonospace 16#FF06
+/ampersandsmall 16#F726
+/amsquare 16#33C2
+/anbopomofo 16#3122
+/angbopomofo 16#3124
+/angkhankhuthai 16#0E5A
+/angle 16#2220
+/anglebracketleft 16#3008
+/anglebracketleftvertical 16#FE3F
+/anglebracketright 16#3009
+/anglebracketrightvertical 16#FE40
+/angleleft 16#2329
+/angleright 16#232A
+/angstrom 16#212B
+/anoteleia 16#0387
+/anudattadeva 16#0952
+/anusvarabengali 16#0982
+/anusvaradeva 16#0902
+/anusvaragujarati 16#0A82
+/aogonek 16#0105
+/apaatosquare 16#3300
+/aparen 16#249C
+/apostrophearmenian 16#055A
+/apostrophemod 16#02BC
+/apple 16#F8FF
+/approaches 16#2250
+/approxequal 16#2248
+/approxequalorimage 16#2252
+/approximatelyequal 16#2245
+/araeaekorean 16#318E
+/araeakorean 16#318D
+/arc 16#2312
+/arighthalfring 16#1E9A
+/aring 16#00E5
+/aringacute 16#01FB
+/aringbelow 16#1E01
+/arrowboth 16#2194
+/arrowdashdown 16#21E3
+/arrowdashleft 16#21E0
+/arrowdashright 16#21E2
+/arrowdashup 16#21E1
+/arrowdblboth 16#21D4
+/arrowdbldown 16#21D3
+/arrowdblleft 16#21D0
+/arrowdblright 16#21D2
+/arrowdblup 16#21D1
+/arrowdown 16#2193
+/arrowdownleft 16#2199
+/arrowdownright 16#2198
+/arrowdownwhite 16#21E9
+/arrowheaddownmod 16#02C5
+/arrowheadleftmod 16#02C2
+/arrowheadrightmod 16#02C3
+/arrowheadupmod 16#02C4
+/arrowhorizex 16#F8E7
+/arrowleft 16#2190
+/arrowleftdbl 16#21D0
+/arrowleftdblstroke 16#21CD
+/arrowleftoverright 16#21C6
+/arrowleftwhite 16#21E6
+/arrowright 16#2192
+/arrowrightdblstroke 16#21CF
+/arrowrightheavy 16#279E
+/arrowrightoverleft 16#21C4
+/arrowrightwhite 16#21E8
+/arrowtableft 16#21E4
+/arrowtabright 16#21E5
+/arrowup 16#2191
+/arrowupdn 16#2195
+/arrowupdnbse 16#21A8
+/arrowupdownbase 16#21A8
+/arrowupleft 16#2196
+/arrowupleftofdown 16#21C5
+/arrowupright 16#2197
+/arrowupwhite 16#21E7
+/arrowvertex 16#F8E6
+/asciicircum 16#005E
+/asciicircummonospace 16#FF3E
+/asciitilde 16#007E
+/asciitildemonospace 16#FF5E
+/ascript 16#0251
+/ascriptturned 16#0252
+/asmallhiragana 16#3041
+/asmallkatakana 16#30A1
+/asmallkatakanahalfwidth 16#FF67
+/asterisk 16#002A
+/asteriskaltonearabic 16#066D
+/asteriskarabic 16#066D
+/asteriskmath 16#2217
+/asteriskmonospace 16#FF0A
+/asterisksmall 16#FE61
+/asterism 16#2042
+/asuperior 16#F6E9
+/asymptoticallyequal 16#2243
+/at 16#0040
+/atilde 16#00E3
+/atmonospace 16#FF20
+/atsmall 16#FE6B
+/aturned 16#0250
+/aubengali 16#0994
+/aubopomofo 16#3120
+/audeva 16#0914
+/augujarati 16#0A94
+/augurmukhi 16#0A14
+/aulengthmarkbengali 16#09D7
+/aumatragurmukhi 16#0A4C
+/auvowelsignbengali 16#09CC
+/auvowelsigndeva 16#094C
+/auvowelsigngujarati 16#0ACC
+/avagrahadeva 16#093D
+/aybarmenian 16#0561
+/ayin 16#05E2
+/ayinaltonehebrew 16#FB20
+/ayinhebrew 16#05E2
+/b 16#0062
+/babengali 16#09AC
+/backslash 16#005C
+/backslashmonospace 16#FF3C
+/badeva 16#092C
+/bagujarati 16#0AAC
+/bagurmukhi 16#0A2C
+/bahiragana 16#3070
+/bahtthai 16#0E3F
+/bakatakana 16#30D0
+/bar 16#007C
+/barmonospace 16#FF5C
+/bbopomofo 16#3105
+/bcircle 16#24D1
+/bdotaccent 16#1E03
+/bdotbelow 16#1E05
+/beamedsixteenthnotes 16#266C
+/because 16#2235
+/becyrillic 16#0431
+/beharabic 16#0628
+/behfinalarabic 16#FE90
+/behinitialarabic 16#FE91
+/behiragana 16#3079
+/behmedialarabic 16#FE92
+/behmeeminitialarabic 16#FC9F
+/behmeemisolatedarabic 16#FC08
+/behnoonfinalarabic 16#FC6D
+/bekatakana 16#30D9
+/benarmenian 16#0562
+/bet 16#05D1
+/beta 16#03B2
+/betasymbolgreek 16#03D0
+/betdagesh 16#FB31
+/betdageshhebrew 16#FB31
+/bethebrew 16#05D1
+/betrafehebrew 16#FB4C
+/bhabengali 16#09AD
+/bhadeva 16#092D
+/bhagujarati 16#0AAD
+/bhagurmukhi 16#0A2D
+/bhook 16#0253
+/bihiragana 16#3073
+/bikatakana 16#30D3
+/bilabialclick 16#0298
+/bindigurmukhi 16#0A02
+/birusquare 16#3331
+/blackcircle 16#25CF
+/blackdiamond 16#25C6
+/blackdownpointingtriangle 16#25BC
+/blackleftpointingpointer 16#25C4
+/blackleftpointingtriangle 16#25C0
+/blacklenticularbracketleft 16#3010
+/blacklenticularbracketleftvertical 16#FE3B
+/blacklenticularbracketright 16#3011
+/blacklenticularbracketrightvertical 16#FE3C
+/blacklowerlefttriangle 16#25E3
+/blacklowerrighttriangle 16#25E2
+/blackrectangle 16#25AC
+/blackrightpointingpointer 16#25BA
+/blackrightpointingtriangle 16#25B6
+/blacksmallsquare 16#25AA
+/blacksmilingface 16#263B
+/blacksquare 16#25A0
+/blackstar 16#2605
+/blackupperlefttriangle 16#25E4
+/blackupperrighttriangle 16#25E5
+/blackuppointingsmalltriangle 16#25B4
+/blackuppointingtriangle 16#25B2
+/blank 16#2423
+/blinebelow 16#1E07
+/block 16#2588
+/bmonospace 16#FF42
+/bobaimaithai 16#0E1A
+/bohiragana 16#307C
+/bokatakana 16#30DC
+/bparen 16#249D
+/bqsquare 16#33C3
+/braceex 16#F8F4
+/braceleft 16#007B
+/braceleftbt 16#F8F3
+/braceleftmid 16#F8F2
+/braceleftmonospace 16#FF5B
+/braceleftsmall 16#FE5B
+/bracelefttp 16#F8F1
+/braceleftvertical 16#FE37
+/braceright 16#007D
+/bracerightbt 16#F8FE
+/bracerightmid 16#F8FD
+/bracerightmonospace 16#FF5D
+/bracerightsmall 16#FE5C
+/bracerighttp 16#F8FC
+/bracerightvertical 16#FE38
+/bracketleft 16#005B
+/bracketleftbt 16#F8F0
+/bracketleftex 16#F8EF
+/bracketleftmonospace 16#FF3B
+/bracketlefttp 16#F8EE
+/bracketright 16#005D
+/bracketrightbt 16#F8FB
+/bracketrightex 16#F8FA
+/bracketrightmonospace 16#FF3D
+/bracketrighttp 16#F8F9
+/breve 16#02D8
+/brevebelowcmb 16#032E
+/brevecmb 16#0306
+/breveinvertedbelowcmb 16#032F
+/breveinvertedcmb 16#0311
+/breveinverteddoublecmb 16#0361
+/bridgebelowcmb 16#032A
+/bridgeinvertedbelowcmb 16#033A
+/brokenbar 16#00A6
+/bstroke 16#0180
+/bsuperior 16#F6EA
+/btopbar 16#0183
+/buhiragana 16#3076
+/bukatakana 16#30D6
+/bullet 16#2022
+/bulletinverse 16#25D8
+/bulletoperator 16#2219
+/bullseye 16#25CE
+/c 16#0063
+/caarmenian 16#056E
+/cabengali 16#099A
+/cacute 16#0107
+/cadeva 16#091A
+/cagujarati 16#0A9A
+/cagurmukhi 16#0A1A
+/calsquare 16#3388
+/candrabindubengali 16#0981
+/candrabinducmb 16#0310
+/candrabindudeva 16#0901
+/candrabindugujarati 16#0A81
+/capslock 16#21EA
+/careof 16#2105
+/caron 16#02C7
+/caronbelowcmb 16#032C
+/caroncmb 16#030C
+/carriagereturn 16#21B5
+/cbopomofo 16#3118
+/ccaron 16#010D
+/ccedilla 16#00E7
+/ccedillaacute 16#1E09
+/ccircle 16#24D2
+/ccircumflex 16#0109
+/ccurl 16#0255
+/cdot 16#010B
+/cdotaccent 16#010B
+/cdsquare 16#33C5
+/cedilla 16#00B8
+/cedillacmb 16#0327
+/cent 16#00A2
+/centigrade 16#2103
+/centinferior 16#F6DF
+/centmonospace 16#FFE0
+/centoldstyle 16#F7A2
+/centsuperior 16#F6E0
+/chaarmenian 16#0579
+/chabengali 16#099B
+/chadeva 16#091B
+/chagujarati 16#0A9B
+/chagurmukhi 16#0A1B
+/chbopomofo 16#3114
+/cheabkhasiancyrillic 16#04BD
+/checkmark 16#2713
+/checyrillic 16#0447
+/chedescenderabkhasiancyrillic 16#04BF
+/chedescendercyrillic 16#04B7
+/chedieresiscyrillic 16#04F5
+/cheharmenian 16#0573
+/chekhakassiancyrillic 16#04CC
+/cheverticalstrokecyrillic 16#04B9
+/chi 16#03C7
+/chieuchacirclekorean 16#3277
+/chieuchaparenkorean 16#3217
+/chieuchcirclekorean 16#3269
+/chieuchkorean 16#314A
+/chieuchparenkorean 16#3209
+/chochangthai 16#0E0A
+/chochanthai 16#0E08
+/chochingthai 16#0E09
+/chochoethai 16#0E0C
+/chook 16#0188
+/cieucacirclekorean 16#3276
+/cieucaparenkorean 16#3216
+/cieuccirclekorean 16#3268
+/cieuckorean 16#3148
+/cieucparenkorean 16#3208
+/cieucuparenkorean 16#321C
+/circle 16#25CB
+/circlemultiply 16#2297
+/circleot 16#2299
+/circleplus 16#2295
+/circlepostalmark 16#3036
+/circlewithlefthalfblack 16#25D0
+/circlewithrighthalfblack 16#25D1
+/circumflex 16#02C6
+/circumflexbelowcmb 16#032D
+/circumflexcmb 16#0302
+/clear 16#2327
+/clickalveolar 16#01C2
+/clickdental 16#01C0
+/clicklateral 16#01C1
+/clickretroflex 16#01C3
+/club 16#2663
+/clubsuitblack 16#2663
+/clubsuitwhite 16#2667
+/cmcubedsquare 16#33A4
+/cmonospace 16#FF43
+/cmsquaredsquare 16#33A0
+/coarmenian 16#0581
+/colon 16#003A
+/colonmonetary 16#20A1
+/colonmonospace 16#FF1A
+/colonsign 16#20A1
+/colonsmall 16#FE55
+/colontriangularhalfmod 16#02D1
+/colontriangularmod 16#02D0
+/comma 16#002C
+/commaabovecmb 16#0313
+/commaaboverightcmb 16#0315
+/commaaccent 16#F6C3
+/commaarabic 16#060C
+/commaarmenian 16#055D
+/commainferior 16#F6E1
+/commamonospace 16#FF0C
+/commareversedabovecmb 16#0314
+/commareversedmod 16#02BD
+/commasmall 16#FE50
+/commasuperior 16#F6E2
+/commaturnedabovecmb 16#0312
+/commaturnedmod 16#02BB
+/compass 16#263C
+/congruent 16#2245
+/contourintegral 16#222E
+/control 16#2303
+/controlACK 16#0006
+/controlBEL 16#0007
+/controlBS 16#0008
+/controlCAN 16#0018
+/controlCR 16#000D
+/controlDC1 16#0011
+/controlDC2 16#0012
+/controlDC3 16#0013
+/controlDC4 16#0014
+/controlDEL 16#007F
+/controlDLE 16#0010
+/controlEM 16#0019
+/controlENQ 16#0005
+/controlEOT 16#0004
+/controlESC 16#001B
+/controlETB 16#0017
+/controlETX 16#0003
+/controlFF 16#000C
+/controlFS 16#001C
+/controlGS 16#001D
+/controlHT 16#0009
+/controlLF 16#000A
+/controlNAK 16#0015
+/controlRS 16#001E
+/controlSI 16#000F
+/controlSO 16#000E
+/controlSOT 16#0002
+/controlSTX 16#0001
+/controlSUB 16#001A
+/controlSYN 16#0016
+/controlUS 16#001F
+/controlVT 16#000B
+/copyright 16#00A9
+/copyrightsans 16#F8E9
+/copyrightserif 16#F6D9
+/cornerbracketleft 16#300C
+/cornerbracketlefthalfwidth 16#FF62
+/cornerbracketleftvertical 16#FE41
+/cornerbracketright 16#300D
+/cornerbracketrighthalfwidth 16#FF63
+/cornerbracketrightvertical 16#FE42
+/corporationsquare 16#337F
+/cosquare 16#33C7
+/coverkgsquare 16#33C6
+/cparen 16#249E
+/cruzeiro 16#20A2
+/cstretched 16#0297
+/curlyand 16#22CF
+/curlyor 16#22CE
+/currency 16#00A4
+/cyrBreve 16#F6D1
+/cyrFlex 16#F6D2
+/cyrbreve 16#F6D4
+/cyrflex 16#F6D5
+/d 16#0064
+/daarmenian 16#0564
+/dabengali 16#09A6
+/dadarabic 16#0636
+/dadeva 16#0926
+/dadfinalarabic 16#FEBE
+/dadinitialarabic 16#FEBF
+/dadmedialarabic 16#FEC0
+/dagesh 16#05BC
+/dageshhebrew 16#05BC
+/dagger 16#2020
+/daggerdbl 16#2021
+/dagujarati 16#0AA6
+/dagurmukhi 16#0A26
+/dahiragana 16#3060
+/dakatakana 16#30C0
+/dalarabic 16#062F
+/dalet 16#05D3
+/daletdagesh 16#FB33
+/daletdageshhebrew 16#FB33
+% /dalethatafpatah 16#05D3 16#05B2
+% /dalethatafpatahhebrew 16#05D3 16#05B2
+% /dalethatafsegol 16#05D3 16#05B1
+% /dalethatafsegolhebrew 16#05D3 16#05B1
+/dalethebrew 16#05D3
+% /dalethiriq 16#05D3 16#05B4
+% /dalethiriqhebrew 16#05D3 16#05B4
+% /daletholam 16#05D3 16#05B9
+% /daletholamhebrew 16#05D3 16#05B9
+% /daletpatah 16#05D3 16#05B7
+% /daletpatahhebrew 16#05D3 16#05B7
+% /daletqamats 16#05D3 16#05B8
+% /daletqamatshebrew 16#05D3 16#05B8
+% /daletqubuts 16#05D3 16#05BB
+% /daletqubutshebrew 16#05D3 16#05BB
+% /daletsegol 16#05D3 16#05B6
+% /daletsegolhebrew 16#05D3 16#05B6
+% /daletsheva 16#05D3 16#05B0
+% /daletshevahebrew 16#05D3 16#05B0
+% /dalettsere 16#05D3 16#05B5
+% /dalettserehebrew 16#05D3 16#05B5
+/dalfinalarabic 16#FEAA
+/dammaarabic 16#064F
+/dammalowarabic 16#064F
+/dammatanaltonearabic 16#064C
+/dammatanarabic 16#064C
+/danda 16#0964
+/dargahebrew 16#05A7
+/dargalefthebrew 16#05A7
+/dasiapneumatacyrilliccmb 16#0485
+/dblGrave 16#F6D3
+/dblanglebracketleft 16#300A
+/dblanglebracketleftvertical 16#FE3D
+/dblanglebracketright 16#300B
+/dblanglebracketrightvertical 16#FE3E
+/dblarchinvertedbelowcmb 16#032B
+/dblarrowleft 16#21D4
+/dblarrowright 16#21D2
+/dbldanda 16#0965
+/dblgrave 16#F6D6
+/dblgravecmb 16#030F
+/dblintegral 16#222C
+/dbllowline 16#2017
+/dbllowlinecmb 16#0333
+/dbloverlinecmb 16#033F
+/dblprimemod 16#02BA
+/dblverticalbar 16#2016
+/dblverticallineabovecmb 16#030E
+/dbopomofo 16#3109
+/dbsquare 16#33C8
+/dcaron 16#010F
+/dcedilla 16#1E11
+/dcircle 16#24D3
+/dcircumflexbelow 16#1E13
+/dcroat 16#0111
+/ddabengali 16#09A1
+/ddadeva 16#0921
+/ddagujarati 16#0AA1
+/ddagurmukhi 16#0A21
+/ddalarabic 16#0688
+/ddalfinalarabic 16#FB89
+/dddhadeva 16#095C
+/ddhabengali 16#09A2
+/ddhadeva 16#0922
+/ddhagujarati 16#0AA2
+/ddhagurmukhi 16#0A22
+/ddotaccent 16#1E0B
+/ddotbelow 16#1E0D
+/decimalseparatorarabic 16#066B
+/decimalseparatorpersian 16#066B
+/decyrillic 16#0434
+/degree 16#00B0
+/dehihebrew 16#05AD
+/dehiragana 16#3067
+/deicoptic 16#03EF
+/dekatakana 16#30C7
+/deleteleft 16#232B
+/deleteright 16#2326
+/delta 16#03B4
+/deltaturned 16#018D
+/denominatorminusonenumeratorbengali 16#09F8
+/dezh 16#02A4
+/dhabengali 16#09A7
+/dhadeva 16#0927
+/dhagujarati 16#0AA7
+/dhagurmukhi 16#0A27
+/dhook 16#0257
+/dialytikatonos 16#0385
+/dialytikatonoscmb 16#0344
+/diamond 16#2666
+/diamondsuitwhite 16#2662
+/dieresis 16#00A8
+/dieresisacute 16#F6D7
+/dieresisbelowcmb 16#0324
+/dieresiscmb 16#0308
+/dieresisgrave 16#F6D8
+/dieresistonos 16#0385
+/dihiragana 16#3062
+/dikatakana 16#30C2
+/dittomark 16#3003
+/divide 16#00F7
+/divides 16#2223
+/divisionslash 16#2215
+/djecyrillic 16#0452
+/dkshade 16#2593
+/dlinebelow 16#1E0F
+/dlsquare 16#3397
+/dmacron 16#0111
+/dmonospace 16#FF44
+/dnblock 16#2584
+/dochadathai 16#0E0E
+/dodekthai 16#0E14
+/dohiragana 16#3069
+/dokatakana 16#30C9
+/dollar 16#0024
+/dollarinferior 16#F6E3
+/dollarmonospace 16#FF04
+/dollaroldstyle 16#F724
+/dollarsmall 16#FE69
+/dollarsuperior 16#F6E4
+/dong 16#20AB
+/dorusquare 16#3326
+/dotaccent 16#02D9
+/dotaccentcmb 16#0307
+/dotbelowcmb 16#0323
+/dotbelowcomb 16#0323
+/dotkatakana 16#30FB
+/dotlessi 16#0131
+/dotlessj 16#F6BE
+/dotlessjstrokehook 16#0284
+/dotmath 16#22C5
+/dottedcircle 16#25CC
+/doubleyodpatah 16#FB1F
+/doubleyodpatahhebrew 16#FB1F
+/downtackbelowcmb 16#031E
+/downtackmod 16#02D5
+/dparen 16#249F
+/dsuperior 16#F6EB
+/dtail 16#0256
+/dtopbar 16#018C
+/duhiragana 16#3065
+/dukatakana 16#30C5
+/dz 16#01F3
+/dzaltone 16#02A3
+/dzcaron 16#01C6
+/dzcurl 16#02A5
+/dzeabkhasiancyrillic 16#04E1
+/dzecyrillic 16#0455
+/dzhecyrillic 16#045F
+/e 16#0065
+/eacute 16#00E9
+/earth 16#2641
+/ebengali 16#098F
+/ebopomofo 16#311C
+/ebreve 16#0115
+/ecandradeva 16#090D
+/ecandragujarati 16#0A8D
+/ecandravowelsigndeva 16#0945
+/ecandravowelsigngujarati 16#0AC5
+/ecaron 16#011B
+/ecedillabreve 16#1E1D
+/echarmenian 16#0565
+/echyiwnarmenian 16#0587
+/ecircle 16#24D4
+/ecircumflex 16#00EA
+/ecircumflexacute 16#1EBF
+/ecircumflexbelow 16#1E19
+/ecircumflexdotbelow 16#1EC7
+/ecircumflexgrave 16#1EC1
+/ecircumflexhookabove 16#1EC3
+/ecircumflextilde 16#1EC5
+/ecyrillic 16#0454
+/edblgrave 16#0205
+/edeva 16#090F
+/edieresis 16#00EB
+/edot 16#0117
+/edotaccent 16#0117
+/edotbelow 16#1EB9
+/eegurmukhi 16#0A0F
+/eematragurmukhi 16#0A47
+/efcyrillic 16#0444
+/egrave 16#00E8
+/egujarati 16#0A8F
+/eharmenian 16#0567
+/ehbopomofo 16#311D
+/ehiragana 16#3048
+/ehookabove 16#1EBB
+/eibopomofo 16#311F
+/eight 16#0038
+/eightarabic 16#0668
+/eightbengali 16#09EE
+/eightcircle 16#2467
+/eightcircleinversesansserif 16#2791
+/eightdeva 16#096E
+/eighteencircle 16#2471
+/eighteenparen 16#2485
+/eighteenperiod 16#2499
+/eightgujarati 16#0AEE
+/eightgurmukhi 16#0A6E
+/eighthackarabic 16#0668
+/eighthangzhou 16#3028
+/eighthnotebeamed 16#266B
+/eightideographicparen 16#3227
+/eightinferior 16#2088
+/eightmonospace 16#FF18
+/eightoldstyle 16#F738
+/eightparen 16#247B
+/eightperiod 16#248F
+/eightpersian 16#06F8
+/eightroman 16#2177
+/eightsuperior 16#2078
+/eightthai 16#0E58
+/einvertedbreve 16#0207
+/eiotifiedcyrillic 16#0465
+/ekatakana 16#30A8
+/ekatakanahalfwidth 16#FF74
+/ekonkargurmukhi 16#0A74
+/ekorean 16#3154
+/elcyrillic 16#043B
+/element 16#2208
+/elevencircle 16#246A
+/elevenparen 16#247E
+/elevenperiod 16#2492
+/elevenroman 16#217A
+/ellipsis 16#2026
+/ellipsisvertical 16#22EE
+/emacron 16#0113
+/emacronacute 16#1E17
+/emacrongrave 16#1E15
+/emcyrillic 16#043C
+/emdash 16#2014
+/emdashvertical 16#FE31
+/emonospace 16#FF45
+/emphasismarkarmenian 16#055B
+/emptyset 16#2205
+/enbopomofo 16#3123
+/encyrillic 16#043D
+/endash 16#2013
+/endashvertical 16#FE32
+/endescendercyrillic 16#04A3
+/eng 16#014B
+/engbopomofo 16#3125
+/enghecyrillic 16#04A5
+/enhookcyrillic 16#04C8
+/enspace 16#2002
+/eogonek 16#0119
+/eokorean 16#3153
+/eopen 16#025B
+/eopenclosed 16#029A
+/eopenreversed 16#025C
+/eopenreversedclosed 16#025E
+/eopenreversedhook 16#025D
+/eparen 16#24A0
+/epsilon 16#03B5
+/epsilontonos 16#03AD
+/equal 16#003D
+/equalmonospace 16#FF1D
+/equalsmall 16#FE66
+/equalsuperior 16#207C
+/equivalence 16#2261
+/erbopomofo 16#3126
+/ercyrillic 16#0440
+/ereversed 16#0258
+/ereversedcyrillic 16#044D
+/escyrillic 16#0441
+/esdescendercyrillic 16#04AB
+/esh 16#0283
+/eshcurl 16#0286
+/eshortdeva 16#090E
+/eshortvowelsigndeva 16#0946
+/eshreversedloop 16#01AA
+/eshsquatreversed 16#0285
+/esmallhiragana 16#3047
+/esmallkatakana 16#30A7
+/esmallkatakanahalfwidth 16#FF6A
+/estimated 16#212E
+/esuperior 16#F6EC
+/eta 16#03B7
+/etarmenian 16#0568
+/etatonos 16#03AE
+/eth 16#00F0
+/etilde 16#1EBD
+/etildebelow 16#1E1B
+/etnahtafoukhhebrew 16#0591
+/etnahtafoukhlefthebrew 16#0591
+/etnahtahebrew 16#0591
+/etnahtalefthebrew 16#0591
+/eturned 16#01DD
+/eukorean 16#3161
+/euro 16#20AC
+/evowelsignbengali 16#09C7
+/evowelsigndeva 16#0947
+/evowelsigngujarati 16#0AC7
+/exclam 16#0021
+/exclamarmenian 16#055C
+/exclamdbl 16#203C
+/exclamdown 16#00A1
+/exclamdownsmall 16#F7A1
+/exclammonospace 16#FF01
+/exclamsmall 16#F721
+/existential 16#2203
+/ezh 16#0292
+/ezhcaron 16#01EF
+/ezhcurl 16#0293
+/ezhreversed 16#01B9
+/ezhtail 16#01BA
+/f 16#0066
+/fadeva 16#095E
+/fagurmukhi 16#0A5E
+/fahrenheit 16#2109
+/fathaarabic 16#064E
+/fathalowarabic 16#064E
+/fathatanarabic 16#064B
+/fbopomofo 16#3108
+/fcircle 16#24D5
+/fdotaccent 16#1E1F
+/feharabic 16#0641
+/feharmenian 16#0586
+/fehfinalarabic 16#FED2
+/fehinitialarabic 16#FED3
+/fehmedialarabic 16#FED4
+/feicoptic 16#03E5
+/female 16#2640
+/ff 16#FB00
+/ffi 16#FB03
+/ffl 16#FB04
+/fi 16#FB01
+/fifteencircle 16#246E
+/fifteenparen 16#2482
+/fifteenperiod 16#2496
+/figuredash 16#2012
+/filledbox 16#25A0
+/filledrect 16#25AC
+/finalkaf 16#05DA
+/finalkafdagesh 16#FB3A
+/finalkafdageshhebrew 16#FB3A
+/finalkafhebrew 16#05DA
+% /finalkafqamats 16#05DA 16#05B8
+% /finalkafqamatshebrew 16#05DA 16#05B8
+% /finalkafsheva 16#05DA 16#05B0
+% /finalkafshevahebrew 16#05DA 16#05B0
+/finalmem 16#05DD
+/finalmemhebrew 16#05DD
+/finalnun 16#05DF
+/finalnunhebrew 16#05DF
+/finalpe 16#05E3
+/finalpehebrew 16#05E3
+/finaltsadi 16#05E5
+/finaltsadihebrew 16#05E5
+/firsttonechinese 16#02C9
+/fisheye 16#25C9
+/fitacyrillic 16#0473
+/five 16#0035
+/fivearabic 16#0665
+/fivebengali 16#09EB
+/fivecircle 16#2464
+/fivecircleinversesansserif 16#278E
+/fivedeva 16#096B
+/fiveeighths 16#215D
+/fivegujarati 16#0AEB
+/fivegurmukhi 16#0A6B
+/fivehackarabic 16#0665
+/fivehangzhou 16#3025
+/fiveideographicparen 16#3224
+/fiveinferior 16#2085
+/fivemonospace 16#FF15
+/fiveoldstyle 16#F735
+/fiveparen 16#2478
+/fiveperiod 16#248C
+/fivepersian 16#06F5
+/fiveroman 16#2174
+/fivesuperior 16#2075
+/fivethai 16#0E55
+/fl 16#FB02
+/florin 16#0192
+/fmonospace 16#FF46
+/fmsquare 16#3399
+/fofanthai 16#0E1F
+/fofathai 16#0E1D
+/fongmanthai 16#0E4F
+/forall 16#2200
+/four 16#0034
+/fourarabic 16#0664
+/fourbengali 16#09EA
+/fourcircle 16#2463
+/fourcircleinversesansserif 16#278D
+/fourdeva 16#096A
+/fourgujarati 16#0AEA
+/fourgurmukhi 16#0A6A
+/fourhackarabic 16#0664
+/fourhangzhou 16#3024
+/fourideographicparen 16#3223
+/fourinferior 16#2084
+/fourmonospace 16#FF14
+/fournumeratorbengali 16#09F7
+/fouroldstyle 16#F734
+/fourparen 16#2477
+/fourperiod 16#248B
+/fourpersian 16#06F4
+/fourroman 16#2173
+/foursuperior 16#2074
+/fourteencircle 16#246D
+/fourteenparen 16#2481
+/fourteenperiod 16#2495
+/fourthai 16#0E54
+/fourthtonechinese 16#02CB
+/fparen 16#24A1
+/fraction 16#2044
+/franc 16#20A3
+/g 16#0067
+/gabengali 16#0997
+/gacute 16#01F5
+/gadeva 16#0917
+/gafarabic 16#06AF
+/gaffinalarabic 16#FB93
+/gafinitialarabic 16#FB94
+/gafmedialarabic 16#FB95
+/gagujarati 16#0A97
+/gagurmukhi 16#0A17
+/gahiragana 16#304C
+/gakatakana 16#30AC
+/gamma 16#03B3
+/gammalatinsmall 16#0263
+/gammasuperior 16#02E0
+/gangiacoptic 16#03EB
+/gbopomofo 16#310D
+/gbreve 16#011F
+/gcaron 16#01E7
+/gcedilla 16#0123
+/gcircle 16#24D6
+/gcircumflex 16#011D
+/gcommaaccent 16#0123
+/gdot 16#0121
+/gdotaccent 16#0121
+/gecyrillic 16#0433
+/gehiragana 16#3052
+/gekatakana 16#30B2
+/geometricallyequal 16#2251
+/gereshaccenthebrew 16#059C
+/gereshhebrew 16#05F3
+/gereshmuqdamhebrew 16#059D
+/germandbls 16#00DF
+/gershayimaccenthebrew 16#059E
+/gershayimhebrew 16#05F4
+/getamark 16#3013
+/ghabengali 16#0998
+/ghadarmenian 16#0572
+/ghadeva 16#0918
+/ghagujarati 16#0A98
+/ghagurmukhi 16#0A18
+/ghainarabic 16#063A
+/ghainfinalarabic 16#FECE
+/ghaininitialarabic 16#FECF
+/ghainmedialarabic 16#FED0
+/ghemiddlehookcyrillic 16#0495
+/ghestrokecyrillic 16#0493
+/gheupturncyrillic 16#0491
+/ghhadeva 16#095A
+/ghhagurmukhi 16#0A5A
+/ghook 16#0260
+/ghzsquare 16#3393
+/gihiragana 16#304E
+/gikatakana 16#30AE
+/gimarmenian 16#0563
+/gimel 16#05D2
+/gimeldagesh 16#FB32
+/gimeldageshhebrew 16#FB32
+/gimelhebrew 16#05D2
+/gjecyrillic 16#0453
+/glottalinvertedstroke 16#01BE
+/glottalstop 16#0294
+/glottalstopinverted 16#0296
+/glottalstopmod 16#02C0
+/glottalstopreversed 16#0295
+/glottalstopreversedmod 16#02C1
+/glottalstopreversedsuperior 16#02E4
+/glottalstopstroke 16#02A1
+/glottalstopstrokereversed 16#02A2
+/gmacron 16#1E21
+/gmonospace 16#FF47
+/gohiragana 16#3054
+/gokatakana 16#30B4
+/gparen 16#24A2
+/gpasquare 16#33AC
+/gradient 16#2207
+/grave 16#0060
+/gravebelowcmb 16#0316
+/gravecmb 16#0300
+/gravecomb 16#0300
+/gravedeva 16#0953
+/gravelowmod 16#02CE
+/gravemonospace 16#FF40
+/gravetonecmb 16#0340
+/greater 16#003E
+/greaterequal 16#2265
+/greaterequalorless 16#22DB
+/greatermonospace 16#FF1E
+/greaterorequivalent 16#2273
+/greaterorless 16#2277
+/greateroverequal 16#2267
+/greatersmall 16#FE65
+/gscript 16#0261
+/gstroke 16#01E5
+/guhiragana 16#3050
+/guillemotleft 16#00AB
+/guillemotright 16#00BB
+/guilsinglleft 16#2039
+/guilsinglright 16#203A
+/gukatakana 16#30B0
+/guramusquare 16#3318
+/gysquare 16#33C9
+/h 16#0068
+/haabkhasiancyrillic 16#04A9
+/haaltonearabic 16#06C1
+/habengali 16#09B9
+/hadescendercyrillic 16#04B3
+/hadeva 16#0939
+/hagujarati 16#0AB9
+/hagurmukhi 16#0A39
+/haharabic 16#062D
+/hahfinalarabic 16#FEA2
+/hahinitialarabic 16#FEA3
+/hahiragana 16#306F
+/hahmedialarabic 16#FEA4
+/haitusquare 16#332A
+/hakatakana 16#30CF
+/hakatakanahalfwidth 16#FF8A
+/halantgurmukhi 16#0A4D
+/hamzaarabic 16#0621
+% /hamzadammaarabic 16#0621 16#064F
+% /hamzadammatanarabic 16#0621 16#064C
+% /hamzafathaarabic 16#0621 16#064E
+% /hamzafathatanarabic 16#0621 16#064B
+/hamzalowarabic 16#0621
+% /hamzalowkasraarabic 16#0621 16#0650
+% /hamzalowkasratanarabic 16#0621 16#064D
+% /hamzasukunarabic 16#0621 16#0652
+/hangulfiller 16#3164
+/hardsigncyrillic 16#044A
+/harpoonleftbarbup 16#21BC
+/harpoonrightbarbup 16#21C0
+/hasquare 16#33CA
+/hatafpatah 16#05B2
+/hatafpatah16 16#05B2
+/hatafpatah23 16#05B2
+/hatafpatah2f 16#05B2
+/hatafpatahhebrew 16#05B2
+/hatafpatahnarrowhebrew 16#05B2
+/hatafpatahquarterhebrew 16#05B2
+/hatafpatahwidehebrew 16#05B2
+/hatafqamats 16#05B3
+/hatafqamats1b 16#05B3
+/hatafqamats28 16#05B3
+/hatafqamats34 16#05B3
+/hatafqamatshebrew 16#05B3
+/hatafqamatsnarrowhebrew 16#05B3
+/hatafqamatsquarterhebrew 16#05B3
+/hatafqamatswidehebrew 16#05B3
+/hatafsegol 16#05B1
+/hatafsegol17 16#05B1
+/hatafsegol24 16#05B1
+/hatafsegol30 16#05B1
+/hatafsegolhebrew 16#05B1
+/hatafsegolnarrowhebrew 16#05B1
+/hatafsegolquarterhebrew 16#05B1
+/hatafsegolwidehebrew 16#05B1
+/hbar 16#0127
+/hbopomofo 16#310F
+/hbrevebelow 16#1E2B
+/hcedilla 16#1E29
+/hcircle 16#24D7
+/hcircumflex 16#0125
+/hdieresis 16#1E27
+/hdotaccent 16#1E23
+/hdotbelow 16#1E25
+/he 16#05D4
+/heart 16#2665
+/heartsuitblack 16#2665
+/heartsuitwhite 16#2661
+/hedagesh 16#FB34
+/hedageshhebrew 16#FB34
+/hehaltonearabic 16#06C1
+/heharabic 16#0647
+/hehebrew 16#05D4
+/hehfinalaltonearabic 16#FBA7
+/hehfinalalttwoarabic 16#FEEA
+/hehfinalarabic 16#FEEA
+/hehhamzaabovefinalarabic 16#FBA5
+/hehhamzaaboveisolatedarabic 16#FBA4
+/hehinitialaltonearabic 16#FBA8
+/hehinitialarabic 16#FEEB
+/hehiragana 16#3078
+/hehmedialaltonearabic 16#FBA9
+/hehmedialarabic 16#FEEC
+/heiseierasquare 16#337B
+/hekatakana 16#30D8
+/hekatakanahalfwidth 16#FF8D
+/hekutaarusquare 16#3336
+/henghook 16#0267
+/herutusquare 16#3339
+/het 16#05D7
+/hethebrew 16#05D7
+/hhook 16#0266
+/hhooksuperior 16#02B1
+/hieuhacirclekorean 16#327B
+/hieuhaparenkorean 16#321B
+/hieuhcirclekorean 16#326D
+/hieuhkorean 16#314E
+/hieuhparenkorean 16#320D
+/hihiragana 16#3072
+/hikatakana 16#30D2
+/hikatakanahalfwidth 16#FF8B
+/hiriq 16#05B4
+/hiriq14 16#05B4
+/hiriq21 16#05B4
+/hiriq2d 16#05B4
+/hiriqhebrew 16#05B4
+/hiriqnarrowhebrew 16#05B4
+/hiriqquarterhebrew 16#05B4
+/hiriqwidehebrew 16#05B4
+/hlinebelow 16#1E96
+/hmonospace 16#FF48
+/hoarmenian 16#0570
+/hohipthai 16#0E2B
+/hohiragana 16#307B
+/hokatakana 16#30DB
+/hokatakanahalfwidth 16#FF8E
+/holam 16#05B9
+/holam19 16#05B9
+/holam26 16#05B9
+/holam32 16#05B9
+/holamhebrew 16#05B9
+/holamnarrowhebrew 16#05B9
+/holamquarterhebrew 16#05B9
+/holamwidehebrew 16#05B9
+/honokhukthai 16#0E2E
+/hookabovecomb 16#0309
+/hookcmb 16#0309
+/hookpalatalizedbelowcmb 16#0321
+/hookretroflexbelowcmb 16#0322
+/hoonsquare 16#3342
+/horicoptic 16#03E9
+/horizontalbar 16#2015
+/horncmb 16#031B
+/hotsprings 16#2668
+/house 16#2302
+/hparen 16#24A3
+/hsuperior 16#02B0
+/hturned 16#0265
+/huhiragana 16#3075
+/huiitosquare 16#3333
+/hukatakana 16#30D5
+/hukatakanahalfwidth 16#FF8C
+/hungarumlaut 16#02DD
+/hungarumlautcmb 16#030B
+/hv 16#0195
+/hyphen 16#002D
+/hypheninferior 16#F6E5
+/hyphenmonospace 16#FF0D
+/hyphensmall 16#FE63
+/hyphensuperior 16#F6E6
+/hyphentwo 16#2010
+/i 16#0069
+/iacute 16#00ED
+/iacyrillic 16#044F
+/ibengali 16#0987
+/ibopomofo 16#3127
+/ibreve 16#012D
+/icaron 16#01D0
+/icircle 16#24D8
+/icircumflex 16#00EE
+/icyrillic 16#0456
+/idblgrave 16#0209
+/ideographearthcircle 16#328F
+/ideographfirecircle 16#328B
+/ideographicallianceparen 16#323F
+/ideographiccallparen 16#323A
+/ideographiccentrecircle 16#32A5
+/ideographicclose 16#3006
+/ideographiccomma 16#3001
+/ideographiccommaleft 16#FF64
+/ideographiccongratulationparen 16#3237
+/ideographiccorrectcircle 16#32A3
+/ideographicearthparen 16#322F
+/ideographicenterpriseparen 16#323D
+/ideographicexcellentcircle 16#329D
+/ideographicfestivalparen 16#3240
+/ideographicfinancialcircle 16#3296
+/ideographicfinancialparen 16#3236
+/ideographicfireparen 16#322B
+/ideographichaveparen 16#3232
+/ideographichighcircle 16#32A4
+/ideographiciterationmark 16#3005
+/ideographiclaborcircle 16#3298
+/ideographiclaborparen 16#3238
+/ideographicleftcircle 16#32A7
+/ideographiclowcircle 16#32A6
+/ideographicmedicinecircle 16#32A9
+/ideographicmetalparen 16#322E
+/ideographicmoonparen 16#322A
+/ideographicnameparen 16#3234
+/ideographicperiod 16#3002
+/ideographicprintcircle 16#329E
+/ideographicreachparen 16#3243
+/ideographicrepresentparen 16#3239
+/ideographicresourceparen 16#323E
+/ideographicrightcircle 16#32A8
+/ideographicsecretcircle 16#3299
+/ideographicselfparen 16#3242
+/ideographicsocietyparen 16#3233
+/ideographicspace 16#3000
+/ideographicspecialparen 16#3235
+/ideographicstockparen 16#3231
+/ideographicstudyparen 16#323B
+/ideographicsunparen 16#3230
+/ideographicsuperviseparen 16#323C
+/ideographicwaterparen 16#322C
+/ideographicwoodparen 16#322D
+/ideographiczero 16#3007
+/ideographmetalcircle 16#328E
+/ideographmooncircle 16#328A
+/ideographnamecircle 16#3294
+/ideographsuncircle 16#3290
+/ideographwatercircle 16#328C
+/ideographwoodcircle 16#328D
+/ideva 16#0907
+/idieresis 16#00EF
+/idieresisacute 16#1E2F
+/idieresiscyrillic 16#04E5
+/idotbelow 16#1ECB
+/iebrevecyrillic 16#04D7
+/iecyrillic 16#0435
+/ieungacirclekorean 16#3275
+/ieungaparenkorean 16#3215
+/ieungcirclekorean 16#3267
+/ieungkorean 16#3147
+/ieungparenkorean 16#3207
+/igrave 16#00EC
+/igujarati 16#0A87
+/igurmukhi 16#0A07
+/ihiragana 16#3044
+/ihookabove 16#1EC9
+/iibengali 16#0988
+/iicyrillic 16#0438
+/iideva 16#0908
+/iigujarati 16#0A88
+/iigurmukhi 16#0A08
+/iimatragurmukhi 16#0A40
+/iinvertedbreve 16#020B
+/iishortcyrillic 16#0439
+/iivowelsignbengali 16#09C0
+/iivowelsigndeva 16#0940
+/iivowelsigngujarati 16#0AC0
+/ij 16#0133
+/ikatakana 16#30A4
+/ikatakanahalfwidth 16#FF72
+/ikorean 16#3163
+/ilde 16#02DC
+/iluyhebrew 16#05AC
+/imacron 16#012B
+/imacroncyrillic 16#04E3
+/imageorapproximatelyequal 16#2253
+/imatragurmukhi 16#0A3F
+/imonospace 16#FF49
+/increment 16#2206
+/infinity 16#221E
+/iniarmenian 16#056B
+/integral 16#222B
+/integralbottom 16#2321
+/integralbt 16#2321
+/integralex 16#F8F5
+/integraltop 16#2320
+/integraltp 16#2320
+/intersection 16#2229
+/intisquare 16#3305
+/invbullet 16#25D8
+/invcircle 16#25D9
+/invsmileface 16#263B
+/iocyrillic 16#0451
+/iogonek 16#012F
+/iota 16#03B9
+/iotadieresis 16#03CA
+/iotadieresistonos 16#0390
+/iotalatin 16#0269
+/iotatonos 16#03AF
+/iparen 16#24A4
+/irigurmukhi 16#0A72
+/ismallhiragana 16#3043
+/ismallkatakana 16#30A3
+/ismallkatakanahalfwidth 16#FF68
+/issharbengali 16#09FA
+/istroke 16#0268
+/isuperior 16#F6ED
+/iterationhiragana 16#309D
+/iterationkatakana 16#30FD
+/itilde 16#0129
+/itildebelow 16#1E2D
+/iubopomofo 16#3129
+/iucyrillic 16#044E
+/ivowelsignbengali 16#09BF
+/ivowelsigndeva 16#093F
+/ivowelsigngujarati 16#0ABF
+/izhitsacyrillic 16#0475
+/izhitsadblgravecyrillic 16#0477
+/j 16#006A
+/jaarmenian 16#0571
+/jabengali 16#099C
+/jadeva 16#091C
+/jagujarati 16#0A9C
+/jagurmukhi 16#0A1C
+/jbopomofo 16#3110
+/jcaron 16#01F0
+/jcircle 16#24D9
+/jcircumflex 16#0135
+/jcrossedtail 16#029D
+/jdotlessstroke 16#025F
+/jecyrillic 16#0458
+/jeemarabic 16#062C
+/jeemfinalarabic 16#FE9E
+/jeeminitialarabic 16#FE9F
+/jeemmedialarabic 16#FEA0
+/jeharabic 16#0698
+/jehfinalarabic 16#FB8B
+/jhabengali 16#099D
+/jhadeva 16#091D
+/jhagujarati 16#0A9D
+/jhagurmukhi 16#0A1D
+/jheharmenian 16#057B
+/jis 16#3004
+/jmonospace 16#FF4A
+/jparen 16#24A5
+/jsuperior 16#02B2
+/k 16#006B
+/kabashkircyrillic 16#04A1
+/kabengali 16#0995
+/kacute 16#1E31
+/kacyrillic 16#043A
+/kadescendercyrillic 16#049B
+/kadeva 16#0915
+/kaf 16#05DB
+/kafarabic 16#0643
+/kafdagesh 16#FB3B
+/kafdageshhebrew 16#FB3B
+/kaffinalarabic 16#FEDA
+/kafhebrew 16#05DB
+/kafinitialarabic 16#FEDB
+/kafmedialarabic 16#FEDC
+/kafrafehebrew 16#FB4D
+/kagujarati 16#0A95
+/kagurmukhi 16#0A15
+/kahiragana 16#304B
+/kahookcyrillic 16#04C4
+/kakatakana 16#30AB
+/kakatakanahalfwidth 16#FF76
+/kappa 16#03BA
+/kappasymbolgreek 16#03F0
+/kapyeounmieumkorean 16#3171
+/kapyeounphieuphkorean 16#3184
+/kapyeounpieupkorean 16#3178
+/kapyeounssangpieupkorean 16#3179
+/karoriisquare 16#330D
+/kashidaautoarabic 16#0640
+/kashidaautonosidebearingarabic 16#0640
+/kasmallkatakana 16#30F5
+/kasquare 16#3384
+/kasraarabic 16#0650
+/kasratanarabic 16#064D
+/kastrokecyrillic 16#049F
+/katahiraprolongmarkhalfwidth 16#FF70
+/kaverticalstrokecyrillic 16#049D
+/kbopomofo 16#310E
+/kcalsquare 16#3389
+/kcaron 16#01E9
+/kcedilla 16#0137
+/kcircle 16#24DA
+/kcommaaccent 16#0137
+/kdotbelow 16#1E33
+/keharmenian 16#0584
+/kehiragana 16#3051
+/kekatakana 16#30B1
+/kekatakanahalfwidth 16#FF79
+/kenarmenian 16#056F
+/kesmallkatakana 16#30F6
+/kgreenlandic 16#0138
+/khabengali 16#0996
+/khacyrillic 16#0445
+/khadeva 16#0916
+/khagujarati 16#0A96
+/khagurmukhi 16#0A16
+/khaharabic 16#062E
+/khahfinalarabic 16#FEA6
+/khahinitialarabic 16#FEA7
+/khahmedialarabic 16#FEA8
+/kheicoptic 16#03E7
+/khhadeva 16#0959
+/khhagurmukhi 16#0A59
+/khieukhacirclekorean 16#3278
+/khieukhaparenkorean 16#3218
+/khieukhcirclekorean 16#326A
+/khieukhkorean 16#314B
+/khieukhparenkorean 16#320A
+/khokhaithai 16#0E02
+/khokhonthai 16#0E05
+/khokhuatthai 16#0E03
+/khokhwaithai 16#0E04
+/khomutthai 16#0E5B
+/khook 16#0199
+/khorakhangthai 16#0E06
+/khzsquare 16#3391
+/kihiragana 16#304D
+/kikatakana 16#30AD
+/kikatakanahalfwidth 16#FF77
+/kiroguramusquare 16#3315
+/kiromeetorusquare 16#3316
+/kirosquare 16#3314
+/kiyeokacirclekorean 16#326E
+/kiyeokaparenkorean 16#320E
+/kiyeokcirclekorean 16#3260
+/kiyeokkorean 16#3131
+/kiyeokparenkorean 16#3200
+/kiyeoksioskorean 16#3133
+/kjecyrillic 16#045C
+/klinebelow 16#1E35
+/klsquare 16#3398
+/kmcubedsquare 16#33A6
+/kmonospace 16#FF4B
+/kmsquaredsquare 16#33A2
+/kohiragana 16#3053
+/kohmsquare 16#33C0
+/kokaithai 16#0E01
+/kokatakana 16#30B3
+/kokatakanahalfwidth 16#FF7A
+/kooposquare 16#331E
+/koppacyrillic 16#0481
+/koreanstandardsymbol 16#327F
+/koroniscmb 16#0343
+/kparen 16#24A6
+/kpasquare 16#33AA
+/ksicyrillic 16#046F
+/ktsquare 16#33CF
+/kturned 16#029E
+/kuhiragana 16#304F
+/kukatakana 16#30AF
+/kukatakanahalfwidth 16#FF78
+/kvsquare 16#33B8
+/kwsquare 16#33BE
+/l 16#006C
+/labengali 16#09B2
+/lacute 16#013A
+/ladeva 16#0932
+/lagujarati 16#0AB2
+/lagurmukhi 16#0A32
+/lakkhangyaothai 16#0E45
+/lamaleffinalarabic 16#FEFC
+/lamalefhamzaabovefinalarabic 16#FEF8
+/lamalefhamzaaboveisolatedarabic 16#FEF7
+/lamalefhamzabelowfinalarabic 16#FEFA
+/lamalefhamzabelowisolatedarabic 16#FEF9
+/lamalefisolatedarabic 16#FEFB
+/lamalefmaddaabovefinalarabic 16#FEF6
+/lamalefmaddaaboveisolatedarabic 16#FEF5
+/lamarabic 16#0644
+/lambda 16#03BB
+/lambdastroke 16#019B
+/lamed 16#05DC
+/lameddagesh 16#FB3C
+/lameddageshhebrew 16#FB3C
+/lamedhebrew 16#05DC
+% /lamedholam 16#05DC 16#05B9
+% /lamedholamdagesh 16#05DC 16#05B9 16#05BC
+% /lamedholamdageshhebrew 16#05DC 16#05B9 16#05BC
+% /lamedholamhebrew 16#05DC 16#05B9
+/lamfinalarabic 16#FEDE
+/lamhahinitialarabic 16#FCCA
+/laminitialarabic 16#FEDF
+/lamjeeminitialarabic 16#FCC9
+/lamkhahinitialarabic 16#FCCB
+/lamlamhehisolatedarabic 16#FDF2
+/lammedialarabic 16#FEE0
+/lammeemhahinitialarabic 16#FD88
+/lammeeminitialarabic 16#FCCC
+% /lammeemjeeminitialarabic 16#FEDF 16#FEE4 16#FEA0
+% /lammeemkhahinitialarabic 16#FEDF 16#FEE4 16#FEA8
+/largecircle 16#25EF
+/lbar 16#019A
+/lbelt 16#026C
+/lbopomofo 16#310C
+/lcaron 16#013E
+/lcedilla 16#013C
+/lcircle 16#24DB
+/lcircumflexbelow 16#1E3D
+/lcommaaccent 16#013C
+/ldot 16#0140
+/ldotaccent 16#0140
+/ldotbelow 16#1E37
+/ldotbelowmacron 16#1E39
+/leftangleabovecmb 16#031A
+/lefttackbelowcmb 16#0318
+/less 16#003C
+/lessequal 16#2264
+/lessequalorgreater 16#22DA
+/lessmonospace 16#FF1C
+/lessorequivalent 16#2272
+/lessorgreater 16#2276
+/lessoverequal 16#2266
+/lesssmall 16#FE64
+/lezh 16#026E
+/lfblock 16#258C
+/lhookretroflex 16#026D
+/lira 16#20A4
+/liwnarmenian 16#056C
+/lj 16#01C9
+/ljecyrillic 16#0459
+/ll 16#F6C0
+/lladeva 16#0933
+/llagujarati 16#0AB3
+/llinebelow 16#1E3B
+/llladeva 16#0934
+/llvocalicbengali 16#09E1
+/llvocalicdeva 16#0961
+/llvocalicvowelsignbengali 16#09E3
+/llvocalicvowelsigndeva 16#0963
+/lmiddletilde 16#026B
+/lmonospace 16#FF4C
+/lmsquare 16#33D0
+/lochulathai 16#0E2C
+/logicaland 16#2227
+/logicalnot 16#00AC
+/logicalnotreversed 16#2310
+/logicalor 16#2228
+/lolingthai 16#0E25
+/longs 16#017F
+/lowlinecenterline 16#FE4E
+/lowlinecmb 16#0332
+/lowlinedashed 16#FE4D
+/lozenge 16#25CA
+/lparen 16#24A7
+/lslash 16#0142
+/lsquare 16#2113
+/lsuperior 16#F6EE
+/ltshade 16#2591
+/luthai 16#0E26
+/lvocalicbengali 16#098C
+/lvocalicdeva 16#090C
+/lvocalicvowelsignbengali 16#09E2
+/lvocalicvowelsigndeva 16#0962
+/lxsquare 16#33D3
+/m 16#006D
+/mabengali 16#09AE
+/macron 16#00AF
+/macronbelowcmb 16#0331
+/macroncmb 16#0304
+/macronlowmod 16#02CD
+/macronmonospace 16#FFE3
+/macute 16#1E3F
+/madeva 16#092E
+/magujarati 16#0AAE
+/magurmukhi 16#0A2E
+/mahapakhhebrew 16#05A4
+/mahapakhlefthebrew 16#05A4
+/mahiragana 16#307E
+/maichattawalowleftthai 16#F895
+/maichattawalowrightthai 16#F894
+/maichattawathai 16#0E4B
+/maichattawaupperleftthai 16#F893
+/maieklowleftthai 16#F88C
+/maieklowrightthai 16#F88B
+/maiekthai 16#0E48
+/maiekupperleftthai 16#F88A
+/maihanakatleftthai 16#F884
+/maihanakatthai 16#0E31
+/maitaikhuleftthai 16#F889
+/maitaikhuthai 16#0E47
+/maitholowleftthai 16#F88F
+/maitholowrightthai 16#F88E
+/maithothai 16#0E49
+/maithoupperleftthai 16#F88D
+/maitrilowleftthai 16#F892
+/maitrilowrightthai 16#F891
+/maitrithai 16#0E4A
+/maitriupperleftthai 16#F890
+/maiyamokthai 16#0E46
+/makatakana 16#30DE
+/makatakanahalfwidth 16#FF8F
+/male 16#2642
+/mansyonsquare 16#3347
+/maqafhebrew 16#05BE
+/mars 16#2642
+/masoracirclehebrew 16#05AF
+/masquare 16#3383
+/mbopomofo 16#3107
+/mbsquare 16#33D4
+/mcircle 16#24DC
+/mcubedsquare 16#33A5
+/mdotaccent 16#1E41
+/mdotbelow 16#1E43
+/meemarabic 16#0645
+/meemfinalarabic 16#FEE2
+/meeminitialarabic 16#FEE3
+/meemmedialarabic 16#FEE4
+/meemmeeminitialarabic 16#FCD1
+/meemmeemisolatedarabic 16#FC48
+/meetorusquare 16#334D
+/mehiragana 16#3081
+/meizierasquare 16#337E
+/mekatakana 16#30E1
+/mekatakanahalfwidth 16#FF92
+/mem 16#05DE
+/memdagesh 16#FB3E
+/memdageshhebrew 16#FB3E
+/memhebrew 16#05DE
+/menarmenian 16#0574
+/merkhahebrew 16#05A5
+/merkhakefulahebrew 16#05A6
+/merkhakefulalefthebrew 16#05A6
+/merkhalefthebrew 16#05A5
+/mhook 16#0271
+/mhzsquare 16#3392
+/middledotkatakanahalfwidth 16#FF65
+/middot 16#00B7
+/mieumacirclekorean 16#3272
+/mieumaparenkorean 16#3212
+/mieumcirclekorean 16#3264
+/mieumkorean 16#3141
+/mieumpansioskorean 16#3170
+/mieumparenkorean 16#3204
+/mieumpieupkorean 16#316E
+/mieumsioskorean 16#316F
+/mihiragana 16#307F
+/mikatakana 16#30DF
+/mikatakanahalfwidth 16#FF90
+/minus 16#2212
+/minusbelowcmb 16#0320
+/minuscircle 16#2296
+/minusmod 16#02D7
+/minusplus 16#2213
+/minute 16#2032
+/miribaarusquare 16#334A
+/mirisquare 16#3349
+/mlonglegturned 16#0270
+/mlsquare 16#3396
+/mmcubedsquare 16#33A3
+/mmonospace 16#FF4D
+/mmsquaredsquare 16#339F
+/mohiragana 16#3082
+/mohmsquare 16#33C1
+/mokatakana 16#30E2
+/mokatakanahalfwidth 16#FF93
+/molsquare 16#33D6
+/momathai 16#0E21
+/moverssquare 16#33A7
+/moverssquaredsquare 16#33A8
+/mparen 16#24A8
+/mpasquare 16#33AB
+/mssquare 16#33B3
+/msuperior 16#F6EF
+/mturned 16#026F
+/mu 16#00B5
+/mu1 16#00B5
+/muasquare 16#3382
+/muchgreater 16#226B
+/muchless 16#226A
+/mufsquare 16#338C
+/mugreek 16#03BC
+/mugsquare 16#338D
+/muhiragana 16#3080
+/mukatakana 16#30E0
+/mukatakanahalfwidth 16#FF91
+/mulsquare 16#3395
+/multiply 16#00D7
+/mumsquare 16#339B
+/munahhebrew 16#05A3
+/munahlefthebrew 16#05A3
+/musicalnote 16#266A
+/musicalnotedbl 16#266B
+/musicflatsign 16#266D
+/musicsharpsign 16#266F
+/mussquare 16#33B2
+/muvsquare 16#33B6
+/muwsquare 16#33BC
+/mvmegasquare 16#33B9
+/mvsquare 16#33B7
+/mwmegasquare 16#33BF
+/mwsquare 16#33BD
+/n 16#006E
+/nabengali 16#09A8
+/nabla 16#2207
+/nacute 16#0144
+/nadeva 16#0928
+/nagujarati 16#0AA8
+/nagurmukhi 16#0A28
+/nahiragana 16#306A
+/nakatakana 16#30CA
+/nakatakanahalfwidth 16#FF85
+/napostrophe 16#0149
+/nasquare 16#3381
+/nbopomofo 16#310B
+/nbspace 16#00A0
+/ncaron 16#0148
+/ncedilla 16#0146
+/ncircle 16#24DD
+/ncircumflexbelow 16#1E4B
+/ncommaaccent 16#0146
+/ndotaccent 16#1E45
+/ndotbelow 16#1E47
+/nehiragana 16#306D
+/nekatakana 16#30CD
+/nekatakanahalfwidth 16#FF88
+/newsheqelsign 16#20AA
+/nfsquare 16#338B
+/ngabengali 16#0999
+/ngadeva 16#0919
+/ngagujarati 16#0A99
+/ngagurmukhi 16#0A19
+/ngonguthai 16#0E07
+/nhiragana 16#3093
+/nhookleft 16#0272
+/nhookretroflex 16#0273
+/nieunacirclekorean 16#326F
+/nieunaparenkorean 16#320F
+/nieuncieuckorean 16#3135
+/nieuncirclekorean 16#3261
+/nieunhieuhkorean 16#3136
+/nieunkorean 16#3134
+/nieunpansioskorean 16#3168
+/nieunparenkorean 16#3201
+/nieunsioskorean 16#3167
+/nieuntikeutkorean 16#3166
+/nihiragana 16#306B
+/nikatakana 16#30CB
+/nikatakanahalfwidth 16#FF86
+/nikhahitleftthai 16#F899
+/nikhahitthai 16#0E4D
+/nine 16#0039
+/ninearabic 16#0669
+/ninebengali 16#09EF
+/ninecircle 16#2468
+/ninecircleinversesansserif 16#2792
+/ninedeva 16#096F
+/ninegujarati 16#0AEF
+/ninegurmukhi 16#0A6F
+/ninehackarabic 16#0669
+/ninehangzhou 16#3029
+/nineideographicparen 16#3228
+/nineinferior 16#2089
+/ninemonospace 16#FF19
+/nineoldstyle 16#F739
+/nineparen 16#247C
+/nineperiod 16#2490
+/ninepersian 16#06F9
+/nineroman 16#2178
+/ninesuperior 16#2079
+/nineteencircle 16#2472
+/nineteenparen 16#2486
+/nineteenperiod 16#249A
+/ninethai 16#0E59
+/nj 16#01CC
+/njecyrillic 16#045A
+/nkatakana 16#30F3
+/nkatakanahalfwidth 16#FF9D
+/nlegrightlong 16#019E
+/nlinebelow 16#1E49
+/nmonospace 16#FF4E
+/nmsquare 16#339A
+/nnabengali 16#09A3
+/nnadeva 16#0923
+/nnagujarati 16#0AA3
+/nnagurmukhi 16#0A23
+/nnnadeva 16#0929
+/nohiragana 16#306E
+/nokatakana 16#30CE
+/nokatakanahalfwidth 16#FF89
+/nonbreakingspace 16#00A0
+/nonenthai 16#0E13
+/nonuthai 16#0E19
+/noonarabic 16#0646
+/noonfinalarabic 16#FEE6
+/noonghunnaarabic 16#06BA
+/noonghunnafinalarabic 16#FB9F
+% /noonhehinitialarabic 16#FEE7 16#FEEC
+/nooninitialarabic 16#FEE7
+/noonjeeminitialarabic 16#FCD2
+/noonjeemisolatedarabic 16#FC4B
+/noonmedialarabic 16#FEE8
+/noonmeeminitialarabic 16#FCD5
+/noonmeemisolatedarabic 16#FC4E
+/noonnoonfinalarabic 16#FC8D
+/notcontains 16#220C
+/notelement 16#2209
+/notelementof 16#2209
+/notequal 16#2260
+/notgreater 16#226F
+/notgreaternorequal 16#2271
+/notgreaternorless 16#2279
+/notidentical 16#2262
+/notless 16#226E
+/notlessnorequal 16#2270
+/notparallel 16#2226
+/notprecedes 16#2280
+/notsubset 16#2284
+/notsucceeds 16#2281
+/notsuperset 16#2285
+/nowarmenian 16#0576
+/nparen 16#24A9
+/nssquare 16#33B1
+/nsuperior 16#207F
+/ntilde 16#00F1
+/nu 16#03BD
+/nuhiragana 16#306C
+/nukatakana 16#30CC
+/nukatakanahalfwidth 16#FF87
+/nuktabengali 16#09BC
+/nuktadeva 16#093C
+/nuktagujarati 16#0ABC
+/nuktagurmukhi 16#0A3C
+/numbersign 16#0023
+/numbersignmonospace 16#FF03
+/numbersignsmall 16#FE5F
+/numeralsigngreek 16#0374
+/numeralsignlowergreek 16#0375
+/numero 16#2116
+/nun 16#05E0
+/nundagesh 16#FB40
+/nundageshhebrew 16#FB40
+/nunhebrew 16#05E0
+/nvsquare 16#33B5
+/nwsquare 16#33BB
+/nyabengali 16#099E
+/nyadeva 16#091E
+/nyagujarati 16#0A9E
+/nyagurmukhi 16#0A1E
+/o 16#006F
+/oacute 16#00F3
+/oangthai 16#0E2D
+/obarred 16#0275
+/obarredcyrillic 16#04E9
+/obarreddieresiscyrillic 16#04EB
+/obengali 16#0993
+/obopomofo 16#311B
+/obreve 16#014F
+/ocandradeva 16#0911
+/ocandragujarati 16#0A91
+/ocandravowelsigndeva 16#0949
+/ocandravowelsigngujarati 16#0AC9
+/ocaron 16#01D2
+/ocircle 16#24DE
+/ocircumflex 16#00F4
+/ocircumflexacute 16#1ED1
+/ocircumflexdotbelow 16#1ED9
+/ocircumflexgrave 16#1ED3
+/ocircumflexhookabove 16#1ED5
+/ocircumflextilde 16#1ED7
+/ocyrillic 16#043E
+/odblacute 16#0151
+/odblgrave 16#020D
+/odeva 16#0913
+/odieresis 16#00F6
+/odieresiscyrillic 16#04E7
+/odotbelow 16#1ECD
+/oe 16#0153
+/oekorean 16#315A
+/ogonek 16#02DB
+/ogonekcmb 16#0328
+/ograve 16#00F2
+/ogujarati 16#0A93
+/oharmenian 16#0585
+/ohiragana 16#304A
+/ohookabove 16#1ECF
+/ohorn 16#01A1
+/ohornacute 16#1EDB
+/ohorndotbelow 16#1EE3
+/ohorngrave 16#1EDD
+/ohornhookabove 16#1EDF
+/ohorntilde 16#1EE1
+/ohungarumlaut 16#0151
+/oi 16#01A3
+/oinvertedbreve 16#020F
+/okatakana 16#30AA
+/okatakanahalfwidth 16#FF75
+/okorean 16#3157
+/olehebrew 16#05AB
+/omacron 16#014D
+/omacronacute 16#1E53
+/omacrongrave 16#1E51
+/omdeva 16#0950
+/omega 16#03C9
+/omega1 16#03D6
+/omegacyrillic 16#0461
+/omegalatinclosed 16#0277
+/omegaroundcyrillic 16#047B
+/omegatitlocyrillic 16#047D
+/omegatonos 16#03CE
+/omgujarati 16#0AD0
+/omicron 16#03BF
+/omicrontonos 16#03CC
+/omonospace 16#FF4F
+/one 16#0031
+/onearabic 16#0661
+/onebengali 16#09E7
+/onecircle 16#2460
+/onecircleinversesansserif 16#278A
+/onedeva 16#0967
+/onedotenleader 16#2024
+/oneeighth 16#215B
+/onefitted 16#F6DC
+/onegujarati 16#0AE7
+/onegurmukhi 16#0A67
+/onehackarabic 16#0661
+/onehalf 16#00BD
+/onehangzhou 16#3021
+/oneideographicparen 16#3220
+/oneinferior 16#2081
+/onemonospace 16#FF11
+/onenumeratorbengali 16#09F4
+/oneoldstyle 16#F731
+/oneparen 16#2474
+/oneperiod 16#2488
+/onepersian 16#06F1
+/onequarter 16#00BC
+/oneroman 16#2170
+/onesuperior 16#00B9
+/onethai 16#0E51
+/onethird 16#2153
+/oogonek 16#01EB
+/oogonekmacron 16#01ED
+/oogurmukhi 16#0A13
+/oomatragurmukhi 16#0A4B
+/oopen 16#0254
+/oparen 16#24AA
+/openbullet 16#25E6
+/option 16#2325
+/ordfeminine 16#00AA
+/ordmasculine 16#00BA
+/orthogonal 16#221F
+/oshortdeva 16#0912
+/oshortvowelsigndeva 16#094A
+/oslash 16#00F8
+/oslashacute 16#01FF
+/osmallhiragana 16#3049
+/osmallkatakana 16#30A9
+/osmallkatakanahalfwidth 16#FF6B
+/ostrokeacute 16#01FF
+/osuperior 16#F6F0
+/otcyrillic 16#047F
+/otilde 16#00F5
+/otildeacute 16#1E4D
+/otildedieresis 16#1E4F
+/oubopomofo 16#3121
+/overline 16#203E
+/overlinecenterline 16#FE4A
+/overlinecmb 16#0305
+/overlinedashed 16#FE49
+/overlinedblwavy 16#FE4C
+/overlinewavy 16#FE4B
+/overscore 16#00AF
+/ovowelsignbengali 16#09CB
+/ovowelsigndeva 16#094B
+/ovowelsigngujarati 16#0ACB
+/p 16#0070
+/paampssquare 16#3380
+/paasentosquare 16#332B
+/pabengali 16#09AA
+/pacute 16#1E55
+/padeva 16#092A
+/pagedown 16#21DF
+/pageup 16#21DE
+/pagujarati 16#0AAA
+/pagurmukhi 16#0A2A
+/pahiragana 16#3071
+/paiyannoithai 16#0E2F
+/pakatakana 16#30D1
+/palatalizationcyrilliccmb 16#0484
+/palochkacyrillic 16#04C0
+/pansioskorean 16#317F
+/paragraph 16#00B6
+/parallel 16#2225
+/parenleft 16#0028
+/parenleftaltonearabic 16#FD3E
+/parenleftbt 16#F8ED
+/parenleftex 16#F8EC
+/parenleftinferior 16#208D
+/parenleftmonospace 16#FF08
+/parenleftsmall 16#FE59
+/parenleftsuperior 16#207D
+/parenlefttp 16#F8EB
+/parenleftvertical 16#FE35
+/parenright 16#0029
+/parenrightaltonearabic 16#FD3F
+/parenrightbt 16#F8F8
+/parenrightex 16#F8F7
+/parenrightinferior 16#208E
+/parenrightmonospace 16#FF09
+/parenrightsmall 16#FE5A
+/parenrightsuperior 16#207E
+/parenrighttp 16#F8F6
+/parenrightvertical 16#FE36
+/partialdiff 16#2202
+/paseqhebrew 16#05C0
+/pashtahebrew 16#0599
+/pasquare 16#33A9
+/patah 16#05B7
+/patah11 16#05B7
+/patah1d 16#05B7
+/patah2a 16#05B7
+/patahhebrew 16#05B7
+/patahnarrowhebrew 16#05B7
+/patahquarterhebrew 16#05B7
+/patahwidehebrew 16#05B7
+/pazerhebrew 16#05A1
+/pbopomofo 16#3106
+/pcircle 16#24DF
+/pdotaccent 16#1E57
+/pe 16#05E4
+/pecyrillic 16#043F
+/pedagesh 16#FB44
+/pedageshhebrew 16#FB44
+/peezisquare 16#333B
+/pefinaldageshhebrew 16#FB43
+/peharabic 16#067E
+/peharmenian 16#057A
+/pehebrew 16#05E4
+/pehfinalarabic 16#FB57
+/pehinitialarabic 16#FB58
+/pehiragana 16#307A
+/pehmedialarabic 16#FB59
+/pekatakana 16#30DA
+/pemiddlehookcyrillic 16#04A7
+/perafehebrew 16#FB4E
+/percent 16#0025
+/percentarabic 16#066A
+/percentmonospace 16#FF05
+/percentsmall 16#FE6A
+/period 16#002E
+/periodarmenian 16#0589
+/periodcentered 16#00B7
+/periodhalfwidth 16#FF61
+/periodinferior 16#F6E7
+/periodmonospace 16#FF0E
+/periodsmall 16#FE52
+/periodsuperior 16#F6E8
+/perispomenigreekcmb 16#0342
+/perpendicular 16#22A5
+/perthousand 16#2030
+/peseta 16#20A7
+/pfsquare 16#338A
+/phabengali 16#09AB
+/phadeva 16#092B
+/phagujarati 16#0AAB
+/phagurmukhi 16#0A2B
+/phi 16#03C6
+/phi1 16#03D5
+/phieuphacirclekorean 16#327A
+/phieuphaparenkorean 16#321A
+/phieuphcirclekorean 16#326C
+/phieuphkorean 16#314D
+/phieuphparenkorean 16#320C
+/philatin 16#0278
+/phinthuthai 16#0E3A
+/phisymbolgreek 16#03D5
+/phook 16#01A5
+/phophanthai 16#0E1E
+/phophungthai 16#0E1C
+/phosamphaothai 16#0E20
+/pi 16#03C0
+/pieupacirclekorean 16#3273
+/pieupaparenkorean 16#3213
+/pieupcieuckorean 16#3176
+/pieupcirclekorean 16#3265
+/pieupkiyeokkorean 16#3172
+/pieupkorean 16#3142
+/pieupparenkorean 16#3205
+/pieupsioskiyeokkorean 16#3174
+/pieupsioskorean 16#3144
+/pieupsiostikeutkorean 16#3175
+/pieupthieuthkorean 16#3177
+/pieuptikeutkorean 16#3173
+/pihiragana 16#3074
+/pikatakana 16#30D4
+/pisymbolgreek 16#03D6
+/piwrarmenian 16#0583
+/plus 16#002B
+/plusbelowcmb 16#031F
+/pluscircle 16#2295
+/plusminus 16#00B1
+/plusmod 16#02D6
+/plusmonospace 16#FF0B
+/plussmall 16#FE62
+/plussuperior 16#207A
+/pmonospace 16#FF50
+/pmsquare 16#33D8
+/pohiragana 16#307D
+/pointingindexdownwhite 16#261F
+/pointingindexleftwhite 16#261C
+/pointingindexrightwhite 16#261E
+/pointingindexupwhite 16#261D
+/pokatakana 16#30DD
+/poplathai 16#0E1B
+/postalmark 16#3012
+/postalmarkface 16#3020
+/pparen 16#24AB
+/precedes 16#227A
+/prescription 16#211E
+/primemod 16#02B9
+/primereversed 16#2035
+/product 16#220F
+/projective 16#2305
+/prolongedkana 16#30FC
+/propellor 16#2318
+/propersubset 16#2282
+/propersuperset 16#2283
+/proportion 16#2237
+/proportional 16#221D
+/psi 16#03C8
+/psicyrillic 16#0471
+/psilipneumatacyrilliccmb 16#0486
+/pssquare 16#33B0
+/puhiragana 16#3077
+/pukatakana 16#30D7
+/pvsquare 16#33B4
+/pwsquare 16#33BA
+/q 16#0071
+/qadeva 16#0958
+/qadmahebrew 16#05A8
+/qafarabic 16#0642
+/qaffinalarabic 16#FED6
+/qafinitialarabic 16#FED7
+/qafmedialarabic 16#FED8
+/qamats 16#05B8
+/qamats10 16#05B8
+/qamats1a 16#05B8
+/qamats1c 16#05B8
+/qamats27 16#05B8
+/qamats29 16#05B8
+/qamats33 16#05B8
+/qamatsde 16#05B8
+/qamatshebrew 16#05B8
+/qamatsnarrowhebrew 16#05B8
+/qamatsqatanhebrew 16#05B8
+/qamatsqatannarrowhebrew 16#05B8
+/qamatsqatanquarterhebrew 16#05B8
+/qamatsqatanwidehebrew 16#05B8
+/qamatsquarterhebrew 16#05B8
+/qamatswidehebrew 16#05B8
+/qarneyparahebrew 16#059F
+/qbopomofo 16#3111
+/qcircle 16#24E0
+/qhook 16#02A0
+/qmonospace 16#FF51
+/qof 16#05E7
+/qofdagesh 16#FB47
+/qofdageshhebrew 16#FB47
+% /qofhatafpatah 16#05E7 16#05B2
+% /qofhatafpatahhebrew 16#05E7 16#05B2
+% /qofhatafsegol 16#05E7 16#05B1
+% /qofhatafsegolhebrew 16#05E7 16#05B1
+/qofhebrew 16#05E7
+% /qofhiriq 16#05E7 16#05B4
+% /qofhiriqhebrew 16#05E7 16#05B4
+% /qofholam 16#05E7 16#05B9
+% /qofholamhebrew 16#05E7 16#05B9
+% /qofpatah 16#05E7 16#05B7
+% /qofpatahhebrew 16#05E7 16#05B7
+% /qofqamats 16#05E7 16#05B8
+% /qofqamatshebrew 16#05E7 16#05B8
+% /qofqubuts 16#05E7 16#05BB
+% /qofqubutshebrew 16#05E7 16#05BB
+% /qofsegol 16#05E7 16#05B6
+% /qofsegolhebrew 16#05E7 16#05B6
+% /qofsheva 16#05E7 16#05B0
+% /qofshevahebrew 16#05E7 16#05B0
+% /qoftsere 16#05E7 16#05B5
+% /qoftserehebrew 16#05E7 16#05B5
+/qparen 16#24AC
+/quarternote 16#2669
+/qubuts 16#05BB
+/qubuts18 16#05BB
+/qubuts25 16#05BB
+/qubuts31 16#05BB
+/qubutshebrew 16#05BB
+/qubutsnarrowhebrew 16#05BB
+/qubutsquarterhebrew 16#05BB
+/qubutswidehebrew 16#05BB
+/question 16#003F
+/questionarabic 16#061F
+/questionarmenian 16#055E
+/questiondown 16#00BF
+/questiondownsmall 16#F7BF
+/questiongreek 16#037E
+/questionmonospace 16#FF1F
+/questionsmall 16#F73F
+/quotedbl 16#0022
+/quotedblbase 16#201E
+/quotedblleft 16#201C
+/quotedblmonospace 16#FF02
+/quotedblprime 16#301E
+/quotedblprimereversed 16#301D
+/quotedblright 16#201D
+/quoteleft 16#2018
+/quoteleftreversed 16#201B
+/quotereversed 16#201B
+/quoteright 16#2019
+/quoterightn 16#0149
+/quotesinglbase 16#201A
+/quotesingle 16#0027
+/quotesinglemonospace 16#FF07
+/r 16#0072
+/raarmenian 16#057C
+/rabengali 16#09B0
+/racute 16#0155
+/radeva 16#0930
+/radical 16#221A
+/radicalex 16#F8E5
+/radoverssquare 16#33AE
+/radoverssquaredsquare 16#33AF
+/radsquare 16#33AD
+/rafe 16#05BF
+/rafehebrew 16#05BF
+/ragujarati 16#0AB0
+/ragurmukhi 16#0A30
+/rahiragana 16#3089
+/rakatakana 16#30E9
+/rakatakanahalfwidth 16#FF97
+/ralowerdiagonalbengali 16#09F1
+/ramiddlediagonalbengali 16#09F0
+/ramshorn 16#0264
+/ratio 16#2236
+/rbopomofo 16#3116
+/rcaron 16#0159
+/rcedilla 16#0157
+/rcircle 16#24E1
+/rcommaaccent 16#0157
+/rdblgrave 16#0211
+/rdotaccent 16#1E59
+/rdotbelow 16#1E5B
+/rdotbelowmacron 16#1E5D
+/referencemark 16#203B
+/reflexsubset 16#2286
+/reflexsuperset 16#2287
+/registered 16#00AE
+/registersans 16#F8E8
+/registerserif 16#F6DA
+/reharabic 16#0631
+/reharmenian 16#0580
+/rehfinalarabic 16#FEAE
+/rehiragana 16#308C
+% /rehyehaleflamarabic 16#0631 16#FEF3 16#FE8E 16#0644
+/rekatakana 16#30EC
+/rekatakanahalfwidth 16#FF9A
+/resh 16#05E8
+/reshdageshhebrew 16#FB48
+% /reshhatafpatah 16#05E8 16#05B2
+% /reshhatafpatahhebrew 16#05E8 16#05B2
+% /reshhatafsegol 16#05E8 16#05B1
+% /reshhatafsegolhebrew 16#05E8 16#05B1
+/reshhebrew 16#05E8
+% /reshhiriq 16#05E8 16#05B4
+% /reshhiriqhebrew 16#05E8 16#05B4
+% /reshholam 16#05E8 16#05B9
+% /reshholamhebrew 16#05E8 16#05B9
+% /reshpatah 16#05E8 16#05B7
+% /reshpatahhebrew 16#05E8 16#05B7
+% /reshqamats 16#05E8 16#05B8
+% /reshqamatshebrew 16#05E8 16#05B8
+% /reshqubuts 16#05E8 16#05BB
+% /reshqubutshebrew 16#05E8 16#05BB
+% /reshsegol 16#05E8 16#05B6
+% /reshsegolhebrew 16#05E8 16#05B6
+% /reshsheva 16#05E8 16#05B0
+% /reshshevahebrew 16#05E8 16#05B0
+% /reshtsere 16#05E8 16#05B5
+% /reshtserehebrew 16#05E8 16#05B5
+/reversedtilde 16#223D
+/reviahebrew 16#0597
+/reviamugrashhebrew 16#0597
+/revlogicalnot 16#2310
+/rfishhook 16#027E
+/rfishhookreversed 16#027F
+/rhabengali 16#09DD
+/rhadeva 16#095D
+/rho 16#03C1
+/rhook 16#027D
+/rhookturned 16#027B
+/rhookturnedsuperior 16#02B5
+/rhosymbolgreek 16#03F1
+/rhotichookmod 16#02DE
+/rieulacirclekorean 16#3271
+/rieulaparenkorean 16#3211
+/rieulcirclekorean 16#3263
+/rieulhieuhkorean 16#3140
+/rieulkiyeokkorean 16#313A
+/rieulkiyeoksioskorean 16#3169
+/rieulkorean 16#3139
+/rieulmieumkorean 16#313B
+/rieulpansioskorean 16#316C
+/rieulparenkorean 16#3203
+/rieulphieuphkorean 16#313F
+/rieulpieupkorean 16#313C
+/rieulpieupsioskorean 16#316B
+/rieulsioskorean 16#313D
+/rieulthieuthkorean 16#313E
+/rieultikeutkorean 16#316A
+/rieulyeorinhieuhkorean 16#316D
+/rightangle 16#221F
+/righttackbelowcmb 16#0319
+/righttriangle 16#22BF
+/rihiragana 16#308A
+/rikatakana 16#30EA
+/rikatakanahalfwidth 16#FF98
+/ring 16#02DA
+/ringbelowcmb 16#0325
+/ringcmb 16#030A
+/ringhalfleft 16#02BF
+/ringhalfleftarmenian 16#0559
+/ringhalfleftbelowcmb 16#031C
+/ringhalfleftcentered 16#02D3
+/ringhalfright 16#02BE
+/ringhalfrightbelowcmb 16#0339
+/ringhalfrightcentered 16#02D2
+/rinvertedbreve 16#0213
+/rittorusquare 16#3351
+/rlinebelow 16#1E5F
+/rlongleg 16#027C
+/rlonglegturned 16#027A
+/rmonospace 16#FF52
+/rohiragana 16#308D
+/rokatakana 16#30ED
+/rokatakanahalfwidth 16#FF9B
+/roruathai 16#0E23
+/rparen 16#24AD
+/rrabengali 16#09DC
+/rradeva 16#0931
+/rragurmukhi 16#0A5C
+/rreharabic 16#0691
+/rrehfinalarabic 16#FB8D
+/rrvocalicbengali 16#09E0
+/rrvocalicdeva 16#0960
+/rrvocalicgujarati 16#0AE0
+/rrvocalicvowelsignbengali 16#09C4
+/rrvocalicvowelsigndeva 16#0944
+/rrvocalicvowelsigngujarati 16#0AC4
+/rsuperior 16#F6F1
+/rtblock 16#2590
+/rturned 16#0279
+/rturnedsuperior 16#02B4
+/ruhiragana 16#308B
+/rukatakana 16#30EB
+/rukatakanahalfwidth 16#FF99
+/rupeemarkbengali 16#09F2
+/rupeesignbengali 16#09F3
+/rupiah 16#F6DD
+/ruthai 16#0E24
+/rvocalicbengali 16#098B
+/rvocalicdeva 16#090B
+/rvocalicgujarati 16#0A8B
+/rvocalicvowelsignbengali 16#09C3
+/rvocalicvowelsigndeva 16#0943
+/rvocalicvowelsigngujarati 16#0AC3
+/s 16#0073
+/sabengali 16#09B8
+/sacute 16#015B
+/sacutedotaccent 16#1E65
+/sadarabic 16#0635
+/sadeva 16#0938
+/sadfinalarabic 16#FEBA
+/sadinitialarabic 16#FEBB
+/sadmedialarabic 16#FEBC
+/sagujarati 16#0AB8
+/sagurmukhi 16#0A38
+/sahiragana 16#3055
+/sakatakana 16#30B5
+/sakatakanahalfwidth 16#FF7B
+/sallallahoualayhewasallamarabic 16#FDFA
+/samekh 16#05E1
+/samekhdagesh 16#FB41
+/samekhdageshhebrew 16#FB41
+/samekhhebrew 16#05E1
+/saraaathai 16#0E32
+/saraaethai 16#0E41
+/saraaimaimalaithai 16#0E44
+/saraaimaimuanthai 16#0E43
+/saraamthai 16#0E33
+/saraathai 16#0E30
+/saraethai 16#0E40
+/saraiileftthai 16#F886
+/saraiithai 16#0E35
+/saraileftthai 16#F885
+/saraithai 16#0E34
+/saraothai 16#0E42
+/saraueeleftthai 16#F888
+/saraueethai 16#0E37
+/saraueleftthai 16#F887
+/sarauethai 16#0E36
+/sarauthai 16#0E38
+/sarauuthai 16#0E39
+/sbopomofo 16#3119
+/scaron 16#0161
+/scarondotaccent 16#1E67
+/scedilla 16#015F
+/schwa 16#0259
+/schwacyrillic 16#04D9
+/schwadieresiscyrillic 16#04DB
+/schwahook 16#025A
+/scircle 16#24E2
+/scircumflex 16#015D
+/scommaaccent 16#0219
+/sdotaccent 16#1E61
+/sdotbelow 16#1E63
+/sdotbelowdotaccent 16#1E69
+/seagullbelowcmb 16#033C
+/second 16#2033
+/secondtonechinese 16#02CA
+/section 16#00A7
+/seenarabic 16#0633
+/seenfinalarabic 16#FEB2
+/seeninitialarabic 16#FEB3
+/seenmedialarabic 16#FEB4
+/segol 16#05B6
+/segol13 16#05B6
+/segol1f 16#05B6
+/segol2c 16#05B6
+/segolhebrew 16#05B6
+/segolnarrowhebrew 16#05B6
+/segolquarterhebrew 16#05B6
+/segoltahebrew 16#0592
+/segolwidehebrew 16#05B6
+/seharmenian 16#057D
+/sehiragana 16#305B
+/sekatakana 16#30BB
+/sekatakanahalfwidth 16#FF7E
+/semicolon 16#003B
+/semicolonarabic 16#061B
+/semicolonmonospace 16#FF1B
+/semicolonsmall 16#FE54
+/semivoicedmarkkana 16#309C
+/semivoicedmarkkanahalfwidth 16#FF9F
+/sentisquare 16#3322
+/sentosquare 16#3323
+/seven 16#0037
+/sevenarabic 16#0667
+/sevenbengali 16#09ED
+/sevencircle 16#2466
+/sevencircleinversesansserif 16#2790
+/sevendeva 16#096D
+/seveneighths 16#215E
+/sevengujarati 16#0AED
+/sevengurmukhi 16#0A6D
+/sevenhackarabic 16#0667
+/sevenhangzhou 16#3027
+/sevenideographicparen 16#3226
+/seveninferior 16#2087
+/sevenmonospace 16#FF17
+/sevenoldstyle 16#F737
+/sevenparen 16#247A
+/sevenperiod 16#248E
+/sevenpersian 16#06F7
+/sevenroman 16#2176
+/sevensuperior 16#2077
+/seventeencircle 16#2470
+/seventeenparen 16#2484
+/seventeenperiod 16#2498
+/seventhai 16#0E57
+/sfthyphen 16#00AD
+/shaarmenian 16#0577
+/shabengali 16#09B6
+/shacyrillic 16#0448
+/shaddaarabic 16#0651
+/shaddadammaarabic 16#FC61
+/shaddadammatanarabic 16#FC5E
+/shaddafathaarabic 16#FC60
+% /shaddafathatanarabic 16#0651 16#064B
+/shaddakasraarabic 16#FC62
+/shaddakasratanarabic 16#FC5F
+/shade 16#2592
+/shadedark 16#2593
+/shadelight 16#2591
+/shademedium 16#2592
+/shadeva 16#0936
+/shagujarati 16#0AB6
+/shagurmukhi 16#0A36
+/shalshelethebrew 16#0593
+/shbopomofo 16#3115
+/shchacyrillic 16#0449
+/sheenarabic 16#0634
+/sheenfinalarabic 16#FEB6
+/sheeninitialarabic 16#FEB7
+/sheenmedialarabic 16#FEB8
+/sheicoptic 16#03E3
+/sheqel 16#20AA
+/sheqelhebrew 16#20AA
+/sheva 16#05B0
+/sheva115 16#05B0
+/sheva15 16#05B0
+/sheva22 16#05B0
+/sheva2e 16#05B0
+/shevahebrew 16#05B0
+/shevanarrowhebrew 16#05B0
+/shevaquarterhebrew 16#05B0
+/shevawidehebrew 16#05B0
+/shhacyrillic 16#04BB
+/shimacoptic 16#03ED
+/shin 16#05E9
+/shindagesh 16#FB49
+/shindageshhebrew 16#FB49
+/shindageshshindot 16#FB2C
+/shindageshshindothebrew 16#FB2C
+/shindageshsindot 16#FB2D
+/shindageshsindothebrew 16#FB2D
+/shindothebrew 16#05C1
+/shinhebrew 16#05E9
+/shinshindot 16#FB2A
+/shinshindothebrew 16#FB2A
+/shinsindot 16#FB2B
+/shinsindothebrew 16#FB2B
+/shook 16#0282
+/sigma 16#03C3
+/sigma1 16#03C2
+/sigmafinal 16#03C2
+/sigmalunatesymbolgreek 16#03F2
+/sihiragana 16#3057
+/sikatakana 16#30B7
+/sikatakanahalfwidth 16#FF7C
+/siluqhebrew 16#05BD
+/siluqlefthebrew 16#05BD
+/similar 16#223C
+/sindothebrew 16#05C2
+/siosacirclekorean 16#3274
+/siosaparenkorean 16#3214
+/sioscieuckorean 16#317E
+/sioscirclekorean 16#3266
+/sioskiyeokkorean 16#317A
+/sioskorean 16#3145
+/siosnieunkorean 16#317B
+/siosparenkorean 16#3206
+/siospieupkorean 16#317D
+/siostikeutkorean 16#317C
+/six 16#0036
+/sixarabic 16#0666
+/sixbengali 16#09EC
+/sixcircle 16#2465
+/sixcircleinversesansserif 16#278F
+/sixdeva 16#096C
+/sixgujarati 16#0AEC
+/sixgurmukhi 16#0A6C
+/sixhackarabic 16#0666
+/sixhangzhou 16#3026
+/sixideographicparen 16#3225
+/sixinferior 16#2086
+/sixmonospace 16#FF16
+/sixoldstyle 16#F736
+/sixparen 16#2479
+/sixperiod 16#248D
+/sixpersian 16#06F6
+/sixroman 16#2175
+/sixsuperior 16#2076
+/sixteencircle 16#246F
+/sixteencurrencydenominatorbengali 16#09F9
+/sixteenparen 16#2483
+/sixteenperiod 16#2497
+/sixthai 16#0E56
+/slash 16#002F
+/slashmonospace 16#FF0F
+/slong 16#017F
+/slongdotaccent 16#1E9B
+/smileface 16#263A
+/smonospace 16#FF53
+/sofpasuqhebrew 16#05C3
+/softhyphen 16#00AD
+/softsigncyrillic 16#044C
+/sohiragana 16#305D
+/sokatakana 16#30BD
+/sokatakanahalfwidth 16#FF7F
+/soliduslongoverlaycmb 16#0338
+/solidusshortoverlaycmb 16#0337
+/sorusithai 16#0E29
+/sosalathai 16#0E28
+/sosothai 16#0E0B
+/sosuathai 16#0E2A
+/space 16#0020
+/spacehackarabic 16#0020
+/spade 16#2660
+/spadesuitblack 16#2660
+/spadesuitwhite 16#2664
+/sparen 16#24AE
+/squarebelowcmb 16#033B
+/squarecc 16#33C4
+/squarecm 16#339D
+/squarediagonalcrosshatchfill 16#25A9
+/squarehorizontalfill 16#25A4
+/squarekg 16#338F
+/squarekm 16#339E
+/squarekmcapital 16#33CE
+/squareln 16#33D1
+/squarelog 16#33D2
+/squaremg 16#338E
+/squaremil 16#33D5
+/squaremm 16#339C
+/squaremsquared 16#33A1
+/squareorthogonalcrosshatchfill 16#25A6
+/squareupperlefttolowerrightfill 16#25A7
+/squareupperrighttolowerleftfill 16#25A8
+/squareverticalfill 16#25A5
+/squarewhitewithsmallblack 16#25A3
+/srsquare 16#33DB
+/ssabengali 16#09B7
+/ssadeva 16#0937
+/ssagujarati 16#0AB7
+/ssangcieuckorean 16#3149
+/ssanghieuhkorean 16#3185
+/ssangieungkorean 16#3180
+/ssangkiyeokkorean 16#3132
+/ssangnieunkorean 16#3165
+/ssangpieupkorean 16#3143
+/ssangsioskorean 16#3146
+/ssangtikeutkorean 16#3138
+/ssuperior 16#F6F2
+/sterling 16#00A3
+/sterlingmonospace 16#FFE1
+/strokelongoverlaycmb 16#0336
+/strokeshortoverlaycmb 16#0335
+/subset 16#2282
+/subsetnotequal 16#228A
+/subsetorequal 16#2286
+/succeeds 16#227B
+/suchthat 16#220B
+/suhiragana 16#3059
+/sukatakana 16#30B9
+/sukatakanahalfwidth 16#FF7D
+/sukunarabic 16#0652
+/summation 16#2211
+/sun 16#263C
+/superset 16#2283
+/supersetnotequal 16#228B
+/supersetorequal 16#2287
+/svsquare 16#33DC
+/syouwaerasquare 16#337C
+/t 16#0074
+/tabengali 16#09A4
+/tackdown 16#22A4
+/tackleft 16#22A3
+/tadeva 16#0924
+/tagujarati 16#0AA4
+/tagurmukhi 16#0A24
+/taharabic 16#0637
+/tahfinalarabic 16#FEC2
+/tahinitialarabic 16#FEC3
+/tahiragana 16#305F
+/tahmedialarabic 16#FEC4
+/taisyouerasquare 16#337D
+/takatakana 16#30BF
+/takatakanahalfwidth 16#FF80
+/tatweelarabic 16#0640
+/tau 16#03C4
+/tav 16#05EA
+/tavdages 16#FB4A
+/tavdagesh 16#FB4A
+/tavdageshhebrew 16#FB4A
+/tavhebrew 16#05EA
+/tbar 16#0167
+/tbopomofo 16#310A
+/tcaron 16#0165
+/tccurl 16#02A8
+/tcedilla 16#0163
+/tcheharabic 16#0686
+/tchehfinalarabic 16#FB7B
+/tchehinitialarabic 16#FB7C
+/tchehmedialarabic 16#FB7D
+% /tchehmeeminitialarabic 16#FB7C 16#FEE4
+/tcircle 16#24E3
+/tcircumflexbelow 16#1E71
+/tcommaaccent 16#0163
+/tdieresis 16#1E97
+/tdotaccent 16#1E6B
+/tdotbelow 16#1E6D
+/tecyrillic 16#0442
+/tedescendercyrillic 16#04AD
+/teharabic 16#062A
+/tehfinalarabic 16#FE96
+/tehhahinitialarabic 16#FCA2
+/tehhahisolatedarabic 16#FC0C
+/tehinitialarabic 16#FE97
+/tehiragana 16#3066
+/tehjeeminitialarabic 16#FCA1
+/tehjeemisolatedarabic 16#FC0B
+/tehmarbutaarabic 16#0629
+/tehmarbutafinalarabic 16#FE94
+/tehmedialarabic 16#FE98
+/tehmeeminitialarabic 16#FCA4
+/tehmeemisolatedarabic 16#FC0E
+/tehnoonfinalarabic 16#FC73
+/tekatakana 16#30C6
+/tekatakanahalfwidth 16#FF83
+/telephone 16#2121
+/telephoneblack 16#260E
+/telishagedolahebrew 16#05A0
+/telishaqetanahebrew 16#05A9
+/tencircle 16#2469
+/tenideographicparen 16#3229
+/tenparen 16#247D
+/tenperiod 16#2491
+/tenroman 16#2179
+/tesh 16#02A7
+/tet 16#05D8
+/tetdagesh 16#FB38
+/tetdageshhebrew 16#FB38
+/tethebrew 16#05D8
+/tetsecyrillic 16#04B5
+/tevirhebrew 16#059B
+/tevirlefthebrew 16#059B
+/thabengali 16#09A5
+/thadeva 16#0925
+/thagujarati 16#0AA5
+/thagurmukhi 16#0A25
+/thalarabic 16#0630
+/thalfinalarabic 16#FEAC
+/thanthakhatlowleftthai 16#F898
+/thanthakhatlowrightthai 16#F897
+/thanthakhatthai 16#0E4C
+/thanthakhatupperleftthai 16#F896
+/theharabic 16#062B
+/thehfinalarabic 16#FE9A
+/thehinitialarabic 16#FE9B
+/thehmedialarabic 16#FE9C
+/thereexists 16#2203
+/therefore 16#2234
+/theta 16#03B8
+/theta1 16#03D1
+/thetasymbolgreek 16#03D1
+/thieuthacirclekorean 16#3279
+/thieuthaparenkorean 16#3219
+/thieuthcirclekorean 16#326B
+/thieuthkorean 16#314C
+/thieuthparenkorean 16#320B
+/thirteencircle 16#246C
+/thirteenparen 16#2480
+/thirteenperiod 16#2494
+/thonangmonthothai 16#0E11
+/thook 16#01AD
+/thophuthaothai 16#0E12
+/thorn 16#00FE
+/thothahanthai 16#0E17
+/thothanthai 16#0E10
+/thothongthai 16#0E18
+/thothungthai 16#0E16
+/thousandcyrillic 16#0482
+/thousandsseparatorarabic 16#066C
+/thousandsseparatorpersian 16#066C
+/three 16#0033
+/threearabic 16#0663
+/threebengali 16#09E9
+/threecircle 16#2462
+/threecircleinversesansserif 16#278C
+/threedeva 16#0969
+/threeeighths 16#215C
+/threegujarati 16#0AE9
+/threegurmukhi 16#0A69
+/threehackarabic 16#0663
+/threehangzhou 16#3023
+/threeideographicparen 16#3222
+/threeinferior 16#2083
+/threemonospace 16#FF13
+/threenumeratorbengali 16#09F6
+/threeoldstyle 16#F733
+/threeparen 16#2476
+/threeperiod 16#248A
+/threepersian 16#06F3
+/threequarters 16#00BE
+/threequartersemdash 16#F6DE
+/threeroman 16#2172
+/threesuperior 16#00B3
+/threethai 16#0E53
+/thzsquare 16#3394
+/tihiragana 16#3061
+/tikatakana 16#30C1
+/tikatakanahalfwidth 16#FF81
+/tikeutacirclekorean 16#3270
+/tikeutaparenkorean 16#3210
+/tikeutcirclekorean 16#3262
+/tikeutkorean 16#3137
+/tikeutparenkorean 16#3202
+/tilde 16#02DC
+/tildebelowcmb 16#0330
+/tildecmb 16#0303
+/tildecomb 16#0303
+/tildedoublecmb 16#0360
+/tildeoperator 16#223C
+/tildeoverlaycmb 16#0334
+/tildeverticalcmb 16#033E
+/timescircle 16#2297
+/tipehahebrew 16#0596
+/tipehalefthebrew 16#0596
+/tippigurmukhi 16#0A70
+/titlocyrilliccmb 16#0483
+/tiwnarmenian 16#057F
+/tlinebelow 16#1E6F
+/tmonospace 16#FF54
+/toarmenian 16#0569
+/tohiragana 16#3068
+/tokatakana 16#30C8
+/tokatakanahalfwidth 16#FF84
+/tonebarextrahighmod 16#02E5
+/tonebarextralowmod 16#02E9
+/tonebarhighmod 16#02E6
+/tonebarlowmod 16#02E8
+/tonebarmidmod 16#02E7
+/tonefive 16#01BD
+/tonesix 16#0185
+/tonetwo 16#01A8
+/tonos 16#0384
+/tonsquare 16#3327
+/topatakthai 16#0E0F
+/tortoiseshellbracketleft 16#3014
+/tortoiseshellbracketleftsmall 16#FE5D
+/tortoiseshellbracketleftvertical 16#FE39
+/tortoiseshellbracketright 16#3015
+/tortoiseshellbracketrightsmall 16#FE5E
+/tortoiseshellbracketrightvertical 16#FE3A
+/totaothai 16#0E15
+/tpalatalhook 16#01AB
+/tparen 16#24AF
+/trademark 16#2122
+/trademarksans 16#F8EA
+/trademarkserif 16#F6DB
+/tretroflexhook 16#0288
+/triagdn 16#25BC
+/triaglf 16#25C4
+/triagrt 16#25BA
+/triagup 16#25B2
+/ts 16#02A6
+/tsadi 16#05E6
+/tsadidagesh 16#FB46
+/tsadidageshhebrew 16#FB46
+/tsadihebrew 16#05E6
+/tsecyrillic 16#0446
+/tsere 16#05B5
+/tsere12 16#05B5
+/tsere1e 16#05B5
+/tsere2b 16#05B5
+/tserehebrew 16#05B5
+/tserenarrowhebrew 16#05B5
+/tserequarterhebrew 16#05B5
+/tserewidehebrew 16#05B5
+/tshecyrillic 16#045B
+/tsuperior 16#F6F3
+/ttabengali 16#099F
+/ttadeva 16#091F
+/ttagujarati 16#0A9F
+/ttagurmukhi 16#0A1F
+/tteharabic 16#0679
+/ttehfinalarabic 16#FB67
+/ttehinitialarabic 16#FB68
+/ttehmedialarabic 16#FB69
+/tthabengali 16#09A0
+/tthadeva 16#0920
+/tthagujarati 16#0AA0
+/tthagurmukhi 16#0A20
+/tturned 16#0287
+/tuhiragana 16#3064
+/tukatakana 16#30C4
+/tukatakanahalfwidth 16#FF82
+/tusmallhiragana 16#3063
+/tusmallkatakana 16#30C3
+/tusmallkatakanahalfwidth 16#FF6F
+/twelvecircle 16#246B
+/twelveparen 16#247F
+/twelveperiod 16#2493
+/twelveroman 16#217B
+/twentycircle 16#2473
+/twentyhangzhou 16#5344
+/twentyparen 16#2487
+/twentyperiod 16#249B
+/two 16#0032
+/twoarabic 16#0662
+/twobengali 16#09E8
+/twocircle 16#2461
+/twocircleinversesansserif 16#278B
+/twodeva 16#0968
+/twodotenleader 16#2025
+/twodotleader 16#2025
+/twodotleadervertical 16#FE30
+/twogujarati 16#0AE8
+/twogurmukhi 16#0A68
+/twohackarabic 16#0662
+/twohangzhou 16#3022
+/twoideographicparen 16#3221
+/twoinferior 16#2082
+/twomonospace 16#FF12
+/twonumeratorbengali 16#09F5
+/twooldstyle 16#F732
+/twoparen 16#2475
+/twoperiod 16#2489
+/twopersian 16#06F2
+/tworoman 16#2171
+/twostroke 16#01BB
+/twosuperior 16#00B2
+/twothai 16#0E52
+/twothirds 16#2154
+/u 16#0075
+/uacute 16#00FA
+/ubar 16#0289
+/ubengali 16#0989
+/ubopomofo 16#3128
+/ubreve 16#016D
+/ucaron 16#01D4
+/ucircle 16#24E4
+/ucircumflex 16#00FB
+/ucircumflexbelow 16#1E77
+/ucyrillic 16#0443
+/udattadeva 16#0951
+/udblacute 16#0171
+/udblgrave 16#0215
+/udeva 16#0909
+/udieresis 16#00FC
+/udieresisacute 16#01D8
+/udieresisbelow 16#1E73
+/udieresiscaron 16#01DA
+/udieresiscyrillic 16#04F1
+/udieresisgrave 16#01DC
+/udieresismacron 16#01D6
+/udotbelow 16#1EE5
+/ugrave 16#00F9
+/ugujarati 16#0A89
+/ugurmukhi 16#0A09
+/uhiragana 16#3046
+/uhookabove 16#1EE7
+/uhorn 16#01B0
+/uhornacute 16#1EE9
+/uhorndotbelow 16#1EF1
+/uhorngrave 16#1EEB
+/uhornhookabove 16#1EED
+/uhorntilde 16#1EEF
+/uhungarumlaut 16#0171
+/uhungarumlautcyrillic 16#04F3
+/uinvertedbreve 16#0217
+/ukatakana 16#30A6
+/ukatakanahalfwidth 16#FF73
+/ukcyrillic 16#0479
+/ukorean 16#315C
+/umacron 16#016B
+/umacroncyrillic 16#04EF
+/umacrondieresis 16#1E7B
+/umatragurmukhi 16#0A41
+/umonospace 16#FF55
+/underscore 16#005F
+/underscoredbl 16#2017
+/underscoremonospace 16#FF3F
+/underscorevertical 16#FE33
+/underscorewavy 16#FE4F
+/union 16#222A
+/universal 16#2200
+/uogonek 16#0173
+/uparen 16#24B0
+/upblock 16#2580
+/upperdothebrew 16#05C4
+/upsilon 16#03C5
+/upsilondieresis 16#03CB
+/upsilondieresistonos 16#03B0
+/upsilonlatin 16#028A
+/upsilontonos 16#03CD
+/uptackbelowcmb 16#031D
+/uptackmod 16#02D4
+/uragurmukhi 16#0A73
+/uring 16#016F
+/ushortcyrillic 16#045E
+/usmallhiragana 16#3045
+/usmallkatakana 16#30A5
+/usmallkatakanahalfwidth 16#FF69
+/ustraightcyrillic 16#04AF
+/ustraightstrokecyrillic 16#04B1
+/utilde 16#0169
+/utildeacute 16#1E79
+/utildebelow 16#1E75
+/uubengali 16#098A
+/uudeva 16#090A
+/uugujarati 16#0A8A
+/uugurmukhi 16#0A0A
+/uumatragurmukhi 16#0A42
+/uuvowelsignbengali 16#09C2
+/uuvowelsigndeva 16#0942
+/uuvowelsigngujarati 16#0AC2
+/uvowelsignbengali 16#09C1
+/uvowelsigndeva 16#0941
+/uvowelsigngujarati 16#0AC1
+/v 16#0076
+/vadeva 16#0935
+/vagujarati 16#0AB5
+/vagurmukhi 16#0A35
+/vakatakana 16#30F7
+/vav 16#05D5
+/vavdagesh 16#FB35
+/vavdagesh65 16#FB35
+/vavdageshhebrew 16#FB35
+/vavhebrew 16#05D5
+/vavholam 16#FB4B
+/vavholamhebrew 16#FB4B
+/vavvavhebrew 16#05F0
+/vavyodhebrew 16#05F1
+/vcircle 16#24E5
+/vdotbelow 16#1E7F
+/vecyrillic 16#0432
+/veharabic 16#06A4
+/vehfinalarabic 16#FB6B
+/vehinitialarabic 16#FB6C
+/vehmedialarabic 16#FB6D
+/vekatakana 16#30F9
+/venus 16#2640
+/verticalbar 16#007C
+/verticallineabovecmb 16#030D
+/verticallinebelowcmb 16#0329
+/verticallinelowmod 16#02CC
+/verticallinemod 16#02C8
+/vewarmenian 16#057E
+/vhook 16#028B
+/vikatakana 16#30F8
+/viramabengali 16#09CD
+/viramadeva 16#094D
+/viramagujarati 16#0ACD
+/visargabengali 16#0983
+/visargadeva 16#0903
+/visargagujarati 16#0A83
+/vmonospace 16#FF56
+/voarmenian 16#0578
+/voicediterationhiragana 16#309E
+/voicediterationkatakana 16#30FE
+/voicedmarkkana 16#309B
+/voicedmarkkanahalfwidth 16#FF9E
+/vokatakana 16#30FA
+/vparen 16#24B1
+/vtilde 16#1E7D
+/vturned 16#028C
+/vuhiragana 16#3094
+/vukatakana 16#30F4
+/w 16#0077
+/wacute 16#1E83
+/waekorean 16#3159
+/wahiragana 16#308F
+/wakatakana 16#30EF
+/wakatakanahalfwidth 16#FF9C
+/wakorean 16#3158
+/wasmallhiragana 16#308E
+/wasmallkatakana 16#30EE
+/wattosquare 16#3357
+/wavedash 16#301C
+/wavyunderscorevertical 16#FE34
+/wawarabic 16#0648
+/wawfinalarabic 16#FEEE
+/wawhamzaabovearabic 16#0624
+/wawhamzaabovefinalarabic 16#FE86
+/wbsquare 16#33DD
+/wcircle 16#24E6
+/wcircumflex 16#0175
+/wdieresis 16#1E85
+/wdotaccent 16#1E87
+/wdotbelow 16#1E89
+/wehiragana 16#3091
+/weierstrass 16#2118
+/wekatakana 16#30F1
+/wekorean 16#315E
+/weokorean 16#315D
+/wgrave 16#1E81
+/whitebullet 16#25E6
+/whitecircle 16#25CB
+/whitecircleinverse 16#25D9
+/whitecornerbracketleft 16#300E
+/whitecornerbracketleftvertical 16#FE43
+/whitecornerbracketright 16#300F
+/whitecornerbracketrightvertical 16#FE44
+/whitediamond 16#25C7
+/whitediamondcontainingblacksmalldiamond 16#25C8
+/whitedownpointingsmalltriangle 16#25BF
+/whitedownpointingtriangle 16#25BD
+/whiteleftpointingsmalltriangle 16#25C3
+/whiteleftpointingtriangle 16#25C1
+/whitelenticularbracketleft 16#3016
+/whitelenticularbracketright 16#3017
+/whiterightpointingsmalltriangle 16#25B9
+/whiterightpointingtriangle 16#25B7
+/whitesmallsquare 16#25AB
+/whitesmilingface 16#263A
+/whitesquare 16#25A1
+/whitestar 16#2606
+/whitetelephone 16#260F
+/whitetortoiseshellbracketleft 16#3018
+/whitetortoiseshellbracketright 16#3019
+/whiteuppointingsmalltriangle 16#25B5
+/whiteuppointingtriangle 16#25B3
+/wihiragana 16#3090
+/wikatakana 16#30F0
+/wikorean 16#315F
+/wmonospace 16#FF57
+/wohiragana 16#3092
+/wokatakana 16#30F2
+/wokatakanahalfwidth 16#FF66
+/won 16#20A9
+/wonmonospace 16#FFE6
+/wowaenthai 16#0E27
+/wparen 16#24B2
+/wring 16#1E98
+/wsuperior 16#02B7
+/wturned 16#028D
+/wynn 16#01BF
+/x 16#0078
+/xabovecmb 16#033D
+/xbopomofo 16#3112
+/xcircle 16#24E7
+/xdieresis 16#1E8D
+/xdotaccent 16#1E8B
+/xeharmenian 16#056D
+/xi 16#03BE
+/xmonospace 16#FF58
+/xparen 16#24B3
+/xsuperior 16#02E3
+/y 16#0079
+/yaadosquare 16#334E
+/yabengali 16#09AF
+/yacute 16#00FD
+/yadeva 16#092F
+/yaekorean 16#3152
+/yagujarati 16#0AAF
+/yagurmukhi 16#0A2F
+/yahiragana 16#3084
+/yakatakana 16#30E4
+/yakatakanahalfwidth 16#FF94
+/yakorean 16#3151
+/yamakkanthai 16#0E4E
+/yasmallhiragana 16#3083
+/yasmallkatakana 16#30E3
+/yasmallkatakanahalfwidth 16#FF6C
+/yatcyrillic 16#0463
+/ycircle 16#24E8
+/ycircumflex 16#0177
+/ydieresis 16#00FF
+/ydotaccent 16#1E8F
+/ydotbelow 16#1EF5
+/yeharabic 16#064A
+/yehbarreearabic 16#06D2
+/yehbarreefinalarabic 16#FBAF
+/yehfinalarabic 16#FEF2
+/yehhamzaabovearabic 16#0626
+/yehhamzaabovefinalarabic 16#FE8A
+/yehhamzaaboveinitialarabic 16#FE8B
+/yehhamzaabovemedialarabic 16#FE8C
+/yehinitialarabic 16#FEF3
+/yehmedialarabic 16#FEF4
+/yehmeeminitialarabic 16#FCDD
+/yehmeemisolatedarabic 16#FC58
+/yehnoonfinalarabic 16#FC94
+/yehthreedotsbelowarabic 16#06D1
+/yekorean 16#3156
+/yen 16#00A5
+/yenmonospace 16#FFE5
+/yeokorean 16#3155
+/yeorinhieuhkorean 16#3186
+/yerahbenyomohebrew 16#05AA
+/yerahbenyomolefthebrew 16#05AA
+/yericyrillic 16#044B
+/yerudieresiscyrillic 16#04F9
+/yesieungkorean 16#3181
+/yesieungpansioskorean 16#3183
+/yesieungsioskorean 16#3182
+/yetivhebrew 16#059A
+/ygrave 16#1EF3
+/yhook 16#01B4
+/yhookabove 16#1EF7
+/yiarmenian 16#0575
+/yicyrillic 16#0457
+/yikorean 16#3162
+/yinyang 16#262F
+/yiwnarmenian 16#0582
+/ymonospace 16#FF59
+/yod 16#05D9
+/yoddagesh 16#FB39
+/yoddageshhebrew 16#FB39
+/yodhebrew 16#05D9
+/yodyodhebrew 16#05F2
+/yodyodpatahhebrew 16#FB1F
+/yohiragana 16#3088
+/yoikorean 16#3189
+/yokatakana 16#30E8
+/yokatakanahalfwidth 16#FF96
+/yokorean 16#315B
+/yosmallhiragana 16#3087
+/yosmallkatakana 16#30E7
+/yosmallkatakanahalfwidth 16#FF6E
+/yotgreek 16#03F3
+/yoyaekorean 16#3188
+/yoyakorean 16#3187
+/yoyakthai 16#0E22
+/yoyingthai 16#0E0D
+/yparen 16#24B4
+/ypogegrammeni 16#037A
+/ypogegrammenigreekcmb 16#0345
+/yr 16#01A6
+/yring 16#1E99
+/ysuperior 16#02B8
+/ytilde 16#1EF9
+/yturned 16#028E
+/yuhiragana 16#3086
+/yuikorean 16#318C
+/yukatakana 16#30E6
+/yukatakanahalfwidth 16#FF95
+/yukorean 16#3160
+/yusbigcyrillic 16#046B
+/yusbigiotifiedcyrillic 16#046D
+/yuslittlecyrillic 16#0467
+/yuslittleiotifiedcyrillic 16#0469
+/yusmallhiragana 16#3085
+/yusmallkatakana 16#30E5
+/yusmallkatakanahalfwidth 16#FF6D
+/yuyekorean 16#318B
+/yuyeokorean 16#318A
+/yyabengali 16#09DF
+/yyadeva 16#095F
+/z 16#007A
+/zaarmenian 16#0566
+/zacute 16#017A
+/zadeva 16#095B
+/zagurmukhi 16#0A5B
+/zaharabic 16#0638
+/zahfinalarabic 16#FEC6
+/zahinitialarabic 16#FEC7
+/zahiragana 16#3056
+/zahmedialarabic 16#FEC8
+/zainarabic 16#0632
+/zainfinalarabic 16#FEB0
+/zakatakana 16#30B6
+/zaqefgadolhebrew 16#0595
+/zaqefqatanhebrew 16#0594
+/zarqahebrew 16#0598
+/zayin 16#05D6
+/zayindagesh 16#FB36
+/zayindageshhebrew 16#FB36
+/zayinhebrew 16#05D6
+/zbopomofo 16#3117
+/zcaron 16#017E
+/zcircle 16#24E9
+/zcircumflex 16#1E91
+/zcurl 16#0291
+/zdot 16#017C
+/zdotaccent 16#017C
+/zdotbelow 16#1E93
+/zecyrillic 16#0437
+/zedescendercyrillic 16#0499
+/zedieresiscyrillic 16#04DF
+/zehiragana 16#305C
+/zekatakana 16#30BC
+/zero 16#0030
+/zeroarabic 16#0660
+/zerobengali 16#09E6
+/zerodeva 16#0966
+/zerogujarati 16#0AE6
+/zerogurmukhi 16#0A66
+/zerohackarabic 16#0660
+/zeroinferior 16#2080
+/zeromonospace 16#FF10
+/zerooldstyle 16#F730
+/zeropersian 16#06F0
+/zerosuperior 16#2070
+/zerothai 16#0E50
+/zerowidthjoiner 16#FEFF
+/zerowidthnonjoiner 16#200C
+/zerowidthspace 16#200B
+/zeta 16#03B6
+/zhbopomofo 16#3113
+/zhearmenian 16#056A
+/zhebrevecyrillic 16#04C2
+/zhecyrillic 16#0436
+/zhedescendercyrillic 16#0497
+/zhedieresiscyrillic 16#04DD
+/zihiragana 16#3058
+/zikatakana 16#30B8
+/zinorhebrew 16#05AE
+/zlinebelow 16#1E95
+/zmonospace 16#FF5A
+/zohiragana 16#305E
+/zokatakana 16#30BE
+/zparen 16#24B5
+/zretroflexhook 16#0290
+/zstroke 16#01B6
+/zuhiragana 16#305A
+/zukatakana 16#30BA
+.dicttomark readonly def

Modified: branches/icc_work/Resource/Init/gs_cidfn.ps
===================================================================
--- branches/icc_work/Resource/Init/gs_cidfn.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/gs_cidfn.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -350,13 +350,13 @@
 /CIDFont /Generic /Category findresource dup length dict .copydict
 dup /InstanceType /dicttype put
 dup /DefineResource {
-  .buildcidfont
   dup /OrigFont known not {
      dup dup /OrigFont exch .growput  % CPSI does it. Adding just for CET 33_all.PS conformity.
   } if
   dup /PaintType known not {
      dup /PaintType 0 .growput  % CPSI does it. Adding just for CET 33_all.PS conformity.
   } if
+  .buildcidfont
   /Generic /Category findresource /DefineResource get exec
 } put
 % CIDFonts may be defined in CFF OpenType files.

Modified: branches/icc_work/Resource/Init/gs_dps2.ps
===================================================================
--- branches/icc_work/Resource/Init/gs_dps2.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/gs_dps2.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -136,7 +136,7 @@
 /.fixsethalftonescreen		% <freq> <angle> <dict> .fix...screen
 				%   <freq> <angle> <dict> <dict'>
  { dup dup /HalftoneType get 1 eq
-    { dup wcheck not { dup length .copydict } if
+    { dup wcheck not { dup length dict .copydict } if
       dup /Frequency 5 index put
       dup /Angle 4 index put
       languagelevel 3 ge { dup /AccurateScreens dup getuserparam put } if

Modified: branches/icc_work/Resource/Init/gs_init.ps
===================================================================
--- branches/icc_work/Resource/Init/gs_init.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/gs_init.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -30,7 +30,7 @@
 % Interpreter library version number
 % NOTE: the interpreter code requires that the first non-comment token
 % in this file be an integer, and that it match the compiled-in version!
-871
+872
 
 % Check the interpreter revision.
 dup revision ne

Modified: branches/icc_work/Resource/Init/gs_ttf.ps
===================================================================
--- branches/icc_work/Resource/Init/gs_ttf.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/gs_ttf.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1850,7 +1850,7 @@
             TTFDEBUG { ( redefine codepoint by AdobeGlyphList, ) print dup == flush } if
             put                                                    % <<AGL>> <<pbe>>
           } {                                                      % <<AGL>> <<pbe>> <glyphname>
-            TTFDEBUG { ( unknown glyphname, leave as it is ) print flush } if
+            TTFDEBUG { ( unknown glyphname, leave as it is ) = flush } if
             pop                                                    % <<AGL>> <<pbe>>
           } ifelse
         } forall

Modified: branches/icc_work/Resource/Init/pdf_draw.ps
===================================================================
--- branches/icc_work/Resource/Init/pdf_draw.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/pdf_draw.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -945,7 +945,7 @@
           .buildshading
           dup 3 1 roll /.shading exch put
         } ifelse
-        .shfill grestore 
+        .shfill grestore
       } {
         pop
       } ifelse
@@ -1251,9 +1251,14 @@
     //false 1 index {
       type /integertype ne or
     } forall {
-      (\n   **** Warning: Some elements of Mask array are not integers.\n)
-      pdfformaterror
-      [ exch { 0.5 add cvi } forall ]  % following AR4, 5, 6 implementation
+      oforce_array
+      //false 1 index {
+        type /integertype ne or
+      } forall {
+        (\n   **** Warning: Some elements of Mask array are not integers.\n)
+        pdfformaterror
+        [ exch { 0.5 add cvi } forall ]  % following AR4, 5, 6 implementation
+      } if
     } if
 	% Check elements of array are within 0::(2**BitsPerComponent)-1
 	% This is a PostScript error, but AR ignores Mask in that case
@@ -1593,7 +1598,7 @@
       DataSource exch () /SubFileDecode filter flushfile
       end
     } ifelse  	
-	% The Adobe documentation says that the data following ID
+       	% The Adobe documentation says that the data following ID
 	% consists of "lines", and some PDF files (specifically, some files
 	% produced by PCL2PDF from Visual Software) contain garbage bytes
 	% between the last byte of valid data and an EOL.

Modified: branches/icc_work/Resource/Init/pdf_font.ps
===================================================================
--- branches/icc_work/Resource/Init/pdf_font.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/pdf_font.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1031,7 +1031,7 @@
       //null
     } {
       StandardEncoding
-      3 index getencoding
+      3 index getencoding 
     } ifelse                              % filepos fontres stream is_symbolic Encoding
     dup 4 index exch                      % filepos fontres stream is_symbolic Encoding fontres Encoding
     /prebuilt_encoding exch put           % filepos fontres stream is_symbolic Encoding
@@ -1309,13 +1309,13 @@
 
     % get FontMatrix that applies to this CID
     % (needs to convert [D]W[2] values to glyph space)
-    currentfont /FontMatrix get
+    currentdict /FontMatrix get
     % if the currentfont is a CIDFontType 0 CIDFont,
     % we need FDArray font's FontMatrix too
     FontType 9 eq {
-	currentfont 2 index .type9mapcid
+	currentdict 2 index .type9mapcid
 	% <w0x> <w0y> <llx> <lly> <urx> <ury> <cid> <FontMatrix> (charstring) <FDArray#>
-	exch pop currentfont /FDArray get exch get /FontMatrix get
+	exch pop currentdict /FDArray get exch get /FontMatrix get
 	% <w0x> <w0y> <llx> <lly> <urx> <ury> <cid> <FontMatrix> <FontMatrix2>
 	matrix concatmatrix 
     } if
@@ -1388,7 +1388,7 @@
       aload pop 
       exch 8 index 2 div                % <vx'> = <w0x'> / 2
       exch
-    }{                                  % assume W2
+    } {                                 % assume W2
       aload pop
     } ifelse
     % Stack: <FontMatrix> <w0x'> <w0y'> <llx> <lly> <urx> <ury> <w1x'> <w1y'> <vx'> <vy'>
@@ -1405,7 +1405,6 @@
     11 -1 roll pop
     % Stack: <w0x'> <w0y'> <llx> <lly> <urx> <ury> <w1x'> <w1y'> <vx'> <vy'>
   end                                   % recover currentdict
-
 } def
 
 % <string> <match> tailmatch ==> <pre> true

Modified: branches/icc_work/Resource/Init/pdf_main.ps
===================================================================
--- branches/icc_work/Resource/Init/pdf_main.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/Resource/Init/pdf_main.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1382,30 +1382,46 @@
  { /DSCPageCount DSCPageCount 1 add store
  } bind def
 
-/get_media_box { % <pagedict> get_media_box <box>
-  /MediaBox pget not {
+/get_media_box { % <pagedict> get_media_box <box> <bool>
+  /MediaBox pget {
+    oforce_array //true
+  } {
     (   **** Page has no /MediaBox attribute. Using the current page size.\n)
     pdfformaterror
-    [ 0 0 currentpagedevice /PageSize get aload pop ]
-  } if
+    [ 0 0 currentpagedevice /PageSize get aload pop ] //false
+  } ifelse
 } bind def
 
 /get_any_box { % <pagedict> get_any_box <box name> <box>
   //systemdict /UseTrimBox .knownget dup { and } if {
     dup /TrimBox pget {
-      exch pop /TrimBox exch
+      /TrimBox exch
   } if
   } if
   dup type /arraytype ne {
     //systemdict /UseCropBox .knownget dup { and } if {
       dup /CropBox pget {
-        exch pop /CropBox exch
+        /CropBox exch
     } if
   } if
   } if
   dup type /arraytype ne {
-    /MediaBox exch get_media_box
-  } if
+    /MediaBox exch get_media_box pop
+  } {
+    oforce_elems              % <<pdict>> /SomeBox x0 y0 x1 y1
+    6 -1 roll get_media_box { % /SomeBox x0 y0 x1 y1 [MediaBox]
+      aload pop               % /SomeBox x0 y0 x1 y1 X0 Y0 X1 Y1 
+      5 -1 roll .min exch     % /SomeBox x0 y0 x1 X0 Y0 mY1 X1
+      5 -1 roll .min exch     % /SomeBox x0 y0 X0 Y0 mX1 mY1
+      4 2 roll                % /SomeBox x0 y0 mX1 mY1 X0 Y0
+      5 -1 roll .max exch     % /SomeBox x0 mX1 mY1 mY0 X0 
+      5 -1 roll .max exch     % /SomeBox mX1 mY1 mX0 mY0
+      4 2 roll                % /SomeBox mX0 mY0 mX1 mY1
+    } {
+      pop
+    } ifelse
+    4 array astore            % /SomeBox [mX0 mY0 mX1 mY1]
+  } ifelse
 } bind def
 
 % Compute the matrix that transforms the PDF->PS "default" user space
@@ -1637,7 +1653,7 @@
 	1 index /CropBox pget {
           /CropBox exch
         } {
-	  1 index get_media_box /MediaBox exch
+	  1 index get_media_box pop /MediaBox exch
 	} ifelse
         oforce_elems normrect_elems fix_empty_rect_elems 4 array astore .beginformgroup {
 	  showpagecontents

Modified: branches/icc_work/base/Makefile.in
===================================================================
--- branches/icc_work/base/Makefile.in	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/Makefile.in	2010-03-02 09:24:00 UTC (rev 10838)
@@ -144,6 +144,16 @@
 DEBUGRELDIR=../debugobj
 PGRELDIR=../pgobj
 
+# Define whether to compile in the FreeType library, and if so, where
+# the source tree is location. Otherwise, what library name to use
+# in linking to a shared implementation.
+
+FT_BRIDGE=@FT_BRIDGE@
+SHARE_FT=@SHARE_FT@
+FTSRCDIR=@FTSRCDIR@
+FT_CFLAGS=@FT_CFLAGS@
+FT_LIBS=@FT_LIBS@
+
 # Define the directory where the IJG JPEG library sources are stored,
 # and the major version of the library that is stored there.
 # You may need to change this if the IJG library version changes.
@@ -500,6 +510,7 @@
 include $(PSSRCDIR)/psromfs.mak
 include $(GLSRCDIR)/lib.mak
 include $(PSSRCDIR)/int.mak
+include $(GLSRCDIR)/freetype.mak
 include $(GLSRCDIR)/jpeg.mak
 # zlib.mak must precede libpng.mak
 include $(GLSRCDIR)/zlib.mak
@@ -525,7 +536,7 @@
 # Clean up after the autotools scripts
 # configure.ac and Makefile.in are symlinks from a subdir 
 # (created by autogen.sh) and so are safe to remove
-distclean : clean config-clean soclean debugclean
+distclean : clean config-clean soclean pgclean debugclean
 	-$(RM_) -r $(BINDIR) $(GLOBJDIR) $(PSOBJDIR)
 	-$(RM_) -r autom4te.cache
 	-$(RM_) config.log config.status

Modified: branches/icc_work/base/bcwin32.mak
===================================================================
--- branches/icc_work/base/bcwin32.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/bcwin32.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -210,11 +210,11 @@
 # Alternatively, you can build a separate DLL
 # and define SHARE_JPX=1 in src/winlib.mak
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-!ifndef ICCSRCDIR
-ICCSRCDIR=icclib
+!ifndef LCMSSRCDIR
+LCMSSRCDIR=lcms
 !endif
 
 # Define the directory where the ijs source is stored,

Modified: branches/icc_work/base/configure.ac
===================================================================
--- branches/icc_work/base/configure.ac	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/configure.ac	2010-03-02 09:24:00 UTC (rev 10838)
@@ -77,6 +77,9 @@
 AC_PROG_RANLIB
 #AC_PROG_INSTALL
 
+dnl pkg-config is used for several tests now...
+AC_PATH_PROG(PKGCONFIG, pkg-config)
+
 dnl --------------------------------------------------  
 dnl Allow excluding the contributed drivers
 dnl --------------------------------------------------  
@@ -208,43 +211,6 @@
 	GCFLAGS="$GCFLAGS -DGX_COLOR_INDEX_TYPE=\"$uint64_type\""
 fi
 
-dnl pkg-config is used for several tests now...
-AC_PATH_PROG(PKGCONFIG, pkg-config)
-
-dnl Fontconfig support
-HAVE_FONTCONFIG=""
-FONTCONFIG_CFLAGS=""
-FONTCONFIG_LIBS=""
-AC_ARG_ENABLE([fontconfig], AC_HELP_STRING([--disable-fontconfig],
-    [Don't use fontconfig to list system fonts]))
-if test "$enable_fontconfig" != "no"; then
-	# We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
-	# autoconf macro and b) requires pkg-config on the system, which is
-	# NOT standard on ANY OS, including Linux!
-	if test "x$PKGCONFIG" != x; then
-		AC_MSG_CHECKING(for fontconfig with pkg-config)
-		if $PKGCONFIG --exists fontconfig; then
-			AC_MSG_RESULT(yes)
-			FONTCONFIG_CFLAGS="$CFLAGS `$PKGCONFIG --cflags fontconfig`"
-			FONTCONFIG_LIBS="`$PKGCONFIG --libs fontconfig`"
-			HAVE_FONTCONFIG=-DHAVE_FONTCONFIG
-		else
-			AC_MSG_RESULT(no)
-		fi
-	fi
-	if test -z "$HAVE_FONTCONFIG"; then
-		AC_CHECK_LIB([fontconfig], [FcInitLoadConfigAndFonts], [
-		  AC_CHECK_HEADER([fontconfig/fontconfig.h], [
-		    FONTCONFIG_LIBS="-lfontconfig"
-		    HAVE_FONTCONFIG="-DHAVE_FONTCONFIG"
-		  ])
-		])
-	fi
-fi
-AC_SUBST(HAVE_FONTCONFIG)
-AC_SUBST(FONTCONFIG_CFLAGS)
-AC_SUBST(FONTCONFIG_LIBS)
-
 dnl --------------------------------------------------
 dnl Check for libraries
 dnl --------------------------------------------------
@@ -320,8 +286,85 @@
     CFLAGS="$CFLAGS -DUSE_LIBPAPER"
 fi
 
+dnl Fontconfig support
+HAVE_FONTCONFIG=""
+FONTCONFIG_CFLAGS=""
+FONTCONFIG_LIBS=""
+AC_ARG_ENABLE([fontconfig], AC_HELP_STRING([--disable-fontconfig],
+    [Don't use fontconfig to list system fonts]))
+if test "$enable_fontconfig" != "no"; then
+	# We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
+	# autoconf macro and b) requires pkg-config on the system, which is
+	# NOT standard on ANY OS, including Linux!
+	if test "x$PKGCONFIG" != x; then
+		AC_MSG_CHECKING(for fontconfig with pkg-config)
+		if $PKGCONFIG --exists fontconfig; then
+			AC_MSG_RESULT(yes)
+			FONTCONFIG_CFLAGS="$CFLAGS `$PKGCONFIG --cflags fontconfig`"
+			FONTCONFIG_LIBS="`$PKGCONFIG --libs fontconfig`"
+			HAVE_FONTCONFIG=-DHAVE_FONTCONFIG
+		else
+			AC_MSG_RESULT(no)
+		fi
+	fi
+	if test -z "$HAVE_FONTCONFIG"; then
+		AC_CHECK_LIB([fontconfig], [FcInitLoadConfigAndFonts], [
+		  AC_CHECK_HEADER([fontconfig/fontconfig.h], [
+		    FONTCONFIG_LIBS="-lfontconfig"
+		    HAVE_FONTCONFIG="-DHAVE_FONTCONFIG"
+		  ])
+		])
+	fi
+fi
+AC_SUBST(HAVE_FONTCONFIG)
+AC_SUBST(FONTCONFIG_CFLAGS)
+AC_SUBST(FONTCONFIG_LIBS)
+
 AC_CHECK_LIB(dl, dlopen)
 
+AC_ARG_ENABLE([freetype], AC_HELP_STRING([--enable-freetype],
+	[Use freetype for font rasterization]))
+FT_BRIDGE=0
+SHARE_FT=0
+FTSRCDIR=
+FT_CFLAGS=
+FT_LIBS=
+if test x"$enable_freetype" == xyes; then
+  AC_MSG_CHECKING([for local freetype library source])
+  dnl We prefer freetype2 over freetype, so it is easy to override
+  dnl the included freetype source with a checkout from upstream.
+  for dir in freetype2 freetype; do
+    if test -f $dir/src/base/ftbbox.c; then
+	AC_MSG_RESULT([$dir])
+	SHARE_FT=0
+	FTSRCDIR="$dir"
+	FT_CFLAGS="-I$dir/include"
+	FT_BRIDGE=1
+	break;
+    fi
+  done
+  if test -z $FTSRCDIR; then
+    AC_MSG_RESULT([no])
+    if test "x$PKGCONFIG" != x; then
+	AC_MSG_CHECKING(for system freetype with pkg-config)
+	    if $PKGCONFIG --exists freetype2; then
+		AC_MSG_RESULT(yes)
+		FT_CFLAGS="$CFLAGS `$PKGCONFIG --cflags freetype2`"
+		FT_LIBS="`$PKGCONFIG --libs freetype2`"
+		FT_BRIDGE=1
+	    else
+		AC_MSG_RESULT(no)
+		AC_MSG_WARN([freetype library source not found...using native rasterizer])
+	    fi
+    fi
+  fi
+fi
+AC_SUBST(FT_BRIDGE)
+AC_SUBST(SHARE_FT)
+AC_SUBST(FTSRCDIR)
+AC_SUBST(FT_CFLAGS)
+AC_SUBST(FT_LIBS)
+  
 AC_MSG_CHECKING([for local jpeg library source])
 dnl At present, we give the local source priority over the shared
 dnl build, so that the D_MAX_BLOCKS_IN_MCU patch will be applied.
@@ -428,7 +471,7 @@
     xcheck)
 	if test -d tiff; then
 	    LIBTIFFDIR=tiff
-	    LOCAL_LIBTIFF_VERSION=`sed -n 's/^#define\s\+TIFFLIB_VERSION\s\+\([0-9]\+\)\s*.*$/\1/p' $LIBTIFFDIR/libtiff/tiffvers.h`
+	    LOCAL_LIBTIFF_VERSION=`sed -n '/TIFFLIB_VERSION[[^_]]/s/[[^0-9]]*\([[0-9]]*\).*/\1/p' $LIBTIFFDIR/libtiff/tiffvers.h`
 	    SHARE_LIBTIFF=0
 	fi
 	AC_CHECK_LIB(tiff, TIFFOpen,

Modified: branches/icc_work/base/devs.mak
===================================================================
--- branches/icc_work/base/devs.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/devs.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1650,7 +1650,7 @@
 	$(ADDMOD) $(DD)tfax -include $(DD)fax $(DD)tiffs $(tiff_i_)
 
 $(GLOBJ)gdevtfax.$(OBJ) : $(GLSRC)gdevtfax.c $(PDEVH)\
- $(gdevfax_h) $(gdevtifs_h)\
+ $(stdint__h) $(gdevfax_h) $(gdevtifs_h)\
  $(scfx_h) $(slzwx_h) $(srlx_h) $(strimpl_h)
 	$(GLCC) $(I_)$(TI_)$(_I) $(GLO_)gdevtfax.$(OBJ) $(C_) $(GLSRC)gdevtfax.c
 
@@ -1661,7 +1661,7 @@
 	$(SETMOD) $(DD)tiffs $(tiffs_)
 	$(ADDMOD) $(DD)tiffs -include $(GLD)page $(tiff_i_)
 
-$(GLOBJ)gdevtifs.$(OBJ) : $(GLSRC)gdevtifs.c $(PDEVH) $(stdio__h) $(time__h)\
+$(GLOBJ)gdevtifs.$(OBJ) : $(GLSRC)gdevtifs.c $(PDEVH) $(stdint__h) $(stdio__h) $(time__h)\
  $(gdevtifs_h) $(gscdefs_h) $(gstypes_h)
 	$(GLCC) $(I_)$(GLI_) $(II)$(TI_)$(_I) $(GLO_)gdevtifs.$(OBJ) $(C_) $(GLSRC)gdevtifs.c
 
@@ -1704,7 +1704,7 @@
 	$(SETPDEV2) $(DD)tiffgray $(tiffgray_)
 	$(ADDMOD) $(DD)tiffgray -include $(DD)tiffs $(tiff_i_)
 
-$(GLOBJ)gdevtsep.$(OBJ) : $(GLSRC)gdevtsep.c $(PDEVH) $(gdevtifs_h)\
+$(GLOBJ)gdevtsep.$(OBJ) : $(GLSRC)gdevtsep.c $(PDEVH) $(stdint__h) $(gdevtifs_h)\
 	$(gdevdevn_h) $(gsequivc_h) $(stdio__h) $(ctype__h)
 	$(GLCC) $(I_)$(TI_)$(_I) $(GLO_)gdevtsep.$(OBJ) $(C_) $(GLSRC)gdevtsep.c
 
@@ -1724,7 +1724,7 @@
 	$(SETPDEV2) $(DD)tiff48nc $(tiffrgb_)
 	$(ADDMOD) $(DD)tiff48nc -include $(DD)tiffs $(tiff_i_)
 
-$(GLOBJ)gdevtfnx.$(OBJ) : $(GLSRC)gdevtfnx.c $(PDEVH) $(gdevtifs_h)
+$(GLOBJ)gdevtfnx.$(OBJ) : $(GLSRC)gdevtfnx.c $(PDEVH) $(stdint__h) $(gdevtifs_h)
 	$(GLCC) $(I_)$(TI_)$(_I) $(GLO_)gdevtfnx.$(OBJ) $(C_) $(GLSRC)gdevtfnx.c
 
 # TIFF CMYK, no compression

Copied: branches/icc_work/base/freetype.mak (from rev 10837, trunk/gs/base/freetype.mak)
===================================================================
--- branches/icc_work/base/freetype.mak	                        (rev 0)
+++ branches/icc_work/base/freetype.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -0,0 +1,580 @@
+#  Copyright (C) 2001-2010 Artifex Software, Inc.
+#  All Rights Reserved.
+#
+#  This software is provided AS-IS with no warranty, either express or
+#  implied.
+#
+#  This software is distributed under license and may not be copied, modified
+#  or distributed except as expressly authorized under the terms of that
+#  license.  Refer to licensing information at http://www.artifex.com/
+#  or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+#  San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+#
+# $Id$
+# makefile for freetype as part of the monolithic gs build.
+#
+# Users of this makefile must define the following:
+#	FTSRCDIR    - the source directory
+#	FTGENDIR    - the generated intermediate file directory
+#	FTOBJDIR    - the object file directory
+#	FT_CFLAGS   - The include options for the freetype library
+#	SHARE_FT - 0 to compile in freetype, 1 to link a shared library
+#	FT_LIBS  - if SHARE_FT=1, the link options for the shared library
+
+# (Rename directories.)
+FTSRC=$(FTSRCDIR)$(D)src$(D)
+FTGEN=$(FTGENDIR)$(D)
+FTOBJ=$(FTOBJDIR)$(D)
+FTO_=$(O_)$(FTOBJ)
+
+# Define our local compiler alias
+# we must define FT2_BUILD_LIBRARY to get internal declarations
+FTCC=$(CC_) $(I_)$(FTSRCDIR)$(D)include$(_I) -DFT2_BUILD_LIBRARY
+
+# Define the name of this makefile.
+FT_MAK=$(GLSRC)freetype.mak
+
+# file complements for each component
+ft_autofit=\
+	$(FTOBJ)afangles.$(OBJ) \
+	$(FTOBJ)afcjk.$(OBJ) \
+	$(FTOBJ)afdummy.$(OBJ) \
+	$(FTOBJ)afglobal.$(OBJ) \
+	$(FTOBJ)afhints.$(OBJ) \
+	$(FTOBJ)afindic.$(OBJ) \
+	$(FTOBJ)aflatin.$(OBJ) \
+	$(FTOBJ)afloader.$(OBJ) \
+	$(FTOBJ)afmodule.$(OBJ) \
+	$(FTOBJ)afwarp.$(OBJ)
+
+ft_base=\
+	$(FTOBJ)ftadvanc.$(OBJ) \
+	$(FTOBJ)ftcalc.$(OBJ) \
+	$(FTOBJ)ftdbgmem.$(OBJ) \
+	$(FTOBJ)ftgloadr.$(OBJ) \
+	$(FTOBJ)ftobjs.$(OBJ) \
+	$(FTOBJ)ftoutln.$(OBJ) \
+	$(FTOBJ)ftrfork.$(OBJ) \
+	$(FTOBJ)ftsnames.$(OBJ) \
+	$(FTOBJ)ftstream.$(OBJ) \
+	$(FTOBJ)fttrigon.$(OBJ) \
+	$(FTOBJ)ftutil.$(OBJ) \
+	$(FTOBJ)ftbbox.$(OBJ) \
+	$(FTOBJ)ftbdf.$(OBJ) \
+	$(FTOBJ)ftbitmap.$(OBJ) \
+	$(FTOBJ)ftdebug.$(OBJ) \
+	$(FTOBJ)ftgasp.$(OBJ) \
+	$(FTOBJ)ftglyph.$(OBJ) \
+	$(FTOBJ)ftgxval.$(OBJ) \
+	$(FTOBJ)ftinit.$(OBJ) \
+	$(FTOBJ)ftlcdfil.$(OBJ) \
+	$(FTOBJ)ftmm.$(OBJ) \
+	$(FTOBJ)ftotval.$(OBJ) \
+	$(FTOBJ)ftpfr.$(OBJ) \
+	$(FTOBJ)ftstroke.$(OBJ) \
+	$(FTOBJ)ftsynth.$(OBJ) \
+	$(FTOBJ)ftsystem.$(OBJ) \
+	$(FTOBJ)fttype1.$(OBJ) \
+	$(FTOBJ)ftwinfnt.$(OBJ) \
+	$(FTOBJ)ftxf86.$(OBJ) \
+	$(FTOBJ)ftpatent.$(OBJ)
+
+ft_bdf=\
+	$(FTOBJ)bdflib.$(OBJ) \
+	$(FTOBJ)bdfdrivr.$(OBJ)
+
+ft_cache=\
+	$(FTOBJ)ftcbasic.$(OBJ) \
+	$(FTOBJ)ft2ccache.$(OBJ) \
+	$(FTOBJ)ftccmap.$(OBJ) \
+	$(FTOBJ)ftcglyph.$(OBJ) \
+	$(FTOBJ)ftcimage.$(OBJ) \
+	$(FTOBJ)ftcmanag.$(OBJ) \
+	$(FTOBJ)ftcmru.$(OBJ) \
+	$(FTOBJ)ftcsbits.$(OBJ)
+
+ft_cff=\
+	$(FTOBJ)cffobjs.$(OBJ) \
+	$(FTOBJ)cffload.$(OBJ) \
+	$(FTOBJ)cffgload.$(OBJ) \
+	$(FTOBJ)cffparse.$(OBJ) \
+	$(FTOBJ)cffcmap.$(OBJ) \
+	$(FTOBJ)cffdrivr.$(OBJ)
+
+ft_cid=\
+	$(FTOBJ)cidparse.$(OBJ) \
+	$(FTOBJ)cidload.$(OBJ) \
+	$(FTOBJ)cidriver.$(OBJ) \
+	$(FTOBJ)cidgload.$(OBJ) \
+	$(FTOBJ)cidobjs.$(OBJ)
+
+ft_gzip=$(FTOBJ)ftgzip.$(OBJ)
+
+ft_lzw=$(FTOBJ)ftlzw.$(OBJ)
+
+ft_pcf=\
+	$(FTOBJ)pcfdrivr.$(OBJ) \
+	$(FTOBJ)pcfread.$(OBJ) \
+	$(FTOBJ)pcfutil.$(OBJ)
+
+ft_pfr=\
+	$(FTOBJ)pfrload.$(OBJ) \
+	$(FTOBJ)pfrgload.$(OBJ) \
+	$(FTOBJ)pfrcmap.$(OBJ) \
+	$(FTOBJ)pfrdrivr.$(OBJ) \
+	$(FTOBJ)pfrsbit.$(OBJ) \
+	$(FTOBJ)pfrobjs.$(OBJ)
+
+ft_psaux=\
+	$(FTOBJ)psobjs.$(OBJ) \
+	$(FTOBJ)t1decode.$(OBJ) \
+	$(FTOBJ)t1cmap.$(OBJ) \
+	$(FTOBJ)afmparse.$(OBJ) \
+	$(FTOBJ)psconv.$(OBJ) \
+	$(FTOBJ)psauxmod.$(OBJ)
+
+ft_pshinter=\
+	$(FTOBJ)pshrec.$(OBJ) \
+	$(FTOBJ)pshglob.$(OBJ) \
+	$(FTOBJ)pshmod.$(OBJ) \
+	$(FTOBJ)pshalgo.$(OBJ)
+
+ft_psnames=\
+	$(FTOBJ)psmodule.$(OBJ) \
+	$(FTOBJ)pspic.$(OBJ)
+
+ft_raster=\
+	$(FTOBJ)ftraster.$(OBJ) \
+	$(FTOBJ)ftrend1.$(OBJ) \
+	$(FTOBJ)rastpic.$(OBJ)
+
+ft_smooth=\
+	$(FTOBJ)ftgrays.$(OBJ) \
+	$(FTOBJ)ftsmooth.$(OBJ) \
+	$(FTOBJ)ftspic.$(OBJ)
+
+ft_sfnt=\
+	$(FTOBJ)sfobjs.$(OBJ) \
+	$(FTOBJ)sfdriver.$(OBJ) \
+	$(FTOBJ)ttcmap.$(OBJ) \
+	$(FTOBJ)ttmtx.$(OBJ) \
+	$(FTOBJ)ttpost.$(OBJ) \
+	$(FTOBJ)ft2ttload.$(OBJ) \
+	$(FTOBJ)ttsbit.$(OBJ) \
+	$(FTOBJ)ttkern.$(OBJ) \
+	$(FTOBJ)ttbdf.$(OBJ) \
+	$(FTOBJ)sfntpic.$(OBJ)
+
+ft_truetype=\
+	$(FTOBJ)ttdriver.$(OBJ) \
+	$(FTOBJ)ft2ttobjs.$(OBJ) \
+	$(FTOBJ)ttpload.$(OBJ) \
+	$(FTOBJ)ttgload.$(OBJ) \
+	$(FTOBJ)ft2ttinterp.$(OBJ) \
+	$(FTOBJ)ttgxvar.$(OBJ) \
+	$(FTOBJ)ttpic.$(OBJ)
+
+ft_type1=\
+	$(FTOBJ)t1afm.$(OBJ) \
+	$(FTOBJ)t1driver.$(OBJ) \
+	$(FTOBJ)t1objs.$(OBJ) \
+	$(FTOBJ)t1load.$(OBJ) \
+	$(FTOBJ)t1gload.$(OBJ) \
+	$(FTOBJ)t1parse.$(OBJ)
+
+ft_type42=\
+	$(FTOBJ)t42objs.$(OBJ) \
+	$(FTOBJ)t42parse.$(OBJ) \
+	$(FTOBJ)t42drivr.$(OBJ)
+
+ft_winfonts=$(FTOBJ)winfnt.$(OBJ)
+
+# instantiate the requested build option (shared or compiled in)
+$(FTGEN)freetype.dev : $(TOP_MAKEFILES) $(FTGEN)freetype_$(SHARE_FT).dev
+	$(CP_) $(FTGEN)freetype_$(SHARE_FT).dev $(FTGEN)freetype.dev
+
+# Define the shared version.
+$(FTGEN)freetype_1.dev : $(TOP_MAKEFILES) $(FT_MAK) $(ECHOGS_XE)
+	$(SETMOD) $(FTGEN)freetype_1 -link $(FT_LIBS)
+
+# Define the non-shared version.
+$(FTGEN)freetype_0.dev : $(TOP_MAKEFILES) $(FT_MAK) $(ECHOGS_XE) \
+    $(ft_autofit) $(ft_base) $(ft_bdf) $(ft_cache) $(ft_cff) $(ft_cid) \
+    $(ft_gzip) $(ft_lzw) $(ft_pcf) $(ft_pfr) $(ft_psaux) $(ft_pshinter) \
+    $(ft_psnames) $(ft_raster) $(ft_smooth) $(ft_sfnt) $(ft_truetype) \
+    $(ft_type1) $(ft_type42) $(ft_winfonts)
+	$(SETMOD) $(FTGEN)freetype_0 $(ft_autofit)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_base)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_bdf)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_cache)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_cff)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_cid)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_gzip)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_lzw)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_pcf)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_pfr)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_psaux)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_pshinter)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_psnames)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_raster)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_smooth)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_sfnt)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_truetype)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_type1)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_type42)
+	$(ADDMOD) $(FTGEN)freetype_0 $(ft_winfonts)
+
+
+# custom build rules for each source file
+
+$(FTOBJ)afangles.$(OBJ) : $(FTSRC)autofit$(D)afangles.c
+	$(FTCC) $(FTO_)afangles.$(OBJ) $(C_) $(FTSRC)autofit$(D)afangles.c
+
+$(FTOBJ)afcjk.$(OBJ) : $(FTSRC)autofit$(D)afcjk.c
+	$(FTCC) $(FTO_)afcjk.$(OBJ) $(C_) $(FTSRC)autofit$(D)afcjk.c
+
+$(FTOBJ)afdummy.$(OBJ) : $(FTSRC)autofit$(D)afdummy.c
+	$(FTCC) $(FTO_)afdummy.$(OBJ) $(C_) $(FTSRC)autofit$(D)afdummy.c
+
+$(FTOBJ)afglobal.$(OBJ) : $(FTSRC)autofit$(D)afglobal.c
+	$(FTCC) $(FTO_)afglobal.$(OBJ) $(C_) $(FTSRC)autofit$(D)afglobal.c
+
+$(FTOBJ)afhints.$(OBJ) : $(FTSRC)autofit$(D)afhints.c
+	$(FTCC) $(FTO_)afhints.$(OBJ) $(C_) $(FTSRC)autofit$(D)afhints.c
+
+$(FTOBJ)afindic.$(OBJ) : $(FTSRC)autofit$(D)afindic.c
+	$(FTCC) $(FTO_)afindic.$(OBJ) $(C_) $(FTSRC)autofit$(D)afindic.c
+
+$(FTOBJ)aflatin.$(OBJ) : $(FTSRC)autofit$(D)aflatin.c
+	$(FTCC) $(FTO_)aflatin.$(OBJ) $(C_) $(FTSRC)autofit$(D)aflatin.c
+
+$(FTOBJ)afloader.$(OBJ) : $(FTSRC)autofit$(D)afloader.c
+	$(FTCC) $(FTO_)afloader.$(OBJ) $(C_) $(FTSRC)autofit$(D)afloader.c
+
+$(FTOBJ)afmodule.$(OBJ) : $(FTSRC)autofit$(D)afmodule.c
+	$(FTCC) $(FTO_)afmodule.$(OBJ) $(C_) $(FTSRC)autofit$(D)afmodule.c
+
+$(FTOBJ)afwarp.$(OBJ) : $(FTSRC)autofit$(D)afwarp.c
+	$(FTCC) $(FTO_)afwarp.$(OBJ) $(C_) $(FTSRC)autofit$(D)afwarp.c
+
+
+$(FTOBJ)ftadvanc.$(OBJ) : $(FTSRC)base$(D)ftadvanc.c
+	$(FTCC) $(FTO_)ftadvanc.$(OBJ) $(C_) $(FTSRC)base$(D)ftadvanc.c
+
+$(FTOBJ)ftcalc.$(OBJ) : $(FTSRC)base$(D)ftcalc.c
+	$(FTCC) $(FTO_)ftcalc.$(OBJ) $(C_) $(FTSRC)base$(D)ftcalc.c
+
+$(FTOBJ)ftdbgmem.$(OBJ) : $(FTSRC)base$(D)ftdbgmem.c
+	$(FTCC) $(FTO_)ftdbgmem.$(OBJ) $(C_) $(FTSRC)base$(D)ftdbgmem.c
+
+$(FTOBJ)ftgloadr.$(OBJ) : $(FTSRC)base$(D)ftgloadr.c
+	$(FTCC) $(FTO_)ftgloadr.$(OBJ) $(C_) $(FTSRC)base$(D)ftgloadr.c
+
+$(FTOBJ)ftobjs.$(OBJ) : $(FTSRC)base$(D)ftobjs.c
+	$(FTCC) $(FTO_)ftobjs.$(OBJ) $(C_) $(FTSRC)base$(D)ftobjs.c
+
+$(FTOBJ)ftoutln.$(OBJ) : $(FTSRC)base$(D)ftoutln.c
+	$(FTCC) $(FTO_)ftoutln.$(OBJ) $(C_) $(FTSRC)base$(D)ftoutln.c
+
+$(FTOBJ)ftrfork.$(OBJ) : $(FTSRC)base$(D)ftrfork.c
+	$(FTCC) $(FTO_)ftrfork.$(OBJ) $(C_) $(FTSRC)base$(D)ftrfork.c
+
+$(FTOBJ)ftsnames.$(OBJ) : $(FTSRC)base$(D)ftsnames.c
+	$(FTCC) $(FTO_)ftsnames.$(OBJ) $(C_) $(FTSRC)base$(D)ftsnames.c
+
+$(FTOBJ)ftstream.$(OBJ) : $(FTSRC)base$(D)ftstream.c
+	$(FTCC) $(FTO_)ftstream.$(OBJ) $(C_) $(FTSRC)base$(D)ftstream.c
+
+$(FTOBJ)fttrigon.$(OBJ) : $(FTSRC)base$(D)fttrigon.c
+	$(FTCC) $(FTO_)fttrigon.$(OBJ) $(C_) $(FTSRC)base$(D)fttrigon.c
+
+$(FTOBJ)ftutil.$(OBJ) : $(FTSRC)base$(D)ftutil.c
+	$(FTCC) $(FTO_)ftutil.$(OBJ) $(C_) $(FTSRC)base$(D)ftutil.c
+
+$(FTOBJ)ftbbox.$(OBJ) : $(FTSRC)base$(D)ftbbox.c
+	$(FTCC) $(FTO_)ftbbox.$(OBJ) $(C_) $(FTSRC)base$(D)ftbbox.c
+
+$(FTOBJ)ftbdf.$(OBJ) : $(FTSRC)base$(D)ftbdf.c
+	$(FTCC) $(FTO_)ftbdf.$(OBJ) $(C_) $(FTSRC)base$(D)ftbdf.c
+
+$(FTOBJ)ftbitmap.$(OBJ) : $(FTSRC)base$(D)ftbitmap.c
+	$(FTCC) $(FTO_)ftbitmap.$(OBJ) $(C_) $(FTSRC)base$(D)ftbitmap.c
+
+$(FTOBJ)ftdebug.$(OBJ) : $(FTSRC)base$(D)ftdebug.c
+	$(FTCC) $(FTO_)ftdebug.$(OBJ) $(C_) $(FTSRC)base$(D)ftdebug.c
+
+$(FTOBJ)ftgasp.$(OBJ) : $(FTSRC)base$(D)ftgasp.c
+	$(FTCC) $(FTO_)ftgasp.$(OBJ) $(C_) $(FTSRC)base$(D)ftgasp.c
+
+$(FTOBJ)ftglyph.$(OBJ) : $(FTSRC)base$(D)ftglyph.c
+	$(FTCC) $(FTO_)ftglyph.$(OBJ) $(C_) $(FTSRC)base$(D)ftglyph.c
+
+$(FTOBJ)ftgxval.$(OBJ) : $(FTSRC)base$(D)ftgxval.c
+	$(FTCC) $(FTO_)ftgxval.$(OBJ) $(C_) $(FTSRC)base$(D)ftgxval.c
+
+$(FTOBJ)ftinit.$(OBJ) : $(FTSRC)base$(D)ftinit.c
+	$(FTCC) $(FTO_)ftinit.$(OBJ) $(C_) $(FTSRC)base$(D)ftinit.c
+
+$(FTOBJ)ftlcdfil.$(OBJ) : $(FTSRC)base$(D)ftlcdfil.c
+	$(FTCC) $(FTO_)ftlcdfil.$(OBJ) $(C_) $(FTSRC)base$(D)ftlcdfil.c
+
+$(FTOBJ)ftmm.$(OBJ) : $(FTSRC)base$(D)ftmm.c
+	$(FTCC) $(FTO_)ftmm.$(OBJ) $(C_) $(FTSRC)base$(D)ftmm.c
+
+$(FTOBJ)ftotval.$(OBJ) : $(FTSRC)base$(D)ftotval.c
+	$(FTCC) $(FTO_)ftotval.$(OBJ) $(C_) $(FTSRC)base$(D)ftotval.c
+
+$(FTOBJ)ftpfr.$(OBJ) : $(FTSRC)base$(D)ftpfr.c
+	$(FTCC) $(FTO_)ftpfr.$(OBJ) $(C_) $(FTSRC)base$(D)ftpfr.c
+
+$(FTOBJ)ftstroke.$(OBJ) : $(FTSRC)base$(D)ftstroke.c
+	$(FTCC) $(FTO_)ftstroke.$(OBJ) $(C_) $(FTSRC)base$(D)ftstroke.c
+
+$(FTOBJ)ftsynth.$(OBJ) : $(FTSRC)base$(D)ftsynth.c
+	$(FTCC) $(FTO_)ftsynth.$(OBJ) $(C_) $(FTSRC)base$(D)ftsynth.c
+
+$(FTOBJ)ftsystem.$(OBJ) : $(FTSRC)base$(D)ftsystem.c
+	$(FTCC) $(FTO_)ftsystem.$(OBJ) $(C_) $(FTSRC)base$(D)ftsystem.c
+
+$(FTOBJ)fttype1.$(OBJ) : $(FTSRC)base$(D)fttype1.c
+	$(FTCC) $(FTO_)fttype1.$(OBJ) $(C_) $(FTSRC)base$(D)fttype1.c
+
+$(FTOBJ)ftwinfnt.$(OBJ) : $(FTSRC)base$(D)ftwinfnt.c
+	$(FTCC) $(FTO_)ftwinfnt.$(OBJ) $(C_) $(FTSRC)base$(D)ftwinfnt.c
+
+$(FTOBJ)ftxf86.$(OBJ) : $(FTSRC)base$(D)ftxf86.c
+	$(FTCC) $(FTO_)ftxf86.$(OBJ) $(C_) $(FTSRC)base$(D)ftxf86.c
+
+$(FTOBJ)ftpatent.$(OBJ) : $(FTSRC)base$(D)ftpatent.c
+	$(FTCC) $(FTO_)ftpatent.$(OBJ) $(C_) $(FTSRC)base$(D)ftpatent.c
+
+$(FTOBJ)bdflib.$(OBJ) : $(FTSRC)bdf$(D)bdflib.c
+	$(FTCC) $(FTO_)bdflib.$(OBJ) $(C_) $(FTSRC)bdf$(D)bdflib.c
+
+$(FTOBJ)bdfdrivr.$(OBJ) : $(FTSRC)bdf$(D)bdfdrivr.c
+	$(FTCC) $(FTO_)bdfdrivr.$(OBJ) $(C_) $(FTSRC)bdf$(D)bdfdrivr.c
+
+$(FTOBJ)ftcbasic.$(OBJ) : $(FTSRC)cache$(D)ftcbasic.c
+	$(FTCC) $(FTO_)ftcbasic.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcbasic.c
+
+$(FTOBJ)ft2ccache.$(OBJ) : $(FTSRC)cache$(D)ftccache.c
+	$(FTCC) $(FTO_)ft2ccache.$(OBJ) $(C_) $(FTSRC)cache$(D)ftccache.c
+
+$(FTOBJ)ftccmap.$(OBJ) : $(FTSRC)cache$(D)ftccmap.c
+	$(FTCC) $(FTO_)ftccmap.$(OBJ) $(C_) $(FTSRC)cache$(D)ftccmap.c
+
+$(FTOBJ)ftcglyph.$(OBJ) : $(FTSRC)cache$(D)ftcglyph.c
+	$(FTCC) $(FTO_)ftcglyph.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcglyph.c
+
+$(FTOBJ)ftcimage.$(OBJ) : $(FTSRC)cache$(D)ftcimage.c
+	$(FTCC) $(FTO_)ftcimage.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcimage.c
+
+$(FTOBJ)ftcmanag.$(OBJ) : $(FTSRC)cache$(D)ftcmanag.c
+	$(FTCC) $(FTO_)ftcmanag.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcmanag.c
+
+$(FTOBJ)ftcmru.$(OBJ) : $(FTSRC)cache$(D)ftcmru.c
+	$(FTCC) $(FTO_)ftcmru.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcmru.c
+
+$(FTOBJ)ftcsbits.$(OBJ) : $(FTSRC)cache$(D)ftcsbits.c
+	$(FTCC) $(FTO_)ftcsbits.$(OBJ) $(C_) $(FTSRC)cache$(D)ftcsbits.c
+
+$(FTOBJ)cffobjs.$(OBJ) : $(FTSRC)cff$(D)cffobjs.c
+	$(FTCC) $(FTO_)cffobjs.$(OBJ) $(C_) $(FTSRC)cff$(D)cffobjs.c
+
+$(FTOBJ)cffload.$(OBJ) : $(FTSRC)cff$(D)cffload.c
+	$(FTCC) $(FTO_)cffload.$(OBJ) $(C_) $(FTSRC)cff$(D)cffload.c
+
+$(FTOBJ)cffgload.$(OBJ) : $(FTSRC)cff$(D)cffgload.c
+	$(FTCC) $(FTO_)cffgload.$(OBJ) $(C_) $(FTSRC)cff$(D)cffgload.c
+
+$(FTOBJ)cffparse.$(OBJ) : $(FTSRC)cff$(D)cffparse.c
+	$(FTCC) $(FTO_)cffparse.$(OBJ) $(C_) $(FTSRC)cff$(D)cffparse.c
+
+$(FTOBJ)cffcmap.$(OBJ) : $(FTSRC)cff$(D)cffcmap.c
+	$(FTCC) $(FTO_)cffcmap.$(OBJ) $(C_) $(FTSRC)cff$(D)cffcmap.c
+
+$(FTOBJ)cffdrivr.$(OBJ) : $(FTSRC)cff$(D)cffdrivr.c
+	$(FTCC) $(FTO_)cffdrivr.$(OBJ) $(C_) $(FTSRC)cff$(D)cffdrivr.c
+
+$(FTOBJ)cidparse.$(OBJ) : $(FTSRC)cid$(D)cidparse.c
+	$(FTCC) $(FTO_)cidparse.$(OBJ) $(C_) $(FTSRC)cid$(D)cidparse.c
+
+$(FTOBJ)cidload.$(OBJ) : $(FTSRC)cid$(D)cidload.c
+	$(FTCC) $(FTO_)cidload.$(OBJ) $(C_) $(FTSRC)cid$(D)cidload.c
+
+$(FTOBJ)cidriver.$(OBJ) : $(FTSRC)cid$(D)cidriver.c
+	$(FTCC) $(FTO_)cidriver.$(OBJ) $(C_) $(FTSRC)cid$(D)cidriver.c
+
+$(FTOBJ)cidgload.$(OBJ) : $(FTSRC)cid$(D)cidgload.c
+	$(FTCC) $(FTO_)cidgload.$(OBJ) $(C_) $(FTSRC)cid$(D)cidgload.c
+
+$(FTOBJ)cidobjs.$(OBJ) : $(FTSRC)cid$(D)cidobjs.c
+	$(FTCC) $(FTO_)cidobjs.$(OBJ) $(C_) $(FTSRC)cid$(D)cidobjs.c
+
+$(FTOBJ)ftgzip.$(OBJ) : $(FTSRC)gzip$(D)ftgzip.c
+	$(FTCC) $(FTO_)ftgzip.$(OBJ) $(C_) $(FTSRC)gzip$(D)ftgzip.c
+
+$(FTOBJ)ftlzw.$(OBJ) : $(FTSRC)lzw$(D)ftlzw.c
+	$(FTCC) $(FTO_)ftlzw.$(OBJ) $(C_) $(FTSRC)lzw$(D)ftlzw.c
+
+$(FTOBJ)pcfdrivr.$(OBJ) : $(FTSRC)pcf$(D)pcfdrivr.c
+	$(FTCC) $(FTO_)pcfdrivr.$(OBJ) $(C_) $(FTSRC)pcf$(D)pcfdrivr.c
+
+$(FTOBJ)pcfread.$(OBJ) : $(FTSRC)pcf$(D)pcfread.c
+	$(FTCC) $(FTO_)pcfread.$(OBJ) $(C_) $(FTSRC)pcf$(D)pcfread.c
+
+$(FTOBJ)pcfutil.$(OBJ) : $(FTSRC)pcf$(D)pcfutil.c
+	$(FTCC) $(FTO_)pcfutil.$(OBJ) $(C_) $(FTSRC)pcf$(D)pcfutil.c
+
+$(FTOBJ)pfrload.$(OBJ) : $(FTSRC)pfr$(D)pfrload.c
+	$(FTCC) $(FTO_)pfrload.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrload.c
+
+$(FTOBJ)pfrgload.$(OBJ) : $(FTSRC)pfr$(D)pfrgload.c
+	$(FTCC) $(FTO_)pfrgload.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrgload.c
+
+$(FTOBJ)pfrcmap.$(OBJ) : $(FTSRC)pfr$(D)pfrcmap.c
+	$(FTCC) $(FTO_)pfrcmap.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrcmap.c
+
+$(FTOBJ)pfrdrivr.$(OBJ) : $(FTSRC)pfr$(D)pfrdrivr.c
+	$(FTCC) $(FTO_)pfrdrivr.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrdrivr.c
+
+$(FTOBJ)pfrsbit.$(OBJ) : $(FTSRC)pfr$(D)pfrsbit.c
+	$(FTCC) $(FTO_)pfrsbit.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrsbit.c
+
+$(FTOBJ)pfrobjs.$(OBJ) : $(FTSRC)pfr$(D)pfrobjs.c
+	$(FTCC) $(FTO_)pfrobjs.$(OBJ) $(C_) $(FTSRC)pfr$(D)pfrobjs.c
+
+$(FTOBJ)psobjs.$(OBJ) : $(FTSRC)psaux$(D)psobjs.c
+	$(FTCC) $(FTO_)psobjs.$(OBJ) $(C_) $(FTSRC)psaux$(D)psobjs.c
+
+$(FTOBJ)t1decode.$(OBJ) : $(FTSRC)psaux$(D)t1decode.c
+	$(FTCC) $(FTO_)t1decode.$(OBJ) $(C_) $(FTSRC)psaux$(D)t1decode.c
+
+$(FTOBJ)t1cmap.$(OBJ) : $(FTSRC)psaux$(D)t1cmap.c
+	$(FTCC) $(FTO_)t1cmap.$(OBJ) $(C_) $(FTSRC)psaux$(D)t1cmap.c
+
+$(FTOBJ)afmparse.$(OBJ) : $(FTSRC)psaux$(D)afmparse.c
+	$(FTCC) $(FTO_)afmparse.$(OBJ) $(C_) $(FTSRC)psaux$(D)afmparse.c
+
+$(FTOBJ)psconv.$(OBJ) : $(FTSRC)psaux$(D)psconv.c
+	$(FTCC) $(FTO_)psconv.$(OBJ) $(C_) $(FTSRC)psaux$(D)psconv.c
+
+$(FTOBJ)psauxmod.$(OBJ) : $(FTSRC)psaux$(D)psauxmod.c
+	$(FTCC) $(FTO_)psauxmod.$(OBJ) $(C_) $(FTSRC)psaux$(D)psauxmod.c
+
+$(FTOBJ)pshrec.$(OBJ) : $(FTSRC)pshinter$(D)pshrec.c
+	$(FTCC) $(FTO_)pshrec.$(OBJ) $(C_) $(FTSRC)pshinter$(D)pshrec.c
+
+$(FTOBJ)pshglob.$(OBJ) : $(FTSRC)pshinter$(D)pshglob.c
+	$(FTCC) $(FTO_)pshglob.$(OBJ) $(C_) $(FTSRC)pshinter$(D)pshglob.c
+
+$(FTOBJ)pshmod.$(OBJ) : $(FTSRC)pshinter$(D)pshmod.c
+	$(FTCC) $(FTO_)pshmod.$(OBJ) $(C_) $(FTSRC)pshinter$(D)pshmod.c
+
+$(FTOBJ)pshalgo.$(OBJ) : $(FTSRC)pshinter$(D)pshalgo.c
+	$(FTCC) $(FTO_)pshalgo.$(OBJ) $(C_) $(FTSRC)pshinter$(D)pshalgo.c
+
+$(FTOBJ)psmodule.$(OBJ) : $(FTSRC)psnames$(D)psmodule.c
+	$(FTCC) $(FTO_)psmodule.$(OBJ) $(C_) $(FTSRC)psnames$(D)psmodule.c
+
+$(FTOBJ)pspic.$(OBJ) : $(FTSRC)psnames$(D)pspic.c
+	$(FTCC) $(FTO_)pspic.$(OBJ) $(C_) $(FTSRC)psnames$(D)pspic.c
+
+$(FTOBJ)ftraster.$(OBJ) : $(FTSRC)raster$(D)ftraster.c
+	$(FTCC) $(FTO_)ftraster.$(OBJ) $(C_) $(FTSRC)raster$(D)ftraster.c
+
+$(FTOBJ)ftrend1.$(OBJ) : $(FTSRC)raster$(D)ftrend1.c
+	$(FTCC) $(FTO_)ftrend1.$(OBJ) $(C_) $(FTSRC)raster$(D)ftrend1.c
+
+$(FTOBJ)rastpic.$(OBJ) : $(FTSRC)raster$(D)rastpic.c
+	$(FTCC) $(FTO_)rastpic.$(OBJ) $(C_) $(FTSRC)raster$(D)rastpic.c
+
+$(FTOBJ)ftgrays.$(OBJ) : $(FTSRC)smooth$(D)ftgrays.c
+	$(FTCC) $(FTO_)ftgrays.$(OBJ) $(C_) $(FTSRC)smooth$(D)ftgrays.c
+
+$(FTOBJ)ftsmooth.$(OBJ) : $(FTSRC)smooth$(D)ftsmooth.c
+	$(FTCC) $(FTO_)ftsmooth.$(OBJ) $(C_) $(FTSRC)smooth$(D)ftsmooth.c
+
+$(FTOBJ)ftspic.$(OBJ) : $(FTSRC)smooth$(D)ftspic.c
+	$(FTCC) $(FTO_)ftspic.$(OBJ) $(C_) $(FTSRC)smooth$(D)ftspic.c
+
+$(FTOBJ)sfobjs.$(OBJ) : $(FTSRC)sfnt$(D)sfobjs.c
+	$(FTCC) $(FTO_)sfobjs.$(OBJ) $(C_) $(FTSRC)sfnt$(D)sfobjs.c
+
+$(FTOBJ)sfdriver.$(OBJ) : $(FTSRC)sfnt$(D)sfdriver.c
+	$(FTCC) $(FTO_)sfdriver.$(OBJ) $(C_) $(FTSRC)sfnt$(D)sfdriver.c
+
+$(FTOBJ)ttcmap.$(OBJ) : $(FTSRC)sfnt$(D)ttcmap.c
+	$(FTCC) $(FTO_)ttcmap.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttcmap.c
+
+$(FTOBJ)ttmtx.$(OBJ) : $(FTSRC)sfnt$(D)ttmtx.c
+	$(FTCC) $(FTO_)ttmtx.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttmtx.c
+
+$(FTOBJ)ttpost.$(OBJ) : $(FTSRC)sfnt$(D)ttpost.c
+	$(FTCC) $(FTO_)ttpost.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttpost.c
+
+$(FTOBJ)ft2ttload.$(OBJ) : $(FTSRC)sfnt$(D)ttload.c
+	$(FTCC) $(FTO_)ft2ttload.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttload.c
+
+$(FTOBJ)ttsbit.$(OBJ) : $(FTSRC)sfnt$(D)ttsbit.c
+	$(FTCC) $(FTO_)ttsbit.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttsbit.c
+
+$(FTOBJ)ttkern.$(OBJ) : $(FTSRC)sfnt$(D)ttkern.c
+	$(FTCC) $(FTO_)ttkern.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttkern.c
+
+$(FTOBJ)ttbdf.$(OBJ) : $(FTSRC)sfnt$(D)ttbdf.c
+	$(FTCC) $(FTO_)ttbdf.$(OBJ) $(C_) $(FTSRC)sfnt$(D)ttbdf.c
+
+$(FTOBJ)sfntpic.$(OBJ) : $(FTSRC)sfnt$(D)sfntpic.c
+	$(FTCC) $(FTO_)sfntpic.$(OBJ) $(C_) $(FTSRC)sfnt$(D)sfntpic.c
+
+$(FTOBJ)ttdriver.$(OBJ) : $(FTSRC)truetype$(D)ttdriver.c
+	$(FTCC) $(FTO_)ttdriver.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttdriver.c
+
+$(FTOBJ)ft2ttobjs.$(OBJ) : $(FTSRC)truetype$(D)ttobjs.c
+	$(FTCC) $(FTO_)ft2ttobjs.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttobjs.c
+
+$(FTOBJ)ttpload.$(OBJ) : $(FTSRC)truetype$(D)ttpload.c
+	$(FTCC) $(FTO_)ttpload.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttpload.c
+
+$(FTOBJ)ttgload.$(OBJ) : $(FTSRC)truetype$(D)ttgload.c
+	$(FTCC) $(FTO_)ttgload.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttgload.c
+
+$(FTOBJ)ft2ttinterp.$(OBJ) : $(FTSRC)truetype$(D)ttinterp.c
+	$(FTCC) $(FTO_)ft2ttinterp.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttinterp.c
+
+$(FTOBJ)ttgxvar.$(OBJ) : $(FTSRC)truetype$(D)ttgxvar.c
+	$(FTCC) $(FTO_)ttgxvar.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttgxvar.c
+
+$(FTOBJ)ttpic.$(OBJ) : $(FTSRC)truetype$(D)ttpic.c
+	$(FTCC) $(FTO_)ttpic.$(OBJ) $(C_) $(FTSRC)truetype$(D)ttpic.c
+
+$(FTOBJ)t1afm.$(OBJ) : $(FTSRC)type1$(D)t1afm.c
+	$(FTCC) $(FTO_)t1afm.$(OBJ) $(C_) $(FTSRC)type1$(D)t1afm.c
+
+$(FTOBJ)t1driver.$(OBJ) : $(FTSRC)type1$(D)t1driver.c
+	$(FTCC) $(FTO_)t1driver.$(OBJ) $(C_) $(FTSRC)type1$(D)t1driver.c
+
+$(FTOBJ)t1objs.$(OBJ) : $(FTSRC)type1$(D)t1objs.c
+	$(FTCC) $(FTO_)t1objs.$(OBJ) $(C_) $(FTSRC)type1$(D)t1objs.c
+
+$(FTOBJ)t1load.$(OBJ) : $(FTSRC)type1$(D)t1load.c
+	$(FTCC) $(FTO_)t1load.$(OBJ) $(C_) $(FTSRC)type1$(D)t1load.c
+
+$(FTOBJ)t1gload.$(OBJ) : $(FTSRC)type1$(D)t1gload.c
+	$(FTCC) $(FTO_)t1gload.$(OBJ) $(C_) $(FTSRC)type1$(D)t1gload.c
+
+$(FTOBJ)t1parse.$(OBJ) : $(FTSRC)type1$(D)t1parse.c
+	$(FTCC) $(FTO_)t1parse.$(OBJ) $(C_) $(FTSRC)type1$(D)t1parse.c
+
+$(FTOBJ)t42objs.$(OBJ) : $(FTSRC)type42$(D)t42objs.c
+	$(FTCC) $(FTO_)t42objs.$(OBJ) $(C_) $(FTSRC)type42$(D)t42objs.c
+
+$(FTOBJ)t42parse.$(OBJ) : $(FTSRC)type42$(D)t42parse.c
+	$(FTCC) $(FTO_)t42parse.$(OBJ) $(C_) $(FTSRC)type42$(D)t42parse.c
+
+$(FTOBJ)t42drivr.$(OBJ) : $(FTSRC)type42$(D)t42drivr.c
+	$(FTCC) $(FTO_)t42drivr.$(OBJ) $(C_) $(FTSRC)type42$(D)t42drivr.c
+
+$(FTOBJ)winfnt.$(OBJ) : $(FTSRC)winfonts$(D)winfnt.c
+	$(FTCC) $(FTO_)winfnt.$(OBJ) $(C_) $(FTSRC)winfonts$(D)winfnt.c

Modified: branches/icc_work/base/gdevp14.c
===================================================================
--- branches/icc_work/base/gdevp14.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevp14.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -3014,7 +3014,6 @@
               
                 
                 break;
-
             default:			
 	        return_error(gs_error_rangecheck);
 	        break;
@@ -3596,6 +3595,8 @@
                 rc_decrement(parent_color->icc_profile,"pdf14_end_transparency_mask");
                 parent_color->icc_profile = NULL;
             }
+                memcpy(&(pdev->color_info.comp_bits),&(parent_color->comp_bits),GX_DEVICE_COLOR_MAX_COMPONENTS);
+                memcpy(&(pdev->color_info.comp_shift),&(parent_color->comp_shift),GX_DEVICE_COLOR_MAX_COMPONENTS);
         }
     }
     return ok;

Modified: branches/icc_work/base/gdevpdfe.c
===================================================================
--- branches/icc_work/base/gdevpdfe.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevpdfe.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -292,6 +292,9 @@
 	return 0; /* Must_not_happen, because the string is PS encoded. */
     c = data[*index];
     switch (c) {
+	case '(': (*index)++; return '(';
+	case ')': (*index)++; return ')';
+	case '\\': (*index)++; return '\\';
 	case 'n': (*index)++; return '\n';
 	case 'r': (*index)++; return '\r';
 	case 't': (*index)++; return '\t';
@@ -299,16 +302,23 @@
 	    break;
     }
     if (c >= '0' && c <= '7') {
+	int oct_loop;
 	/* octal */
 	byte v = c - '0';
 
-	for (;;) {
+	/* Octal values should always be three digits, one is consumed above! */
+	for (oct_loop = 0;oct_loop < 2; oct_loop++) {
 	    (*index)++;
 	    if (*index >= data_length)
+		/* Ran out of data, return what we found */
 		return v;
 	    c = data[*index];
-	    if (c < '0' || c > '7')
+	    if (c < '0' || c > '7') {
+		/* Ran out of numeric data, return what we found */
+		/* Need to 'unget' the non-numeric character */
+		(*index)--;
 		break;
+	    }
 	    v = v * 8 + (c - '0');
 	}
 	return v;	
@@ -330,13 +340,47 @@
 	    return_error(gs_error_VMerror);
 	for (i = 0; i < data_length; i++) {
 	    byte c = data[i];
-	    int v;
 
 	    if (c == '\\') 
 		c = decode_escape(data, data_length, &i);
 	    buf0[j] = c;
 	    j++;
 	}
+	if (buf0[0] == 0xfe && buf0[1] == 0xff) {
+	    /* Its a Unicode (UTF-16BE) string, convert to UTF-8 */
+	    UTF16 *buf0b, U16;
+	    UTF8 *buf1, *buf1b;
+
+	    buf1 = (UTF8 *)gs_alloc_bytes(pdev->memory, data_length * sizeof(unsigned char), 
+			"pdf_xmp_write_translated");
+	    if (buf1 == NULL)
+		return_error(gs_error_VMerror);
+	    buf1b = buf1;
+	    /* Skip the Byte Order Mark (0xfe 0xff) */
+	    buf0b = (UTF16 *)(buf0 + 2);
+	    /* ConvertUTF16to UTF8 expects a buffer of UTF16s in the local
+	     * endian-ness, but the data is big-endian. In case this is a little-endian
+	     * machine, process the buffer from big-endian to whatever is right for this platform.
+	     */
+	    for (i = 2; i < j; i+=2) {
+		U16 = (buf0[i] << 8) + buf0[i + 1];
+		*(buf0b++) = U16;
+	    }
+	    buf0b = (UTF16 *)(buf0 + 2);
+	    switch (ConvertUTF16toUTF8((const UTF16**)&buf0b, (UTF16 *)(buf0 + j),
+			     &buf1b, buf1 + j, strictConversion)) {
+		case conversionOK:
+		    write(s, buf1, buf1b - buf1);
+		    gs_free_object(pdev->memory, buf1, "pdf_xmp_write_translated");
+		    break;
+		case sourceExhausted:
+		case targetExhausted:
+		case sourceIllegal:
+		default:
+		    gs_free_object(pdev->memory, buf1, "pdf_xmp_write_translated");
+		    return_error(gs_error_rangecheck);
+	    }
+	} else
 	write(s, buf0, j);
 	gs_free_object(pdev->memory, buf0, "pdf_xmp_write_translated");
 	return 0;
@@ -352,8 +396,10 @@
 	    return_error(gs_error_VMerror);
 	buf1 = (UTF8 *)gs_alloc_bytes(pdev->memory, data_length * 2, 
 			"pdf_xmp_write_translated");
-	if (buf1 == NULL)
+	if (buf1 == NULL) {
+	    gs_free_object(pdev->memory, buf0, "pdf_xmp_write_translated");
 	    return_error(gs_error_VMerror);
+	}
 	buf0b = buf0;
 	buf1b = buf1;
 	for (i = 0; i < data_length; i++) {
@@ -362,8 +408,11 @@
 
 	    if (c == '\\') 
 		c = decode_escape(data, data_length, &i);
-	    if (c > pdev->DSCEncodingToUnicode.size)
+	    if (c > pdev->DSCEncodingToUnicode.size) {
+		gs_free_object(pdev->memory, buf0, "pdf_xmp_write_translated");
+		gs_free_object(pdev->memory, buf1, "pdf_xmp_write_translated");
 		return_error(gs_error_rangecheck);
+	    }
 
 	    v = pdev->DSCEncodingToUnicode.data[c];
 	    if (v == -1)
@@ -380,6 +429,8 @@
 	    case targetExhausted:
 	    case sourceIllegal:
 	    default:
+		gs_free_object(pdev->memory, buf0, "pdf_xmp_write_translated");
+		gs_free_object(pdev->memory, buf1, "pdf_xmp_write_translated");
 		return_error(gs_error_rangecheck);
 	}
 	gs_free_object(pdev->memory, buf0, "pdf_xmp_write_translated");

Modified: branches/icc_work/base/gdevpdtt.c
===================================================================
--- branches/icc_work/base/gdevpdtt.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevpdtt.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -760,6 +760,37 @@
 }
 
 /* 
+ * Special version of pdf_font_orig_matrix(), that cares FDArray font's FontMatrix too.
+ * Called only by pdf_glyph_width().
+ * 'cid' is only consulted if 'font' is a CIDFontType 0 CID font.
+ */
+static int
+glyph_orig_matrix(const gs_font *font, gs_glyph cid, gs_matrix *pmat)
+{
+    int code = pdf_font_orig_matrix(font, pmat);
+    if (code >= 0) {
+	if (font->FontType == ft_CID_encrypted) {
+	    int fidx;
+
+	    if (cid < GS_MIN_CID_GLYPH)
+		cid = GS_MIN_CID_GLYPH;
+	    code = ((gs_font_cid0 *)font)->cidata.glyph_data((gs_font_base *)font,
+				cid, NULL, &fidx);
+	    if (code < 0) {
+		code = ((gs_font_cid0 *)font)->cidata.glyph_data((gs_font_base *)font,
+				(gs_glyph)GS_MIN_CID_GLYPH, NULL, &fidx);
+	    }
+	    if (code >= 0) {
+		gs_matrix_multiply(&(gs_cid0_indexed_font(font, fidx)->FontMatrix),
+				pmat, pmat);
+	    }
+	}
+    }
+    return code;
+}
+
+
+/* 
  * Check the Encoding compatibility 
  */
 bool
@@ -2224,10 +2255,10 @@
 
     if (ofont->FontType == ft_composite)
 	return_error(gs_error_unregistered); /* Must not happen. */
-    code = pdf_font_orig_matrix((const gs_font *)cfont, &scale_c);
+    code = glyph_orig_matrix((const gs_font *)cfont, glyph, &scale_c);
     if (code < 0)
 	return code;
-    code = pdf_font_orig_matrix(ofont, &scale_o);
+    code = glyph_orig_matrix(ofont, glyph, &scale_o);
     if (code < 0)
 	return code;
     gs_matrix_scale(&scale_c, 1000.0, 1000.0, &scale_c);
@@ -2298,12 +2329,12 @@
 	pwidths->Width.xy.x = pwidths->Width.xy.y = pwidths->Width.w = 0;
 #endif
     if (cdevproc_result == NULL) {
+	info.members = 0;
 	code = ofont->procs.glyph_info(ofont, glyph, NULL,
 					    (GLYPH_INFO_WIDTH0 << wmode) |
 					    (GLYPH_INFO_VVECTOR0 << wmode) | 
 					    allow_cdevproc_callout,
 					    &info);
-	if (code == 0) {
 	/* fixme : Move this call before cfont->procs.glyph_info. */
 	if (info.members & GLYPH_INFO_CDEVPROC) {
 	    if (allow_cdevproc_callout)
@@ -2311,8 +2342,6 @@
 	    else
 		return_error(gs_error_rangecheck);
 	}
-	} else
-	    info.members = 0;
     } else {
 	info.width[0].x = cdevproc_result[0];
 	info.width[0].y = cdevproc_result[1];

Modified: branches/icc_work/base/gdevpx.c
===================================================================
--- branches/icc_work/base/gdevpx.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevpx.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -730,8 +730,10 @@
                                "pclxl_write_image_data_DeltaRow(buf)");
     prow = gs_alloc_bytes(xdev->v_memory, width_bytes, "pclxl_write_image_data_DeltaRow(prow)");
     /* the RLE routine can write uncompressed without extra-allocation */
-    if ((buf == 0) || (prow == 0))
-        return pclxl_write_image_data_RLE(xdev, data, data_bit, raster, width_bits, y, height);
+    if ((buf == 0) || (prow == 0)) {
+        pclxl_write_image_data_RLE(xdev, data, data_bit, raster, width_bits, y, height);
+	return;
+    }
     /* initialize the seed row */
     memset(prow, 0, width_bytes);
     cdata = buf;
@@ -760,8 +762,10 @@
 		       uint raster, uint width_bits, int y, int height)
 {
     /* If we only have 1 line, it does not make sense to do DeltaRow */
-    if (height < 2)
-    return pclxl_write_image_data_RLE(xdev, data, data_bit, raster, width_bits, y, height);
+    if (height < 2) {
+        pclxl_write_image_data_RLE(xdev, data, data_bit, raster, width_bits, y, height);
+        return;
+    }
 
     switch(xdev->CompressMode){
     case eDeltaRowCompression:

Modified: branches/icc_work/base/gdevtfax.c
===================================================================
--- branches/icc_work/base/gdevtfax.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevtfax.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -13,6 +13,8 @@
 
 /* $Id$ */
 /* TIFF and TIFF/fax devices */
+
+#include "stdint_.h"   /* for tiff.h */
 #include "gdevtifs.h"
 #include "gdevprn.h"
 #include "strimpl.h"

Modified: branches/icc_work/base/gdevtfnx.c
===================================================================
--- branches/icc_work/base/gdevtfnx.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevtfnx.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -13,6 +13,8 @@
 
 /* $Id$ */
 /* 12-bit & 24-bit RGB uncompressed TIFF driver */
+
+#include "stdint_.h"   /* for tiff.h */
 #include "gdevtifs.h"
 #include "gdevprn.h"
 

Modified: branches/icc_work/base/gdevtifs.c
===================================================================
--- branches/icc_work/base/gdevtifs.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevtifs.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -13,9 +13,11 @@
 
 /* $Id$ */
 /* TIFF-writing substructure */
-#include "gdevtifs.h"
+
+#include "stdint_.h"   /* for tiff.h */
 #include "stdio_.h"
 #include "time_.h"
+#include "gdevtifs.h"
 #include "gstypes.h"
 #include "gscdefs.h"
 #include "gdevprn.h"

Modified: branches/icc_work/base/gdevtsep.c
===================================================================
--- branches/icc_work/base/gdevtsep.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevtsep.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -18,6 +18,7 @@
 /*                 as well as a 'composite' 32-bit CMYK for the page.      */
 /* tiffsep1 device: Generate individual TIFF 1-bit files for each separation. */
 
+#include "stdint_.h"   /* for tiff.h */
 #include "gdevtifs.h"
 #include "gdevprn.h"
 #include "gdevdevn.h"

Modified: branches/icc_work/base/gdevwts.c
===================================================================
--- branches/icc_work/base/gdevwts.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gdevwts.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -916,6 +916,13 @@
     return code;
 }
 
+/* Unfortunately there are many bugs associated with optimizing away
+ *   raster operations to avoid creating a contone buffer (ie bug
+ *   #691154).  Until those are fixed the following should remain true.
+ */
+
+const bool ALWAYS_CONTONE = true;
+
 /*
  * We need to create custom memory buffer devices.  We use the default
  * create_buf_device routine and then we set our custom device procedures.
@@ -928,7 +935,7 @@
     int code = gx_default_create_buf_device(pbdev, target, y,
 	render_plane, mem, band_complexity);
     /* Now set our custom device procedures. */
-    if (band_complexity && band_complexity->nontrivial_rops) {
+    if ((band_complexity && band_complexity->nontrivial_rops) || ALWAYS_CONTONE) {
 	set_dev_proc(*pbdev, get_bits_rectangle,
 		     wtsimdi_contone_get_bits_rectangle);
     } else {

Modified: branches/icc_work/base/gs.mak
===================================================================
--- branches/icc_work/base/gs.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gs.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -34,10 +34,15 @@
 #	    look for files in the current directory first).
 #	GS_DOCDIR - the directory where documentation will be available
 #	    at run time.
+#	FTSRCDIR - the directory where there the FreeType library
+#	    source code is stored, relative to the source directory.
 #	JSRCDIR - the directory where the IJG JPEG library source code
 #	    is stored (at compilation time).
 #	PNGSRCDIR - the same for libpng.
 #	ZSRCDIR - the same for zlib.
+#	SHARE_FT - normally 0; if set to 1, asks the linker to use
+#	    and existing compiled freetype library instead of compiling
+#	    in the source code availabel in FTSRCDIR.
 #	SHARE_JPEG - normally 0; if set to 1, asks the linker to use
 #	    an existing compiled libjpeg (-ljpeg) instead of compiling and
 #	    linking libjpeg explicitly.  (We strongly recommend against
@@ -69,8 +74,6 @@
 #	    e.g. 'jasper' or 'jasper-/version/'
 #	JPX_CFLAGS - any platform-specific flags that are required
 #	    to properly compile in the jpeg2k library source
-#	ICCSRCDIR - the name of the ICC lib source dir, currently
-#	    always icclib (compiled in statically)
 #	IMDISRCDIR - the name of the IMDI lib source directory
 #	    generally 'imdi'
 #	SHARE_LCMS - If set to 1, asks the linker to use a separately
@@ -209,6 +212,8 @@
 #	    such as paths that must be defined by all top-level makefiles.
 
 #**************** PATCHES
+FTGENDIR=$(GLGENDIR)
+FTOBJDIR=$(GLOBJDIR)
 JGENDIR=$(GLGENDIR)
 JOBJDIR=$(GLOBJDIR)
 PNGGENDIR=$(GLGENDIR)

Modified: branches/icc_work/base/gsalloc.c
===================================================================
--- branches/icc_work/base/gsalloc.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gsalloc.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -727,6 +727,7 @@
     gs_ref_memory_t * const imem = (gs_ref_memory_t *)mem;
     obj_header_t *pp;
     gs_memory_type_ptr_t pstype;
+    gs_memory_struct_type_t saved_stype;
 
     struct_proc_finalize((*finalize));
     uint size, rounded_size;
@@ -777,10 +778,20 @@
     rounded_size = obj_align_round(size);
     finalize = pstype->finalize;
     if (finalize != 0) {
+
+        /* unfortunately device finalize procedures will clobber the
+           stype which is used for later debugging with "A" debug
+           tracing, so we save stype it in a local. */
+        if (gs_debug['a'])
+            saved_stype = *pstype;
+
 	if_debug3('u', "[u]finalizing %s 0x%lx (%s)\n",
 		  struct_type_name_string(pstype),
 		  (ulong) ptr, client_name_string(cname));
 	(*finalize) (ptr);
+
+        if (gs_debug['a'])
+            pstype = &saved_stype;
     }
     if ((byte *) ptr + rounded_size == imem->cc.cbot) {
 	alloc_trace(":-o ", imem, cname, pstype, size, ptr);

Modified: branches/icc_work/base/gsnogc.c
===================================================================
--- branches/icc_work/base/gsnogc.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gsnogc.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -32,7 +32,7 @@
 static void
 nogc_free_string(gs_memory_t * mem, byte * str, uint size, client_name_t cname)
 {
-    return gs_free_object(mem, str, cname);
+    gs_free_object(mem, str, cname);
     }
 
 static byte *
@@ -80,12 +80,12 @@
 
 	mem_prev = mem;
         set_procs(mem);
-        gs_consolidate_free(mem);
+        gs_consolidate_free((gs_memory_t *)mem);
 	if (mem->stable_memory != (gs_memory_t *)mem &&
 	    mem->stable_memory != 0
 	    ) {
-            set_procs(mem->stable_memory);
-            gs_consolidate_free(mem->stable_memory);
+            set_procs((gs_ref_memory_t *)mem->stable_memory);
+            gs_consolidate_free((gs_memory_t *)mem->stable_memory);
     }
 }
 }

Modified: branches/icc_work/base/gxipixel.c
===================================================================
--- branches/icc_work/base/gxipixel.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/gxipixel.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -364,19 +364,7 @@
 	/* that we implement less expensively. */
 	if (!pim->CombineWithColor)
 	    lop = rop3_know_T_0(lop) & ~lop_T_transparent;
-	else {
-	    if (rop3_uses_T(lop))
-		switch (color_draws_b_w(dev, pdcolor)) {
-		    case 0:
-			lop = rop3_know_T_0(lop);
-			break;
-		    case 1:
-			lop = rop3_know_T_1(lop);
-			break;
-		    default:
-			;
-		}
-	}
+
 	if (lop != rop3_S &&	/* if best case, no more work needed */
 	    !rop3_uses_T(lop) && bps == 1 && spp == 1 &&
 	    (b_w_color =

Modified: branches/icc_work/base/lib.mak
===================================================================
--- branches/icc_work/base/lib.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/lib.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -37,6 +37,8 @@
 # msvc builds, and lcms configures itself to depend on msvc extensions
 # (inline asm, including windows.h) when compiled under msvc.
 GLLCMSCC=$(CC) $(GCFLAGS) $(I_)$(GLI_) $(II)$(LCMSSRCDIR)$(D)include$(_I) $(GLF_)
+lcms_h=$(LCMSSRCDIR)$(D)include$(D)lcms.h
+icc34_h=$(LCMSSRCDIR)$(D)include$(D)icc34.h
 
 # All top-level makefiles define GLD.
 #GLD=$(GLGEN)
@@ -2501,7 +2503,7 @@
 	$(GLCC) $(GLO_)gsicc_profilecache.$(OBJ) $(C_) $(GLSRC)gsicc_profilecache.c
 	
 $(GLOBJ)gsicc_littlecms.$(OBJ) : $(GLSRC)gsicc_littlecms.c\
- $(gsicc_littlecms_h)
+ $(gsicc_littlecms_h) $(lcms_h)
 	$(GLLCMSCC) $(GLO_)gsicc_littlecms.$(OBJ) $(C_) $(GLSRC)gsicc_littlecms.c
 	
 # Note that gsicc_create requires compile with lcms to obtain icc34.h 
@@ -2512,9 +2514,12 @@
 $(GLOBJ)gsicc_create.$(OBJ) : $(GLSRC)gsicc_create.c $(GX) $(string__h)\
  $(gsmemory_h) $(gx_h) $(gxistate_h) $(gstypes_h) $(gscspace_h)\
  $(gscie_h) $(gsicc_create_h) $(gxarith_h) $(gsiccmanage_h) $(gsicccache_h)\
- $(math__h) $(gscolor2_h) $(gxcie_h)
+ $(math__h) $(gscolor2_h) $(gxcie_h) $(icc34_h)
 	$(GLLCMSCC) $(GLO_)gsicc_create.$(OBJ) $(C_) $(GLSRC)gsicc_create.c
 
+
+#include "icc34.h"   /* Note this header is needed even if lcms is not compiled as default CMS */
+
 # ---------------- Separation colors ---------------- #
 
 seprlib_=$(GLOBJ)gscsepr.$(OBJ) $(GLOBJ)gsnamecl.$(OBJ) $(GLOBJ)gsncdummy.$(OBJ)

Modified: branches/icc_work/base/macos-mcp.mak
===================================================================
--- branches/icc_work/base/macos-mcp.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/macos-mcp.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -117,10 +117,10 @@
 JPX_LIB=jasper
 JPXSRCDIR=jasper
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=icclib
+LCMSSRCDIR=lcms
 
 # IJS has not been ported to MacOS Classic. If you do the port,
 # you'll need to set these values. You'll also need to

Modified: branches/icc_work/base/macosx.mak
===================================================================
--- branches/icc_work/base/macosx.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/macosx.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -169,10 +169,10 @@
 SHARE_JBIG2=0
 JBIG2SRCDIR=jbig2dec
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=icclib
+LCMSSRCDIR=lcms
 
 # Define the directory where the ijs source is stored,
 # and the process forking method to use for the server.

Modified: branches/icc_work/base/msvclib.mak
===================================================================
--- branches/icc_work/base/msvclib.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/msvclib.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -172,11 +172,11 @@
 JPXSRCDIR=jasper
 !endif
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-!ifndef ICCSRCDIR
-ICCSRCDIR=icclib
+!ifndef LCMSSRCDIR
+LCMSSRCDIR=lcms
 !endif
 
 # Define the directory where the imdi library source is stored.

Modified: branches/icc_work/base/openvms.mak
===================================================================
--- branches/icc_work/base/openvms.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/openvms.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -130,10 +130,10 @@
 JPX_LIB=jasper
 JPXSRCDIR=jasper
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=[.icclib]
+LCMSSRCDIR=[.lcms]
 
 # IJS has not been ported to OpenVMS. If you do the port,
 # you'll need to set these values. You'll also need to

Modified: branches/icc_work/base/stdio_.h
===================================================================
--- branches/icc_work/base/stdio_.h	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/stdio_.h	2010-03-02 09:24:00 UTC (rev 10838)
@@ -68,6 +68,9 @@
 #if defined(_MSC_VER)
 #  define fdopen(handle,mode) _fdopen(handle,mode)
 #  define fileno(file) _fileno(file)
+#  if _MSC_VER < 1500	/* VS 2008 has vsnprintf */
+#    define vsnprintf _vsnprintf
+#  endif
 /* Microsoft Visual C++ 2005  doesn't properly define snprintf  */
 int snprintf(char *buffer, size_t count, const char *format , ...);
 #endif

Modified: branches/icc_work/base/ttinterp.c
===================================================================
--- branches/icc_work/base/ttinterp.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/ttinterp.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -3957,7 +3957,9 @@
 
     if ( BOUNDS( args[0], CUR.zp1.n_points ) )
     {
-      CUR.error = TT_Err_Invalid_Reference;
+	/* Current version of FreeType silently ignores this out of bounds error
+	 * and drops the instruction, see bug #691121 
+      CUR.error = TT_Err_Invalid_Reference; */
       return;
     }
 

Modified: branches/icc_work/base/ugcclib.mak
===================================================================
--- branches/icc_work/base/ugcclib.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/ugcclib.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -57,10 +57,10 @@
 JBIG2_LIB=jbig2dec
 JBIG2SRCDIR=jbig2dec
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=icclib
+LCMSSRCDIR=lcms
 
 # Define the directory where the ijs source is stored,
 # and the process forking method to use for the server.

Modified: branches/icc_work/base/unix-gcc.mak
===================================================================
--- branches/icc_work/base/unix-gcc.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/unix-gcc.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -168,10 +168,10 @@
 JBIG2_LIB=jbig2dec
 JBIG2SRCDIR=jbig2dec
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=icclib
+LCMSSRCDIR=lcms
 
 # Define the directory where the ijs source is stored,
 # and the process forking method to use for the server.

Modified: branches/icc_work/base/unixansi.mak
===================================================================
--- branches/icc_work/base/unixansi.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/unixansi.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -151,10 +151,10 @@
 JBIG2_LIB=jbig2dec
 JBIG2SRCDIR=jbig2dec
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-ICCSRCDIR=icclib
+LCMSSRCDIR=lcms
 
 # Define the directory where the ijs source is stored,
 # and the process forking method to use for the server.

Modified: branches/icc_work/base/version.mak
===================================================================
--- branches/icc_work/base/version.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/version.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,4 +1,4 @@
-#  Copyright (C) 2001-2009 Artifex Software, Inc.
+#  Copyright (C) 2001-2010 Artifex Software, Inc.
 #  All Rights Reserved.
 #
 #  This software is provided AS-IS with no warranty, either express or
@@ -16,10 +16,10 @@
 # Major and minor version numbers.
 # MINOR0 is different from MINOR only if MINOR is a single digit.
 GS_VERSION_MAJOR=8
-GS_VERSION_MINOR=71
-GS_VERSION_MINOR0=71
+GS_VERSION_MINOR=72
+GS_VERSION_MINOR0=72
 # Revision date: year x 10000 + month x 100 + day.
-GS_REVISIONDATE=20100203
+GS_REVISIONDATE=20100211
 # Derived values
 GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR0)
 GS_DOT_VERSION=$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR0)

Modified: branches/icc_work/base/watclib.mak
===================================================================
--- branches/icc_work/base/watclib.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/watclib.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -76,11 +76,11 @@
 JBIG2SRCDIR=jbig2dec
 !endif
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-!ifndef ICCSRCDIR
-ICCSRCDIR=icclib
+!ifndef LCMSSRCDIR
+LCMSSRCDIR=lcms
 !endif
 
 # Define the directory where the ijs source is stored,

Modified: branches/icc_work/base/watcw32.mak
===================================================================
--- branches/icc_work/base/watcw32.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/watcw32.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -119,11 +119,11 @@
 JBIG2SRCDIR=jbig2dec
 !endif
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
 
-!ifndef ICCSRCDIR
-ICCSRCDIR=icclib
+!ifndef LCMSSRCDIR
+LCMSSRCDIR=lcms
 !endif
 
 # Define the directory where the ijs source is stored,

Modified: branches/icc_work/base/winlib.mak
===================================================================
--- branches/icc_work/base/winlib.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/base/winlib.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -20,6 +20,7 @@
 
 # Note that built-in third-party libraries aren't available.
 
+SHARE_FT=0
 SHARE_JPEG=0
 SHARE_LIBPNG=0
 SHARE_LIBTIFF=0
@@ -79,15 +80,10 @@
 UFST_LIB_EXT=.lib
 !endif
 
-# Define conditinal name for FreeType bridge :
-!ifdef FT_ROOT
-FT_BRIDGE = 1
-FT_CFLAGS=$(I_)$(FT_ROOT)$(D)include$(_I)
-!ifndef FT_LIB
-FT_LIB = freetype238MT_D
+# Define conditinal for FreeType bridge :
+!ifndef FT_BRIDGE
+FT_BRIDGE = 0
 !endif
-FT_LIBS=$(FT_ROOT)$(D)objs$(D)$(FT_LIB).lib
-!endif
 
 # Define the files to be removed by `make clean'.
 # nmake expands macros when encountered, not when used,
@@ -104,6 +100,7 @@
 #!include $(COMMONDIR)/generic.mak
 !include $(GLSRCDIR)\gs.mak
 !include $(GLSRCDIR)\lib.mak
+!include $(GLSRCDIR)\freetype.mak
 !include $(GLSRCDIR)\jpeg.mak
 # zlib.mak must precede libpng.mak
 !include $(GLSRCDIR)\zlib.mak

Modified: branches/icc_work/doc/API.htm
===================================================================
--- branches/icc_work/doc/API.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/API.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -760,7 +760,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 
 <!-- [3.0 end visible trailer] ============================================= -->

Modified: branches/icc_work/doc/C-style.htm
===================================================================
--- branches/icc_work/doc/C-style.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/C-style.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1578,7 +1578,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Changes.htm
===================================================================
--- branches/icc_work/doc/Changes.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Changes.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -8,6 +8,139 @@
 </head>
 <body>
 
+<p><strong><a name="2010-02-09T161339.643382Z"></a>
+2010-02-09T16:13:39.643382Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Clean up some typos in the release notes, and mention the reduced memory
+footprint of the halftone cache from r10006.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T221030.586772Z"></a>
+2010-02-08T22:10:30.586772Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the change logs for the second 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T220322.755385Z"></a>
+2010-02-08T22:03:22.755385Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Add some notes on what's new in the 8.71 release.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T200658.778484Z"></a>
+2010-02-08T20:06:58.778484Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the the release dates for the second 8.71 release candidate.
+</pre>
+<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T173532.033134Z"></a>
+2010-02-08T17:35:32.033134Z Robin Watts</strong></p>
+<blockquote>
+<pre>
+Update Visual Studio solutions to use the DEVSTUDIO= form of makefile
+invocation, rather than MSVC_STUDIO=8 version. This should isolate the
+solution/projects entirely from the version of visual studio in use.
+
+Simplify the ReadMe.txt file accordingly.
+
+Take the opportunity to add the resource files to the list in the
+ghostscript.vcproj file. This makes no difference to the project in
+terms of building, but enables easy navigation/editing of files
+within VS.
+
+</pre>
+<p>[/trunk/ghostpdl/win32/ReadMe.txt /trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj /trunk/ghostpdl/win32/language_switch.vcproj]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164547.345828Z"></a>
+2010-02-08T16:45:47.345828Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 2 of 2)
+
+The revisions 10474 and 10476 were intended to address an indeterminism but actually
+introduced a fairly serious regression. The code was changed to return any error value
+from the glyph_info method before testing the members of the 'info' structure passed to
+the method. Previously one of the member could be examined when an error had meant that
+the member was still uniinitialised.
+
+However, these revision missed the fact that the glyph_info method can return a
+'rangecheck' error when they require a CDevProc to be executed. Because the error code
+was tested before checking for a CDevProc, the pdfwrite code never executed the
+CDevproc.
+
+This resulted in a (very) few regressions, this is because the PDF interpreter uses
+a CDevProc to alter the widths of glyphs if a /W array is present in a PDF file.
+
+The code now initialises the member of the structure to 0, which we then test before
+checking the return code. If we need to run a CDevProc we now do so.
+
+Part 2 of this commit explains some further issues with CDevProcs.
+
+</pre>
+<p>[base/gdevpdtt.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164518.598274Z"></a>
+2010-02-08T16:45:18.598274Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 1 of 2)
+
+The revision 10603 fixed a number of issues relating to FontMatrix and descendant fonts
+of CIDFonts. However part of the fix, in CIDWProc, used 'currentfont' to address the
+font dictionary instead of 'currentdict', as is done in the rest of the routine.
+
+For rendering devices this works well, but for pdfwrite the two dictionaries are not 
+the same, and this causes PostScript errors.
+
+This error was initially hidden by the revisions 10474 and 10476 which inadvertently 
+caused all CDevProc routines not to execute when using pdfwrite.
+
+This patch alters the CIDWProc to use currentdict instead of currentfont, there are no
+differences with rendering devices but with pdfwrite this causes the CDevProc to 
+execute properly, eliminating a number of errors (when the faulty revisiions 10474
+and 10476 are rolled back)
+
+</pre>
+<p>[Resource/Init/pdf_font.ps]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T174757.663462Z"></a>
+2010-02-04T17:47:57.663462Z Lars Uebernickel</strong></p>
+<blockquote>
+<pre>
+Changed MaxStripSize for TIFF devices to default to 8 KB.
+
+This is necessary, because libtiff keeps a whole strip in memory at a time,
+which resulted in very large buffers for big files.  Support of MaxStripSize for
+all TIFF devices which didn't have it before was also added.
+
+</pre>
+<p>[base/gdevtifs.c base/gdevtifs.h tiff/libtiff/tif_config.vc.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T033854.455593Z"></a>
+2010-02-04T03:38:54.455593Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update change logs for the 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
 <p><strong><a name="2010-02-03T224615.528358Z"></a>
 2010-02-03T22:46:15.528358Z Ralph Giles</strong></p>
 <blockquote>
@@ -3454,7 +3587,7 @@
 operations that are used for RGB devices. This was the source of an 
 indeterminism in Bug 690477. Thanks to Marcos for the detailed bug 
 information.
-
+ 
 DIFFERENCES EXPECTED:
   
 None. Apparently no other files use the non-separable luminosity 
@@ -3603,7 +3736,7 @@
 <blockquote>
 <pre>
 Fix mistype of which procs to set to when we change the color space for a transparency group.  If we are running with a separation device with spot colors then we need to use the compressed encoding and decoding.  This fixes bug 690816.
- 
+
 DIFFERENCES EXPECTED:
 
 None since it will only show up for separation devices.</pre>

Modified: branches/icc_work/doc/Commprod.htm
===================================================================
--- branches/icc_work/doc/Commprod.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Commprod.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -251,7 +251,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/DLL.htm
===================================================================
--- branches/icc_work/doc/DLL.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/DLL.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -702,7 +702,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Deprecated.htm
===================================================================
--- branches/icc_work/doc/Deprecated.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Deprecated.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -5594,7 +5594,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Details.htm
===================================================================
--- branches/icc_work/doc/Details.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Details.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -8,6 +8,139 @@
 </head>
 <body>
 
+<p><strong><a name="2010-02-09T161339.643382Z"></a>
+2010-02-09T16:13:39.643382Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Clean up some typos in the release notes, and mention the reduced memory
+footprint of the halftone cache from r10006.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T221030.586772Z"></a>
+2010-02-08T22:10:30.586772Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the change logs for the second 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T220322.755385Z"></a>
+2010-02-08T22:03:22.755385Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Add some notes on what's new in the 8.71 release.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T200658.778484Z"></a>
+2010-02-08T20:06:58.778484Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the the release dates for the second 8.71 release candidate.
+</pre>
+<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T173532.033134Z"></a>
+2010-02-08T17:35:32.033134Z Robin Watts</strong></p>
+<blockquote>
+<pre>
+Update Visual Studio solutions to use the DEVSTUDIO= form of makefile
+invocation, rather than MSVC_STUDIO=8 version. This should isolate the
+solution/projects entirely from the version of visual studio in use.
+
+Simplify the ReadMe.txt file accordingly.
+
+Take the opportunity to add the resource files to the list in the
+ghostscript.vcproj file. This makes no difference to the project in
+terms of building, but enables easy navigation/editing of files
+within VS.
+
+</pre>
+<p>[/trunk/ghostpdl/win32/ReadMe.txt /trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj /trunk/ghostpdl/win32/language_switch.vcproj]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164547.345828Z"></a>
+2010-02-08T16:45:47.345828Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 2 of 2)
+
+The revisions 10474 and 10476 were intended to address an indeterminism but actually
+introduced a fairly serious regression. The code was changed to return any error value
+from the glyph_info method before testing the members of the 'info' structure passed to
+the method. Previously one of the member could be examined when an error had meant that
+the member was still uniinitialised.
+
+However, these revision missed the fact that the glyph_info method can return a
+'rangecheck' error when they require a CDevProc to be executed. Because the error code
+was tested before checking for a CDevProc, the pdfwrite code never executed the
+CDevproc.
+
+This resulted in a (very) few regressions, this is because the PDF interpreter uses
+a CDevProc to alter the widths of glyphs if a /W array is present in a PDF file.
+
+The code now initialises the member of the structure to 0, which we then test before
+checking the return code. If we need to run a CDevProc we now do so.
+
+Part 2 of this commit explains some further issues with CDevProcs.
+
+</pre>
+<p>[base/gdevpdtt.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164518.598274Z"></a>
+2010-02-08T16:45:18.598274Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 1 of 2)
+
+The revision 10603 fixed a number of issues relating to FontMatrix and descendant fonts
+of CIDFonts. However part of the fix, in CIDWProc, used 'currentfont' to address the
+font dictionary instead of 'currentdict', as is done in the rest of the routine.
+
+For rendering devices this works well, but for pdfwrite the two dictionaries are not 
+the same, and this causes PostScript errors.
+
+This error was initially hidden by the revisions 10474 and 10476 which inadvertently 
+caused all CDevProc routines not to execute when using pdfwrite.
+
+This patch alters the CIDWProc to use currentdict instead of currentfont, there are no
+differences with rendering devices but with pdfwrite this causes the CDevProc to 
+execute properly, eliminating a number of errors (when the faulty revisiions 10474
+and 10476 are rolled back)
+
+</pre>
+<p>[Resource/Init/pdf_font.ps]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T174757.663462Z"></a>
+2010-02-04T17:47:57.663462Z Lars Uebernickel</strong></p>
+<blockquote>
+<pre>
+Changed MaxStripSize for TIFF devices to default to 8 KB.
+
+This is necessary, because libtiff keeps a whole strip in memory at a time,
+which resulted in very large buffers for big files.  Support of MaxStripSize for
+all TIFF devices which didn't have it before was also added.
+
+</pre>
+<p>[base/gdevtifs.c base/gdevtifs.h tiff/libtiff/tif_config.vc.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T033854.455593Z"></a>
+2010-02-04T03:38:54.455593Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update change logs for the 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
 <p><strong><a name="2010-02-03T224615.528358Z"></a>
 2010-02-03T22:46:15.528358Z Ralph Giles</strong></p>
 <blockquote>
@@ -1483,7 +1616,7 @@
 when the texture was 'expanded' and the unexpanded texture had repitions in y.
 Bug 690299.
 
-DETAILS :
+DETAILS:
 
 The expansion was only needed if the device color space was RGB, but not 8 bit.
 This doesn't really give valid output anyway for RasterOps, but at least
@@ -1493,7 +1626,7 @@
 </pre>
 <p>[base/gdevdrop.c]</p>
 </blockquote>
- 
+
 <p><strong><a name="2009-12-12T223917.759602Z"></a>
 2009-12-12T22:39:17.759602Z regression</strong></p>
 <blockquote>
@@ -3295,7 +3428,7 @@
 Adobe Acrobat considers the use of clip operation on new path a no-op.
 Check this and don't clip when there's no path. Bug 690891.
 
-DETAILS :
+DETAILS:
 Besides the change in clipping, this patch reverts the code that preserves
 current point position after fill operations and interferes with new path
 detection. Reverted code predates source control and its purpose is not clear.
@@ -4124,7 +4257,7 @@
 
 Bug688807.pdf has a minor progression.  Bug688159.pdf and Bug689509.pdf also reported differences but I could not see any using cmpi.  Also, we may need to take a look at the XPS output.  It was unclear to me which were regressions and which were indeterministic.
 
-DETAILS :
+DETAILS:
 
 The following example (as well as bug690777) drove the need for this commit.
 
@@ -4198,7 +4331,7 @@
 <blockquote>
 <pre>
 Allow for newly added regression files to produce errors (compare.pl).
- 
+
 Fixed missing nice on some commands (build.pl).
 
 Fixed spurious error message when running svn commit regression  (run.pl).
@@ -4661,7 +4794,7 @@
 Fix for segfault when peekstring requests more data than remains in a
 %rom% file. Bug 690697.
 
-DETAILS :
+DETAILS:
 
 The EOFC was not being set correctly, so a subsequent operation would have
 cursor.r values that were invalid. Refer to the invariant in the documentation
@@ -5819,7 +5952,7 @@
 
   &quot;Valid memory pointer used create a tile_clip device instead of
   NULL&quot;
- 
+
 Unfortunately the tile clip device is created on the c stack and
 should not get a non null memory pointer.  Later in gxcht.c this same
 device memory pointer is used to get a gs id, maybe this was the real

Modified: branches/icc_work/doc/Details8.htm
===================================================================
--- branches/icc_work/doc/Details8.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Details8.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -29,7 +29,7 @@
 <h2>Table of contents</h2>
 
 <blockquote><ul>
-<li><a href="#Version8.71">Version 8.71 (2009-02-03)</a>
+<li><a href="#Version8.71">Version 8.71 (2009-02-10)</a>
 <li><a href="#Version8.70">Version 8.70 (2009-07-31)</a>
 <li><a href="#Version8.64">Version 8.64 (2009-02-03)</a>
 <li><a href="#Version8.63">Version 8.63 (2008-08-01)</a>
@@ -93,11 +93,36 @@
 
 <!-- [2.0 begin contents] ================================================== -->
 
-<h2><a name="Version8.71"></a>Version 8.71 (2010-02-03)</h2>
+<h2><a name="Version8.71"></a>Version 8.71 (2010-02-10)</h2>
 
-<p>
-This is a candidate release for the version 8.71.
+<p>This is the second release in the stable 8.7x series. It features
+improved handling of fonts, nesting and color fixes with
+transparency objects, reduced memory footprint for the halftone cache,
+as well as improvements to the pxl output devices,
+and the usual number of bug and robustness fixes.
 
+<p>New in this release is an experimental project file for
+Microsoft Visual Studio. This wraps the normal nmake build,
+and makes it easier for developers to get started building
+Ghostscript with that compiler.</p>
+
+<p>Support for tiff file output is now provided using the libtiff
+implementation rather than our more limited native code as in
+previous releases. There is also a new 'tiffsep1' output device
+which produces halftoned separations at 1 bit-per-pixel, in contrast
+to the 'tiffsep' device which produces 8 bit-per-pixel plates.
+
+<p>Support for using FreeType as a type rasterizer has been greatly improved.
+We do not recommend its use as of this release, but it is much more functional
+than previously and our intent is that it will become the default in a future
+release.
+
+<p>The graphics library has been updated to provide more accurate scan
+conversion of vector art including fixes to dash behavior, transparent
+stroked paths, thick stroked paths, radial shadings, xps cap handling,
+"pie" joins, degenerate beziers, improved handling of dropouts in
+thin strokes and better thin axis-aligned strokes.
+
 <p>For a list of open issues, or to report problems with this release,
 please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>.
 
@@ -108,7 +133,139 @@
 
 <h3><a name="8.71_changelog"></a>Changelog</h3>
 
+<p><strong><a name="2010-02-09T161339.643382Z"></a>
+2010-02-09T16:13:39.643382Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Clean up some typos in the release notes, and mention the reduced memory
+footprint of the halftone cache from r10006.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
 
+<p><strong><a name="2010-02-08T221030.586772Z"></a>
+2010-02-08T22:10:30.586772Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the change logs for the second 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T220322.755385Z"></a>
+2010-02-08T22:03:22.755385Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Add some notes on what's new in the 8.71 release.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T200658.778484Z"></a>
+2010-02-08T20:06:58.778484Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the the release dates for the second 8.71 release candidate.
+</pre>
+<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T173532.033134Z"></a>
+2010-02-08T17:35:32.033134Z Robin Watts</strong></p>
+<blockquote>
+<pre>
+Update Visual Studio solutions to use the DEVSTUDIO= form of makefile
+invocation, rather than MSVC_STUDIO=8 version. This should isolate the
+solution/projects entirely from the version of visual studio in use.
+
+Simplify the ReadMe.txt file accordingly.
+
+Take the opportunity to add the resource files to the list in the
+ghostscript.vcproj file. This makes no difference to the project in
+terms of building, but enables easy navigation/editing of files
+within VS.
+
+</pre>
+<p>[/trunk/ghostpdl/win32/ReadMe.txt /trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj /trunk/ghostpdl/win32/language_switch.vcproj]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164547.345828Z"></a>
+2010-02-08T16:45:47.345828Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 2 of 2)
+
+The revisions 10474 and 10476 were intended to address an indeterminism but actually
+introduced a fairly serious regression. The code was changed to return any error value
+from the glyph_info method before testing the members of the 'info' structure passed to
+the method. Previously one of the member could be examined when an error had meant that
+the member was still uniinitialised.
+
+However, these revision missed the fact that the glyph_info method can return a
+'rangecheck' error when they require a CDevProc to be executed. Because the error code
+was tested before checking for a CDevProc, the pdfwrite code never executed the
+CDevproc.
+
+This resulted in a (very) few regressions, this is because the PDF interpreter uses
+a CDevProc to alter the widths of glyphs if a /W array is present in a PDF file.
+
+The code now initialises the member of the structure to 0, which we then test before
+checking the return code. If we need to run a CDevProc we now do so.
+
+Part 2 of this commit explains some further issues with CDevProcs.
+
+</pre>
+<p>[base/gdevpdtt.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164518.598274Z"></a>
+2010-02-08T16:45:18.598274Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 1 of 2)
+
+The revision 10603 fixed a number of issues relating to FontMatrix and descendant fonts
+of CIDFonts. However part of the fix, in CIDWProc, used 'currentfont' to address the
+font dictionary instead of 'currentdict', as is done in the rest of the routine.
+
+For rendering devices this works well, but for pdfwrite the two dictionaries are not 
+the same, and this causes PostScript errors.
+
+This error was initially hidden by the revisions 10474 and 10476 which inadvertently 
+caused all CDevProc routines not to execute when using pdfwrite.
+
+This patch alters the CIDWProc to use currentdict instead of currentfont, there are no
+differences with rendering devices but with pdfwrite this causes the CDevProc to 
+execute properly, eliminating a number of errors (when the faulty revisiions 10474
+and 10476 are rolled back)
+
+</pre>
+<p>[Resource/Init/pdf_font.ps]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T174757.663462Z"></a>
+2010-02-04T17:47:57.663462Z Lars Uebernickel</strong></p>
+<blockquote>
+<pre>
+Changed MaxStripSize for TIFF devices to default to 8 KB.
+
+This is necessary, because libtiff keeps a whole strip in memory at a time,
+which resulted in very large buffers for big files.  Support of MaxStripSize for
+all TIFF devices which didn't have it before was also added.
+
+</pre>
+<p>[base/gdevtifs.c base/gdevtifs.h tiff/libtiff/tif_config.vc.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T033854.455593Z"></a>
+2010-02-04T03:38:54.455593Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update change logs for the 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
 <p><strong><a name="2010-02-03T224615.528358Z"></a>
 2010-02-03T22:46:15.528358Z Ralph Giles</strong></p>
 <blockquote>
@@ -104033,7 +104190,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Develop.htm
===================================================================
--- branches/icc_work/doc/Develop.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Develop.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -4866,7 +4866,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Devices.htm
===================================================================
--- branches/icc_work/doc/Devices.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Devices.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1618,7 +1618,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Drivers.htm
===================================================================
--- branches/icc_work/doc/Drivers.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Drivers.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -3261,7 +3261,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Fonts.htm
===================================================================
--- branches/icc_work/doc/Fonts.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Fonts.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -774,7 +774,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Helpers.htm
===================================================================
--- branches/icc_work/doc/Helpers.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Helpers.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -300,7 +300,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History1.htm
===================================================================
--- branches/icc_work/doc/History1.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History1.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -430,7 +430,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History2.htm
===================================================================
--- branches/icc_work/doc/History2.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History2.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -5224,7 +5224,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History3.htm
===================================================================
--- branches/icc_work/doc/History3.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History3.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -8589,7 +8589,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 
 <!-- [3.0 end visible trailer] ============================================= -->

Modified: branches/icc_work/doc/History4.htm
===================================================================
--- branches/icc_work/doc/History4.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History4.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -3973,7 +3973,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History5.htm
===================================================================
--- branches/icc_work/doc/History5.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History5.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -13447,7 +13447,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History6.htm
===================================================================
--- branches/icc_work/doc/History6.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History6.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -7329,7 +7329,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History7.htm
===================================================================
--- branches/icc_work/doc/History7.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History7.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -15715,7 +15715,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/History8.htm
===================================================================
--- branches/icc_work/doc/History8.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/History8.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -29,7 +29,7 @@
 <h2>Table of contents</h2>
 
 <blockquote><ul>
-<li><a href="#Version8.71">Version 8.71 (2010-02-03)</a>
+<li><a href="#Version8.71">Version 8.71 (2010-02-10)</a>
 <li><a href="#Version8.70">Version 8.70 (2009-07-31)</a>
 <li><a href="#Version8.64">Version 8.64 (2009-02-03)</a>
 <li><a href="#Version8.63">Version 8.63 (2008-08-01)</a>
@@ -83,11 +83,36 @@
 <!-- [2.0 begin contents] ================================================== -->
 
 
-<h2><a name="Version8.71"></a>Version 8.71 (2010-02-03)</h2>
+<h2><a name="Version8.71"></a>Version 8.71 (2010-02-10)</h2>
 
-<p>
-This is a candidate release for the version 8.71.
+<p>This is the second release in the stable 8.7x series. It features
+improved handling of fonts, nesting and color fixes with
+transparency objects, reduced memory footprint for the halftone cache,
+as well as improvements to the pxl output devices,
+and the usual number of bug and robustness fixes.
 
+<p>New in this release is an experimental project file for
+Microsoft Visual Studio. This wraps the normal nmake build,
+and makes it easier for developers to get started building
+Ghostscript with that compiler.</p>
+
+<p>Support for tiff file output is now provided using the libtiff
+implementation rather than our more limited native code as in
+previous releases. There is also a new 'tiffsep1' output device
+which produces halftoned separations at 1 bit-per-pixel, in contrast
+to the 'tiffsep' device which produces 8 bit-per-pixel plates.
+
+<p>Support for using FreeType as a type rasterizer has been greatly improved.
+We do not recommend its use as of this release, but it is much more functional
+than previously and our intent is that it will become the default in a future
+release.
+
+<p>The graphics library has been updated to provide more accurate scan
+conversion of vector art including fixes to dash behavior, transparent
+stroked paths, thick stroked paths, radial shadings, xps cap handling,
+"pie" joins, degenerate beziers, improved handling of dropouts in
+thin strokes and better thin axis-aligned strokes.
+
 <p>For a list of open issues, or to report problems with this release,
 please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>.
 
@@ -98,7 +123,139 @@
 
 <h3><a name="8.71_changelog"></a>Changelog</h3>
 
+<p><strong><a name="2010-02-09T161339.643382Z"></a>
+2010-02-09T16:13:39.643382Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Clean up some typos in the release notes, and mention the reduced memory
+footprint of the halftone cache from r10006.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
 
+<p><strong><a name="2010-02-08T221030.586772Z"></a>
+2010-02-08T22:10:30.586772Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the change logs for the second 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/News.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T220322.755385Z"></a>
+2010-02-08T22:03:22.755385Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Add some notes on what's new in the 8.71 release.
+</pre>
+<p>[doc/News.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T200658.778484Z"></a>
+2010-02-08T20:06:58.778484Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update the the release dates for the second 8.71 release candidate.
+</pre>
+<p>[doc/History7.htm doc/Projects.htm doc/History8.htm man/dvipdf.1 base/gscdef.c man/ps2ascii.1 doc/Use.htm doc/Readme.htm doc/Source.htm doc/Deprecated.htm man/ps2epsi.1 doc/Install.htm doc/API.htm doc/Issues.htm doc/DLL.htm doc/Drivers.htm man/pfbtopfa.1 doc/Release.htm doc/Commprod.htm doc/Xfonts.htm doc/Devices.htm doc/Language.htm man/gs.1 man/pf2afm.1 doc/Fonts.htm doc/Ps2ps2.htm man/printafm.1 doc/Ps2pdf.htm doc/Develop.htm doc/Helpers.htm man/pdf2dsc.1 doc/Psfiles.htm doc/Lib.htm doc/gs-vms.hlp man/font2c.1 man/gsnd.1 base/version.mak man/pdfopt.1 doc/News.htm man/pdf2ps.1 man/ps2pdf.1 doc/Make.htm doc/Details8.htm doc/Unix-lpr.htm doc/C-style.htm doc/Ps-style.htm doc/History1.htm doc/History2.htm man/gslp.1 man/wftopfa.1 doc/History3.htm man/ps2ps.1 doc/Ps2epsi.htm doc/History4.htm man/ps2pdfwr.1 doc/History5.htm doc/History6.htm]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T173532.033134Z"></a>
+2010-02-08T17:35:32.033134Z Robin Watts</strong></p>
+<blockquote>
+<pre>
+Update Visual Studio solutions to use the DEVSTUDIO= form of makefile
+invocation, rather than MSVC_STUDIO=8 version. This should isolate the
+solution/projects entirely from the version of visual studio in use.
+
+Simplify the ReadMe.txt file accordingly.
+
+Take the opportunity to add the resource files to the list in the
+ghostscript.vcproj file. This makes no difference to the project in
+terms of building, but enables easy navigation/editing of files
+within VS.
+
+</pre>
+<p>[/trunk/ghostpdl/win32/ReadMe.txt /trunk/ghostpdl/win32/xps.vcproj ghostscript.vcproj /trunk/ghostpdl/win32/pcl.vcproj /trunk/ghostpdl/win32/svg.vcproj /trunk/ghostpdl/win32/language_switch.vcproj]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164547.345828Z"></a>
+2010-02-08T16:45:47.345828Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 2 of 2)
+
+The revisions 10474 and 10476 were intended to address an indeterminism but actually
+introduced a fairly serious regression. The code was changed to return any error value
+from the glyph_info method before testing the members of the 'info' structure passed to
+the method. Previously one of the member could be examined when an error had meant that
+the member was still uniinitialised.
+
+However, these revision missed the fact that the glyph_info method can return a
+'rangecheck' error when they require a CDevProc to be executed. Because the error code
+was tested before checking for a CDevProc, the pdfwrite code never executed the
+CDevproc.
+
+This resulted in a (very) few regressions, this is because the PDF interpreter uses
+a CDevProc to alter the widths of glyphs if a /W array is present in a PDF file.
+
+The code now initialises the member of the structure to 0, which we then test before
+checking the return code. If we need to run a CDevProc we now do so.
+
+Part 2 of this commit explains some further issues with CDevProcs.
+
+</pre>
+<p>[base/gdevpdtt.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-08T164518.598274Z"></a>
+2010-02-08T16:45:18.598274Z Ken Sharp</strong></p>
+<blockquote>
+<pre>
+Fix (pdfwrite) bug #691101 (part 1 of 2)
+
+The revision 10603 fixed a number of issues relating to FontMatrix and descendant fonts
+of CIDFonts. However part of the fix, in CIDWProc, used 'currentfont' to address the
+font dictionary instead of 'currentdict', as is done in the rest of the routine.
+
+For rendering devices this works well, but for pdfwrite the two dictionaries are not 
+the same, and this causes PostScript errors.
+
+This error was initially hidden by the revisions 10474 and 10476 which inadvertently 
+caused all CDevProc routines not to execute when using pdfwrite.
+
+This patch alters the CIDWProc to use currentdict instead of currentfont, there are no
+differences with rendering devices but with pdfwrite this causes the CDevProc to 
+execute properly, eliminating a number of errors (when the faulty revisiions 10474
+and 10476 are rolled back)
+
+</pre>
+<p>[Resource/Init/pdf_font.ps]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T174757.663462Z"></a>
+2010-02-04T17:47:57.663462Z Lars Uebernickel</strong></p>
+<blockquote>
+<pre>
+Changed MaxStripSize for TIFF devices to default to 8 KB.
+
+This is necessary, because libtiff keeps a whole strip in memory at a time,
+which resulted in very large buffers for big files.  Support of MaxStripSize for
+all TIFF devices which didn't have it before was also added.
+
+</pre>
+<p>[base/gdevtifs.c base/gdevtifs.h tiff/libtiff/tif_config.vc.h base/gdevtsep.c doc/Devices.htm base/gdevtfnx.c base/gdevtfax.c]</p>
+</blockquote>
+
+<p><strong><a name="2010-02-04T033854.455593Z"></a>
+2010-02-04T03:38:54.455593Z Ralph Giles</strong></p>
+<blockquote>
+<pre>
+Update change logs for the 8.71 release candidate.
+</pre>
+<p>[doc/Changes.htm doc/History8.htm doc/Details8.htm doc/Details.htm]</p>
+</blockquote>
+
 <p><strong><a name="2010-02-03T224615.528358Z"></a>
 2010-02-03T22:46:15.528358Z Ralph Giles</strong></p>
 <blockquote>
@@ -61892,7 +62049,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Install.htm
===================================================================
--- branches/icc_work/doc/Install.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Install.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -533,7 +533,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Issues.htm
===================================================================
--- branches/icc_work/doc/Issues.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Issues.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -588,7 +588,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Language.htm
===================================================================
--- branches/icc_work/doc/Language.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Language.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -2367,7 +2367,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Lib.htm
===================================================================
--- branches/icc_work/doc/Lib.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Lib.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -861,7 +861,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Make.htm
===================================================================
--- branches/icc_work/doc/Make.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Make.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -2730,62 +2730,27 @@
 <h2><a name="FT_build"></a>How to build Ghostscript with FreeType</h2>
 
 <p>
-<em>Note: This section is only for users who wish to use Ghostscript with FreeType font renderer.
-Other users please skip this section.
+<em>Note: This section is only for users who wish to use Ghostscript with
+the FreeType font renderer. Other users please skip this section.
 </em>
 
 <p>
-Ghostscript sources do not include a copy of the FreeType sources.
-You need to obtain them from the 
-<a href="http://freetype.org/">FreeType Project</a>. 
-Ghostscript includes only some source modules that provide a 
-bridge to FreeType.
+Ghostscript sources include a copy of the the FreeType libary, or you
+can use a recent release which enables the incremental font interface.
 
 <p>
-Ghostscript makefiles do not include any script for building FreeType 
-libraries. Refer to FreeType manual how to build them. FreeType object 
-libraries must be built before building Ghostscript with the FreeType 
-bridge.
-
+With the autoconf build (Linux, MacOS X, Solaris, etc.) just pass
+<tt>--enable-freetype</tt> to the configure script. This will compile
+in the freetype source code and enable the font api bridge to freetype.
 <p>
-Note that Ghostscript requires FreeType to be built with the optional 
-incremental font support. Check that FT_CONFIG_OPTION_INCREMENTAL is 
-defined in the headers for your FreeType build. 
-<p>
-To build Ghostscript with FreeType, specify these additional options for 
-"make" either on the command line, or in the top-level makefile:
 
-<dl>
-<dt><code>FT_BRIDGE=1</code>
-<dd>Enables the FreeType bridge.
+<p>For Windows/MSVC you need to define FT_BRIGE=1 on the nmake
+command line. For example:
 
-<dt><code>FT_CFLAGS=<i>options</i></code>
-<dd>Specifies C compiler include directives and options for FreeType 
-library. Refer to the FreeType manual for information about them.
+<blockquote><pre>nmake -f psi\msvc32.mak FT_BRIDGE=1</pre></blockquote>
 
-<dt><code>FT_LIBS=<i>link-options</i></code>
-<dd>Specifies the path the the object library or options for linking 
-with FreeType. You must use the appropriate one for your platform and 
-linker.
-</dl>
+</p>
 
-<p>An example for Unix/GCC :
-<blockquote>
-<tt>make FT_BRIDGE=1 FT_CFLAGS=-Ifreetype/include FT_LIBS=freetype/objs/libfreetype.a</tt>
-</blockquote>
-or
-<blockquote>
-<tt>make FT_BRIDGE=1 FT_CFLAGS=`pkg-config --cflags freetype2` FT_LIBS=`pkg-config --libs freetype2`</tt>
-</blockquote>
-
-<p>For Windows/MSVC you need only specify FT_ROOT to be the path to the 
-top level source directory of your FreeType build.
-msvc32.mak sets the other options automatically. However,
-because the freetype project files for MSVC embed the version and build
-type in the library filename, it may be necessary to override the default
-library name, by passing for example FT_LIB=freetype241MT. FT_LIB only
-has an effect on the MSVC build, unlike FT_LIBS which is used by all the builds.
-
 <p>
 
 <!-- [2.0 end contents] ==================================================== -->
@@ -2807,7 +2772,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/News.htm
===================================================================
--- branches/icc_work/doc/News.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/News.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -55,20 +55,19 @@
 
 <!-- [2.0 begin contents] ================================================== -->
 
-<h3><a name="Version8.71"></a>Version 8.71 (2010-02-03)</h3>
+<h3><a name="Version8.72"></a>Version 8.72 (unreleased)</h3>
 
-<p>
-This is a candidate release for the version 8.71.
+<p>This is an unreleased development snapshot</p>
 
-<p>For a list of open issues, or to report problems with this release,
+<p>For a list of open issues, or to report problems,
 please visit <a href="http://bugs.ghostscript.com/">bugs.ghostscript.com</a>.
 
-<h3><a name="8.71_Incompatible_changes"></a>Incompatible changes</h3>
+<h3><a name="8.72_Incompatible_changes"></a>Incompatible changes</h3>
 
 <p>
 No recorded incompatible changes.
 
-<h3><a name="8.71_changelog"></a>Changelog</h3>
+<h3><a name="8.72_changelog"></a>Changelog</h3>
 
 <p>See the <a href="History8.htm">history file</a> for complete log 
 of changes.
@@ -93,7 +92,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.72, 11 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Projects.htm
===================================================================
--- branches/icc_work/doc/Projects.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Projects.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -669,7 +669,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Ps-style.htm
===================================================================
--- branches/icc_work/doc/Ps-style.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Ps-style.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -505,7 +505,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Ps2epsi.htm
===================================================================
--- branches/icc_work/doc/Ps2epsi.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Ps2epsi.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -176,7 +176,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Ps2pdf.htm
===================================================================
--- branches/icc_work/doc/Ps2pdf.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Ps2pdf.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1061,7 +1061,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Ps2ps2.htm
===================================================================
--- branches/icc_work/doc/Ps2ps2.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Ps2ps2.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -268,7 +268,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Psfiles.htm
===================================================================
--- branches/icc_work/doc/Psfiles.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Psfiles.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1014,7 +1014,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Readme.htm
===================================================================
--- branches/icc_work/doc/Readme.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Readme.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -583,7 +583,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Release.htm
===================================================================
--- branches/icc_work/doc/Release.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Release.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -829,7 +829,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Source.htm
===================================================================
--- branches/icc_work/doc/Source.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Source.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -376,7 +376,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Unix-lpr.htm
===================================================================
--- branches/icc_work/doc/Unix-lpr.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Unix-lpr.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -260,7 +260,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Use.htm
===================================================================
--- branches/icc_work/doc/Use.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Use.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -3685,7 +3685,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/Xfonts.htm
===================================================================
--- branches/icc_work/doc/Xfonts.htm	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/Xfonts.htm	2010-03-02 09:24:00 UTC (rev 10838)
@@ -258,7 +258,7 @@
 San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 
 <p>
-<small>Ghostscript version 8.71, 3 February 2010
+<small>Ghostscript version 8.71, 10 February 2010
 
 <!-- [3.0 end visible trailer] ============================================= -->
 

Modified: branches/icc_work/doc/gs-vms.hlp
===================================================================
--- branches/icc_work/doc/gs-vms.hlp	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/doc/gs-vms.hlp	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,7 +1,7 @@
 1 gs
  gs - GPL Ghostscript interpreter/previewer
 ! $Id$
-! Ghostscript version 8.71, 3 February 2010
+! Ghostscript version 8.71, 10 February 2010
   Usage:
    $ gs [options] [file ...]
 

Modified: branches/icc_work/lib/pdf2dsc.ps
===================================================================
--- branches/icc_work/lib/pdf2dsc.ps	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/lib/pdf2dsc.ps	2010-03-02 09:24:00 UTC (rev 10838)
@@ -116,7 +116,7 @@
    DSCfile PDFname write==only
    ( \(r\) file { DELAYSAFER { .setsafe } if } stopped pop\n) puts
    ( pdfopen begin\n) puts
-   ( copy_trailer_attrs\n) puts
+   ( process_trailer_attrs\n) puts
    (%%EndSetup\n) puts
 
    /.hasPageLabels false def % see "Page Labels" in the PDF Reference

Modified: branches/icc_work/man/dvipdf.1
===================================================================
--- branches/icc_work/man/dvipdf.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/dvipdf.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH DVIPDF 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH DVIPDF 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 dvipdf \- Convert TeX DVI file to PDF using ghostscript and dvips
 .SH SYNOPSIS

Modified: branches/icc_work/man/font2c.1
===================================================================
--- branches/icc_work/man/font2c.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/font2c.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH FONT2C 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH FONT2C 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 font2c \- Write PostScript Type 0 or Type 1 font as C code
 .SH SYNOPSIS

Modified: branches/icc_work/man/gs.1
===================================================================
--- branches/icc_work/man/gs.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/gs.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH GS 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH GS 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 gs \- Ghostscript (PostScript and PDF language interpreter and previewer)
 .SH SYNOPSIS

Modified: branches/icc_work/man/gslp.1
===================================================================
--- branches/icc_work/man/gslp.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/gslp.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH GSLP 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH GSLP 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 gslp \- Format and print text using ghostscript
 .br

Modified: branches/icc_work/man/gsnd.1
===================================================================
--- branches/icc_work/man/gsnd.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/gsnd.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH GSND 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH GSND 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 gsnd \- Run ghostscript (PostScript and PDF engine) without display
 .SH SYNOPSIS

Modified: branches/icc_work/man/pdf2dsc.1
===================================================================
--- branches/icc_work/man/pdf2dsc.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/pdf2dsc.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PDF2DSC 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2DSC 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 pdf2dsc \- generate a PostScript page list of a PDF document
 .SH SYNOPSIS

Modified: branches/icc_work/man/pdf2ps.1
===================================================================
--- branches/icc_work/man/pdf2ps.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/pdf2ps.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PDF2PS 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDF2PS 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 pdf2ps \- Ghostscript PDF to PostScript translator
 .SH SYNOPSIS

Modified: branches/icc_work/man/pdfopt.1
===================================================================
--- branches/icc_work/man/pdfopt.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/pdfopt.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PDFOPT 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PDFOPT 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 pdfopt \- Ghostscript PDF Optimizer
 .SH SYNOPSIS

Modified: branches/icc_work/man/pf2afm.1
===================================================================
--- branches/icc_work/man/pf2afm.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/pf2afm.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PF2AFM 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH PF2AFM 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 pf2afm \- Make an AFM file from Postscript (PFB/PFA/PFM) font files using ghostscript
 .SH SYNOPSIS

Modified: branches/icc_work/man/pfbtopfa.1
===================================================================
--- branches/icc_work/man/pfbtopfa.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/pfbtopfa.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PFBTOPFA 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH PFBTOPFA 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 pfbtopfa \- Convert Postscript .pfb fonts to .pfa format using ghostscript
 .SH SYNOPSIS

Modified: branches/icc_work/man/printafm.1
===================================================================
--- branches/icc_work/man/printafm.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/printafm.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PRINTAFM 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH PRINTAFM 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 printafm \- Print the metrics from a Postscript font in AFM format using ghostscript
 .SH SYNOPSIS

Modified: branches/icc_work/man/ps2ascii.1
===================================================================
--- branches/icc_work/man/ps2ascii.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/ps2ascii.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PS2ASCII 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2ASCII 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 ps2ascii \- Ghostscript translator from PostScript or PDF to ASCII
 .SH SYNOPSIS

Modified: branches/icc_work/man/ps2epsi.1
===================================================================
--- branches/icc_work/man/ps2epsi.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/ps2epsi.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PS2EPSI 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2EPSI 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 ps2epsi \- generate conforming Encapsulated PostScript
 .SH SYNOPSIS

Modified: branches/icc_work/man/ps2pdf.1
===================================================================
--- branches/icc_work/man/ps2pdf.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/ps2pdf.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PS2PDF 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH PS2PDF 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 ps2pdf \- Convert PostScript to PDF using ghostscript
 .br

Modified: branches/icc_work/man/ps2pdfwr.1
===================================================================
--- branches/icc_work/man/ps2pdfwr.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/ps2pdfwr.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PS2PDFWR 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH PS2PDFWR 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 ps2pdfwr \- Convert PostScript to PDF without specifying CompatibilityLevel, using ghostscript
 .SH SYNOPSIS

Modified: branches/icc_work/man/ps2ps.1
===================================================================
--- branches/icc_work/man/ps2ps.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/ps2ps.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH PS2PS 1 "3 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
+.TH PS2PS 1 "10 February 2010" 8.71 "Ghostscript Tools" \" -*- nroff -*-
 .SH NAME
 ps2ps, eps2eps \- Ghostscript PostScript "distiller"
 .SH SYNOPSIS

Modified: branches/icc_work/man/wftopfa.1
===================================================================
--- branches/icc_work/man/wftopfa.1	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/man/wftopfa.1	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,5 +1,5 @@
 .\" $Id$
-.TH WFTOPFA 1 "3 February 2010" 8.71 Ghostscript \" -*- nroff -*-
+.TH WFTOPFA 1 "10 February 2010" 8.71 Ghostscript \" -*- nroff -*-
 .SH NAME
 wftopfa \- Convert a Wadalab base font to Postscript .PFA (or .PFB)
 format using ghostscript

Modified: branches/icc_work/psi/int.mak
===================================================================
--- branches/icc_work/psi/int.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/int.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1759,6 +1759,7 @@
 	$(ADDMOD) $(PSD)fapi -include $(PSD)fapif$(FT_BRIDGE)
 
 $(PSOBJ)zfapi.$(OBJ) : $(PSSRC)zfapi.c $(OP) $(math__h) $(memory__h) $(string__h)\
+ $(stat__h)\
  $(gp_h) $(gscoord_h) $(gscrypt1_h) $(gsfont_h) $(gspaint_h) $(gspath_h)\
  $(gxchar_h) $(gxchrout_h) $(gximask_h) $(gxdevice_h) $(gxfcache_h) $(gxfcid_h)\
  $(gxfont_h) $(gxfont1_h) $(gxpath_h) $(gzstate_h) $(gdevpsf_h)\
@@ -1806,19 +1807,19 @@
 # FreeType bridge :
 
 # the top-level makefile should define
-# FT_CFLAGS for the include directive and other switches, and
-# FT_LIBS for the the library link command
+# FT_CFLAGS for the include directive and other switches
 
 wrfont_h=$(stdpre_h) $(PSSRC)wrfont.h
 write_t1_h=$(ifapi_h) $(PSSRC)write_t1.h
 write_t2_h=$(ifapi_h) $(PSSRC)write_t2.h
 
 $(PSD)fapif1.dev : $(INT_MAK) $(ECHOGS_XE) $(PSOBJ)fapi_ft.$(OBJ) \
- $(PSOBJ)write_t1.$(OBJ) $(PSOBJ)write_t2.$(OBJ) $(PSOBJ)wrfont.$(OBJ)
+ $(PSOBJ)write_t1.$(OBJ) $(PSOBJ)write_t2.$(OBJ) $(PSOBJ)wrfont.$(OBJ) \
+ $(GLD)freetype.dev
 	$(SETMOD) $(PSD)fapif1 $(PSOBJ)fapi_ft.$(OBJ) $(PSOBJ)write_t1.$(OBJ)
 	$(ADDMOD) $(PSD)fapif1 $(PSOBJ)write_t2.$(OBJ) $(PSOBJ)wrfont.$(OBJ)
 	$(ADDMOD) $(PSD)fapif1 -plugin fapi_ft
-	$(ADDMOD) $(PSD)fapif1 -link $(FT_LIBS)
+	$(ADDMOD) $(PSD)fapif1 -include $(GLD)freetype
 
 $(PSOBJ)fapi_ft.$(OBJ) : $(PSSRC)fapi_ft.c $(AK)\
  $(stdio__h) $(math__h) $(ifapi_h) $(gserror_h)\
@@ -1834,13 +1835,13 @@
 	$(PSCC) $(FT_CFLAGS) $(PSO_)write_t2.$(OBJ) $(C_) $(PSSRC)write_t2.c
 
 $(PSOBJ)wrfont.$(OBJ) : $(PSSRC)wrfont.c $(AK)\
- $(wrfont_h) $(stdio_h)
+ $(wrfont_h) $(stdio__h)
 	$(PSCC) $(FT_CFLAGS) $(PSO_)wrfont.$(OBJ) $(C_) $(PSSRC)wrfont.c
 
 # stub for FreeType bridge :
 
-$(PSD)fapif.dev : $(INT_MAK) $(ECHOGS_XE)
-	$(SETMOD) $(PSD)fapif
+$(PSD)fapif0.dev : $(INT_MAK) $(ECHOGS_XE)
+	$(SETMOD) $(PSD)fapif0
 
 
 # ---------------- Custom color dummy callback ---------------- #

Modified: branches/icc_work/psi/msvc32.mak
===================================================================
--- branches/icc_work/psi/msvc32.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/msvc32.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,4 +1,4 @@
-#  Copyright (C) 2001-2007 Artifex Software, Inc.
+#  Copyright (C) 2001-2010 Artifex Software, Inc.
 #  All Rights Reserved.
 #
 #  This software is provided AS-IS with no warranty, either express or
@@ -178,6 +178,16 @@
 MAKEDLL=1
 !endif
 
+# Define the directory where the FreeType2 library sources are stored.
+# See freetype.mak for more information.
+
+!ifndef FTSRCDIR
+FTSRCDIR=freetype
+!ifndef FT_CFLAGS
+FT_CFLAGS=-I$(FTSRCDIR)\include
+!endif
+!endif
+
 # Define the directory where the IJG JPEG library sources are stored,
 # and the major version of the library that is stored there.
 # You may need to change this if the IJG library version changes.
@@ -260,13 +270,6 @@
 # Alternatively, you can build a separate DLL
 # and define SHARE_JPX=1 in src/winlib.mak
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
-
-!ifndef ICCSRCDIR
-ICCSRCDIR=icclib
-!endif
-
 # Define the directory where the lcms source is stored.
 # See lcms.mak for more information
 !ifndef LCMSSRCDIR
@@ -860,13 +863,13 @@
 
 DEBUGDEFS=BINDIR=.\debugbin GLGENDIR=.\debugobj GLOBJDIR=.\debugobj PSLIBDIR=.\lib PSGENDIR=.\debugobj PSOBJDIR=.\debugobj DEBUG=1 TDEBUG=1 SBRDIR=.\debugobj
 debug:
-	nmake -f $(MAKEFILE) $(DEBUGDEFS)
+	nmake -f $(MAKEFILE) DEVSTUDIO="$(DEVSTUDIO)" $(DEBUGDEFS)
 
 debugclean:
-	nmake -f $(MAKEFILE) $(DEBUGDEFS) clean
+	nmake -f $(MAKEFILE) DEVSTUDIO="$(DEVSTUDIO)" $(DEBUGDEFS) clean
 
 debugbsc:
-	nmake -f $(MAKEFILE) $(DEBUGDEFS) bsc
+	nmake -f $(MAKEFILE) DEVSTUDIO="$(DEVSTUDIO)" $(DEBUGDEFS) bsc
 
 
 

Modified: branches/icc_work/psi/os2.mak
===================================================================
--- branches/icc_work/psi/os2.mak	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/os2.mak	2010-03-02 09:24:00 UTC (rev 10838)
@@ -114,6 +114,10 @@
 
 PNGSRCDIR=libpng
 
+# Define the directory where the lcms source is stored.
+# See lcms.mak for more information
+LCMSSRCDIR=lcms
+
 # Define the directory where the zlib sources are stored.
 # See zlib.mak for more information.
 
@@ -125,11 +129,6 @@
 JBIG2_LIB=jbig2dec
 JBIG2SRCDIR=jbig2dec
 
-# Define the directory where the icclib source are stored.
-# See icclib.mak for more information
-
-ICCSRCDIR=icclib
-
 # IJS has not been ported to OS/2. If you do the port,
 # you'll need to set these values. You'll also need to
 # include the ijs.mak makefile (right after icclib.mak).
@@ -459,7 +458,7 @@
 !include "$(GLSRCDIR)\zlib.mak"
 !include "$(GLSRCDIR)\libpng.mak"
 !include "$(GLSRCDIR)\jbig2.mak"
-!include "$(GLSRCDIR)\icclib.mak"
+!include "$(GLSRCDIR)\lcms.mak"
 !include "$(GLSRCDIR)\devs.mak"
 !include "$(GLSRCDIR)\pcwin.mak"
 !include "$(GLSRCDIR)\contrib.mak"

Modified: branches/icc_work/psi/write_t2.c
===================================================================
--- branches/icc_work/psi/write_t2.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/write_t2.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -1,267 +1,267 @@
-/* Copyright (C) 2001-2006 Artifex Software, Inc.
-   All Rights Reserved.
-  
-   This software is provided AS-IS with no warranty, either express or
-   implied.
-
-   This software is distributed under license and may not be copied, modified
-   or distributed except as expressly authorized under the terms of that
-   license.  Refer to licensing information at http://www.artifex.com/
-   or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
-   San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
-*/
-
-/* $Id: write_t2.c 9467 2009-02-10 19:55:40Z giles $ */
-
-/*
-Functions to serialize a type 1 font so that it can then be
-passed to FreeType via the FAPI FreeType bridge.
-Started by Graham Asher, 9th August 2002.
-*/
-
-#include "wrfont.h"
-#include "write_t2.h"
-#include "ghost.h"
-#include "gxfont.h"
-#include "gxfont1.h"
-
-/*
-Public structures and functions in this file are prefixed with FF_ because they are part of
-the FAPI FreeType implementation.
-*/
-
-static void write_4_byte_int(unsigned char* a_output,long a_int)
-	{
-	a_output[0] = (unsigned char)(a_int >> 24);
-	a_output[1] = (unsigned char)(a_int >> 16);
-	a_output[2] = (unsigned char)(a_int >> 8);
-	a_output[3] = (unsigned char)(a_int & 0xFF);
-	}
-
-static void write_type2_int(WRF_output* a_output,long a_int)
-	{
-	if (a_int >= -107 && a_int <= 107)
-		WRF_wbyte(a_output,(unsigned char)(a_int + 139));
-	else if (a_int >= -32768 && a_int <= 32767)
-		{
-		if (a_int >= 108 && a_int <= 1131)
-			a_int += 63124;
-		else if (a_int >= -1131 && a_int <= -108)
-			a_int = -a_int + 64148;
-		else
-			WRF_wbyte(a_output,28);
-		WRF_wbyte(a_output,(unsigned char)(a_int >> 8));
-		WRF_wbyte(a_output,(unsigned char)(a_int & 0xFF));
-		}
-	else
-		{
-		unsigned char buffer[4];
-		WRF_wbyte(a_output,29);
-		write_4_byte_int(buffer,a_int);
-		WRF_wtext(a_output,buffer,4);
-		}
-	}
-
-static void write_type2_float(WRF_output* a_output,double a_float)
-	{
-	char buffer[32];
-	const char* p = buffer;
-	int high = true;
-	char c = 0;
-	sprintf(buffer,"%f",a_float);
-	WRF_wbyte(a_output,30);
-	for (;;)
-		{
-		char n = 0;
-		if (*p >= '0' && *p <= '9')
-			n = (char)(*p - '0');
-		else if (*p == '.')
-			n = 0xA;
-		else if (*p == 'e' || *p == 'E')
-			{
-			if (p[1] == '-')
-				{
-				p++;
-				n = 0xC;
-				}
-			else
-				n = 0xB;
-			}
-		else if (*p == '-')
-			n = 0xE;
-		else if (*p == 0)
-			n = 0xF;
-		if (high)
-			{
-			if (*p == 0)
-				WRF_wbyte(a_output,0xFF);
-			else
-				c = (char)(n << 4);
-			}
-		else
-			{
-			c |= n;
-			WRF_wbyte(a_output,c);
-			}
-
-		if (*p == 0)
-			break;
-
-		high = !high;
-		p++;
-		}
-	}
-
-static void write_header(WRF_output* a_output)
-	{
-	WRF_wtext(a_output,(const unsigned char*)"\x1\x0\x4\x1",4);
-	}
-
-static void write_name_index(WRF_output* a_output)
-	{
-	/* Write a dummy name of 'x'. */
-	WRF_wtext(a_output,(const unsigned char*)"\x0\x1\x1\x1\x2""x",6);
-	}
-
-static void write_word_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,
-							 int a_feature_count,bool a_two_byte_op,int a_op,int a_divisor)
-	{
-	if (a_feature_count > 0)
-		{
-		int i;
-		for (i = 0; i < a_feature_count; i++)
-			{
-			/* Get the value and convert it from unsigned to signed. */
-			short x = a_fapi_font->get_word(a_fapi_font,a_feature_id,i);
-			/* Divide by the divisor to bring it back to font units. */
-			x = (short)(x / a_divisor);
-			write_type2_int(a_output,x);
-			}
-		if (a_two_byte_op)
-			WRF_wbyte(a_output,12);
-		WRF_wbyte(a_output,(unsigned char)a_op);
-		}
-	}
-
-static void write_delta_array_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,
-									bool a_two_byte_op,int a_op,int a_divisor)
-	{
-	int i;
-	/* NOTE that the feature index (a_feature_id) must be preceded by the count index for this to work. */
-	int count = a_fapi_font->get_word(a_fapi_font,a_feature_id - 1,0);
-	if (count > 0)
-		{
-		short prev_value = 0;
-		for (i = 0; i < count; i++)
-			{
-			/* Get the value and convert it from unsigned to signed. */
-			short value = a_fapi_font->get_word(a_fapi_font,a_feature_id,i); 
-			/* Divide by the divisor to bring it back to font units. */
-			value = (short)(value / a_divisor);
-			write_type2_int(a_output,value - prev_value);
-			prev_value = value;
-			}
-		if (a_two_byte_op)
-			WRF_wbyte(a_output,12);
-		WRF_wbyte(a_output,(unsigned char)a_op);
-		}
-	}
-
-static void write_float_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,int a_feature_count,bool a_two_byte_op,int a_op)
-	{
-	if (a_feature_count > 0)
-		{
-		int i;
-		for (i = 0; i < a_feature_count; i++)
-			{
-			double x = a_fapi_font->get_float(a_fapi_font,a_feature_id,i);
-			write_type2_float(a_output,x);
-			}
-		if (a_two_byte_op)
-			WRF_wbyte(a_output,12);
-		WRF_wbyte(a_output,(unsigned char)a_op);
-		}
-	}
-
-static void write_font_dict_index(FAPI_font* a_fapi_font,WRF_output* a_output,
-		unsigned char** a_charset_offset_ptr,
-		unsigned char** a_charstrings_offset_ptr,
-		unsigned char** a_private_dict_length_ptr)
-	{
-	unsigned char* data_start = 0;
-	WRF_wtext(a_output,(const unsigned char *)"\x0\x1\x2\x0\x1\x0\x0",7); /* count = 1, offset size = 2, first offset = 1, last offset = 0 (to be filled in later). */
-	if (a_output->m_pos)
-		data_start = a_output->m_pos;
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FontBBox,4,false,5,1);
-	write_float_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FontMatrix,6,true,7);
-	write_type2_int(a_output,0); /* 0 = Standard Encoding. */
-	WRF_wbyte(a_output,16); /* 16 = opcode for 'encoding'. */
-	*a_charset_offset_ptr = a_output->m_pos;
-	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx",5); /* placeholder for the offset to the charset, which will be a 5-byte integer. */
-	WRF_wbyte(a_output,15); /* opcode for 'charset' */
-	*a_charstrings_offset_ptr = a_output->m_pos;
-	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx",5); /* placeholder for the offset to the Charstrings index, which will be a 5-byte integer. */
-	WRF_wbyte(a_output,17); /* opcode for 'Charstrings' */
-	*a_private_dict_length_ptr = a_output->m_pos;
-	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx\x1d""yyyy",10); /* placeholder for size and offset of Private dictionary, which will be 5-byte integers. */
-	WRF_wbyte(a_output,18); /* opcode for 'Private' */
-	if (a_output->m_pos)
-		{
-		int last_offset = a_output->m_pos - data_start + 1;
-		data_start[-2] = (unsigned char)(last_offset >> 8);
-		data_start[-1] = (unsigned char)(last_offset & 0xFF);
-		}
-	}
-
-/**
-Write the character set. Return the number of characters.
-For the moment this is always 1. The number cannot be obtained
-via the FAPI interface, and FreeType doesn't need to know anything more
-than the fact that there is at least one character.
-*/
-static int write_charset(WRF_output* a_output,unsigned char* a_charset_offset_ptr)
-	{
-	const int characters = 1;
-	int i = 0;
-
-	/* Write the offset to the start of the charset to the top dictionary. */
-	if (a_output->m_pos)
-		write_4_byte_int(a_charset_offset_ptr + 1,a_output->m_count);
-
-	/*
-	Write the charset. Write one less than the number of characters,
-	because the first one is assumed to be .notdef. For the moment
-	write all the others as .notdef (SID = 0) because we don't actually
-	need the charset at the moment.
-	*/
-	WRF_wbyte(a_output,0); /* format = 0 */
-	for (i = 1; i < characters; i++)
-		{
-		WRF_wbyte(a_output,0);
-		WRF_wbyte(a_output,0);
-		}
-
-	return characters;
-	}
-
-/**
-Write a set of empty charstrings. The only reason for the existence of the charstrings index is to tell
-FreeType how many glyphs there are.
-*/
-static void write_charstrings_index(WRF_output* a_output,int a_characters,unsigned char* a_charstrings_offset_ptr)
-	{
-	/* Write the offset to the charstrings index to the top dictionary. */
-	if (a_output->m_pos)
-		write_4_byte_int(a_charstrings_offset_ptr + 1,a_output->m_count);
-
-	/* Write the index. */
-	WRF_wbyte(a_output,(unsigned char)(a_characters >> 8));
-	WRF_wbyte(a_output,(unsigned char)(a_characters & 0xFF));
-	WRF_wbyte(a_output,1); /* offset size = 1. */
-	while (a_characters-- >= 0)
-		WRF_wbyte(a_output,1); /* offset = 1 */
-	}
-
+/* Copyright (C) 2001-2006 Artifex Software, Inc.
+   All Rights Reserved.
+  
+   This software is provided AS-IS with no warranty, either express or
+   implied.
+
+   This software is distributed under license and may not be copied, modified
+   or distributed except as expressly authorized under the terms of that
+   license.  Refer to licensing information at http://www.artifex.com/
+   or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
+   San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+/* $Id$ */
+
+/*
+Functions to serialize a type 1 font so that it can then be
+passed to FreeType via the FAPI FreeType bridge.
+Started by Graham Asher, 9th August 2002.
+*/
+
+#include "wrfont.h"
+#include "write_t2.h"
+#include "ghost.h"
+#include "gxfont.h"
+#include "gxfont1.h"
+
+/*
+Public structures and functions in this file are prefixed with FF_ because they are part of
+the FAPI FreeType implementation.
+*/
+
+static void write_4_byte_int(unsigned char* a_output,long a_int)
+	{
+	a_output[0] = (unsigned char)(a_int >> 24);
+	a_output[1] = (unsigned char)(a_int >> 16);
+	a_output[2] = (unsigned char)(a_int >> 8);
+	a_output[3] = (unsigned char)(a_int & 0xFF);
+	}
+
+static void write_type2_int(WRF_output* a_output,long a_int)
+	{
+	if (a_int >= -107 && a_int <= 107)
+		WRF_wbyte(a_output,(unsigned char)(a_int + 139));
+	else if (a_int >= -32768 && a_int <= 32767)
+		{
+		if (a_int >= 108 && a_int <= 1131)
+			a_int += 63124;
+		else if (a_int >= -1131 && a_int <= -108)
+			a_int = -a_int + 64148;
+		else
+			WRF_wbyte(a_output,28);
+		WRF_wbyte(a_output,(unsigned char)(a_int >> 8));
+		WRF_wbyte(a_output,(unsigned char)(a_int & 0xFF));
+		}
+	else
+		{
+		unsigned char buffer[4];
+		WRF_wbyte(a_output,29);
+		write_4_byte_int(buffer,a_int);
+		WRF_wtext(a_output,buffer,4);
+		}
+	}
+
+static void write_type2_float(WRF_output* a_output,double a_float)
+	{
+	char buffer[32];
+	const char* p = buffer;
+	int high = true;
+	char c = 0;
+	sprintf(buffer,"%f",a_float);
+	WRF_wbyte(a_output,30);
+	for (;;)
+		{
+		char n = 0;
+		if (*p >= '0' && *p <= '9')
+			n = (char)(*p - '0');
+		else if (*p == '.')
+			n = 0xA;
+		else if (*p == 'e' || *p == 'E')
+			{
+			if (p[1] == '-')
+				{
+				p++;
+				n = 0xC;
+				}
+			else
+				n = 0xB;
+			}
+		else if (*p == '-')
+			n = 0xE;
+		else if (*p == 0)
+			n = 0xF;
+		if (high)
+			{
+			if (*p == 0)
+				WRF_wbyte(a_output,0xFF);
+			else
+				c = (char)(n << 4);
+			}
+		else
+			{
+			c |= n;
+			WRF_wbyte(a_output,c);
+			}
+
+		if (*p == 0)
+			break;
+
+		high = !high;
+		p++;
+		}
+	}
+
+static void write_header(WRF_output* a_output)
+	{
+	WRF_wtext(a_output,(const unsigned char*)"\x1\x0\x4\x1",4);
+	}
+
+static void write_name_index(WRF_output* a_output)
+	{
+	/* Write a dummy name of 'x'. */
+	WRF_wtext(a_output,(const unsigned char*)"\x0\x1\x1\x1\x2""x",6);
+	}
+
+static void write_word_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,
+							 int a_feature_count,bool a_two_byte_op,int a_op,int a_divisor)
+	{
+	if (a_feature_count > 0)
+		{
+		int i;
+		for (i = 0; i < a_feature_count; i++)
+			{
+			/* Get the value and convert it from unsigned to signed. */
+			short x = a_fapi_font->get_word(a_fapi_font,a_feature_id,i);
+			/* Divide by the divisor to bring it back to font units. */
+			x = (short)(x / a_divisor);
+			write_type2_int(a_output,x);
+			}
+		if (a_two_byte_op)
+			WRF_wbyte(a_output,12);
+		WRF_wbyte(a_output,(unsigned char)a_op);
+		}
+	}
+
+static void write_delta_array_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,
+									bool a_two_byte_op,int a_op,int a_divisor)
+	{
+	int i;
+	/* NOTE that the feature index (a_feature_id) must be preceded by the count index for this to work. */
+	int count = a_fapi_font->get_word(a_fapi_font,a_feature_id - 1,0);
+	if (count > 0)
+		{
+		short prev_value = 0;
+		for (i = 0; i < count; i++)
+			{
+			/* Get the value and convert it from unsigned to signed. */
+			short value = a_fapi_font->get_word(a_fapi_font,a_feature_id,i); 
+			/* Divide by the divisor to bring it back to font units. */
+			value = (short)(value / a_divisor);
+			write_type2_int(a_output,value - prev_value);
+			prev_value = value;
+			}
+		if (a_two_byte_op)
+			WRF_wbyte(a_output,12);
+		WRF_wbyte(a_output,(unsigned char)a_op);
+		}
+	}
+
+static void write_float_entry(FAPI_font* a_fapi_font,WRF_output* a_output,int a_feature_id,int a_feature_count,bool a_two_byte_op,int a_op)
+	{
+	if (a_feature_count > 0)
+		{
+		int i;
+		for (i = 0; i < a_feature_count; i++)
+			{
+			double x = a_fapi_font->get_float(a_fapi_font,a_feature_id,i);
+			write_type2_float(a_output,x);
+			}
+		if (a_two_byte_op)
+			WRF_wbyte(a_output,12);
+		WRF_wbyte(a_output,(unsigned char)a_op);
+		}
+	}
+
+static void write_font_dict_index(FAPI_font* a_fapi_font,WRF_output* a_output,
+		unsigned char** a_charset_offset_ptr,
+		unsigned char** a_charstrings_offset_ptr,
+		unsigned char** a_private_dict_length_ptr)
+	{
+	unsigned char* data_start = 0;
+	WRF_wtext(a_output,(const unsigned char *)"\x0\x1\x2\x0\x1\x0\x0",7); /* count = 1, offset size = 2, first offset = 1, last offset = 0 (to be filled in later). */
+	if (a_output->m_pos)
+		data_start = a_output->m_pos;
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FontBBox,4,false,5,1);
+	write_float_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FontMatrix,6,true,7);
+	write_type2_int(a_output,0); /* 0 = Standard Encoding. */
+	WRF_wbyte(a_output,16); /* 16 = opcode for 'encoding'. */
+	*a_charset_offset_ptr = a_output->m_pos;
+	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx",5); /* placeholder for the offset to the charset, which will be a 5-byte integer. */
+	WRF_wbyte(a_output,15); /* opcode for 'charset' */
+	*a_charstrings_offset_ptr = a_output->m_pos;
+	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx",5); /* placeholder for the offset to the Charstrings index, which will be a 5-byte integer. */
+	WRF_wbyte(a_output,17); /* opcode for 'Charstrings' */
+	*a_private_dict_length_ptr = a_output->m_pos;
+	WRF_wtext(a_output,(const unsigned char *)"\x1d""xxxx\x1d""yyyy",10); /* placeholder for size and offset of Private dictionary, which will be 5-byte integers. */
+	WRF_wbyte(a_output,18); /* opcode for 'Private' */
+	if (a_output->m_pos)
+		{
+		int last_offset = a_output->m_pos - data_start + 1;
+		data_start[-2] = (unsigned char)(last_offset >> 8);
+		data_start[-1] = (unsigned char)(last_offset & 0xFF);
+		}
+	}
+
+/**
+Write the character set. Return the number of characters.
+For the moment this is always 1. The number cannot be obtained
+via the FAPI interface, and FreeType doesn't need to know anything more
+than the fact that there is at least one character.
+*/
+static int write_charset(WRF_output* a_output,unsigned char* a_charset_offset_ptr)
+	{
+	const int characters = 1;
+	int i = 0;
+
+	/* Write the offset to the start of the charset to the top dictionary. */
+	if (a_output->m_pos)
+		write_4_byte_int(a_charset_offset_ptr + 1,a_output->m_count);
+
+	/*
+	Write the charset. Write one less than the number of characters,
+	because the first one is assumed to be .notdef. For the moment
+	write all the others as .notdef (SID = 0) because we don't actually
+	need the charset at the moment.
+	*/
+	WRF_wbyte(a_output,0); /* format = 0 */
+	for (i = 1; i < characters; i++)
+		{
+		WRF_wbyte(a_output,0);
+		WRF_wbyte(a_output,0);
+		}
+
+	return characters;
+	}
+
+/**
+Write a set of empty charstrings. The only reason for the existence of the charstrings index is to tell
+FreeType how many glyphs there are.
+*/
+static void write_charstrings_index(WRF_output* a_output,int a_characters,unsigned char* a_charstrings_offset_ptr)
+	{
+	/* Write the offset to the charstrings index to the top dictionary. */
+	if (a_output->m_pos)
+		write_4_byte_int(a_charstrings_offset_ptr + 1,a_output->m_count);
+
+	/* Write the index. */
+	WRF_wbyte(a_output,(unsigned char)(a_characters >> 8));
+	WRF_wbyte(a_output,(unsigned char)(a_characters & 0xFF));
+	WRF_wbyte(a_output,1); /* offset size = 1. */
+	while (a_characters-- >= 0)
+		WRF_wbyte(a_output,1); /* offset = 1 */
+	}
+
 static void write_gsubrs_index(FAPI_font* a_fapi_font,WRF_output* a_output)
 	{
 	unsigned char* cur_offset = 0;
@@ -305,87 +305,87 @@
 		}
 	}
 
-static void write_subrs_index(FAPI_font* a_fapi_font,WRF_output* a_output)
-	{
-	unsigned char* cur_offset = 0;
-	unsigned char* data_start = 0;
-	int i;
-	int count = a_fapi_font->get_word(a_fapi_font,FAPI_FONT_FEATURE_Subrs_count,0);
-
-	WRF_wbyte(a_output,(unsigned char)(count >> 8));
-	WRF_wbyte(a_output,(unsigned char)(count & 0xFF));
-
-	if (count <= 0)
-		return;
-
-	WRF_wbyte(a_output,4); /* offset size = 4 bytes */
-	WRF_wtext(a_output,(const unsigned char *)"\x0\x0\x0\x1",4); /* first offset = 1 */
-
-	if (a_output->m_pos)
-		cur_offset = a_output->m_pos;
-
-	/* Write dummy bytes for the offsets at the end of each data item. */
-	for (i = 0; i < count; i++)
-		WRF_wtext(a_output,(const unsigned char *)"xxxx",4);
-
-	if (a_output->m_pos)
-		data_start = a_output->m_pos;
-
-	for (i = 0; i < count; i++)
-		{
-		long buffer_size = a_output->m_limit - a_output->m_count;
-		long length = a_fapi_font->get_subr(a_fapi_font,i,a_output->m_pos,(ushort)buffer_size);
-		if (a_output->m_pos)
-			WRF_wtext(a_output,a_output->m_pos,length);
-		else
-			a_output->m_count += length;
-		if (cur_offset)
-			{
-			long pos = a_output->m_pos - data_start + 1;
-			write_4_byte_int(cur_offset,pos);
-			cur_offset += 4;
-			}
-		}
-	}
-
-static void write_private_dict(FAPI_font* a_fapi_font,WRF_output* a_output,unsigned char* a_private_dict_length_ptr)
-	{
+static void write_subrs_index(FAPI_font* a_fapi_font,WRF_output* a_output)
+	{
+	unsigned char* cur_offset = 0;
+	unsigned char* data_start = 0;
+	int i;
+	int count = a_fapi_font->get_word(a_fapi_font,FAPI_FONT_FEATURE_Subrs_count,0);
+
+	WRF_wbyte(a_output,(unsigned char)(count >> 8));
+	WRF_wbyte(a_output,(unsigned char)(count & 0xFF));
+
+	if (count <= 0)
+		return;
+
+	WRF_wbyte(a_output,4); /* offset size = 4 bytes */
+	WRF_wtext(a_output,(const unsigned char *)"\x0\x0\x0\x1",4); /* first offset = 1 */
+
+	if (a_output->m_pos)
+		cur_offset = a_output->m_pos;
+
+	/* Write dummy bytes for the offsets at the end of each data item. */
+	for (i = 0; i < count; i++)
+		WRF_wtext(a_output,(const unsigned char *)"xxxx",4);
+
+	if (a_output->m_pos)
+		data_start = a_output->m_pos;
+
+	for (i = 0; i < count; i++)
+		{
+		long buffer_size = a_output->m_limit - a_output->m_count;
+		long length = a_fapi_font->get_subr(a_fapi_font,i,a_output->m_pos,(ushort)buffer_size);
+		if (a_output->m_pos)
+			WRF_wtext(a_output,a_output->m_pos,length);
+		else
+			a_output->m_count += length;
+		if (cur_offset)
+			{
+			long pos = a_output->m_pos - data_start + 1;
+			write_4_byte_int(cur_offset,pos);
+			cur_offset += 4;
+			}
+		}
+	}
+
+static void write_private_dict(FAPI_font* a_fapi_font,WRF_output* a_output,unsigned char* a_private_dict_length_ptr)
+	{
 	int count, initial = a_output->m_count;
-	/* Write the offset to the start of the private dictionary to the top dictionary. */
-	unsigned char* start = a_output->m_pos;
-	if (a_output->m_pos)
-		write_4_byte_int(a_private_dict_length_ptr + 6,a_output->m_count);
-
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueFuzz,1,true,11,16);
-
-	write_type2_float(a_output,a_fapi_font->get_long(a_fapi_font,FAPI_FONT_FEATURE_BlueScale,0) / 65536.0);
-	WRF_wbyte(a_output,12);
-	WRF_wbyte(a_output,9);
-	
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueShift,1,true,10,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueValues,false,6,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_OtherBlues,false,7,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FamilyBlues,false,8,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FamilyOtherBlues,false,9,16);
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_ForceBold,1,true,14,1);
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StdHW,1,false,10,16);
-	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StdVW,1,false,11,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StemSnapH,true,12,16);
-	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StemSnapV,true,13,16);
-
-	/*
-	Write the default width and the nominal width. These values are not available via
-	the FAPI interface so we have to get a pointer to the Type 1 font structure and
-	extract them directly.
-	*/
-	{
-	gs_font_type1* t1 = (gs_font_type1*)a_fapi_font->client_font_data;
-    write_type2_float(a_output,fixed2float(t1->data.defaultWidthX));
-	WRF_wbyte(a_output,20);
-    write_type2_float(a_output,fixed2float(t1->data.nominalWidthX));
-	WRF_wbyte(a_output,21);
-	}
-
+	/* Write the offset to the start of the private dictionary to the top dictionary. */
+	unsigned char* start = a_output->m_pos;
+	if (a_output->m_pos)
+		write_4_byte_int(a_private_dict_length_ptr + 6,a_output->m_count);
+
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueFuzz,1,true,11,16);
+
+	write_type2_float(a_output,a_fapi_font->get_long(a_fapi_font,FAPI_FONT_FEATURE_BlueScale,0) / 65536.0);
+	WRF_wbyte(a_output,12);
+	WRF_wbyte(a_output,9);
+	
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueShift,1,true,10,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_BlueValues,false,6,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_OtherBlues,false,7,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FamilyBlues,false,8,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_FamilyOtherBlues,false,9,16);
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_ForceBold,1,true,14,1);
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StdHW,1,false,10,16);
+	write_word_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StdVW,1,false,11,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StemSnapH,true,12,16);
+	write_delta_array_entry(a_fapi_font,a_output,FAPI_FONT_FEATURE_StemSnapV,true,13,16);
+
+	/*
+	Write the default width and the nominal width. These values are not available via
+	the FAPI interface so we have to get a pointer to the Type 1 font structure and
+	extract them directly.
+	*/
+	{
+	gs_font_type1* t1 = (gs_font_type1*)a_fapi_font->client_font_data;
+    write_type2_float(a_output,fixed2float(t1->data.defaultWidthX));
+	WRF_wbyte(a_output,20);
+    write_type2_float(a_output,fixed2float(t1->data.nominalWidthX));
+	WRF_wbyte(a_output,21);
+	}
+
 	count = a_fapi_font->get_word(a_fapi_font,FAPI_FONT_FEATURE_Subrs_count,0);
 	/* If we have local /Subrs we need to make a new dict ( see calling routine) and
 	 * we also need to add an entry to the Provate dict with an offset to the /Subrs
@@ -394,25 +394,25 @@
 	 * on its value (because of number representation).
 	 */
 	if (count) {
-	    unsigned int n = 1, n1 = a_output->m_count - initial + 2; /* One for the operator, one for the first try at the data representation */
+	    int n = 1, n1;
 
 	    do {
-		n1 = a_output->m_count - initial + 1 + n;
+		n1 = a_output->m_count - initial + 1 + n; /* one for the operator, plus the size needed for the representation */
 		switch (n) {
 		    case 1:
-			if (n1 >= -107 && n <= 107) {
+			if (n1 >= -107 && n1 <= 107) {
 			    write_type2_int(a_output, n1);
 			    n = 5;
 			}
 			break;
 		    case 2:
-			if ((n1 >= 108 && n <= 1131) || (n1 >= -1131 && n1 <= -108)) {
+			if ((n1 >= 108 && n1 <= 1131) || (n1 >= -1131 && n1 <= -108)) {
 			    write_type2_int(a_output, n1);
 			    n = 5;
 			}
 			break;
 		    case 3:
-			if (n1 >= -32768 && n <= 32767) {
+			if (n1 >= -32768 && n1 <= 32767) {
 			    write_type2_int(a_output, n1);
 			    n = 5;
 			}
@@ -429,38 +429,38 @@
 	    WRF_wbyte(a_output,19);
 	}
 
-	/* Write the length in bytes of the private dictionary to the top dictionary. */	
-	if (a_output->m_pos)
-		write_4_byte_int(a_private_dict_length_ptr + 1,a_output->m_pos - start);
-	}
-
-/**
-Write a Type 2 font in binary format and return its length in bytes.
-If a_buffer_size is less than the total length, only a_buffer_size bytes are written, but the total
-length is returned correctly.
-*/
-long FF_serialize_type2_font(FAPI_font* a_fapi_font,unsigned char* a_buffer,long a_buffer_size)
-	{
-	unsigned char* charset_offset_ptr = NULL;
-	unsigned char* charstrings_offset_ptr = NULL;
-	unsigned char* private_dict_length_ptr = NULL;
-	int characters = 0;
-
-	WRF_output output;
-	WRF_init(&output,a_buffer,a_buffer_size);
-
-	write_header(&output);
-	write_name_index(&output);
-	write_font_dict_index(a_fapi_font,&output,&charset_offset_ptr,&charstrings_offset_ptr,&private_dict_length_ptr);
-
-  	/* Write an empty string index. */
-  	WRF_wtext(&output,(const unsigned char *)"\x0\x0",2);
-
+	/* Write the length in bytes of the private dictionary to the top dictionary. */	
+	if (a_output->m_pos)
+		write_4_byte_int(a_private_dict_length_ptr + 1,a_output->m_pos - start);
+	}
+
+/**
+Write a Type 2 font in binary format and return its length in bytes.
+If a_buffer_size is less than the total length, only a_buffer_size bytes are written, but the total
+length is returned correctly.
+*/
+long FF_serialize_type2_font(FAPI_font* a_fapi_font,unsigned char* a_buffer,long a_buffer_size)
+	{
+	unsigned char* charset_offset_ptr = NULL;
+	unsigned char* charstrings_offset_ptr = NULL;
+	unsigned char* private_dict_length_ptr = NULL;
+	int characters = 0;
+
+	WRF_output output;
+	WRF_init(&output,a_buffer,a_buffer_size);
+
+	write_header(&output);
+	write_name_index(&output);
+	write_font_dict_index(a_fapi_font,&output,&charset_offset_ptr,&charstrings_offset_ptr,&private_dict_length_ptr);
+
+  	/* Write an empty string index. */
+  	WRF_wtext(&output,(const unsigned char *)"\x0\x0",2);
+
 	write_gsubrs_index(a_fapi_font,&output);
-	characters = write_charset(&output,charset_offset_ptr);
-	write_charstrings_index(&output,characters,charstrings_offset_ptr);
-	write_private_dict(a_fapi_font,&output,private_dict_length_ptr);
+	characters = write_charset(&output,charset_offset_ptr);
+	write_charstrings_index(&output,characters,charstrings_offset_ptr);
+	write_private_dict(a_fapi_font,&output,private_dict_length_ptr);
 	write_subrs_index(a_fapi_font,&output);
-
-	return output.m_count;
-	}
+
+	return output.m_count;
+	}

Modified: branches/icc_work/psi/zcolor.c
===================================================================
--- branches/icc_work/psi/zcolor.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/zcolor.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -6358,6 +6358,7 @@
    
     while (code == 0 && cont) {
 	ref_assign(&arr, ep);
+	parr = &arr;
 	/* Run along the nested color spaces until we get to the lowest one
 	 * that we haven't yet processed (given by 'depth')
 	 */

Modified: branches/icc_work/psi/zfapi.c
===================================================================
--- branches/icc_work/psi/zfapi.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/psi/zfapi.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -16,6 +16,7 @@
 
 #include "memory_.h"
 #include "math_.h"
+#include "stat_.h" /* include before definition of esp macro, bug 691123 */
 #include "ghost.h"
 #include "gp.h"
 #include "oper.h"

Modified: branches/icc_work/toolbin/bmpcmp.c
===================================================================
--- branches/icc_work/toolbin/bmpcmp.c	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/bmpcmp.c	2010-03-02 09:24:00 UTC (rev 10838)
@@ -30,7 +30,7 @@
     
     block = malloc(size);
     if (block == NULL) {
-        fprintf(stderr, "Failed to malloc %u bytes\n", size);
+        fprintf(stderr, "Failed to malloc %u bytes\n", (unsigned int) size);
         exit(EXIT_FAILURE);
     }
     return block;
@@ -270,15 +270,15 @@
 }
 
 static void *bmp_read(ImageReader *im,
-                      int  *width,
-                      int  *height,
-                      int  *span,
-                      int  *bpp)
+                      int         *width,
+                      int         *height,
+                      int         *span,
+                      int         *bpp)
 {
     int            offset;
     long           filelen, filepos;
-  unsigned char *data;
-  unsigned char *bmp;
+    unsigned char *data;
+    unsigned char *bmp;
 
     filepos = ftell(im->file);
     fseek(im->file, 0, SEEK_END);
@@ -288,7 +288,7 @@
     /* If we were at the end to start, then we'd read our one and only
      * image. */
     if (filepos == filelen)
-      return NULL;
+        return NULL;
 
     /* Load the whole lot into memory */
     bmp = Malloc(filelen);
@@ -298,14 +298,14 @@
     data = bmp_load_sub(bmp+14, width, height, span, bpp, offset-14, filelen);
     free(bmp);
     return data;
-  }
+}
 
 static void pbm_read(FILE          *file,
                      int            width,
                      int            height,
                      int            maxval,
                      unsigned char *bmp)
-  {
+{
     int w;
     int byte, mask, g;
     
@@ -465,7 +465,7 @@
         c = fgetc(im->file);
     }
     if (c == EOF)
-      return NULL;
+        return NULL;
     switch (get_pnm_num(im->file))
     {
         case 1:
@@ -493,7 +493,7 @@
             /* Eh? */
             fprintf(stderr, "Unknown PxM format!\n");
             return NULL;
-  }
+    }
     *width  = get_pnm_num(im->file);
     *span   = *width * 4;
     *height = get_pnm_num(im->file);
@@ -502,7 +502,7 @@
     else
         maxval = 1;
     *bpp = 32; /* We always convert to 32bpp */
-
+    
     bmp = Malloc(*width * *height * 4);
 
     read(im->file, *width, *height, maxval, bmp);
@@ -530,12 +530,12 @@
     } else {
         type |= (fgetc(im->file)<<8);
         if (type == 0x4d42) { /* BM */
-    /* BMP format; Win v2 or above */
+            /* BMP format; Win v2 or above */
             im->read = bmp_read;
-  } else {
+        } else {
             fprintf(stderr, "%s: Unrecognised image type\n", filename);
             exit(EXIT_FAILURE);
-  }
+        }
     }
 }
 
@@ -847,7 +847,7 @@
                     if ((abs(r-r2) <= 1) && (abs(g-g2) <= 3) && (abs(b-b2)<= 1))
                         ssrc[-1] = 0x07E0;
                     else
-                    ssrc[-1] = 0x001F;
+                        ssrc[-1] = 0x001F;
                 }
             }
             ssrc  += span;
@@ -989,7 +989,7 @@
     {
         maxdiffs = 0;
     }
-
+    
     image_open(&image1, argv[1]);
     image_open(&image2, argv[2]);
     
@@ -999,133 +999,133 @@
            ((bmp2 = image2.read(&image2, &w2, &h2, &s2, &bpp2)) != NULL))
     {
         /* Check images are compatible */
-    if ((w != w2) || (h != h2) || (s != s2) || (bpp != bpp2))
-    {
+        if ((w != w2) || (h != h2) || (s != s2) || (bpp != bpp2))
+        {
             fprintf(stderr,
                     "Can't compare images "
                     "(w=%d,%d) (h=%d,%d) (s=%d,%d) (bpp=%d,%d)!\n",
                     w, w2, h, h2, s, s2, bpp, bpp2);
-        exit(EXIT_FAILURE);
-    }
+            exit(EXIT_FAILURE);
+        }
 
-    find_changed_bbox(bmp, bmp2, w, h, s, bpp, &bbox);
-    if ((bbox.xmin > bbox.xmax) && (bbox.ymin > bbox.ymax))
-    {
-        /* The script will scream for us */
-        /* fprintf(stderr, "No differences found!\n"); */
-        /* Unchanged */
-        exit(EXIT_SUCCESS);
-    }
-    /* Make the bbox sensibly exclusive */
-    bbox.xmax++;
-    bbox.ymax++;
+        find_changed_bbox(bmp, bmp2, w, h, s, bpp, &bbox);
+        if ((bbox.xmin > bbox.xmax) && (bbox.ymin > bbox.ymax))
+        {
+            /* The script will scream for us */
+            /* fprintf(stderr, "No differences found!\n"); */
+            /* Unchanged */
+            exit(EXIT_SUCCESS);
+        }
+        /* Make the bbox sensibly exclusive */
+        bbox.xmax++;
+        bbox.ymax++;
 
-    /* Make bbox2.xmin/ymin be the centre of the changed area */
-    bbox2.xmin = (bbox.xmin + bbox.xmax + 1)/2;
-    bbox2.ymin = (bbox.ymin + bbox.ymax + 1)/2;
+        /* Make bbox2.xmin/ymin be the centre of the changed area */
+        bbox2.xmin = (bbox.xmin + bbox.xmax + 1)/2;
+        bbox2.ymin = (bbox.ymin + bbox.ymax + 1)/2;
 
-    /* Make bbox2.xmax/ymax be the width of the changed area */
-    nx = 1;
-    ny = 1;
-    bbox2.xmax = bbox.xmax - bbox.xmin;
-    if (bbox2.xmax < MINX)
-        bbox2.xmax = MINX;
-    if (bbox2.xmax > MAXX)
-    {
-        nx = 1+(bbox2.xmax/MAXX);
-        bbox2.xmax = MAXX*nx;
-    }
-    bbox2.ymax = bbox.ymax - bbox.ymin;
-    if (bbox2.ymax < MINY)
-        bbox2.ymax = MINY;
-    if (bbox2.ymax > MAXY)
-    {
-        ny = 1+(bbox2.ymax/MAXY);
-        bbox2.ymax = MAXY*ny;
-    }
+        /* Make bbox2.xmax/ymax be the width of the changed area */
+        nx = 1;
+        ny = 1;
+        bbox2.xmax = bbox.xmax - bbox.xmin;
+        if (bbox2.xmax < MINX)
+            bbox2.xmax = MINX;
+        if (bbox2.xmax > MAXX)
+        {
+            nx = 1+(bbox2.xmax/MAXX);
+            bbox2.xmax = MAXX*nx;
+        }
+        bbox2.ymax = bbox.ymax - bbox.ymin;
+        if (bbox2.ymax < MINY)
+            bbox2.ymax = MINY;
+        if (bbox2.ymax > MAXY)
+        {
+            ny = 1+(bbox2.ymax/MAXY);
+            bbox2.ymax = MAXY*ny;
+        }
 
-    /* Now make the real bbox */
-    bbox2.xmin -= bbox2.xmax>>1;
-    if (bbox2.xmin < 0)
-        bbox2.xmin = 0;
-    bbox2.ymin -= bbox2.ymax>>1;
-    if (bbox2.ymin < 0)
-        bbox2.ymin = 0;
-    bbox2.xmax += bbox2.xmin;
-    if (bbox2.xmax > w)
-    {
-        bbox2.xmin -= bbox2.xmax-w;
-        if (bbox2.xmin < 0)
-            bbox2.xmin = 0;
-        bbox2.xmax = w;
-    }
-    bbox2.ymax += bbox2.ymin;
-    if (bbox2.ymax > h)
-    {
-        bbox2.ymin -= bbox2.ymax-h;
-        if (bbox2.ymin < 0)
-            bbox2.ymin = 0;
-        bbox2.ymax = h;
-    }
+        /* Now make the real bbox */
+        bbox2.xmin -= bbox2.xmax>>1;
+        if (bbox2.xmin < 0)
+            bbox2.xmin = 0;
+        bbox2.ymin -= bbox2.ymax>>1;
+        if (bbox2.ymin < 0)
+            bbox2.ymin = 0;
+        bbox2.xmax += bbox2.xmin;
+        if (bbox2.xmax > w)
+        {
+            bbox2.xmin -= bbox2.xmax-w;
+            if (bbox2.xmin < 0)
+                bbox2.xmin = 0;
+            bbox2.xmax = w;
+        }
+        bbox2.ymax += bbox2.ymin;
+        if (bbox2.ymax > h)
+        {
+            bbox2.ymin -= bbox2.ymax-h;
+            if (bbox2.ymin < 0)
+                bbox2.ymin = 0;
+            bbox2.ymax = h;
+        }
 
-    /* bbox */
+        /* bbox */
         boxlist = Malloc(sizeof(*boxlist) * nx * ny);
 
-    /* Now save the changed bmps */
-    n = basenum;
-    boxlist--;
-    for (w2=0; w2 < nx; w2++)
-    {
-        for (h2=0; h2 < ny; h2++)
+        /* Now save the changed bmps */
+        n = basenum;
+        boxlist--;
+        for (w2=0; w2 < nx; w2++)
         {
-            boxlist++;
-            boxlist->xmin = bbox2.xmin + MAXX*w2;
-            boxlist->xmax = boxlist->xmin + MAXX;
-            if (boxlist->xmax > bbox2.xmax)
-                boxlist->xmax = bbox2.xmax;
-            if (boxlist->xmin > boxlist->xmax-MINX)
+            for (h2=0; h2 < ny; h2++)
             {
-                boxlist->xmin = boxlist->xmax-MINX;
-                if (boxlist->xmin < 0)
-                    boxlist->xmin = 0;
-            }
-            boxlist->ymin = bbox2.ymin + MAXY*h2;
-            boxlist->ymax = boxlist->ymin + MAXY;
-            if (boxlist->ymax > bbox2.ymax)
-                boxlist->ymax = bbox2.ymax;
-            if (boxlist->ymin > boxlist->ymax-MINY)
-            {
-                boxlist->ymin = boxlist->ymax-MINY;
-                if (boxlist->ymin < 0)
-                    boxlist->ymin = 0;
-            }
-            rediff(bmp, bmp2, s, bpp, boxlist);
-            if (!BBox_valid(boxlist))
-                continue;
+                boxlist++;
+                boxlist->xmin = bbox2.xmin + MAXX*w2;
+                boxlist->xmax = boxlist->xmin + MAXX;
+                if (boxlist->xmax > bbox2.xmax)
+                    boxlist->xmax = bbox2.xmax;
+                if (boxlist->xmin > boxlist->xmax-MINX)
+                {
+                    boxlist->xmin = boxlist->xmax-MINX;
+                    if (boxlist->xmin < 0)
+                        boxlist->xmin = 0;
+                }
+                boxlist->ymin = bbox2.ymin + MAXY*h2;
+                boxlist->ymax = boxlist->ymin + MAXY;
+                if (boxlist->ymax > bbox2.ymax)
+                    boxlist->ymax = bbox2.ymax;
+                if (boxlist->ymin > boxlist->ymax-MINY)
+                {
+                    boxlist->ymin = boxlist->ymax-MINY;
+                    if (boxlist->ymin < 0)
+                        boxlist->ymin = 0;
+                }
+                rediff(bmp, bmp2, s, bpp, boxlist);
+                if (!BBox_valid(boxlist))
+                    continue;
                 sprintf(str1, "%s.%05d.bmp", argv[3], n);
                 sprintf(str2, "%s.%05d.bmp", argv[3], n+1);
-            save_bmp(bmp,  boxlist, s, bpp, str1);
-            save_bmp(bmp2, boxlist, s, bpp, str2);
+                save_bmp(bmp,  boxlist, s, bpp, str1);
+                save_bmp(bmp2, boxlist, s, bpp, str2);
                 sprintf(str4, "%s.%05d.meta", argv[3], n);
                 save_meta(boxlist, str4, w, h, imagecount);
-            n += 3;
+                n += 3;
+            }
         }
-    }
-    boxlist -= nx*ny;
-    diff_bmp(bmp, bmp2, w, h, s, bpp);
-    n = basenum;
-    for (w2=0; w2 < nx; w2++)
-    {
-        for (h2=0; h2 < ny; h2++)
+        boxlist -= nx*ny;
+        diff_bmp(bmp, bmp2, w, h, s, bpp);
+        n = basenum;
+        for (w2=0; w2 < nx; w2++)
         {
-            boxlist++;
-            if (!BBox_valid(boxlist))
-                continue;
+            for (h2=0; h2 < ny; h2++)
+            {
+                boxlist++;
+                if (!BBox_valid(boxlist))
+                    continue;
                 sprintf(str3, "%s.%05d.bmp", argv[3], n+2);
-            save_bmp(bmp, boxlist, s, bpp, str3);
-            n += 3;
+                save_bmp(bmp, boxlist, s, bpp, str3);
+                n += 3;
+            }
         }
-    }
         basenum = n;
 
         boxlist -= nx*ny;

Modified: branches/icc_work/toolbin/localcluster/build.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/build.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/build.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -7,9 +7,8 @@
 use POSIX ":sys_wait_h";
 
 my $updateBaseline=0;
-my $rerunIfMd5sumDifferences=1;
+my $rerunIfMd5sumDifferences=0;
 
-
 my %allowedProducts=(
   'gs'  => 1,
   'pcl' => 1,
@@ -21,6 +20,8 @@
 my $lowres=0;
 my $highres=0;
 my %products;
+my $bmpcmp=0;
+my $filename="";
 
 my $t;
 
@@ -32,17 +33,22 @@
     $lowres=1;
   } elsif ($t eq "highres") {
     $highres=1;
+  } elsif ($t eq "bmpcmp") {
+    $bmpcmp=1;
+    $filename=shift;
+    $filename.=".txt";
   } else {
-  $products{$t}=1;
-  die "usage: build.pl [gs] [pcl] [xps] [svg] [mupdf]" if (!exists $allowedProducts{$t});
+    $products{$t}=1;
+    die "usage: build.pl [gs] [pcl] [xps] [svg] [mupdf]" if (!exists $allowedProducts{$t});
+  }
 }
-}
 
 my $updateTestFiles=1;
 my $verbose=0;
 
 local $| = 1;
 my %md5sum;
+my %skip;
 
 if ($rerunIfMd5sumDifferences) {
   open(F,"<current.tab") || die "file current.tab not found";
@@ -61,9 +67,16 @@
     $md5sum{$a[0]}.= '|'.$a[1];
   }
   close(F);
+  if (open(F,"<skip.lst")) {
+    while(<F>) {
+      chomp;
+      $skip{$_}=1;
+    }
+    close(F);
+  }
 }
 
-#print Dumper(\%md5sum);  exit;
+#print Dumper(\%skip);  exit;
 
 
 
@@ -259,6 +272,9 @@
 }
 }
 
+
+if (!$bmpcmp) {
+
 foreach my $testSource (sort keys %testSource) {
   if (scalar keys %products==0 || exists $products{$testSource{$testSource}} || ($testSource{$testSource} eq 'gs' && exists $products{'mupdf'})) {
 #print "$testSource\n";
@@ -282,20 +298,22 @@
       if (exists $products{'mupdf'}) {
         $testfiles{'./'.$testfile}='mupdf'                  if (!($testfile =~ m|/$|) && !($testfile =~ m/^\./) && !($testfile =~ m/.disabled$/) && $testfile =~ m/.pdf$/i);
       } else {
-      $testfiles{'./'.$testfile}=$testSource{$testSource} if (!($testfile =~ m|/$|) && !($testfile =~ m/^\./) && !($testfile =~m /.disabled$/));
+        $testfiles{'./'.$testfile}=$testSource{$testSource} if (!($testfile =~ m|/$|) && !($testfile =~ m/^\./) && !($testfile =~ m/.disabled$/));
       }
 #     print "$testfile\n";
     }
   }
 }
+}
 
 #print Dumper(\%testfiles); exit;
 
-sub build($$$$) {
+sub build($$$$$) {
   my $product=shift;  # gs|pcl|xps|svg
   my $inputFilename=shift;
   my $options=shift;
   my $md5sumOnly=shift;
+  my $bmpcmp=shift;
 
   if ($md5sumOnly) {
     $niceCommand = 'nice';
@@ -304,7 +322,9 @@
   }
 
   my $cmd="";
-  my $cmd1="";
+  my $cmd1a="";
+  my $cmd1b="";
+  my $cmd1c="";
   my $cmd2a="";
   my $cmd2b="";
   my $cmd2c="";
@@ -330,8 +350,8 @@
 
   # $cmd .= " touch $logFilename ; rm -f $logFilename ";
 
-  $cmd  .= " true";
-  $cmd  .= "; touch $md5Filename" if (!$updateBaseline);
+  $cmd  .= " true ";
+  $cmd  .= "; touch $md5Filename" if (!$updateBaseline && !$bmpcmp);
 
 
   if ($a[0] eq 'pdf') {
@@ -339,35 +359,42 @@
 
     $outputFilename="$temp/$tempname.$options.pdf";
     if ($product eq 'gs') {
-      $cmd1.="$niceCommand $gsBin";
+      $cmd1a.="$niceCommand $gsBin";
     } elsif ($product eq 'pcl') {
-      $cmd1.="$niceCommand $pclBin";
+      $cmd1a.="$niceCommand $pclBin";
     } elsif ($product eq 'xps') {
-      $cmd1.="$niceCommand $xpsBin";
+      $cmd1a.="$niceCommand $xpsBin";
     } elsif ($product eq 'svg') {
-      $cmd1.="$niceCommand $svgBin";
+      $cmd1a.="$niceCommand $svgBin";
     } else {
       die "unexpected product: $product";
     }
-    $cmd1.=" -sOutputFile=$outputFilename";
-    $cmd1.=" -sDEVICE=pdfwrite";
-    $cmd1.=" -r".$a[2];
+    $cmd1b.=" -sOutputFile=$outputFilename";
+    $cmd1c.=" -sDEVICE=pdfwrite";
+    $cmd1c.=" -r".$a[2];
     #   $cmd1.=" -q" if ($product eq 'gs');
-    $cmd1.=" -sDEFAULTPAPERSIZE=letter" if ($product eq 'gs');
-    $cmd1.=" -dNOPAUSE -dBATCH";  # -Z:
-#   $cmd1.=" -dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f" if ($product eq 'gs');
-    $cmd1.=" -dJOBSERVER" if ($product eq 'gs');
+    $cmd1c.=" -sDEFAULTPAPERSIZE=letter" if ($product eq 'gs');
+    $cmd1c.=" -dNOPAUSE -dBATCH";  # -Z:
+#   $cmd1c.=" -dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f" if ($product eq 'gs');
+    $cmd1c.=" -dJOBSERVER" if ($product eq 'gs');
 
-    $cmd1.=" %rom%Resource/Init/gs_cet.ps" if ($filename =~ m/.PS$/ && $product eq 'gs');
+    $cmd1c.=" %rom%Resource/Init/gs_cet.ps" if ($filename =~ m/.PS$/ && $product eq 'gs');
 #   $cmd1.=" -dFirstPage=1 -dLastPage=1" if ($filename =~ m/.pdf$/i || $filename =~ m/.ai$/i);
 
-    $cmd1.=" - < " if (!($filename =~ m/.pdf$/i || $filename =~ m/.ai$/i) && $product eq 'gs');
+    $cmd1c.=" - < " if (!($filename =~ m/.pdf$/i || $filename =~ m/.ai$/i) && $product eq 'gs');
 
-    $cmd1.=" $inputFilename";
+    $cmd1c.=" $inputFilename";
     #   $cmd.=" 2>&1";
 
-    $cmd.=" ; echo \"$cmd1\" >>$logFilename ";
-    $cmd.=" ; $timeCommand $cmd1 >>$logFilename 2>&1";
+    if ($bmpcmp) {
+      $cmd.=" ; $timeCommand $cmd1a $cmd1b $cmd1c >>$logFilename 2>&1";
+      $cmd1a =~ s|/gs/|/head/|;
+      $cmd1b =~ s|$temp|$baselineRaster|;
+      $cmd.=" ; $timeCommand $cmd1a $cmd1b $cmd1c >>$logFilename 2>&1";
+    } else {
+      $cmd.=" ; echo \"$cmd1a $cmd1b $cmd1c\" >>$logFilename ";
+      $cmd.=" ; $timeCommand $cmd1a $cmd1b $cmd1c >>$logFilename 2>&1";
+    }
 
     $cmd.=" ; echo '---' >>$logFilename";
 
@@ -404,18 +431,27 @@
 
     $cmd2c.=" $inputFilename";
 
-    $cmd.=" ; echo \"$cmd2a $cmd2b $cmd2c\" >>$logFilename ";
-    $cmd.=" ; $timeCommand $cmd2a $cmd2b $cmd2c >>$logFilename 2>&1";
+    if ($bmpcmp) {
+      $cmd.=" ; $timeCommand $cmd2a -sOutputFile='|gzip -1 -n >$outputFilename.gz' $cmd2c >>$logFilename 2>&1";
+      $cmd2a =~ s|/gs/|/head/|;
+      $cmd2c =~ s|$temp|$baselineRaster|;
+      $cmd.=" ; $timeCommand $cmd2a -sOutputFile='|gzip -1 -n >$baselineFilename.gz' $cmd2c >>$logFilename 2>&1";
+      $cmd.=" ; bash -c \"./bmpcmp <(gunzip -c $outputFilename.gz) <(gunzip -c $baselineFilename.gz) $bmpcmpFilename 1 10\" ; gzip $bmpcmpFilename.* ";
+      $cmd.=" ; scp -q -o ConnectTimeout=30 -i ~/.ssh/cluster_key $bmpcmpFilename.* regression\@casper3.ghostscript.com:/home/regression/cluster/bmpcmp/.";
+    } else {
+      $cmd.=" ; echo \"$cmd2a $cmd2b $cmd2c\" >>$logFilename ";
+      $cmd.=" ; $timeCommand $cmd2a $cmd2b $cmd2c >>$logFilename 2>&1";
+   }
 
-    if ($rerunIfMd5sumDifferences && exists $md5sum{$filename2}) {
-      $cmd.=" ; sleep 1 ; grep -q -E \"".$md5sum{$filename2}."\" $md5Filename; a=\$? ;  if [ \"\$a\" -eq \"1\" -a -e raster.yes ]; then $cmd2a -sOutputFile='|gzip -1 -n >$rasterFilename' $cmd2c >>/dev/null 2>&1; bash -c \"./bmpcmp <(gzcat $rasterFilename.gz) <(gzcat $baselineFilename.gz) $bmpcmpFilename\" ; gzip $bmpcmpFilename.* ; fi";
+    if ($rerunIfMd5sumDifferences && exists $md5sum{$filename2} && !exists $skip{$filename2}) {
+      $cmd.=" ; sleep 1 ; grep -q -E \"".$md5sum{$filename2}."\" $md5Filename; a=\$? ;  if [ \"\$a\" -eq \"1\" -a -e raster.yes ]; then $cmd2a -sOutputFile='|gzip -1 -n >$rasterFilename.gz' $cmd2c >>/dev/null 2>&1; bash -c \"./bmpcmp <(gunzip -c $rasterFilename.gz) <(gunzip -c $baselineFilename.gz) $bmpcmpFilename 1 10\" ; gzip $bmpcmpFilename.* ; fi";
     }
 
     #   $cmd.=" ; gzip -f $inputFilename >>$logFilename 2>&1";
     $outputFilenames.="$inputFilename ";
 
   } else {
-    $cmd .= " ; echo \"$product\" >>$logFilename ";
+    $cmd .= " ; echo \"$product\" >>$logFilename " if (!$bmpcmp);
 
     $outputFilename="$temp/$tempname.$options";
     $baselineFilename="$baselineRaster/$tempname.$options";
@@ -466,15 +502,23 @@
 
     $cmd2c.=" $inputFilename ";
 
-    $cmd.=" ; echo \"$cmd2a $cmd2b $cmd2c\" >>$logFilename ";
-    $cmd.=" ; $timeCommand $cmd2a $cmd2b $cmd2c >>$logFilename 2>&1";
+    if ($bmpcmp) {
+      $cmd.=" ; $timeCommand $cmd2a -sOutputFile='|gzip -1 -n >$outputFilename.gz' $cmd2c >>$logFilename 2>&1";
+      $cmd2a =~ s|/gs/|/head/|;
+      $cmd.=" ; $timeCommand $cmd2a -sOutputFile='|gzip -1 -n >$baselineFilename.gz' $cmd2c >>$logFilename 2>&1";
+      $cmd.=" ; bash -c \"./bmpcmp <(gunzip -c $outputFilename.gz) <(gunzip -c $baselineFilename.gz) $bmpcmpFilename 1 10\" ; gzip $bmpcmpFilename.* ";
+      $cmd.=" ; scp -q -o ConnectTimeout=30 -i ~/.ssh/cluster_key $bmpcmpFilename.* regression\@casper3.ghostscript.com:/home/regression/cluster/bmpcmp/.";
+    } else {
+      $cmd.=" ; echo \"$cmd2a $cmd2b $cmd2c\" >>$logFilename ";
+      $cmd.=" ; $timeCommand $cmd2a $cmd2b $cmd2c >>$logFilename 2>&1";
+   }
 
-    if ($rerunIfMd5sumDifferences && exists $md5sum{$filename2}) {
-      $cmd.=" ; sleep 1 ; grep -q -E \"".$md5sum{$filename2}."\" $md5Filename; a=\$? ;  if [ \"\$a\" -eq \"1\" -a -e raster.yes ]; then $cmd2a -sOutputFile='|gzip -1 -n >$rasterFilename' $cmd2c >>/dev/null 2>&1; bash -c \"./bmpcmp <(gzcat $rasterFilename) <($baselineFilename).gz $bmpcmpFilename\" ; gzip $bmpcmpFilename.* ; fi";
+    if ($rerunIfMd5sumDifferences && exists $md5sum{$filename2} && !exists $skip{$filename2}) {
+      $cmd.=" ; sleep 1 ; grep -q -E \"".$md5sum{$filename2}."\" $md5Filename; a=\$? ;  if [ \"\$a\" -eq \"1\" -a -e raster.yes ]; then $cmd2a -sOutputFile='|gzip -1 -n >$rasterFilename.gz' $cmd2c >>/dev/null 2>&1; bash -c \"./bmpcmp <(gunzip -c $rasterFilename.gz) <(gunzip -c $baselineFilename.gz) $bmpcmpFilename 1 10\" ; gzip $bmpcmpFilename.* ; fi";
     }
 
 
-  }
+    }
 
   }
   if ($md5sumOnly) {
@@ -509,6 +553,29 @@
 my @slowOutputFilenames;
 my @slowFilenames;
 
+if ($bmpcmp) {
+  open (F,"$filename") || die "file $filename not found";
+  my $done=0;
+  while(<F>) {
+    chomp;
+    my $cmd="";
+    my $outputFilenames="";
+    my $filename="";
+    if (m/^(.+)\.(pdf\.p.mraw\.\d+\.[01]) (\S+) pdfwrite /) {
+#       print "$1 $2 $3 -- pdfwrite\n";
+      ($cmd,$outputFilenames,$filename)=build($3,$1,$2,1,1) if (!$done);
+print "$filename\t$cmd\n" if (!$done);
+    } elsif (m/^(.+)\.(p.mraw\.\d+\.[01]) (\S+)/) {
+#      print "$1 $2 $3\n";
+      ($cmd,$outputFilenames,$filename)=build($3,$1,$2,1,1) if (!$done);
+print "$filename\t$cmd\n" if (!$done);
+    } elsif (m/errors:$/) {
+      $done=1;
+    }
+    
+  }
+  close(F);
+} else {
 foreach my $testfile (sort keys %testfiles) {
   foreach my $test (@{$tests{$testfiles{$testfile}}}) {
     if (($lowres==1  && ($test =~ m/\.72\./ || $test =~ m/\.75\./)) ||
@@ -518,19 +585,20 @@
     my $cmd="";
     my $outputFilenames="";
     my $filename="";
-    ($cmd,$outputFilenames,$filename)=build($testfiles{$testfile},$testfile,$test,1);
+    ($cmd,$outputFilenames,$filename)=build($testfiles{$testfile},$testfile,$test,1,0);
     if (exists $quickFiles{$filename}) {
       push @commands,$cmd;
       push @outputFilenames,$outputFilenames;
-    push @filenames,$filename;
+      push @filenames,$filename;
     } else {
       push @slowCommands,$cmd;
       push @slowOutputFilenames,$outputFilenames;
       push @slowFilenames,$filename;
+    }
+    }
   }
 }
-    }
-  } 
+}
 
 while (scalar(@slowCommands) || scalar(@commands)) {
   if (scalar(@slowCommands)) {
@@ -541,11 +609,11 @@
   }
   if (scalar(@commands)) {
     my $n=rand(scalar @commands);
-  my $filename=$filenames[$n];  splice(@filenames,$n,1);
-  my $command=$commands[$n];  splice(@commands,$n,1);
-  print "$filename\t$command\n";
+    my $filename=$filenames[$n];  splice(@filenames,$n,1);
+    my $command=$commands[$n];  splice(@commands,$n,1);
+    print "$filename\t$command\n";
+  }
 }
-}
 
 #while (scalar(@slowCommands)) {
 #  my $n=rand(scalar @slowCommands);

Modified: branches/icc_work/toolbin/localcluster/cachearchive.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/cachearchive.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/cachearchive.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -21,8 +21,18 @@
 closedir DIR;
 }
 
+sub myCmp($$) {
+  my $a=shift;
+  my $b=shift;
+  $a=~m/(\d+)/;
+  my $a1=$1;
+  $b=~m/(\d+)/;
+  my $b1=$1;
+  return($b1 cmp $a1);
+}
+
 my $count=$previousValues;
-foreach my $i (sort {$b cmp $a} keys %archives) {
+foreach my $i (sort myCmp keys %archives) {
 # print STDERR "$i\n";
   if ($count>0) {
     print STDERR "reading archive/$i\n" if ($verbose);

Modified: branches/icc_work/toolbin/localcluster/clustermaster.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/clustermaster.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/clustermaster.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -165,6 +165,7 @@
       foreach my $m (keys %lastTransfer) {
         if (time-$lastTransfer{$m}>=$maxTransferTime) {
           mylog "machine $m hasn't connected in ".(time-$lastTransfer{$m})." seconds, assuming it went down\n";
+          unlink "$m.start";  # so it does connect later and try to run jobs
           delete $lastTransfer{$m} if (exists $lastTransfer{$m});
           delete $machines{$m} if (exists $machines{$m});
           if (scalar keys %lastTransfer) {
@@ -187,16 +188,17 @@
 
       foreach my $m (keys %machines) {
         if (-e "$m.done" && exists $lastTransfer{$m}) {
+          unlink "$m.start";  # so it does connect later and try to run jobs
           if (-e "$m.fail") {
             mylog "both $m.done and $m.fail are set, ignoring $m.done\n";
           } else {
             mylog "$m is reporting done even though it should not be done\n";
             delete $lastTransfer{$m} if (exists $lastTransfer{$m});
             delete $machines{$m} if (exists $machines{$m});
-          $tempDone=1;
-          $abort=1;
+            $tempDone=1;
+            $abort=1;
+          }
         }
-        }
         if (-e "$m.fail") {
           mylog "$m.fail is set\n";
           $failOccured=1;
@@ -227,7 +229,9 @@
     #   print "$currentRev1 $newRev1\n$currentRev2 $newRev2\n";
     open(LOCK,">$lock") || die "can't write to $lock";
     flock(LOCK,LOCK_EX);
-    my $s="svn $newRev1 $newRev2";
+    my $rev=$newRev1;
+    $rev=$newRev2 if ($newRev2>$rev);
+    my $s="svn $rev";
     my $t=`grep "$s" $queue`;
     chomp $t;
     #   print "grep '$s' returned: $t\n";
@@ -242,6 +246,37 @@
 }
 
 {
+  my $url1=`svn info icc_work | grep "URL" | awk '{ print \$2 } '`;
+  chomp $url1;
+  my $currentRev1=`svn info icc_work | grep "Last Changed Rev" | awk '{ print \$4 } '`;
+  my $newRev1    =`svn info $url1 | grep "Last Changed Rev" | awk '{ print \$4 } '`;
+  chomp $currentRev1;
+  chomp $newRev1;
+  if ($currentRev1 eq "" || $newRev1 eq "") {
+    checkPID();
+    unlink $runningSemaphore;
+    die "svn info failed";
+  }
+  if ($currentRev1 != $newRev1) {
+    #   print "$currentRev1 $newRev1\n";
+    open(LOCK,">$lock") || die "can't write to $lock";
+    flock(LOCK,LOCK_EX);
+    my $s="svn-icc_work $newRev1";
+    my $t=`grep "$s" $queue`;
+    chomp $t;
+    #   print "grep '$s' returned: $t\n";
+    if (length($t)==0) {
+      mylog "grep '$s' returns no match, adding to queue\n";
+      open(F,">>$queue");
+      print F "$s\n";
+      close(F);
+    }
+    close(LOCK);
+  }
+}
+
+
+{
   my $cmd="cd mupdf ; darcs pull -a";
   my $value=`$cmd`;
   chomp $value;
@@ -289,7 +324,7 @@
       chomp $product;
       close(F);
       unlink "$usersDir/$user/ghostpdl/gs/cluster_command.run";
-  }
+    }
     if ($product) {
       $product =~ s/ +$//;
       mylog "user $product\n";
@@ -323,15 +358,21 @@
           }
         }
       } else {
-      my $s="user $product";
-      my $t=`grep "$s" $queue`;
-      chomp $t;
+        my $s="user $product";
+        my $t=`grep "$s" $queue`;
+        chomp $t;
         mylog "grep '$s' returned: $t\n";
-      if (length($t)==0) {
+        if (length($t)==0) {
           mylog "grep '$s' returns no match, adding to queue\n";
-        open(F,">>$queue");
-        print F "$s\n";
-        close(F);
+          open(F,">>$queue");
+          print F "$s\n";
+          close(F);
+          mylog "running: find $usersDir/$user/ghostpdl -name \\*.sh | xargs \$HOME/bin/flip -u\n";
+          `find $usersDir/$user/ghostpdl -name \\*.sh | xargs \$HOME/bin/flip -u`;
+          mylog "running: find $usersDir/$user/ghostpdl -name instcopy | xargs \$HOME/bin/flip -u\n";
+          `find $usersDir/$user/ghostpdl -name instcopy | xargs \$HOME/bin/flip -u`;
+          mylog "running: chmod -R +xr $usersDir/$user/ghostpdl\n";
+          `chmod -R +xr $usersDir/$user/ghostpdl`;
         }
         close(LOCK);
       }
@@ -398,13 +439,17 @@
   'pcl' => 2,
   'pxl' => 2,
   'urwfonts' => 2,
-  'pl' => 15,
-  'main' => 15,
-  'common' => 15,
+  'pl' => 14,
+  'main' => 2,
+  'common' => 14,
   'gs/psi' => 1,
   'gs/base' => 15,
-  'gs/Resource' => 15
-  );
+  'gs/Resource' => 15,
+  'gs/doc' => 0,
+  'gs/toolbin' => 0,
+  'gs/examples' => 0,
+  'language_switch' => 0
+);
 
 #my $currentRev1=`svn info ghostpdl | grep "Last Changed Rev" | awk '{ print \$4} '`;
 #my $currentRev2=`svn info ghostpdl/gs | grep "Last Changed Rev" | awk '{ print \$4} '`;
@@ -417,7 +462,7 @@
 flock(LOCK,LOCK_EX);
 if (open(F,"<$queue")) {
   $regression=<F>;
-close(F);
+  close(F);
 }
 close(LOCK);
 
@@ -428,27 +473,28 @@
 }
 
 my $normalRegression=0;
+my $icc_workRegression=0;
 my $userRegression="";
+my $bmpcmp=0;
 my $mupdfRegression=0;
 my $updateBaseline=0;
 my $userName="";
-my $rev1;
-my $rev2;
+my $rev;
 
-if ($regression =~ m/svn (\d+) (\d+)/) {
+if ($regression =~ m/svn (\d+)/) {
   mylog "found svn regression in queue: $regression\n";
   $normalRegression=1;
-  $rev1=$1;
-  $rev2=$2;
+  $rev=$1;
 
   my $currentRev1=`svn info ghostpdl | grep "Last Changed Rev" | awk '{ print \$4 } '`;
   my $currentRev2=`svn info ghostpdl/gs | grep "Last Changed Rev" | awk '{ print \$4 } '`;
   chomp $currentRev1;
   chomp $currentRev2;
 
-  my $a=`svn update ghostpdl -r$rev1 --ignore-externals`;
-  my $b=`svn update ghostpdl/gs -r$rev2`;
-  mylog "svn update ghostpdl -r$rev1 --ignore-externals\nsvn update ghostpdl/gs -r$rev2\n" if ($verbose);
+  my $a=`svn update ghostpdl -r$rev --ignore-externals`;
+  my $b=`svn update ghostpdl/gs -r$rev`;
+  mylog "svn update ghostpdl -r$rev --ignore-externals\n" if ($verbose);
+  mylog "svn update ghostpdl/gs -r$rev\n" if ($verbose);
 
   $footer.="\nChanged files:\n";
   $a.=$b;
@@ -469,9 +515,12 @@
         if (exists $rules{$t}) {
           mylog "$s: $rules{$t}\n";
           $set|=$rules{$t};
-} else {
-          mylog "$s: missing\n";
-    }
+        } else {
+          mylog "$s: missing, testing all\n";
+          $set=15;
+        }
+      } else {
+        $set=15;
       }
     }
   }
@@ -479,7 +528,7 @@
   #print "$set\n";
   foreach my $i (sort keys %tests) {
     $product .= "$i " if ($set & $tests{$i});
-}
+  }
 
   $product =~ s/svg//;  # disable svg tests
   # $product="gs pcl xps svg";
@@ -492,22 +541,29 @@
 # un-update the source so that if the regression fails were are back to the where we started
     `svn update ghostpdl -r$currentRev1 --ignore-externals`;
     `svn update ghostpdl/gs -r$currentRev2`;
-    mylog "svn update ghostpdl -r$currentRev1 --ignore-externals\nsvn update ghostpdl/gs -r$currentRev2\n" if ($verbose);
-} else {
+    mylog "svn update ghostpdl -r$currentRev1 --ignore-externals\n";
+    mylog "svn update ghostpdl/gs -r$currentRev2\n";
+  } else {
     mylog "no interesting files changed, skipping regression\n";
     $normalRegression=0;
   }
 
 } elsif ($regression=~/user (.+)/) {
   mylog "found user regression in queue: $regression\n";
-    $userRegression=$1;
+  $userRegression=$1;
+} elsif ($regression=~/svn-icc_work (.+)/) {
+  mylog "found icc_work regression in queue: $regression\n";
+  $icc_workRegression=1;
+  $rev=$1;
+  $product="gs pcl xps";
+  $footer.="icc_work regression: $rev\n\nProducts tested: $product\n\n";
 } elsif ($regression=~/mupdf/) {
   mylog "found mupdf entry in queue.lst, not yet handled, removing.\n";
   my $cmd="touch mupdf.tar.gz ; rm mupdf.tar.gz ; tar cvf mupdf.tar --exclude=_darcs mupdf ; gzip mupdf.tar";
   `$cmd`;
   $cmd="cd mupdf ; darcs changes --count";
-  $rev1=`$cmd`;
-  chomp $rev1;
+  $rev=`$cmd`;
+  chomp $rev;
 # $mupdfRegression=1;
   $product="mupdf";
 } elsif ($regression=~/updatebaseline/) {
@@ -515,9 +571,9 @@
   $updateBaseline=1;
 } else {
   mylog "found unknown entry in queue.lst, removing.\n";
-  }
+}
 
-if ($normalRegression==1 || $userRegression ne "" || $mupdfRegression==1 || $updateBaseline==1) {
+if ($normalRegression==1 || $userRegression ne "" || $mupdfRegression==1 || $updateBaseline==1 || $icc_workRegression==1) {
 
   if ($userRegression ne "") {
     mylog "running: $userRegression\n" if ($verbose);
@@ -525,13 +581,19 @@
 
   if ($normalRegression) {
     open(F,">revision.gs");
-    print F "local cluster regression gs-r$rev2 / ghostpdl-r$rev1 (xefitra)\n";
+    print F "local cluster regression r$rev (xefitra)\n";
     close(F);
   }
 
+  if ($icc_workRegression) {
+    open(F,">icc_workRevision.gs");
+    print F "local cluster regression icc_work-r$rev (xefitra)\n";
+    close(F);
+  }
+
   if ($mupdfRegression) {
     open(F,">revision.mudpf");
-    print F "local cluster regression mupdf-r$rev1 (xefitra)\n";
+    print F "local cluster regression mupdf-r$rev (xefitra)\n";
     close(F);
   }
 
@@ -556,7 +618,12 @@
     delete $machines{$_} if (stat("$_.down"));
   }
 
-  mylog Dumper(\%machines) if ($verbose);
+# mylog Dumper(\%machines) if ($verbose);
+  if ($verbose) {
+    foreach (sort keys %machines) {
+      mylog("  $_\n");
+    }
+  }
 
   my $startTime;
   my %doneTime;
@@ -568,10 +635,10 @@
 
     mylog "running with ".(scalar keys %machines)." machines\n" if ($verbose);
 
-    if (scalar keys %machines==0) {
+    if (scalar keys %machines<=2) {
       sleep 600;
       unlink $runningSemaphore;
-      die "There aren't any cluster machines available"
+      die "There aren't enough cluster machines available"
     }
 
     checkPID();
@@ -580,8 +647,12 @@
       my @a=split ' ',$userRegression,2;
       $userName=$a[0];
       $product=$a[1];
+      $bmpcmp=1 if ($product eq "bmpcmp");
+      $product="bmpcmp $userName" if ($bmpcmp);
       mylog "userName=$userName product=$product\n" if ($verbose);
-      $footer="\n\nUser regression options: $product\n";
+      my $t=`date +\"%D %H:%M:%S\"`;
+      chomp $t;
+      $footer="\n\nUser regression: user $userName  options $product  start $t\n";
     }
 
     my $baseline="";
@@ -591,7 +662,7 @@
     if ($? != 0) {
       # horrible hack, fix later
       mylog "build.pl $product failed\n";
-      unlink  $runningSemaphore;
+      unlink $runningSemaphore;
       exit;
     }
 
@@ -604,27 +675,43 @@
       unlink("$_.done");
       unlink("$_.fail");
       unlink("$_.abort");
+      if (-e "$_.start") {
+            alarm 0;
+            mylog "$_.start exists when it shouldn't, aborting\n";
+            foreach my $m (keys %machines) {
+              unlink "$m.start";
+            }
+            abortAll();
+            unlink $runningSemaphore;
+            exit;
+      }
       open(F,">$_.start");
       if ($normalRegression) {
-        print F "svn\t$rev1 $rev2\t$product\n";
+        print F "svn\t$rev\t$product\n";
+      } elsif ($icc_workRegression) {
+        print F "svn-icc_work\t$rev\t$product";
       } elsif ($mupdfRegression) {
-        print F "mupdf\t$rev1\t$product";
+        print F "mupdf\t$rev\t$product";
       } elsif ($updateBaseline) {
         print F "svn\thead\t$product";
+      } elsif ($bmpcmp) {
+        print F "user\t$userName\tgs pcl xps\n";
       } else {
         print F "user\t$userName\t$product\n";
       }
-        close(F);
-      }
+      close(F);
+    }
 
     checkPID();
     $startText=`date +\"%D %H:%M:%S\"`;
     chomp $startText;
     open (F,">status");
     if ($normalRegression) {
-      print F "Regression gs-r$rev2 / ghostpdl-r$rev1 started at $startText UTC";
+      print F "Regression r$rev started at $startText UTC";
+    } elsif ($icc_workRegression) {
+      print F "Regression icc_work-r$rev started at $startText UTC";
     } elsif ($mupdfRegression) {
-      print F "Regression mupdf-r$rev1 started at $startText UTC";
+      print F "Regression mupdf-r$rev started at $startText UTC";
     } elsif ($updateBaseline) {
       print F "Update baseline started at $startText UTC";
     } else {
@@ -635,19 +722,24 @@
     %doneTime=();
     $abort=0;
     $startTime=time;
-    mylog Dumper(\%machines) if ($verbose);
     mylog "".(scalar(keys %doneTime))." ".(scalar (keys %machines))."\n" if ($verbose);
+#   mylog Dumper(\%machines) if ($verbose);
+    if ($verbose) {
+      foreach (sort keys %machines) {
+        mylog("  $_\n");
+      }
+    }
 
     use IO::Socket;
     use Net::hostent;
     my $PORT = 9000;
 
-    my $server = IO::Socket::INET->new( 
+    my $server = IO::Socket::INET->new(
       Proto     => 'tcp',
       LocalPort => $PORT,
       Listen    => SOMAXCONN,
       Reuse     => 1
-    );
+      );
 
     if (!$server) {
       abortAll();
@@ -689,6 +781,7 @@
           if (!exists $lastTransfer{$t}) {
             mylog "received connection from unexpected client $t (".($client->peerhost)."); sending done\n";
             print $client "done\n";
+            unlink "$t.start";
           } elsif (-e "$t.start") {
             # if we got here we received a connection from a client who appears to be out of sync
             # (i.e. they are probably still running the previous job).  this is a rare condition
@@ -712,9 +805,11 @@
             if ($doneCount==scalar keys %machines) {
               $tempDone=1 ;
               mylog "setting tempDone to 1\n";
+            }
           }
-          }
-          $jobsPerRequest=50 if (scalar(@jobs)<2000);
+          $jobsPerRequest=250;
+          $jobsPerRequest= 50 if (scalar(@jobs)<2000);
+          $jobsPerRequest= 10 if ($bmpcmp);
           for (my $i=0;  $i<$jobsPerRequest && scalar(@jobs);  $i++) {
             my $a=shift @jobs;
             print $client $a;
@@ -730,9 +825,11 @@
           chomp $s;
           open (F,">status");
           if ($normalRegression) {
-            print F "Regression gs-r$rev2 / ghostpdl-r$rev1 started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
+            print F "Regression r$rev started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
+          } elsif ($icc_workRegression) {
+            print F "Regression icc_work-r$rev started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
           } elsif ($mupdfRegression) {
-            print F "Regression mupdf-r$rev1 started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
+            print F "Regression mupdf-r$rev started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
           } elsif ($updateBaseline) {
           } else {
             print F "Regression $userRegression started at $startText UTC - ".($totalJobs-scalar(@jobs))."/$totalJobs sent - $percentage%";
@@ -742,7 +839,7 @@
           checkPID();
         }
         alarm 0;
-        };
+      };
 
       alarm 0;  # avoid race condition
 
@@ -773,21 +870,21 @@
               delete $machines{$m};
             }
           }
-            }
+        }
         if ($count<scalar keys %machines) {
           mylog "aborting all machines\n";
           abortAll();
-          }
+        }
         %machines=%tempMachines;
-            }
+      }
 
 
-          }
+    }
 
     mylog "all machines sent done, some machine went down, or one or more failed\n";
     if ($abort) {
       abortAll();
-        }
+    }
 
     my $machineSentDoneTime=time;
 
@@ -804,19 +901,19 @@
       foreach my $m (keys %machines) {
         if (open(F,"<$m.done")) {
           close(F);
-            if ($verbose) {
+          if ($verbose) {
             mylog "$m is reporting done\n" if (!exists $doneTime{$m});
-            }
+          }
           $doneTime{$m}=time if (!exists $doneTime{$m});
-          }
+        }
         if (!stat("$m.up") || (time-stat("$m.up")->ctime)>=$maxTouchTime) {
           mylog "$m is down\n" if ($verbose);
           $abort=1;
           %doneTime=();  # avoids a race condition where the machine we just aborted reports done
           abortAll();
           delete $machines{$m};
+        }
       }
-      }
       sleep(1);
     }
     mylog "abort=$abort\n" if ($verbose);
@@ -829,9 +926,11 @@
   chomp $s;
   open (F,">status");
   if ($normalRegression) {
-    print F "Regression gs-r$rev2 / ghostpdl-r$rev1 started at $startText UTC - finished at $s";
+    print F "Regression r$rev started at $startText UTC - finished at $s";
+  } elsif ($icc_workRegression) {
+    print F "Regression icc_work-r$rev started at $startText UTC - finished at $s";
   } elsif ($mupdfRegression) {
-    print F "Regression mupdf-r$rev1 started at $startText UTC - finished at $s";
+    print F "Regression mupdf-r$rev started at $startText UTC - finished at $s";
   } elsif ($updateBaseline) {
     print F "Update baseline started at $startText UTC - finished at $s";
   } else {
@@ -861,25 +960,28 @@
         checkPID();
         exit;  # unecessary, checkPID() won't return
       }
-    my $a=`./readlog.pl $_.log $_.tab $_ $_.out`;
-    if ($a ne "") {
-      chomp $a;
+      my $a=`./readlog.pl $_.log $_.tab $_ $_.out`;
+      if ($a ne "") {
+        chomp $a;
         mylog "$_: $a\n" if ($verbose);
-      $buildFail=1;
-      $failMessage.="$_ reports: $a\n";
-      $buildFail{$_}=1;
-    }
-    $logs.=" $_.log $_.out";
-    $tabs.=" $_.tab";
+        $buildFail=1;
+        $failMessage.="$_ reports: $a\n";
+        $buildFail{$_}=1;
+      }
+      $logs.=" $_.log $_.out";
+      $tabs.=" $_.tab";
     } else {
       mylog "ERROR: log or out missing for $_\n";
+my $a=`ls -ls *log* *out*`;
+mylog "ls:\n$a";
       unlink $runningSemaphore;
       exit;
+    }
   }
-  }
 
   checkPID();
   $userName="email" if ($normalRegression);
+  $userName="email" if ($icc_workRegression);
 
   {
     my @t=split '\n',$footer;
@@ -920,21 +1022,42 @@
      #  `mail marcos.woehrmann\@artifex.com -s \"\`cat revision.gs\`\" <email.txt`;
 
       checkPID();
-      `touch archive/$rev2-$rev1`;
-      `rm -fr archive/$rev2-$rev1`;
-      `mkdir archive/$rev2-$rev1`;
-      `mv $logs archive/$rev2-$rev1/.`;
-      `gzip archive/$rev2-$rev1/*log`;
-      `cp -p email.txt archive/$rev2-$rev1/.`;
-      `cp -p current.tab archive/$rev2-$rev1/current.tab`;
-      `cp -p previous.tab archive/$rev2-$rev1/previous.tab`;
-      `cp -p current.tab archive/$rev2-$rev1.tab`;
-      #  `touch archive/$rev2-$rev1.tab.gz`;
-      #  unlink "archive/$rev2-$rev1.tab.gz";
-      #  `gzip archive/$rev2-$rev1.tab`;
+      `touch archive/$rev`;
+      `rm -fr archive/$rev`;
+      `mkdir archive/$rev`;
+      `mv $logs archive/$rev/.`;
+      `gzip archive/$rev/*log`;
+      `cp -p email.txt archive/$rev/.`;
+      `cp -p current.tab archive/$rev/current.tab`;
+      `cp -p previous.tab archive/$rev/previous.tab`;
+      `cp -p current.tab archive/$rev.tab`;
+      #  `touch archive/$rev.tab.gz`;
+      #  unlink "archive/$rev.tab.gz";
+      #  `gzip archive/$rev.tab`;
       # unlink "log";
+    } elsif ($icc_workRegression) {
+      `mv icc_work_previous.tab icc_work_previous2.tab`;
+      `mv icc_work_current.tab icc_work_previous.tab`;
+      `cat $tabs | sort >icc_work_current.tab`;
+      `rm $tabs`;
+
+      checkPID();
+mylog "now running ./compare.pl icc_work_current.tab icc_work_previous.tab $elapsedTime $machineCount false \"$product\"\n";
+      `./compare.pl icc_work_current.tab icc_work_previous.tab $elapsedTime $machineCount false \"$product\" >>email.txt`;
+
+      checkPID();
+      `touch archive/icc_work-$rev`;
+      `rm -fr archive/icc_work-$rev`;
+      `mkdir archive/icc_work-$rev`;
+      `mv $logs archive/icc_work-$rev/.`;
+      `gzip archive/icc_work-$rev/*log`;
+      `cp -p email.txt archive/icc_work-$rev/.`;
+      `cp -p icc_work_current.tab archive/icc_work-$rev/icc_work_current.tab`;
+      `cp -p icc_work_previous.tab archive/icc_work-$rev/icc_work_previous.tab`;
+      `cp -p icc_work_current.tab archive/icc_work-$rev.tab`;
     } elsif ($mupdfRegression) {
     } elsif ($updateBaseline) {
+    } elsif ($bmpcmp) {
     } else {
       my @a=split ' ',$product;
       my $filter="cat current.tab";
@@ -951,11 +1074,20 @@
       `rm $tabs`;
 
       checkPID();
-mylog "now running ./compare.pl temp.tab current.tab $elapsedTime $machineCount true \"$product\"\n";
+
+      mylog "now running ./compare.pl temp.tab current.tab $elapsedTime $machineCount true \"$product\"\n";
       `./compare.pl temp.tab current.tab $elapsedTime $machineCount true \"$product\" >>$userName.txt`;
+
+      open(F,">>$userName.txt");
+      print F "\n\nDifferences from previous clusterpush:\n\n";
+      close(F);
+      mylog "now running ./compare.pl temp.tab $usersDir/$userName/temp.tab $elapsedTime $machineCount true \"$product\"\n";
+      `./compare.pl temp.tab $usersDir/$userName/temp.tab 0 1 true \"$product\" >>$userName.txt`;
+
       `mv $logs $usersDir/$userName/.`;
       `cp -p $userName.txt $usersDir/$userName/.`;
       `cp -p $userName.txt results/.`;
+      `mv    $usersDir/$userName/temp.tab $usersDir/$userName/previousTemp.tab`;
       `cp -p temp.tab $usersDir/$userName/.`;
       `cp -p current.tab $usersDir/$userName/.`;
 
@@ -970,7 +1102,7 @@
         `tail -100 $machine.log >temp.log`;
         open(F2,"<temp.log");
         while(<F2>) {
-        print F $_;
+          print F $_;
         }
         close(F2);
         print F "\n\n$machine stdout:\n\n";
@@ -978,46 +1110,61 @@
         open(F2,"<temp.out");
         while(<F2>) {
           print F $_;
+        }
+        close(F2);
       }
-        close(F2);
     }
-    }
     close(F);
   }
 
   checkPID();
   if ($normalRegression) {
     `mail -a \"From: marcos.woehrmann\@artifex.com\" gs-regression\@ghostscript.com -s \"\`cat revision.gs\`\" <email.txt`;
-    `mail -a \"From: marcos.woehrmann\@artifex.com\" marcos\@ghostscript.com -s \"\`cat revision.gs\`\" <email.txt`;
+#   `mail marcos.woehrmann\@artifex.com -s \"\`cat revision.gs\`\" <email.txt`;
 
     mylog "test complete, performing final svn update\n";
-    mylog "svn update ghostpdl -r$rev1 --ignore-externals\nsvn update ghostpdl/gs -r$rev2\n" if ($verbose);
-    `svn update ghostpdl -r$rev1 --ignore-externals`;
-    `svn update ghostpdl/gs -r$rev2`;
+    mylog "svn update ghostpdl -r$rev --ignore-externals\nsvn update ghostpdl/gs -r$rev\n";
+    `svn update ghostpdl -r$rev --ignore-externals`;
+    `svn update ghostpdl/gs -r$rev`;
 
     `./cp.all.sh`;
 mylog("calling cachearchive.pl");
     `./cachearchive.pl >md5sum.cache`;
 mylog("finished cachearchive.pl");
+  } elsif ($icc_workRegression) {
+    `mail -a \"From: marcos.woehrmann\@artifex.com\" gs-regression\@ghostscript.com -s \"\`cat icc_workRevision.gs\`\" <email.txt`;
+#   `mail -a \"From: marcos.woehrmann\@artifex.com\" marcos\@ghostscript.com -s \"\`cat icc_workRevision.gs\`\" <email.txt`;
+
+    mylog "test complete, performing final svn update\n";
+    mylog "svn update icc_work -r$rev\n";
+    `svn update icc_work -r$rev`;
+
+mylog("calling cachearchive.pl");
+    `./cachearchive.pl >md5sum.cache`;
+mylog("finished cachearchive.pl");
+
   } elsif ($mupdfRegression) {
   } elsif ($updateBaseline) {
-  } else {
+  } elsif ($bmpcmp) {
+  } elsif ($userRegression) {
     if (exists $emails{$userName}) {
 #     `mail -a \"From: marcos.woehrmann\@artifex.com\" marcos.woehrmann\@artifex.com -s \"$userRegression regression\" <$userName.txt`;
 #     `mail -a \"From: marcos.woehrmann\@artifex.com\" $emails{$userName} -s \"$userRegression \`cat revision.gs\`\" <$userName.txt`;
       `mail $emails{$userName} -s \"$userRegression \`cat revision.gs\`\" <$userName.txt`;
-      `mail marcos.woehrmann\@artifex.com -s \"$userRegression regression\" <$userName.txt`;
+      `mail marcos.woehrmann\@artifex.com -s \"$userRegression \`cat revision.gs\`\" <$userName.txt`;
     } else {
 #     `mail -a \"From: marcos.woehrmann\@artifex.com\" marcos.woehrmann\@artifex.com -s \"bad username: $userName\" <$userName.txt`;
       `mail marcos.woehrmann\@artifex.com -s \"bad username: $userName\" <$userName.txt`;
     }
+  } else {
+    mylog("internal error");
   }
 
   foreach my $machine (keys %machines) {
     open(F,">$machine.status");
     print F "idle\n";
     close(F);
-}
+  }
 
 }
 

Modified: branches/icc_work/toolbin/localcluster/clusterpush.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/clusterpush.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/clusterpush.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -7,7 +7,22 @@
 
 my $verbose=0;
 
+# todo:
+#
+# options: --retest : retest only those files that failed last time
+#          --minimal (X) : test only X percentage of files (x defaults to 10)
+#          --early (N) : stop test if more than N changes on a node (N defaults to 10)
+#          --bitmap (N) : generate bitmaps for files using bmpcmp up to N files foreach node (0 means all bitmaps, defaults to 10)
+#          --bmpcmp (N) : synomym for --bitmap
+
+#          --lowres
+#          --highres
+#          --abort
+
+
+
 my %products=('abort' =>1,
+              'bmpcmp' =>1,
               'gs' =>1,
               'pcl'=>1,
               'svg'=>1,
@@ -43,6 +58,11 @@
   chomp $user;
 }
 
+# This is horrid, but it works. Replace it when I find a better way
+if ($user eq 'Robin Watts') {
+  $user = "robin";
+}
+
 my $directory=`pwd`;
 chomp $directory;
 
@@ -57,6 +77,9 @@
   }
 }
 
+$directory="gs" if ($directory eq "" && $product eq "bmpcmp");
+$directory="gs" if ($directory eq "" && $product eq "abort");
+
 die "can't figure out if this is a ghostscript or ghostpdl directory" if ($directory eq "");
 
 $product='gs pcl xps' if (!$product);
@@ -91,17 +114,18 @@
 " --exclude svg/obj --exclude svg/debugobj".
 " --exclude ufst --exclude ufst-obj".
 " --exclude .ppm --exclude .pkm --exclude .pgm --exclude .pbm".
-" -e \"ssh -l regression -i \$HOME/.ssh/cluster_key\"".
+" -e \"ssh -l regression -i \\\"\$HOME/.ssh/cluster_key\\\"\"".
 " .".
 " regression\@$host:$dir/$user/$directory";
 
-if ($product ne "abort") {
+if ($product ne "abort" && $product ne "bmpcmp") {
   print STDERR "syncing\n";
 print "$cmd\n" if ($verbose);
 #`$cmd`;
 open(T,"$cmd |");
 while(<T>) {
-  print $_;
+    chomp;
+    print "$_\n" if (!m/\/$/);
 }
 close(T);
 }

Modified: branches/icc_work/toolbin/localcluster/compare.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/compare.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/compare.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -68,6 +68,8 @@
 my @differencePreviousPdfwrite;
 my @archiveMatch;
 
+my @baselineUpdateNeeded;
+
 my $t2;
 
 print STDERR "reading $current\n" if ($verbose);
@@ -107,6 +109,8 @@
 }
 close(F);
 
+if ($elapsedTime==0) {
+} else {
 if (open(F,"<md5sum.cache")) {
 print STDERR "reading md5sum.cache\n" if ($verbose);
   while(<F>) {
@@ -166,6 +170,7 @@
 
 }
 #print Dumper(\%archiveCache);
+}
 
 #print "previous\n".Dumper(\%previous);
 #print "current \n".Dumper(\%current);
@@ -256,12 +261,16 @@
 }
 }
 
+if ($elapsedTime==0) {
+} else {
 print "ran ".($pdfwriteTestCount+$notPdfwriteTestCount)." tests in $elapsedTime seconds on $machineCount nodes\n\n";
+}
 
 if (@differencePrevious) {
   print "Differences in ".scalar(@differencePrevious)." of $notPdfwriteTestCount non-pdfwrite test(s):\n";
   while(my $t=shift @differencePrevious) {
     print "$t\n";
+    push @baselineUpdateNeeded,$t;
   }
   print "\n";
 } else {
@@ -272,6 +281,7 @@
   print "Differences in ".scalar(@differencePreviousPdfwrite)." of $pdfwriteTestCount pdfwrite test(s):\n";
   while(my $t=shift @differencePreviousPdfwrite) {
     print "$t\n";
+    push @baselineUpdateNeeded,$t;
   }
   print "\n";
 } else {
@@ -290,6 +300,7 @@
   print "The following ".scalar(@repairedPrevious)." regression file(s) have stopped producing errors:\n";
   while(my $t=shift @repairedPrevious) {
     print "$t\n";
+    push @baselineUpdateNeeded,$t;
   }
   print "\n";
 }
@@ -308,6 +319,7 @@
     print "The following ".scalar(@filesAdded)." regression file(s) have been added:\n";
     while(my $t=shift @filesAdded) {
       print "$t\n";
+      push @baselineUpdateNeeded,$t;
     }
     print "\n";
   }
@@ -330,5 +342,13 @@
     }
     print "\n";
   }
+
+  open(F,">>baselineupdateneeded.lst");
+  while(my $t=shift @baselineUpdateNeeded) {
+    my @a=split ' ',$t;
+    $a[0] =~ s/\//__/g;
+    print F "$a[0]\n";
 }
+  close(F);
+}
 

Modified: branches/icc_work/toolbin/localcluster/run.pl
===================================================================
--- branches/icc_work/toolbin/localcluster/run.pl	2010-03-02 00:15:58 UTC (rev 10837)
+++ branches/icc_work/toolbin/localcluster/run.pl	2010-03-02 09:24:00 UTC (rev 10838)
@@ -16,32 +16,44 @@
 
 my $wordSize="64";
 my $timeOut=240;
-my $maxTimeout=20;
+my $maxTimeout=20;  # starting value, is adjusted by value below based on jobs completed
+my $maxTimeoutPercentage=1.0;
 
 my $maxCount=12;
-#$maxCount=16;
+$maxCount=16;
 
-my $maxRaster=5;
+my $maxRaster=25;
 
 my %pids;
 my %timeOuts;
 
 my $machine=shift || die "usage: run.pl machine_name";
 
+my $local=0;
+$local=1 if ($machine eq "local");
+$timeOut=600 if ($local);
+
+if (!$local) {
 open (LOG,">>$machine.dbg");
 print LOG "\n\n";
+}
 
 sub mylog($) {
   my $d=`date`;
   chomp $d;
   my $s=shift;
   chomp $s;
+if ($local) {
+  print     "$d: $s\n";
+} else {
   print LOG "$d: $s\n";
 }
+}
 
 
 my $user;
 my $revs;
+my $icc_work;
 #my $product;
 my @commands;
 
@@ -58,6 +70,7 @@
 # the concept with checkPID is that if the semaphore file is missing or doesn't
 # contain our PID something bad has happened and we just just exit
 sub checkPID {
+  return(1) if ($local);
   watchdog();
   if (open(F,"<$runningSemaphore")) {
     my $t=<F>;
@@ -75,6 +88,7 @@
   exit;
 }
 
+if (!$local) {
 if (-e $runningSemaphore) {
   my $fileTime = stat($runningSemaphore)->mtime;
   my $t=time;
@@ -91,17 +105,13 @@
 open(F,">$runningSemaphore");
 print F "$$\n";
 close(F);
+}
 
 mylog "starting run.pl:  pid=$$\n";
 
-#`killall gs`;  # horrible, horrible hack
-#mylog "running 'killall gs'\n";
-#`killall pcl6`;  # horrible, horrible hack
-#mylog "running 'killall pcl6'\n";
-
 {
   mylog "about to kill any jobs still running from previous regression\n";
-  my $a=`ps -ef | grep nice | grep temp | grep true`;
+  my $a=`ps -ef | grep nice | grep temp | grep true | grep -v grep`;
   my @a=split '\n',$a;
   foreach (@a) {
     if (m/\S+ +(\d+)/) {
@@ -111,6 +121,7 @@
   }
 }
 
+if (!$local) {
 if (open(F,"<$machine.start")) {
   my $t=<F>;
   chomp $t;
@@ -120,6 +131,9 @@
     if ($a[0] eq "svn") {
       $revs=$a[1];
       $products=$a[2];
+    } elsif ($a[0] eq "svn-icc_work") {
+      $icc_work=$a[1];
+      $products=$a[2];
     } elsif ($a[0] eq "user") {
       $user=$a[1];
       $products=$a[2];
@@ -136,9 +150,11 @@
   mylog "oops 2";  # hack
   die "oops 2";  # hack
 }
+}
 
 mylog "user products=$products user=$user\n" if ($user);
-mylog "svn products=$products revs=$revs\n" if ($revs);
+mylog "svn products=$products rev=$revs\n" if ($revs);
+mylog "icc_work products=$products rev=$icc_work\n" if ($icc_work);
 
 my $host="casper3.ghostscript.com";
 
@@ -158,6 +174,8 @@
 my $gpdlSource=$baseDirectory."/ghostpdl";
 my $gsSource=$gpdlSource."/gs";
 my $gsBin=$baseDirectory."/gs";
+my $icc_workSource=$baseDirectory."/icc_work";
+my $icc_workGsSource=$icc_workSource."/gs";
 
 my $abort=0;
 unlink ("$machine.abort");
@@ -170,11 +188,11 @@
 #if ($md5sumFail eq "") {
 #  $md5sumFail=`which md5`;
 #  $md5Command='md5';
-#} 
+#}
 #if ($md5sumFail eq "") {
 #  $md5sumFail=`which /sbin/md5`;
 #  $md5Command='/sbin/md5';
-#} 
+#}
 if ($md5sumFail) {
   $md5sumFail="";
 }  else {
@@ -193,25 +211,53 @@
 system("date") if ($debug2);
 
 if (0) {
-open(F,"<$machine.jobs") || die "file $machine.jobs not found";
-my $t=<F>;
-chomp $t;
-if ($t =~ m/^\d+$/) {
-  $desiredRev=$t;
+  open(F,"<$machine.jobs") || die "file $machine.jobs not found";
+  my $t=<F>;
+  chomp $t;
+  if ($t =~ m/^\d+$/) {
+    $desiredRev=$t;
   } elsif ($t =~m/^pdl=(.+)/) {
     $products=$1;
-} else {
-  push @commands, $t;
+  } else {
+    push @commands, $t;
+  }
+  while(<F>) {
+    chomp;
+    push @commands, $_;
+  }
+  close(F);
 }
-while(<F>) {
-  chomp;
-  push @commands, $_;
+
+if ($local) {
+  open(F,"<jobs") || die "file jobs not found";
+  my $t=<F>;
+  chomp $t;
+  if ($t =~ m/^\d+$/) {
+    $desiredRev=$t;
+  } elsif ($t =~m/^pdl=(.+)/) {
+    $products=$1;
+  } else {
+    push @commands, $t;
+  }
+  my %products;
+  while(<F>) {
+    chomp;
+    push @commands, $_;
+    if (m/echo "(.+?)[ "]/) {
+      $products{$1}=1;
+    }
+  }
+  close(F);
+  foreach (sort keys %products) {
+    $products.="$_ ";
+  }
 }
-close(F);
-}
 
+
 my $poll=1;
 
+$poll=0 if ($local);
+
 $products="gs pcl xps svg" if (length($products)==0);
 my %products;
 my @products=split ' ',$products;
@@ -238,7 +284,7 @@
 
   my @pids;
   foreach my $pid (keys %pids) {
-    #     kill 1, $pid;
+#   kill 1, $pid;
     my $p=$pid;
     push @pids,$p;
     while (exists $children{$p}) {
@@ -250,14 +296,16 @@
   foreach my $p (@pids) {
     mylog ("killing (killAll) $p\n");
     kill 9, $p;
+  }
 }
-}
 
 sub spawn($$) {
   my $timeout=shift;
   my $s=shift;
   my $done=0;
 
+  return if ($local);
+
   while (!$done) {
     my $pid = fork();
     if (not defined $pid) {
@@ -265,6 +313,8 @@
       die "fork() failed";
     } elsif ($pid == 0) {
       exec($s);
+#     mylog "exec() failed";  # these produces a perl warning
+#     die "exec() failed";
       exit(0);
     } else {
       if ($timeout==0) {
@@ -291,9 +341,10 @@
 }
 
 sub checkAbort {
+  return(0) if ($local);
   checkPID();
   return (1) if ($abort==1);
-  spawn(60,"scp -i ~/.ssh/cluster_key  regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.abort . >/dev/null 2>/dev/null");
+  spawn(60,"scp -q -i ~/.ssh/cluster_key  regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.abort . >/dev/null 2>/dev/null");
   if (-e "$machine.abort") {
     mylog("found $machine.abort on casper\n");
     mylog("removing $machine.abort on casper\n");
@@ -306,13 +357,27 @@
 
 sub updateStatus($) {
   my $message=shift;
+if (!$local) {
   `echo '$message' >$machine.status`;
-  spawn(0,"scp -i ~/.ssh/cluster_key $machine.status regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.status");
+  spawn(0,"scp -q -i ~/.ssh/cluster_key $machine.status regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.status");
+}
   mylog($message);
 }
 
-if ($user) {
-} else {
+`cc -o bmpcmp ghostpdl/gs/toolbin/bmpcmp.c`;
+`rm -f 0*debug.icc`;
+`rm -f 1*debug.icc`;
+`rm -f 2*debug.icc`;
+`rm -f 3*debug.icc`;
+`rm -f 4*debug.icc`;
+`rm -f 5*debug.icc`;
+`rm -f 6*debug.icc`;
+`rm -f 7*debug.icc`;
+`rm -f 8*debug.icc`;
+`rm -f 9*debug.icc`;
+
+if (!$local) {
+if (!$user) {
   updateStatus('Updating test files');
 
   #update the regression file source directory
@@ -326,6 +391,7 @@
 
   }
 }
+}
 
 $abort=checkAbort;
 if (!$abort) {
@@ -341,143 +407,159 @@
 # } else {
     $cmd="cd users/$user          ; rsync -vlogDtprxe.iLsz --delete -e \"ssh -l regression -i \$HOME/.ssh/cluster_key\" regression\@$host:$usersDir/$user/ghostpdl    .";
     # }
-    print "$cmd\n" if ($verbose);
-    `$cmd`;
 
     $gpdlSource=$baseDirectory."/users/$user/ghostpdl";
     $gsSource=$gpdlSource."/gs";
+  } elsif ($icc_work) {
+
+    if (!-e $icc_workGsSource) {
+      `rm -fr $icc_workSource`;
+      updateStatus('Checking out icc_work');
+      $cmd="svn co --ignore-externals http://svn.ghostscript.com/ghostscript/trunk/ghostpdl $icc_workSource ; svn co http://svn.ghostscript.com/ghostscript/branches/icc_work $icc_workGsSource";
+      mylog "$cmd\n";
+      `$cmd`;
+    }
+    updateStatus('Updating icc_work');
+    $cmd="svn update -r$icc_work --ignore-externals $icc_workSource ; cd $icc_workGsSource ; touch base/gscdef.c ; rm -f base/gscdef.c ; svn update -r$icc_work";
+    $gpdlSource=$icc_workSource;
+    $gsSource=$icc_workGsSource;
   } else {
 
     updateStatus('Updating Ghostscript');
 
-      # get update
-    my $pdlrev;
-    my $gsrev;
+    # get update
     if ($revs eq "head") {
-      $pdlrev="head";
-      $gsrev="head";
-    } elsif ($revs =~ m/(\d+) (\d+)/) {
-      $pdlrev=$1;
-      $gsrev=$2;
-      } else {
+    } elsif ($revs =~ m/(\d+)/) {
+    } else {
       mylog "oops 4: revs=$revs";
       die "oops 4";  # hack
-      }
-    $cmd="cd $gsSource ; touch base/gscdef.c ; rm -f base/gscdef.c ; cd $gpdlSource ; export SVN_SSH=\"ssh -i \$HOME/.ssh/cluster_key\" ; svn update -r$pdlrev ; cd $gsSource ; export SVN_SSH=\"ssh -i \$HOME/.ssh/cluster_key\" ; svn update -r$gsrev";
-      print "$cmd\n" if ($verbose);
-      `$cmd`;
+    }
+    $cmd="cd $gsSource ; touch base/gscdef.c ; rm -f base/gscdef.c ; cd $gpdlSource ; export SVN_SSH=\"ssh -i \$HOME/.ssh/cluster_key\" ; svn update -r$revs ; cd $gsSource ; export SVN_SSH=\"ssh -i \$HOME/.ssh/cluster_key\" ; svn update -r$revs";
 
-      }
-      }
+  }
 
+  print "$cmd\n" if ($verbose);
+  `$cmd`;
+}
+
+mkdir "baselineraster";
 $cmd="touch $temp2 ; rm -fr $temp2 ; mv $temp $temp2 ; mkdir $temp ; mkdir $raster ; mkdir $bmpcmpOutput ; touch raster.yes ; rm -fr $temp2 &";
 print "$cmd\n" if ($verbose);
 `$cmd`;
 
 $abort=checkAbort;
-  if (!$abort) {
+if (!$abort) {
 
-    # modify product name so that files that print that information don't change
-    # when we rev. the revision
-    open(F1,"<$gsSource/base/gscdef.c") || die "file $gsSource/base/gscdef.c not found";
-    open(F2,">$gsSource/base/gscdef.tmp") || die "$gsSource/base/gscdef.tmp cannot be open for writing";
-    while(<F1>) {
-      print F2 $_;
-      if (m/define GS_PRODUCT/) {
-        my $dummy=<F1>;
-        print F2 "\t\"GPL Ghostscript\"\n";
-      }
+  # modify product name so that files that print that information don't change
+  # when we rev. the revision
+  open(F1,"<$gsSource/base/gscdef.c") || die "file $gsSource/base/gscdef.c not found";
+  open(F2,">$gsSource/base/gscdef.tmp") || die "$gsSource/base/gscdef.tmp cannot be open for writing";
+  while(<F1>) {
+    print F2 $_;
+    if (m/define GS_PRODUCT/) {
+      my $dummy=<F1>;
+      print F2 "\t\"GPL Ghostscript\"\n";
     }
-    close(F1);
-    close(F2);
-    $cmd="mv $gsSource/base/gscdef.tmp $gsSource/base/gscdef.c";
-    `$cmd`;
+  }
+  close(F1);
+  close(F2);
+  $cmd="mv $gsSource/base/gscdef.tmp $gsSource/base/gscdef.c";
+  `$cmd`;
 
   unlink "$gsSource/makegs.out";
   unlink "$gpdlSource/makepcl.out";
   unlink "$gpdlSource/makexps.out";
   unlink "$gpdlSource/makesvg.out";
 
+  if (-e "./head/bin/gs") {
+    `cp -p ./head/bin/* $gsBin/bin/.`;
+  }
+
   if ($products{'gs'}) {
 
-      updateStatus('Building Ghostscript');
+    updateStatus('Building Ghostscript');
 
-      # build ghostscript
+    # build ghostscript
     $cmd="cd $gsSource ; touch makegs.out ; rm -f makegs.out ; nice make distclean >makedistclean.out 2>&1 ; nice ./autogen.sh \"CC=gcc -m$wordSize\" --disable-cups --disable-fontconfig --disable-cairo --without-system-libtiff --prefix=$gsBin >makegs.out 2>&1 ; nice make -j 12 >>makegs.out 2>&1 ; echo >>makegs.out ; nice make >>makegs.out 2>&1";
-      print "$cmd\n" if ($verbose);
-      `$cmd`;
+    print "$cmd\n" if ($verbose);
+    `$cmd`;
 
-      updateStatus('Installing Ghostscript');
+    updateStatus('Installing Ghostscript');
 
-      #install ghostscript
-      $cmd="rm -fr $gsBin ; cd $gsSource ; nice make install";
-      print "$cmd\n" if ($verbose);
-      `$cmd`;
+    #install ghostscript
+    $cmd="rm -fr $gsBin ; cd $gsSource ; nice make install";
+    print "$cmd\n" if ($verbose);
+    `$cmd`;
 
     if (-e "$gsBin/bin/gs") {
-      if (!$user) {
-        `cp -p $gsBin/bin/gs ./gs.save`;
+      if ($revs) {
+        `cp -p $gsBin/bin/gs ./head/bin/.`;
       }
-      } else {
-        $compileFail.="gs ";
-      }
-  } else {
-    if (-e "./gs.save") {
-      `cp -p ./gs.save $gsBin/bin/gs`;
+    } else {
+      $compileFail.="gs ";
     }
   }
-      }
+} 
 
-      $abort=checkAbort;
+$abort=checkAbort;
 if ($products{'pcl'} && !$abort) {
-        updateStatus('Building GhostPCL');
+  updateStatus('Building GhostPCL');
   $cmd="cd $gpdlSource ; nice make pcl-clean ; touch makepcl.out ; rm -f makepcl.out ; nice make pcl \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >makepcl.out 2>&1 -j 12; echo >>makepcl.out ;  nice make pcl \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >>makepcl.out 2>&1";
-        print "$cmd\n" if ($verbose);
-        `$cmd`;
+  print "$cmd\n" if ($verbose);
+  `$cmd`;
   if (-e "$gpdlSource/main/obj/pcl6") {
-          $cmd="cp -p $gpdlSource/main/obj/pcl6 $gsBin/bin/.";
-          print "$cmd\n" if ($verbose);
-          `$cmd`;
-        } else {
-          $compileFail.="pcl6 ";
-        }
-      }
+    $cmd="cp -p $gpdlSource/main/obj/pcl6 $gsBin/bin/.";
+    print "$cmd\n" if ($verbose);
+    `$cmd`;
+    if ($revs) {
+      `cp -p $gsBin/bin/pcl6 ./head/bin/.`;
+    }
+  } else {
+    $compileFail.="pcl6 ";
+  }
+}
 
-      $abort=checkAbort;
+$abort=checkAbort;
 if ($products{'xps'} && !$abort) {
-        updateStatus('Building GhostXPS');
+  updateStatus('Building GhostXPS');
   $cmd="cd $gpdlSource ; nice make xps-clean ; touch makexps.out ; rm -f makexps.out ; nice make xps \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >makexps.out 2>&1 -j 12; echo >>makexps.out ; nice make xps \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >>makexps.out 2>&1";
-        print "$cmd\n" if ($verbose);
-        `$cmd`;
+  print "$cmd\n" if ($verbose);
+  `$cmd`;
   if (-e "$gpdlSource/xps/obj/gxps") {
-          $cmd="cp -p $gpdlSource/xps/obj/gxps $gsBin/bin/.";
-          print "$cmd\n" if ($verbose);
-          `$cmd`;
-        } else {
-          $compileFail.="gxps ";
-        }
-      }
+    $cmd="cp -p $gpdlSource/xps/obj/gxps $gsBin/bin/.";
+    print "$cmd\n" if ($verbose);
+    `$cmd`;
+    if ($revs) {
+      `cp -p $gsBin/bin/gxps ./head/bin/.`;
+    }
+  } else {
+    $compileFail.="gxps ";
+  }
+}
 
-      $abort=checkAbort;
+$abort=checkAbort;
 if ($products{'svg'} && !$abort) {
-        updateStatus('Building GhostSVG');
+  updateStatus('Building GhostSVG');
   $cmd="cd $gpdlSource ; nice make svg-clean ; touch makesvg.out ; rm -f makesvg.out ; nice make svg \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >makesvg.out 2>&1 -j 12; echo >>makesvg.out ; nice make svg \"CC=gcc -m$wordSize\" \"CCLD=gcc -m$wordSize\" >>makesvg.out 2>&1";
-        print "$cmd\n" if ($verbose);
-        `$cmd`;
+  print "$cmd\n" if ($verbose);
+  `$cmd`;
   if (-e "$gpdlSource/svg/obj/gsvg") {
-          $cmd="cp -p $gpdlSource/svg/obj/gsvg $gsBin/bin/.";
-          print "$cmd\n" if ($verbose);
-          `$cmd`;
-        } else {
-          $compileFail.="gsvg ";
-        }
-      }
+    $cmd="cp -p $gpdlSource/svg/obj/gsvg $gsBin/bin/.";
+    print "$cmd\n" if ($verbose);
+    `$cmd`;
+    if ($revs) {
+      `cp -p $gsBin/bin/gsvg ./head/bin/.`;
+    }
+  } else {
+    $compileFail.="gsvg ";
+  }
+}
 
 unlink "link.icc","wts_plane_0","wts_plane_1","wts_plane_2","wts_plane_3";
-$cmd="cp -p ghostpdl/link.icc ghostpdl/wts_plane_0 ghostpdl/wts_plane_1 ghostpdl/wts_plane_2 ghostpdl/wts_plane_3 .";
+$cmd="cp -p $gpdlSource/link.icc $gpdlSource/wts_plane_0 $gpdlSource/wts_plane_1 $gpdlSource/wts_plane_2 $gpdlSource/wts_plane_3 .";
 print "$cmd\n" if ($verbose);
 `$cmd`;
-$cmd="touch urwfonts ; rm -fr urwfonts ; cp -pr ghostpdl/urwfonts .";
+$cmd="touch urwfonts ; rm -fr urwfonts ; cp -pr $gpdlSource/urwfonts .";
 print "$cmd\n" if ($verbose);
 `$cmd`;
 
@@ -532,6 +614,9 @@
       unlink $runningSemaphore;
       updateStatus("Can not connect to $host, quitting");
       mylog "can not connect to port $port on $host: $!";
+      @commands=();
+      killAll();
+      checkAbort();
       die "can not connect to port $port on $host: $!";  # hack
     }
 
@@ -558,7 +643,10 @@
       # die unless $@ eq "alarm\n";
       # unlink $runningSemaphore;
       $s="";
-      updateStatus('Connection timed out, quitting: $@');
+      my $t=$@;
+      chomp $t;
+      updateStatus("Connection timed out, quitting: $t");
+      mylog "Connection timed out, quitting: $t";
       @commands=();
       $maxCount=0;
       killAll();
@@ -572,7 +660,7 @@
     if (!defined($n)) {
       # unlink $runningSemaphore;
       $s="";
-      updateStatus('Connection interrupted, quitting');
+      updateStatus("Connection interrupted, quitting");
       @commands=();
       $maxCount=0;
       killAll();
@@ -590,33 +678,42 @@
       $poll=0;
       @commands=();
     }
+}
   }
-  }
-  mylog("end of loop: scalar(commands)=".scalar(@commands)." poll=$poll abort=$abort\n") if (scalar(@commands)==0 || $poll==0 || $abort!=0);
+# mylog("end of loop: scalar(commands)=".scalar(@commands)." poll=$poll abort=$abort\n") if (scalar(@commands)==0 || $poll==0 || $abort!=0);
 
   my $a=`ps -ef`;
   my @a=split '\n',$a;
   my %children;
+  my %name;
   foreach (@a) {
-    if (m/\S+ +(\d+) +(\d+)/ && !m/<defunct>/) {
+    chomp;
+    if (m/\S+ +(\d+) +(\d+) .+ \d\d:\d\d:\d\d (.+)$/ && !m/<defunct>/ && !m/\(sh\)/) {
       $children{$2}=$1;
+      $name{$1}=$3;
     }
   }
 
   foreach my $pid (keys %pids) {
     if (time-$pids{$pid}{'time'} >= $timeOut) {
-      #     kill 1, $pid;
       my $p=$pid;
       while (exists $children{$p}) {
-        print "$p->$children{$p}\n";
+#       mylog "$p->$children{$p}\n";  # mhw
         $p=$children{$p};
+        mylog ("killing (timeout 1) $p $name{$p}\n");
+        kill 1, $p;
+        kill 9, $p;
       }
-      mylog ("killing (timeout 1) $p\n");
-      kill 9, $p;
-
+      $name{$pid}='missing' if (!exists $name{$pid});
+      mylog ("killing (timeout 1) $pid $name{$pid}\n");
+      kill 1, $pid;
+      kill 9, $pid;
       $timeOuts{$pids{$pid}{'filename'}}=1;
       my $count=scalar (keys %timeOuts);
-      print "\nkilled:  $p ($pid) $pids{$pid}{'filename'}  total $count\n";
+      delete $pids{$pid};
+
+#     mylog "killed:  $p ($pid) $pids{$pid}{'filename'}  total $count\n";  # mhw
+#     mylog "killed:  $pids{$pid}{'filename'}\n";  # mhw
       if ($count>=$maxTimeout) {
         $timeoutFail="too many timeouts";
 mylog("setting $machine.fail on casper3\n");
@@ -631,12 +728,13 @@
       }
     } else {
 #print "\n$pids{$pid}{'filename'} ".(time-$pids{$pid}{'time'}) if ((time-$pids{$pid}{'time'})>20);
+      my $s;
+      $s=waitpid($pid,WNOHANG);
+      delete $pids{$pid} if ($s<0);
+      $count++ if ($s>=0);
+  }
     }
-    my $s;
-    $s=waitpid($pid,WNOHANG);
-    delete $pids{$pid} if ($s<0);
-    $count++ if ($s>=0);
-  }
+
   if (scalar(@commands)>0 && $count<$maxCount) {
     my $n=rand(scalar @commands);
     my @a=split '\t',$commands[$n];
@@ -644,6 +742,8 @@
     my $filename=$a[0];
     my $cmd=$a[1];
     $jobs++;
+    my $t=int($jobs*$maxTimeoutPercentage/100+0.5);
+    $maxTimeout=$t if ($maxTimeout<$t);
     {
       sub convertTime($) {
         my $t=shift;
@@ -668,7 +768,7 @@
 my $count2=scalar (keys %timeOuts);
 unlink('raster.yes') if ($count>$maxRaster);
 $maxCount=16 if ($count>$maxRaster);
-mylog("$raster file count=$count timeOuts=$count2");
+mylog("$raster file count=$count timeOuts=$count2 maxTimeout=$maxTimeout");
 
 
       }
@@ -732,31 +832,39 @@
     my $a=`ps -ef`;
     my @a=split '\n',$a;
     my %children;
+    my %name;
     foreach (@a) {
-      if (m/\S+ +(\d+) +(\d+)/ && !m/<defunct>/) {
+      if (m/\S+ +(\d+) +(\d+)/ && !m/<defunct>/ && !m/\(sh\)/) {
         $children{$2}=$1;
+        $name{$1}=$3;
       }
     }
 
     foreach my $pid (keys %pids) {
       if (time-$pids{$pid}{'time'} >= $timeOut) {
-        #     kill 1, $pid;
         my $p=$pid;
         while (exists $children{$p}) {
-          print "$p->$children{$p}\n";
+#         mylog "$p->$children{$p}\n"; # mhw
           $p=$children{$p};
+          mylog ("killing (timeout 2) $p $name{$p}\n");
+          kill 1, $p;
+          kill 9, $p;
         }
-        mylog ("killing (timeout 2) $p\n");
-        kill 9, $p;
-
+        $name{$pid}='missing' if (!exists $name{$pid});
+        mylog ("killing (timeout 2) $pid $name{$pid}\n");
+        kill 1, $pid;
+        kill 9, $pid;
         $timeOuts{$pids{$pid}{'filename'}}=1;
         my $count=scalar (keys %timeOuts);
-        print "\nkilled:  $p ($pid) $pids{$pid}{'filename'}  total $count\n";
+        delete $pids{$pid};
+
+#       mylog "killed:  $p ($pid) $pids{$pid}{'filename'}  total $count\n";  # mhw
+#       mylog "killed:  $pids{$pid}{'filename'}\n";  # mhw
         if ($count>=$maxTimeout) {
           $timeoutFail="too many timeouts";
-          updateStatus('Timeout fail');
 mylog("setting $machine.fail on casper3\n");
 spawn(300,"ssh -i ~/.ssh/cluster_key regression\@casper3.ghostscript.com \"touch /home/regression/cluster/$machine.fail\"");
+          updateStatus('Timeout fail');
           @commands=();
           $maxCount=0;
           killAll();
@@ -766,11 +874,11 @@
         }
       } else {
 #print "\n$pids{$pid}{'filename'} ".(time-$pids{$pid}{'time'}) if ((time-$pids{$pid}{'time'})>20);
+        my $s;
+        $s=waitpid($pid,WNOHANG);
+        delete $pids{$pid} if ($s<0);
+        $count++ if ($s>=0);
       }
-      my $s;
-      $s=waitpid($pid,WNOHANG);
-      delete $pids{$pid} if ($s<0);
-      $count++ if ($s>=0);
     }
     print "$count " if ($debug);
     select(undef, undef, undef, 1.00);
@@ -778,94 +886,124 @@
   print "\n" if ($debug);
 
 # if (!$abort) {
-  updateStatus('Collecting log files');
+    updateStatus('Collecting log files');
 
-  my %logfiles;
-  opendir(DIR, $temp) || die "can't opendir $temp: $!";
-  foreach (readdir(DIR)) {
-    $logfiles{$1}=1 if (m/(.+)\.log$/);
-  }
-  closedir DIR;
+    my %logfiles;
+    opendir(DIR, $temp) || die "can't opendir $temp: $!";
+    foreach (readdir(DIR)) {
+      $logfiles{$1}=1 if (m/(.+)\.log$/);
+    }
+    closedir DIR;
 
-  #print Dumper(\%logfiles);
+    #print Dumper(\%logfiles);
 
-  system("date") if ($debug2);
+    system("date") if ($debug2);
 
-  open(F2,">$machine.log");
+    open(F2,">$machine.log");
 
-  if ($md5sumFail ne "") {
-    print F2 "md5sumFail: $md5sumFail";
-  }
-  if ($compileFail ne "") {
-    print F2 "compileFail: $compileFail\n\n";
-    my $dir="ghostpdl";
-    $dir="users/$user/ghostpdl" if ($user);
-    foreach my $i ('gs/makegs.out','makepcl.out','makexps.out','makesvg.out') {
-      my $count=0;
+    if ($md5sumFail ne "") {
+      print F2 "md5sumFail: $md5sumFail";
+    }
+    if ($compileFail ne "") {
+      print F2 "compileFail: $compileFail\n\n";
+      my $dir="";
+      $dir="ghostpdl" if ($revs);
+      $dir="users/$user/ghostpdl" if ($user);
+      $dir="icc_work" if ($icc_work);
+      foreach my $i ('gs/makegs.out','makepcl.out','makexps.out','makesvg.out') {
+        my $count=0;
         my $start=-1;
-      if (open(F3,"<$dir/$i")) {
-        while(<F3>) {
+        if (open(F3,"<$dir/$i")) {
+          while(<F3>) {
             $start=$count if (m/^gcc/);
-	  $count++;
-        }
-        close(F3);
-        my $t1=$count;
-      $count-=20;
-        $count=$start-5 if ($start!=-1);
-        $count=$t1-10 if ($t1-$count<10);
+            $count++;
+          }
+          close(F3);
+          my $t1=$count;
+          $count-=20;
+          $count=$start-5 if ($start!=-1);
+          $count=$t1-10 if ($t1-$count<10);
           $count=$t1-250 if ($t1-$count>250);
-        $t1-=$count;
-        print F2 "\n$i (last $t1 lines):\n\n";
-      if (open(F3,"<$dir/$i")) {
-        while(<F3>) {
-	  if ($count--<0) {
-            print F2 $_;
-	  }
+          $t1-=$count;
+          print F2 "\n$i (last $t1 lines):\n\n";
+          if (open(F3,"<$dir/$i")) {
+            while(<F3>) {
+              if ($count--<0) {
+                print F2 $_;
+              }
+            }
+            close(F3);
+          }
         }
-        close(F3);
       }
     }
-  }
+    if ($timeoutFail ne "") {
+      print F2 "timeoutFail: $timeoutFail\n";
     }
-  if ($timeoutFail ne "") {
-    print F2 "timeoutFail: $timeoutFail\n";
-  }
     my $lastTime=time;
-  foreach my $logfile (keys %logfiles) {
+    foreach my $logfile (keys %logfiles) {
       if ($lastTime-time>60) {
         $abort=checkAbort;
         $lastTime=time;
       }
 
-    print F2 "===$logfile===\n";
-    open(F,"<$temp/$logfile.log") || die "file $temp/$logfile.log not found";
-    while(<F>) {
-      print F2 $_;
-    }
-    close(F);
-    if (open(F,"<$temp/$logfile.md5")) {
+      print F2 "===$logfile===\n";
+      open(F,"<$temp/$logfile.log") || die "file $temp/$logfile.log not found";
       while(<F>) {
         print F2 $_;
       }
       close(F);
+      if (open(F,"<$temp/$logfile.md5")) {
+        while(<F>) {
+          print F2 $_;
+        }
+        close(F);
+      }
+      if (exists $timeOuts{$logfile}) {
+        print F2 "killed: timeout\n";
+      }
+      print F2 "\n";
     }
-    if (exists $timeOuts{$logfile}) {
-      print F2 "killed: timeout\n";
+
+    close(F2);
+
+if (!$local) {
+    updateStatus('Uploading log files');
+    system("date") if ($debug2);
+    unlink "$machine.log.gz";
+    unlink "$machine.out.gz";
+    `gzip $machine.log`;
+    `gzip $machine.out`;
+
+    for (my $retry=0;  $retry<5;  $retry++) {
+      mylog "about to upload $machine.log.gz";
+      my $a=`scp -q -o ConnectTimeout=30 -i ~/.ssh/cluster_key $machine.log.gz regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.log.gz`;
+      last if ($?==0);
+      my $b=$?;
+      chomp $a;
+      mylog "retry=$retry;  a=$a;  \$?=$b";
+      sleep 10;
     }
-    print F2 "\n";
-  }
+    mylog "done with uploading $machine.log.gz";
 
-  close(F2);
+    for (my $retry=0;  $retry<5;  $retry++) {
+      mylog "about to upload $machine.out.gz";
+      my $a=`scp -q -o ConnectTimeout=30 -i ~/.ssh/cluster_key $machine.out.gz regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.out.gz 2>&1`;
+      last if ($?==0);
+      my $b=$?;
+      chomp $a;
+      mylog "retry=$retry;  a=$a;  \$?=$b";
+      sleep 10;
+    }
+    mylog "done with uploading $machine.out.gz";
 
-  updateStatus('Uploading log files');
-  system("date") if ($debug2);
-  `touch $machine.log.gz ; rm -f $machine.log.gz ; gzip $machine.log`;
-  `touch $machine.out.gz ; rm -f $machine.out.gz ; gzip $machine.out`;
-  spawn(300,"scp -i ~/.ssh/cluster_key $machine.log.gz regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.log.gz");
-  spawn(300,"scp -i ~/.ssh/cluster_key $machine.out.gz regression\@casper3.ghostscript.com:/home/regression/cluster/$machine.out.gz");
+#   sleep(10);  # another horrible hack, see if this fixes the occasional log file not found problem on the cluster master
 
-  system("date") if ($debug2);
-  updateStatus('idle');
+    system("date") if ($debug2);
+    updateStatus('idle');
+} else {
+    updateStatus('done');
+}
 # }
 } # if (!$abort)
 
@@ -873,10 +1011,12 @@
   updateStatus('Abort command received');
 }
 
+if (!$local) {
 mylog("setting $machine.done on casper3\n");
 spawn(300,"ssh -i ~/.ssh/cluster_key regression\@casper3.ghostscript.com \"touch /home/regression/cluster/$machine.done\"");
 mylog("removing $machine.abort on casper\n");
 spawn(70,"ssh -i ~/.ssh/cluster_key regression\@casper3.ghostscript.com \"rm /home/regression/cluster/$machine.abort\"");
+}
 
 system("date") if ($debug2);
 #`rm -fr $temp`;
@@ -884,15 +1024,8 @@
 
 unlink $runningSemaphore;
 
-if (0) {
-  foreach my $pid (keys %spawnPIDs) {
-    my $status1=waitpid($pid,WNOHANG);
-    select(undef, undef, undef, 0.1);
-    my $status2=waitpid($pid,WNOHANG);
-    print "$pid: $status1 $status2   ";
-  }
-  print "\n";
-}
 
+if (!$local) {
 close(LOG);
+}
 



More information about the gs-commits mailing list