Type1CConverter and Type1CGenerator with fonts with more than 256 glyphs
Hi, I wrote a small batch-script to open pdfsizeopt. Unfortunately, i only got those 2 files: psotmp.9664.conv.tmp.pdf psotmp.9664.conv.tmp.ps Here is the logfile:
B:\>B:\pdfsizeopt\pdfsizeopt B:\pdfs\input.pdf B:\pdfs\output.pdf
Type1CConverter: using interpreter GPL Ghostscript 902 20110330
Type1CConverter: converting font /FFOFLU+TimesNewRomanPSMT to /Obj0000000196
Type1CConverter: converting font /JUQGEC+LMRoman10-Regular to /Obj0000006127
warning: using glyphshow for unencoded glyph: /.notdef
warning: using glyphshow for unencoded glyph: /Tdieresis
warning: using glyphshow for unencoded glyph: /Tdotbelow
warning: using glyphshow for unencoded glyph: /Theta
warning: using glyphshow for unencoded glyph: /Thorn
warning: using glyphshow for unencoded glyph: /Tilde
warning: using glyphshow for unencoded glyph: /Tildecomb
warning: using glyphshow for unencoded glyph: /Tlinebelow
warning: using glyphshow for unencoded glyph: /Ttilde
warning: using glyphshow for unencoded glyph: /U
warning: using glyphshow for unencoded glyph: /Uacute
warning: using glyphshow for unencoded glyph: /Ubreve
warning: using glyphshow for unencoded glyph: /Ubrevebelowinverted
warning: using glyphshow for unencoded glyph: /Ucaron
warning: using glyphshow for unencoded glyph: /Ucircumflex
warning: using glyphshow for unencoded glyph: /Udblacute
warning: using glyphshow for unencoded glyph: /Udblgrave
warning: using glyphshow for unencoded glyph: /Udieresis
warning: using glyphshow for unencoded glyph: /Udieresisacute
warning: using glyphshow for unencoded glyph: /Udieresiscaron
warning: using glyphshow for unencoded glyph: /Udieresisgrave
warning: using glyphshow for unencoded glyph: /Udotbelow
warning: using glyphshow for unencoded glyph: /Ugrave
warning: using glyphshow for unencoded glyph: /Uhookabove
warning: using glyphshow for unencoded glyph: /Uhorn
warning: using glyphshow for unencoded glyph: /Uhornacute
warning: using glyphshow for unencoded glyph: /Uhorndotbelow
warning: using glyphshow for unencoded glyph: /Uhorngrave
warning: using glyphshow for unencoded glyph: /Uhornhookabove
warning: using glyphshow for unencoded glyph: /Uhorntilde
warning: using glyphshow for unencoded glyph: /Uhungarumlaut
warning: using glyphshow for unencoded glyph: /Umacron
warning: using glyphshow for unencoded glyph: /Uogonek
warning: using glyphshow for unencoded glyph: /Upsilon
warning: using glyphshow for unencoded glyph: /Uring
warning: using glyphshow for unencoded glyph: /Utilde
warning: using glyphshow for unencoded glyph: /V
warning: using glyphshow for unencoded glyph: /W
warning: using glyphshow for unencoded glyph: /Wacute
warning: using glyphshow for unencoded glyph: /Wcircumflex
warning: using glyphshow for unencoded glyph: /Wdieresis
warning: using glyphshow for unencoded glyph: /Wgrave
warning: using glyphshow for unencoded glyph: /X
warning: using glyphshow for unencoded glyph: /Xi
warning: using glyphshow for unencoded glyph: /Y
warning: using glyphshow for unencoded glyph: /Yacute
warning: using glyphshow for unencoded glyph: /Ycircumflex
warning: using glyphshow for unencoded glyph: /Ydieresis
warning: using glyphshow for unencoded glyph: /Ydotbelow
warning: using glyphshow for unencoded glyph: /Ygrave
warning: using glyphshow for unencoded glyph: /Yhookabove
warning: using glyphshow for unencoded glyph: /Ytilde
warning: using glyphshow for unencoded glyph: /Z
warning: using glyphshow for unencoded glyph: /Zacute
warning: using glyphshow for unencoded glyph: /Zcaron
warning: using glyphshow for unencoded glyph: /Zdotaccent
warning: using glyphshow for unencoded glyph: /Zdotbelow
warning: using glyphshow for unencoded glyph: /Zeta
warning: using glyphshow for unencoded glyph: /aacute
warning: using glyphshow for unencoded glyph: /abreve
warning: using glyphshow for unencoded glyph: /abreveacute
warning: using glyphshow for unencoded glyph: /abrevedotbelow
warning: using glyphshow for unencoded glyph: /abrevegrave
warning: using glyphshow for unencoded glyph: /abrevehookabove
warning: using glyphshow for unencoded glyph: /abrevetilde
warning: using glyphshow for unencoded glyph: /acaron
warning: using glyphshow for unencoded glyph: /acircumflex
warning: using glyphshow for unencoded glyph: /acircumflexacute
warning: using glyphshow for unencoded glyph: /acircumflexdotbelow
warning: using glyphshow for unencoded glyph: /acircumflexgrave
warning: using glyphshow for unencoded glyph: /acircumflexhookabove
warning: using glyphshow for unencoded glyph: /acircumflextilde
warning: using glyphshow for unencoded glyph: /acute
warning: using glyphshow for unencoded glyph: /acute.dup
warning: using glyphshow for unencoded glyph: /acute.ts1
warning: using glyphshow for unencoded glyph: /acutecomb
warning: using glyphshow for unencoded glyph: /adblgrave
warning: using glyphshow for unencoded glyph: /adieresis
warning: using glyphshow for unencoded glyph: /adotbelow
warning: using glyphshow for unencoded glyph: /ae
warning: using glyphshow for unencoded glyph: /ae.dup
warning: using glyphshow for unencoded glyph: /aeacute
warning: using glyphshow for unencoded glyph: /agrave
warning: using glyphshow for unencoded glyph: /ahookabove
warning: using glyphshow for unencoded glyph: /amacron
warning: using glyphshow for unencoded glyph: /ampersand
warning: using glyphshow for unencoded glyph: /anglearc
warning: using glyphshow for unencoded glyph: /angleleft
warning: using glyphshow for unencoded glyph: /angleright
warning: using glyphshow for unencoded glyph: /aogonek
warning: using glyphshow for unencoded glyph: /aogonekacute
warning: using glyphshow for unencoded glyph: /aring
warning: using glyphshow for unencoded glyph: /aringacute
warning: using glyphshow for unencoded glyph: /arrowdown
warning: using glyphshow for unencoded glyph: /arrowleft
warning: using glyphshow for unencoded glyph: /arrowright
warning: using glyphshow for unencoded glyph: /arrowup
warning: using glyphshow for unencoded glyph: /asciicircum
warning: using glyphshow for unencoded glyph: /asciitilde
warning: using glyphshow for unencoded glyph: /asterisk
warning: using glyphshow for unencoded glyph: /asteriskmath
warning: using glyphshow for unencoded glyph: /at
warning: using glyphshow for unencoded glyph: /atilde
warning: using glyphshow for unencoded glyph: /backslash
warning: using glyphshow for unencoded glyph: /baht
warning: using glyphshow for unencoded glyph: /bar
warning: using glyphshow for unencoded glyph: /bigcircle
warning: using glyphshow for unencoded glyph: /blanksymbol
warning: using glyphshow for unencoded glyph: /born
warning: using glyphshow for unencoded glyph: /braceleft
warning: using glyphshow for unencoded glyph: /braceright
warning: using glyphshow for unencoded glyph: /bracketleft
warning: using glyphshow for unencoded glyph: /bracketright
warning: using glyphshow for unencoded glyph: /breve
warning: using glyphshow for unencoded glyph: /breve.ts1
warning: using glyphshow for unencoded glyph: /breveacute
warning: using glyphshow for unencoded glyph: /brevebelow
warning: using glyphshow for unencoded glyph: /brevebelowcomb
warning: using glyphshow for unencoded glyph: /brevebelowinverted
warning: using glyphshow for unencoded glyph: /brevebelowinvertedcomb
warning: using glyphshow for unencoded glyph: /brevecomb
warning: using glyphshow for unencoded glyph: /brevegrave
warning: using glyphshow for unencoded glyph: /brevehookabove
warning: using glyphshow for unencoded glyph: /breveinverted
warning: using glyphshow for unencoded glyph: /breveinvertedcomb
warning: using glyphshow for unencoded glyph: /brevetilde
warning: using glyphshow for unencoded glyph: /brokenbar
warning: using glyphshow for unencoded glyph: /bullet
warning: using glyphshow for unencoded glyph: /cacute
warning: using glyphshow for unencoded glyph: /caron
warning: using glyphshow for unencoded glyph: /caron.ts1
warning: using glyphshow for unencoded glyph: /caroncomb
warning: using glyphshow for unencoded glyph: /ccaron
warning: using glyphshow for unencoded glyph: /ccedilla
warning: using glyphshow for unencoded glyph: /ccircumflex
warning: using glyphshow for unencoded glyph: /cdotaccent
warning: using glyphshow for unencoded glyph: /cedilla
warning: using glyphshow for unencoded glyph: /cedilla.dup
warning: using glyphshow for unencoded glyph: /cent
warning: using glyphshow for unencoded glyph: /cent.oldstyle
warning: using glyphshow for unencoded glyph: /centigrade
warning: using glyphshow for unencoded glyph: /circumflex
warning: using glyphshow for unencoded glyph: /circumflex.dup
warning: using glyphshow for unencoded glyph: /circumflexacute
warning: using glyphshow for unencoded glyph: /circumflexcomb
warning: using glyphshow for unencoded glyph: /circumflexgrave
warning: using glyphshow for unencoded glyph: /circumflexhookabove
warning: using glyphshow for unencoded glyph: /circumflextilde
warning: using glyphshow for unencoded glyph: /colon
warning: using glyphshow for unencoded glyph: /colonmonetary
warning: using glyphshow for unencoded glyph: /commaaccent
warning: using glyphshow for unencoded glyph: /commaaccentcomb
warning: using glyphshow for unencoded glyph: /copyleft
warning: using glyphshow for unencoded glyph: /copyright
warning: using glyphshow for unencoded glyph: /currency
warning: using glyphshow for unencoded glyph: /cwm
warning: using glyphshow for unencoded glyph: /cwmascender
warning: using glyphshow for unencoded glyph: /cwmcapital
warning: using glyphshow for unencoded glyph: /dagger
warning: using glyphshow for unencoded glyph: /daggerdbl
warning: using glyphshow for unencoded glyph: /dblGrave
warning: using glyphshow for unencoded glyph: /dblGravecomb
warning: using glyphshow for unencoded glyph: /dblbracketleft
warning: using glyphshow for unencoded glyph: /dblbracketright
warning: using glyphshow for unencoded glyph: /dblgrave
warning: using glyphshow for unencoded glyph: /dblgrave.ts1
warning: using glyphshow for unencoded glyph: /dblgravecomb
warning: using glyphshow for unencoded glyph: /dblverticalbar
warning: using glyphshow for unencoded glyph: /dcaron
warning: using glyphshow for unencoded glyph: /dcroat
warning: using glyphshow for unencoded glyph: /ddotbelow
warning: using glyphshow for unencoded glyph: /degree
warning: using glyphshow for unencoded glyph: /diameter
warning: using glyphshow for unencoded glyph: /died
warning: using glyphshow for unencoded glyph: /dieresis
warning: using glyphshow for unencoded glyph: /dieresis.dup
warning: using glyphshow for unencoded glyph: /dieresis.ts1
warning: using glyphshow for unencoded glyph: /dieresisacute
warning: using glyphshow for unencoded glyph: /dieresiscaron
warning: using glyphshow for unencoded glyph: /dieresiscomb
warning: using glyphshow for unencoded glyph: /dieresisgrave
warning: using glyphshow for unencoded glyph: /discount
warning: using glyphshow for unencoded glyph: /divide
warning: using glyphshow for unencoded glyph: /divorced
warning: using glyphshow for unencoded glyph: /dlinebelow
warning: using glyphshow for unencoded glyph: /dollar
warning: using glyphshow for unencoded glyph: /dollar.oldstyle
warning: using glyphshow for unencoded glyph: /dong
warning: using glyphshow for unencoded glyph: /dotaccent
warning: using glyphshow for unencoded glyph: /dotaccentcomb
warning: using glyphshow for unencoded glyph: /dotbelow
warning: using glyphshow for unencoded glyph: /dotbelowcomb
warning: using glyphshow for unencoded glyph: /dotlessi
warning: using glyphshow for unencoded glyph: /dotlessj
warning: using glyphshow for unencoded glyph: /dotlessj.dup
warning: using glyphshow for unencoded glyph: /eacute
warning: using glyphshow for unencoded glyph: /ebreve
warning: using glyphshow for unencoded glyph: /ecaron
warning: using glyphshow for unencoded glyph: /ecircumflex
warning: using glyphshow for unencoded glyph: /ecircumflexacute
warning: using glyphshow for unencoded glyph: /ecircumflexdotbelow
warning: using glyphshow for unencoded glyph: /ecircumflexgrave
warning: using glyphshow for unencoded glyph: /ecircumflexhookabove
warning: using glyphshow for unencoded glyph: /ecircumflextilde
warning: using glyphshow for unencoded glyph: /edblgrave
warning: using glyphshow for unencoded glyph: /edieresis
warning: using glyphshow for unencoded glyph: /edotaccent
warning: using glyphshow for unencoded glyph: /edotbelow
warning: using glyphshow for unencoded glyph: /egrave
warning: using glyphshow for unencoded glyph: /ehookabove
warning: using glyphshow for unencoded glyph: /eight
warning: using glyphshow for unencoded glyph: /eight.oldstyle
warning: using glyphshow for unencoded glyph: /eight.prop
warning: using glyphshow for unencoded glyph: /eight.taboldstyle
warning: using glyphshow for unencoded glyph: /ellipsis
warning: using glyphshow for unencoded glyph: /emacron
warning: using glyphshow for unencoded glyph: /emdash
warning: using glyphshow for unencoded glyph: /endash
warning: using glyphshow for unencoded glyph: /eng
warning: using glyphshow for unencoded glyph: /eogonek
warning: using glyphshow for unencoded glyph: /eogonekacute
warning: using glyphshow for unencoded glyph: /equal
warning: using glyphshow for unencoded glyph: /ereversed
warning: using glyphshow for unencoded glyph: /estimated
warning: using glyphshow for unencoded glyph: /eth
warning: using glyphshow for unencoded glyph: /etilde
warning: using glyphshow for unencoded glyph: /eturned
warning: using glyphshow for unencoded glyph: /exclam
warning: using glyphshow for unencoded glyph: /exclamdown
warning: using glyphshow for unencoded glyph: /f_k
warning: using glyphshow for unencoded glyph: /ff
warning: using glyphshow for unencoded glyph: /ffi
warning: using glyphshow for unencoded glyph: /ffl
warning: using glyphshow for unencoded glyph: /fi
warning: using glyphshow for unencoded glyph: /five
warning: using glyphshow for unencoded glyph: /five.oldstyle
warning: using glyphshow for unencoded glyph: /five.prop
warning: using glyphshow for unencoded glyph: /five.taboldstyle
warning: using glyphshow for unencoded glyph: /fl
warning: using glyphshow for unencoded glyph: /florin
warning: using glyphshow for unencoded glyph: /four
warning: using glyphshow for unencoded glyph: /four.oldstyle
warning: using glyphshow for unencoded glyph: /four.prop
warning: using glyphshow for unencoded glyph: /four.taboldstyle
warning: using glyphshow for unencoded glyph: /fraction
warning: using glyphshow for unencoded glyph: /fraction.alt
warning: using glyphshow for unencoded glyph: /gacute
warning: using glyphshow for unencoded glyph: /gbreve
warning: using glyphshow for unencoded glyph: /gcaron
warning: using glyphshow for unencoded glyph: /gcedilla
warning: using glyphshow for unencoded glyph: /gcircumflex
warning: using glyphshow for unencoded glyph: /gcommaaccent
warning: using glyphshow for unencoded glyph: /gdotaccent
warning: using glyphshow for unencoded glyph: /germandbls
warning: using glyphshow for unencoded glyph: /germandbls.dup
warning: using glyphshow for unencoded glyph: /gnaborretni
warning: using glyphshow for unencoded glyph: /grave
warning: using glyphshow for unencoded glyph: /grave.ts1
warning: using glyphshow for unencoded glyph: /gravecomb
warning: using glyphshow for unencoded glyph: /greater
warning: using glyphshow for unencoded glyph: /guarani
warning: using glyphshow for unencoded glyph: /guillemotleft
warning: using glyphshow for unencoded glyph: /guillemotright
warning: using glyphshow for unencoded glyph: /guilsinglleft
warning: using glyphshow for unencoded glyph: /guilsinglright
warning: using glyphshow for unencoded glyph: /hbar
warning: using glyphshow for unencoded glyph: /hbrevebelow
warning: using glyphshow for unencoded glyph: /hcircumflex
warning: using glyphshow for unencoded glyph: /hdieresis
warning: using glyphshow for unencoded glyph: /hdotbelow
warning: using glyphshow for unencoded glyph: /hookabove
warning: using glyphshow for unencoded glyph: /hookabovecomb
warning: using glyphshow for unencoded glyph: /htilde
warning: using glyphshow for unencoded glyph: /hungarumlaut
warning: using glyphshow for unencoded glyph: /hungarumlaut.ts1
warning: using glyphshow for unencoded glyph: /hungarumlautcomb
warning: using glyphshow for unencoded glyph: /hyphen.alt
warning: using glyphshow for unencoded glyph: /hyphen.dup
warning: using glyphshow for unencoded glyph: /hyphen.prop
warning: using glyphshow for unencoded glyph: /hyphendbl
warning: using glyphshow for unencoded glyph: /hyphendbl.alt
warning: using glyphshow for unencoded glyph: /iacute
warning: using glyphshow for unencoded glyph: /ibreve
warning: using glyphshow for unencoded glyph: /icaron
warning: using glyphshow for unencoded glyph: /icircumflex
warning: using glyphshow for unencoded glyph: /idblgrave
warning: using glyphshow for unencoded glyph: /idieresis
warning: using glyphshow for unencoded glyph: /idieresisacute
warning: using glyphshow for unencoded glyph: /idotbelow
warning: using glyphshow for unencoded glyph: /igrave
warning: using glyphshow for unencoded glyph: /ihookabove
warning: using glyphshow for unencoded glyph: /ij
warning: using glyphshow for unencoded glyph: /imacron
warning: using glyphshow for unencoded glyph: /imacron.alt
warning: using glyphshow for unencoded glyph: /infinity
warning: using glyphshow for unencoded glyph: /interrobang
warning: using glyphshow for unencoded glyph: /iogonek
warning: using glyphshow for unencoded glyph: /iogonekacute
warning: using glyphshow for unencoded glyph: /itilde
warning: using glyphshow for unencoded glyph: /j
warning: using glyphshow for unencoded glyph: /jacute
warning: using glyphshow for unencoded glyph: /jcaron
warning: using glyphshow for unencoded glyph: /jcircumflex
warning: using glyphshow for unencoded glyph: /k
warning: using glyphshow for unencoded glyph: /kcedilla
warning: using glyphshow for unencoded glyph: /kcommaaccent
warning: using glyphshow for unencoded glyph: /lacute
warning: using glyphshow for unencoded glyph: /lcaron
warning: using glyphshow for unencoded glyph: /lcedilla
warning: using glyphshow for unencoded glyph: /lcommaaccent
warning: using glyphshow for unencoded glyph: /ldot
warning: using glyphshow for unencoded glyph: /ldotbelow
warning: using glyphshow for unencoded glyph: /ldotbelowmacron
warning: using glyphshow for unencoded glyph: /leaf
warning: using glyphshow for unencoded glyph: /less
warning: using glyphshow for unencoded glyph: /linebelow
warning: using glyphshow for unencoded glyph: /linebelowcomb
warning: using glyphshow for unencoded glyph: /lira
warning: using glyphshow for unencoded glyph: /logicalnot
warning: using glyphshow for unencoded glyph: /longs
warning: using glyphshow for unencoded glyph: /lslash
warning: using glyphshow for unencoded glyph: /ltilde
warning: using glyphshow for unencoded glyph: /m
warning: using glyphshow for unencoded glyph: /macron
warning: using glyphshow for unencoded glyph: /macron.alt
warning: using glyphshow for unencoded glyph: /macron.dup
warning: using glyphshow for unencoded glyph: /macron.ts1
warning: using glyphshow for unencoded glyph: /macronbelow
warning: using glyphshow for unencoded glyph: /macronbelowcomb
warning: using glyphshow for unencoded glyph: /macroncomb
warning: using glyphshow for unencoded glyph: /married
warning: using glyphshow for unencoded glyph: /mdotbelow
warning: using glyphshow for unencoded glyph: /mho
warning: using glyphshow for unencoded glyph: /minus
warning: using glyphshow for unencoded glyph: /mu
warning: using glyphshow for unencoded glyph: /multiply
warning: using glyphshow for unencoded glyph: /musicalnote
warning: using glyphshow for unencoded glyph: /nacute
warning: using glyphshow for unencoded glyph: /naira
warning: using glyphshow for unencoded glyph: /nbspace
warning: using glyphshow for unencoded glyph: /ncaron
warning: using glyphshow for unencoded glyph: /ncedilla
warning: using glyphshow for unencoded glyph: /ncommaaccent
warning: using glyphshow for unencoded glyph: /ndotaccent
warning: using glyphshow for unencoded glyph: /ndotbelow
warning: using glyphshow for unencoded glyph: /nine
warning: using glyphshow for unencoded glyph: /nine.oldstyle
warning: using glyphshow for unencoded glyph: /nine.prop
warning: using glyphshow for unencoded glyph: /nine.taboldstyle
warning: using glyphshow for unencoded glyph: /ntilde
warning: using glyphshow for unencoded glyph: /numbersign
warning: using glyphshow for unencoded glyph: /numero
warning: using glyphshow for unencoded glyph: /o
warning: using glyphshow for unencoded glyph: /oacute
warning: using glyphshow for unencoded glyph: /obreve
warning: using glyphshow for unencoded glyph: /ocaron
warning: using glyphshow for unencoded glyph: /ocircumflex
warning: using glyphshow for unencoded glyph: /ocircumflexacute
warning: using glyphshow for unencoded glyph: /ocircumflexdotbelow
warning: using glyphshow for unencoded glyph: /ocircumflexgrave
warning: using glyphshow for unencoded glyph: /ocircumflexhookabove
warning: using glyphshow for unencoded glyph: /ocircumflextilde
warning: using glyphshow for unencoded glyph: /odblacute
warning: using glyphshow for unencoded glyph: /odblgrave
warning: using glyphshow for unencoded glyph: /odieresis
warning: using glyphshow for unencoded glyph: /odotbelow
warning: using glyphshow for unencoded glyph: /oe
warning: using glyphshow for unencoded glyph: /oe.dup
warning: using glyphshow for unencoded glyph: /ogonek
warning: using glyphshow for unencoded glyph: /ograve
warning: using glyphshow for unencoded glyph: /ohm
warning: using glyphshow for unencoded glyph: /ohookabove
warning: using glyphshow for unencoded glyph: /ohorn
warning: using glyphshow for unencoded glyph: /ohornacute
warning: using glyphshow for unencoded glyph: /ohorndotbelow
warning: using glyphshow for unencoded glyph: /ohorngrave
warning: using glyphshow for unencoded glyph: /ohornhookabove
warning: using glyphshow for unencoded glyph: /ohorntilde
warning: using glyphshow for unencoded glyph: /ohungarumlaut
warning: using glyphshow for unencoded glyph: /omacron
warning: using glyphshow for unencoded glyph: /one
warning: using glyphshow for unencoded glyph: /one.oldstyle
warning: using glyphshow for unencoded glyph: /one.prop
warning: using glyphshow for unencoded glyph: /one.superior
warning: using glyphshow for unencoded glyph: /one.taboldstyle
warning: using glyphshow for unencoded glyph: /onehalf
warning: using glyphshow for unencoded glyph: /onequarter
warning: using glyphshow for unencoded glyph: /oogonek
warning: using glyphshow for unencoded glyph: /oogonekacute
warning: using glyphshow for unencoded glyph: /openbullet
warning: using glyphshow for unencoded glyph: /ordfeminine
warning: using glyphshow for unencoded glyph: /ordmasculine
warning: using glyphshow for unencoded glyph: /orogate
warning: using glyphshow for unencoded glyph: /oslash
warning: using glyphshow for unencoded glyph: /oslash.dup
warning: using glyphshow for unencoded glyph: /oslashacute
warning: using glyphshow for unencoded glyph: /otilde
warning: using glyphshow for unencoded glyph: /p
warning: using glyphshow for unencoded glyph: /paragraph
warning: using glyphshow for unencoded glyph: /paragraph.alt
warning: using glyphshow for unencoded glyph: /parenleft
warning: using glyphshow for unencoded glyph: /parenright
warning: using glyphshow for unencoded glyph: /percent
warning: using glyphshow for unencoded glyph: /period
warning: using glyphshow for unencoded glyph: /periodcentered
warning: using glyphshow for unencoded glyph: /permyriad
warning: using glyphshow for unencoded glyph: /perthousand
warning: using glyphshow for unencoded glyph: /perthousandzero
warning: using glyphshow for unencoded glyph: /peso
warning: using glyphshow for unencoded glyph: /plus
warning: using glyphshow for unencoded glyph: /plusminus
warning: using glyphshow for unencoded glyph: /published
warning: using glyphshow for unencoded glyph: /q
warning: using glyphshow for unencoded glyph: /question
warning: using glyphshow for unencoded glyph: /questiondown
warning: using glyphshow for unencoded glyph: /quillbracketleft
warning: using glyphshow for unencoded glyph: /quillbracketright
warning: using glyphshow for unencoded glyph: /quotedbl
warning: using glyphshow for unencoded glyph: /quotedblbase
warning: using glyphshow for unencoded glyph: /quotedblbase.cm
warning: using glyphshow for unencoded glyph: /quotedblbase.cs
warning: using glyphshow for unencoded glyph: /quotedblbase.ts1
warning: using glyphshow for unencoded glyph: /quotedblleft
warning: using glyphshow for unencoded glyph: /quotedblleft.cm
warning: using glyphshow for unencoded glyph: /quotedblright
warning: using glyphshow for unencoded glyph: /quotedblright.cm
warning: using glyphshow for unencoded glyph: /quotedblright.cs
warning: using glyphshow for unencoded glyph: /quoteleft
warning: using glyphshow for unencoded glyph: /quoteleft.dup
warning: using glyphshow for unencoded glyph: /quoteright
warning: using glyphshow for unencoded glyph: /quoteright.dup
warning: using glyphshow for unencoded glyph: /quotesinglbase
warning: using glyphshow for unencoded glyph: /quotesinglbase.ts1
warning: using glyphshow for unencoded glyph: /quotesingle
warning: using glyphshow for unencoded glyph: /quotesingle.ts1
warning: using glyphshow for unencoded glyph: /racute
warning: using glyphshow for unencoded glyph: /radical
warning: using glyphshow for unencoded glyph: /rcaron
warning: using glyphshow for unencoded glyph: /rcedilla
warning: using glyphshow for unencoded glyph: /rcommaaccent
warning: using glyphshow for unencoded glyph: /rdblgrave
warning: using glyphshow for unencoded glyph: /rdotaccent
warning: using glyphshow for unencoded glyph: /rdotbelow
warning: using glyphshow for unencoded glyph: /rdotbelowmacron
warning: using glyphshow for unencoded glyph: /recipe
warning: using glyphshow for unencoded glyph: /referencemark
warning: using glyphshow for unencoded glyph: /registered
warning: using glyphshow for unencoded glyph: /registered.alt
warning: using glyphshow for unencoded glyph: /ring
warning: using glyphshow for unencoded glyph: /ringacute
warning: using glyphshow for unencoded glyph: /ringcomb
warning: using glyphshow for unencoded glyph: /ringhalfleft
warning: using glyphshow for unencoded glyph: /ringhalfright
warning: using glyphshow for unencoded glyph: /sacute
warning: using glyphshow for unencoded glyph: /scaron
warning: using glyphshow for unencoded glyph: /scedilla
warning: using glyphshow for unencoded glyph: /schwa
warning: using glyphshow for unencoded glyph: /scircumflex
warning: using glyphshow for unencoded glyph: /scommaaccent
warning: using glyphshow for unencoded glyph: /sdotbelow
warning: using glyphshow for unencoded glyph: /section
warning: using glyphshow for unencoded glyph: /semicolon
warning: using glyphshow for unencoded glyph: /servicemark
warning: using glyphshow for unencoded glyph: /seven
warning: using glyphshow for unencoded glyph: /seven.oldstyle
warning: using glyphshow for unencoded glyph: /seven.prop
warning: using glyphshow for unencoded glyph: /seven.taboldstyle
warning: using glyphshow for unencoded glyph: /sfthyphen
warning: using glyphshow for unencoded glyph: /six
warning: using glyphshow for unencoded glyph: /six.oldstyle
warning: using glyphshow for unencoded glyph: /six.prop
warning: using glyphshow for unencoded glyph: /six.taboldstyle
warning: using glyphshow for unencoded glyph: /slash
warning: using glyphshow for unencoded glyph: /space
warning: using glyphshow for unencoded glyph: /sterling
warning: using glyphshow for unencoded glyph: /suppress
warning: using glyphshow for unencoded glyph: /tcaron
warning: using glyphshow for unencoded glyph: /tcedilla
warning: using glyphshow for unencoded glyph: /tcommaaccent
warning: using glyphshow for unencoded glyph: /tdieresis
warning: using glyphshow for unencoded glyph: /tdotbelow
warning: using glyphshow for unencoded glyph: /thorn
warning: using glyphshow for unencoded glyph: /three
warning: using glyphshow for unencoded glyph: /three.oldstyle
warning: using glyphshow for unencoded glyph: /three.prop
warning: using glyphshow for unencoded glyph: /three.superior
warning: using glyphshow for unencoded glyph: /three.taboldstyle
warning: using glyphshow for unencoded glyph: /threequarters
warning: using glyphshow for unencoded glyph: /threequartersemdash
warning: using glyphshow for unencoded glyph: /tie
warning: using glyphshow for unencoded glyph: /tieaccentcapital
warning: using glyphshow for unencoded glyph: /tieaccentcapital.new
warning: using glyphshow for unencoded glyph: /tieaccentlowercase
warning: using glyphshow for unencoded glyph: /tieaccentlowercase.new
warning: using glyphshow for unencoded glyph: /tilde
warning: using glyphshow for unencoded glyph: /tilde.dup
warning: using glyphshow for unencoded glyph: /tildebelow
warning: using glyphshow for unencoded glyph: /tildebelowcomb
warning: using glyphshow for unencoded glyph: /tildecomb
warning: using glyphshow for unencoded glyph: /tildelow
warning: using glyphshow for unencoded glyph: /tlinebelow
warning: using glyphshow for unencoded glyph: /trademark
warning: using glyphshow for unencoded glyph: /ttilde
warning: using glyphshow for unencoded glyph: /twelveudash
warning: using glyphshow for unencoded glyph: /two
warning: using glyphshow for unencoded glyph: /two.oldstyle
warning: using glyphshow for unencoded glyph: /two.prop
warning: using glyphshow for unencoded glyph: /two.superior
warning: using glyphshow for unencoded glyph: /two.taboldstyle
warning: using glyphshow for unencoded glyph: /uacute
warning: using glyphshow for unencoded glyph: /ubreve
warning: using glyphshow for unencoded glyph: /ubrevebelowinverted
warning: using glyphshow for unencoded glyph: /ucaron
warning: using glyphshow for unencoded glyph: /ucircumflex
warning: using glyphshow for unencoded glyph: /udblacute
warning: using glyphshow for unencoded glyph: /udblgrave
warning: using glyphshow for unencoded glyph: /udieresis
warning: using glyphshow for unencoded glyph: /udieresisacute
warning: using glyphshow for unencoded glyph: /udieresiscaron
warning: using glyphshow for unencoded glyph: /udieresisgrave
warning: using glyphshow for unencoded glyph: /udotbelow
warning: using glyphshow for unencoded glyph: /ugrave
warning: using glyphshow for unencoded glyph: /uhookabove
warning: using glyphshow for unencoded glyph: /uhorn
warning: using glyphshow for unencoded glyph: /uhornacute
warning: using glyphshow for unencoded glyph: /uhorndotbelow
warning: using glyphshow for unencoded glyph: /uhorngrave
warning: using glyphshow for unencoded glyph: /uhornhookabove
warning: using glyphshow for unencoded glyph: /uhorntilde
warning: using glyphshow for unencoded glyph: /uhungarumlaut
warning: using glyphshow for unencoded glyph: /umacron
warning: using glyphshow for unencoded glyph: /underscore
warning: using glyphshow for unencoded glyph: /undertie
warning: using glyphshow for unencoded glyph: /undertieinverted
warning: using glyphshow for unencoded glyph: /uni2010
warning: using glyphshow for unencoded glyph: /uni2011
warning: using glyphshow for unencoded glyph: /uni2423
warning: using glyphshow for unencoded glyph: /uogonek
warning: using glyphshow for unencoded glyph: /uring
warning: using glyphshow for unencoded glyph: /utilde
warning: using glyphshow for unencoded glyph: /v
warning: using glyphshow for unencoded glyph: /varcopyright
warning: using glyphshow for unencoded glyph: /vardotaccent
warning: using glyphshow for unencoded glyph: /varregistered
warning: using glyphshow for unencoded glyph: /w
warning: using glyphshow for unencoded glyph: /wacute
warning: using glyphshow for unencoded glyph: /wcircumflex
warning: using glyphshow for unencoded glyph: /wdieresis
warning: using glyphshow for unencoded glyph: /wgrave
warning: using glyphshow for unencoded glyph: /won
warning: using glyphshow for unencoded glyph: /x
warning: using glyphshow for unencoded glyph: /y
warning: using glyphshow for unencoded glyph: /yacute
warning: using glyphshow for unencoded glyph: /ycircumflex
warning: using glyphshow for unencoded glyph: /ydieresis
warning: using glyphshow for unencoded glyph: /ydotbelow
warning: using glyphshow for unencoded glyph: /yen
warning: using glyphshow for unencoded glyph: /ygrave
warning: using glyphshow for unencoded glyph: /yhookabove
warning: using glyphshow for unencoded glyph: /ytilde
warning: using glyphshow for unencoded glyph: /z
warning: using glyphshow for unencoded glyph: /zacute
warning: using glyphshow for unencoded glyph: /zcaron
warning: using glyphshow for unencoded glyph: /zdotaccent
warning: using glyphshow for unencoded glyph: /zdotbelow
warning: using glyphshow for unencoded glyph: /zero
warning: using glyphshow for unencoded glyph: /zero.oldstyle
warning: using glyphshow for unencoded glyph: /zero.prop
warning: using glyphshow for unencoded glyph: /zero.slash
warning: using glyphshow for unencoded glyph: /zero.taboldstyle
Type1CConverter: converting font /PRYVHD+LMRoman12-Bold to /Obj0000006433
Type1CConverter: converting font /CNEWXW+LMRomanCaps10-Regular to /Obj0000006435
Type1CConverter: converting font /PSVNTQ+LMMathExtension10-Regular to /Obj0000006437
Type1CConverter: converting font /XCFBGN+LMMathItalic12-Regular to /Obj0000006439
Type1CConverter: converting font /BWVMLN+LMMathItalic6-Regular to /Obj0000006441
Type1CConverter: converting font /GSXGNG+LMMathItalic8-Regular to /Obj0000006443
Type1CConverter: converting font /LZRGPS+LMRoman12-Regular to /Obj0000006446
Type1CConverter: converting font /CHGOOK+LMRoman17-Regular to /Obj0000006448
Type1CConverter: converting font /ZMXJCK+LMRoman6-Regular to /Obj0000006450
Type1CConverter: converting font /FATLKW+LMRoman8-Regular to /Obj0000006452
Type1CConverter: converting font /APHGDZ+LMRoman12-Italic to /Obj0000006454
Type1CConverter: converting font /HZJIBN+LMRomanSlant12-Regular to /Obj0000006456
Type1CConverter: converting font /PTMUXV+LMSans10-Bold to /Obj0000006458
Type1CConverter: converting font /BWTMRZ+LMMathSymbols10-Regular to /Obj0000006460
Type1CConverter: converting font /CWURCS+LMMathSymbols6-Regular to /Obj0000006462
Type1CConverter: converting font /KWRJVC+LMMathSymbols8-Regular to /Obj0000006464
Type1CConverter: converting font /KOOAIX+LMMono12-Regular to /Obj0000006466
Type1CConverter: converting font /ULZEWH+MSBM10 to /Obj0000006468
Type1CConverter: all OK
info: This is pdfsizeopt ZIP rUNKNOWN size=105563.
info: loading PDF from: B:\pdfs\input.pdf
info: loaded PDF of 25028325 bytes
info: separated to 6489 objs + xref + trailer
info: found 20 Type1 fonts loaded
info: writing Type1CConverter (438038 font bytes) to: B:\pdfs\psotmp.9664.conv.tmp.ps
info: using Ghostscript "B:\pdfsizeopt\pdfsizeopt_win32exec\pdfsizeopt_gswin\gswin32c.exe": GPL Ghostscript 9.02 (2011-03-30)
info: executing Type1CConverter with Ghostscript: "B:\pdfsizeopt\pdfsizeopt_win32exec\pdfsizeopt_gswin\gswin32c.exe" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dColorConversionStrategy=/LeaveColorUnchanged -sOutputFile=B:\pdfs\psotmp.9664.conv.tmp.pdf -f B:\pdfs\psotmp.9664.conv.tmp.ps
info: loading PDF from: B:\pdfs\psotmp.9664.conv.tmp.pdf
info: loaded PDF of 173012 bytes
info: separated to 116 objs + xref + trailer
error: duplicate font /Obj0000006127 obj old=6127 new=72
error: duplicate font /Obj0000006127 obj old=6127 new=71
error: duplicate font /Obj0000006127 obj old=6127 new=70
error: duplicate font /Obj0000006127 obj old=6127 new=69
error: duplicate font /Obj0000006127 obj old=6127 new=68
error: duplicate font /Obj0000006127 obj old=6127 new=67
info: found 26 fonts in GS output
Traceback (most recent call last):
File "B:\pdfsizeopt\pdfsizeopt_win32exec\python26.zip\runpy.py", line 122, in _run_module_as_main
File "B:\pdfsizeopt\pdfsizeopt_win32exec\python26.zip\runpy.py", line 34, in _run_code
File "B:\pdfsizeopt\pdfsizeopt.single\__main__.py", line 1, in <module>
File "B:\pdfsizeopt\pdfsizeopt.single\mainrun.py", line 10, in <module>
File "B:\pdfsizeopt\pdfsizeopt.single\pdfsizeopt\main.py", line 8240, in main
File "B:\pdfsizeopt\pdfsizeopt.single\pdfsizeopt\main.py", line 5341, in ConvertType1FontsToType1C
File "B:\pdfsizeopt\pdfsizeopt.single\pdfsizeopt\main.py", line 5074, in GenerateType1CFontsFromType1
File "B:\pdfsizeopt\pdfsizeopt.single\pdfsizeopt\main.py", line 5003, in GetFonts
AssertionError: found 6 duplicate font objs in GS output
Thank you for reporting this issue. To investigate further, I need the original .pdf file.
FYI I was able to reproduce the problem with https://www.oreilly.com/programming/free/files/functional-programming-python.pdf . This looks like a bug in pdfsizeopt. The problem is caused by Type1 fonts with more than 256 glyphs in their /CharStrings.
$ pdfsizeopt --use-pngout=no functional-programming-python.pdf
...
error: duplicate font /Obj0000000407 obj old=407 new=280
error: duplicate font /Obj0000000407 obj old=407 new=279
error: duplicate font /Obj0000000407 obj old=407 new=278
error: duplicate font /Obj0000000410 obj old=410 new=315
error: duplicate font /Obj0000000410 obj old=410 new=314
error: duplicate font /Obj0000000410 obj old=410 new=313
info: found 134 fonts loaded
Traceback (most recent call last):
File "/usr/local/google/home/pts/prg/pdfsizeopt/pdfsizeopt", line 37, in <module>
sys.exit(main.main(sys.argv))
File "/usr/local/google/home/pts/prg/pdfsizeopt/lib/pdfsizeopt/main.py", line 8620, in main
do_regenerate_all_fonts=do_regenerate_all_fonts)
File "/usr/local/google/home/pts/prg/pdfsizeopt/lib/pdfsizeopt/main.py", line 6158, in OptimizeType1CFonts
loaded_objs = pdf.GetFonts(do_obj_num_from_font_name=True)
File "/usr/local/google/home/pts/prg/pdfsizeopt/lib/pdfsizeopt/main.py", line 5133, in GetFonts
'found %d duplicate font objs %s' % (duplicate_count, where))
AssertionError: found 119 duplicate font objs loaded
Until the bug is fixed, use --do-unify-fonts=no --do-regenerate-all-fonts=no as a workaround. If that doesn't help, specify --do-optimize-fonts=no instead.
I can confirm the bug. --do-optimize-fonts=no worked for me. FYI, if I produce the pdf file compiling the tex source with pdflatex/xelatex/lualatex, the bug occurs. If I compile with latex → dvipdfm, then bug doesn't occur.
@pozitron57: Please upload the corresponding PDF files produced by pdflatex and dvipdfm. I am not able to help you directly until you upload the sample PDF files.
Here is another PDF file which triggers the bug on a different code path: lme2006_logomany.pdf and tosubset.pdf.
- lme2006_logomany.pdf and tosubset.pdf: ConvertType1FontsToType1C calls GenerateType1CFontsFromType1 calls GetFonts raises duplicate font objs
- functional-programming-python.pdf : OptimizeType1CFonts calls _ProcessType1CFonts calls SerializeType1CFonts calls GetFonts raises duplicate font objs
I have added some workarounds (as of 85e1f76a9e610e9922365a4af583f8788f655311) to prevent the AssertionError: found ... duplicate font obj error from happening, by making pdfsizeopt ignore Type 1 and Type1C fonts with more than 256 glyphs (and display warning and info messages instead). Please upgrade to the latest pdfsizeopt, and enjoy error-free processing even without --do-optimize-fonts=no. The catch is that the output PDF will be larger than it could be, because some fonts are not optimized. The workarounds are safe in a sense that previous successful runs of pdfsizeopt don't have an output PDF size regression.
The proper fix would be improving Type1CConverter and Type1CGenerator in pdfsizeopt to make it work with fonts with more than 256 glyphs (i.e. length of /CharStrings larger than 256). Currently Ghostscript generates multiple Type1C font data objects for these fonts (hence the duplicate font obj error), and I can't see an easy way to configure Ghostscript to generate a single, big Type1C font data object instead (for this it may be worth asking the Ghostscript developers or on StackOverflow), and I can't see an easy way either for merging the multiple Type1C font data objects generated by Ghostscript.
Keeping this bug open until it is fixed properly.
FYI Specifying /ReAssignCharacters false /ReEncodeCharacters false next to /SubsetFonts false didn't make a difference, Ghostscript still splits fonts with unencoded glyphs in this case.
With recent advances on FixFontNameInCff (e5bd486831572889a4429f7d2aa515fa11cd42e5), generating CFF fonts with more than 256 glyphs is within reach. The plan is the following:
- Implement ParseType1CFonts in pure Python (it only has to work for non-CID-keyed, single-font CFF files, with or without
/Subrs). Use some real-world PDF files and check that the new Python implementation has the same output as the old Ghostscript implementation. - Implement SerializeType1CFonts in pure Python (it only has to work for fonts ParseType1CFonts is able to parse). Run it through real-world PDF files, and check that
Parse_Python(Serialize_Python(Parse_Python(cff_data))) == Parse_Python(cff_data)(do_double_check_type1c_outputdoes it). At this point the 256-glyph limitation for Type1C font unification (merging) will be lifted. - GenerateType1CFontsFromType1 will continue using Ghostscript (because Type 1 font parsing and Type-1-to-Type-2 CharString conversion is complicated to reimplement), but add some fixup code using ParseType1CFonts and SerializeType1CFonts to merge font parts emitted by Ghostscript for CFF fonts with more than 256 glyphs.
As soon as all these are implemented, this bug can be marked as fixed. No ETA though.
FYI pdfsizeopt's Type1CParser doesn't work with Ghostscript 9.25, and it's unlikely that there is a feasible, long-term fix (see bug report https://bugs.ghostscript.com/show_bug.cgi?id=700362 why). Thus replacing it with Type1CParse with a Python implementation (i.e. this issue) seems to be the viable strategy.
I wonder if using fontforge rather than Ghostscript would be viable here.
Thank you for recommending FontForge as a replacement for Ghostscript. It's probably viable, but it doesn't look like much less work than the other option (i.e. extending the existing Python code in pdfsizeopt to do the Type1C parsing and serialization). Please note that copying C code from FrontForge also has its porting (precompilation to 3 architecture) and maintenance overhead.
However, the FontForge codebase can be useful for replancing other Ghostscript features (see https://github.com/pts/pdfsizeopt/issues/63). Also Poppler and QPDF can be useful.
One thing that might help is the fontforge has a python interface already, although not sure if it is feature complete. Docs here: http://dmtr.org/ff.php
Thank you for suggesting the Python interface of FontForge. It's nice to know what existing font processing software is available.
pdfsizeopt uses standard Python modules (e.g. zlib) and statically linked external executables (e.g. gs and jbig2) only by design. The Python interface of FontForge is a library with a Python extension, thus it doesn't fit to the pdfsizeopt design. (The reason for this design: pdfsizeopt should be easy to install for new users, and Python extensions tend to be very difficult to install for non-programmer Python users on Windows.)