IM skews font in vector eps files

Questions and postings pertaining to the usage of ImageMagick regardless of the interface. This includes the command-line utilities, as well as the C and C++ APIs. Usage questions are like "How do I use ImageMagick to create drop shadows?".
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: IM skews font in vector eps files

Post by fmw42 »

I think I have a solution for you. Just use GS. The following works for me.

gs -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png256 -r300x300 -sOutputFile=figure.png figure.eps

You may be able to edit the delegates.xml file to use sDEVICE=png256 for one of the eps lines. But I was not successful. However, I am no expert on GS or the delegates.xml file.

See GS documentation at
http://www.ghostscript.com/Documentation.html (select your version of GS) then for example
http://www.ghostscript.com/doc/9.06/Readme.htm (click on use ghostscript link in section 2)
http://www.ghostscript.com/doc/9.06/Use.htm (click on Using Ghostscript With EPS)
http://www.ghostscript.com/doc/9.06/Use.htm#EPS
LadyCygnus
Posts: 12
Joined: 2014-04-10T09:45:00-07:00
Authentication code: 6789

Re: IM skews font in vector eps files

Post by LadyCygnus »

Just an update (because https://xkcd.com/979/ -- since I can't be the only one with mysterious italics appearing in eps files right?)

Note: we have an Illustrator script to convert eps to png now. It means a three step process (script to convert xml files, Illustrator to convert figures, combine manually), but it is manageable. I had some free time so decided to step back to look at this again and give an update.

I pulled 170 of our images and did a quick visual sort (using IM display) to categorize them as either "infected" with italics or not. Then wrote a perl script to analyze the image files using IM's verbose command.

All files are in the CMYK color space.

Infected images (139 files):
  • Only ONE has TimesNewRomanPS-ItalicMT as a "spot color" - about 46 others have various other fonts as spot colors (I must have opened other "TimesNewRoman" files and didn't notice the lack of italics when debugging before). This leaves nearly 100 bad files with no "spot color font"
  • 91% of the files were created using CS5.1, but the last 10 were (statistically) evenly split between CS 2, 4, 5 and 6 (windows)
Good images (33 files):
  • NO spot color fonts
  • pretty evenly split between CS5.1 and CS6 (windows); 30% and 42% respectively, but still have 8 created with prior versions
Generally speaking if one file in a grouping is infected then many if not all of the rest of the group will also be. It's a loosely systematic error. Historically speaking most (if not all) of these files were created by an external vendor. I was able to go back and find originals from the vendor, but they are also split between infected and not.
LadyCygnus
Posts: 12
Joined: 2014-04-10T09:45:00-07:00
Authentication code: 6789

Re: IM skews font in vector eps files

Post by LadyCygnus »

fmw42 wrote:I think I have a solution for you. Just use GS. The following works for me.

gs -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png256 -r300x300 -sOutputFile=figure.png figure.eps

You may be able to edit the delegates.xml file to use sDEVICE=png256 for one of the eps lines. But I was not successful. However, I am no expert on GS or the delegates.xml file.

See GS documentation at
http://www.ghostscript.com/Documentation.html (select your version of GS) then for example
http://www.ghostscript.com/doc/9.06/Readme.htm (click on use ghostscript link in section 2)
http://www.ghostscript.com/doc/9.06/Use.htm (click on Using Ghostscript With EPS)
http://www.ghostscript.com/doc/9.06/Use.htm#EPS
I did NOT see this (it snuck onto the next page)....trying now!
LadyCygnus
Posts: 12
Joined: 2014-04-10T09:45:00-07:00
Authentication code: 6789

Re: IM skews font in vector eps files

Post by LadyCygnus »

No...still italics and now fuzzy. I'll look through the documentation though to see if there is something user dependent.

Thank you again for searching so long for an answer!
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: IM skews font in vector eps files

Post by fmw42 »

That is odd. My command with GS worked just fine for me using GS 9.0.6 on your image figure.eps that you provided.

What version of GS do you have and does it include the sDEVICE=png256?

gs -help


GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-g<width>x<height> page size in pixels | -r<res> pixels/inch resolution
-sDEVICE=<devname> select device | -dBATCH exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
Default output device: x11alpha
Available devices:
alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 ap3250 appledmp
atx23 atx24 atx38 bbox bit bitcmyk bitrgb bitrgbtags bj10e bj10v bj10vh
bj200 bjc600 bjc800 bjc880j bjccmyk bjccolor bjcgray bjcmono bmp16 bmp16m
bmp256 bmp32b bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500
cdj550 cdj670 cdj850 cdj880 cdj890 cdj970 cdjcolor cdjmono cdnj500 cfax
chp2200 cif cljet5 cljet5c cljet5pr coslw2p coslwxl cp50 declj250 deskjet
devicen dfaxhigh dfaxlow display dj505j djet500 djet500c dl2100 dnj650c
epl2050 epl2050p epl2120 epl2500 epl2750 epl5800 epl5900 epl6100 epl6200
eplcolor eplmono eps9high eps9mid epson epsonc epswrite escp escpage
faxg3 faxg32d faxg4 fmlbp fmpr fs600 gdi hl1240 hl1250 hl7x0 hpdj1120c
hpdj310 hpdj320 hpdj340 hpdj400 hpdj500 hpdj500c hpdj510 hpdj520 hpdj540
hpdj550c hpdj560c hpdj600 hpdj660c hpdj670c hpdj680c hpdj690c hpdj850c
hpdj855c hpdj870c hpdj890c hpdjplus hpdjportable ibmpro ijs imagen
inferno inkcov iwhi iwlo iwlq jetp3852 jj100 jpeg jpegcmyk jpeggray la50
la70 la75 la75plus laserjet lbp310 lbp320 lbp8 lex2050 lex3200 lex5700
lex7000 lips2p lips3 lips4 lips4v lj250 lj3100sw lj4dith lj4dithp lj5gray
lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d ljet4pjl ljetplus ln03 lp1800
lp1900 lp2000 lp2200 lp2400 lp2500 lp2563 lp3000c lp7500 lp7700 lp7900
lp8000 lp8000c lp8100 lp8200c lp8300c lp8300f lp8400f lp8500c lp8600
lp8600f lp8700 lp8800c lp8900 lp9000b lp9000c lp9100 lp9200b lp9200c
lp9300 lp9400 lp9500c lp9600 lp9600s lp9800c lps4500 lps6500 lq850
lxm3200 lxm5700m m8510 mag16 mag256 md1xMono md2k md50Eco md50Mono md5k
mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24 mj500c mj6000c
mj700v2c mj8000c ml600 necp6 npdl nullpage oce9050 oki182 oki4w okiibm
oprp opvp paintjet pam pamcmyk32 pamcmyk4 pbm pbmraw pcl3 pcx16 pcx24b
pcx256 pcx256 pcx2up pcxcmyk pcxgray pcxmono pdfwrite pdfwrite pgm pgmraw
pgnm pgnmraw photoex picty180 pj pjetxl pjxl pjxl300 pkm pkmraw pksm
pksmraw plan plan9bm planc plang plank planm png16 png16m png256 png48
pngalpha pnggray pngmono pnm pnmraw ppm ppmraw pr1000 pr1000_4 pr150
pr201 ps2write psdcmyk psdrgb psgray psmono psrgb pswrite pxlcolor
pxlmono r4081 rinkj rpdl samsunggdi sgirgb sj48 spotcmyk st800 stcolor
sunhmono t4693d2 t4693d4 t4693d8 tek4696 tiff12nc tiff24nc tiff32nc
tiff48nc tiff64nc tiffcrle tiffg3 tiffg32d tiffg4 tiffgray tifflzw
tiffpack tiffscaled tiffsep txtwrite uniprint x11 x11alpha x11cmyk
x11cmyk2 x11cmyk4 x11cmyk8 x11gray2 x11gray4 x11mono x11rg16x x11rg32x
xcf xes
Search path:
/opt/local/share/ghostscript/9.06/Resource/Init :
/opt/local/share/ghostscript/9.06/lib :
/opt/local/share/ghostscript/9.06/Resource/Font :
/opt/local/share/ghostscript/fonts :
/opt/local/share/fonts/default/ghostscript :
/opt/local/share/fonts/default/Type1 :
/opt/local/share/fonts/default/TrueType : /usr/lib/DPS/outline/base :
/usr/openwin/lib/X11/fonts/Type1 : /usr/openwin/lib/X11/fonts/TrueType
For more information, see /opt/local/share/ghostscript/9.06/doc/Use.htm.
Please report bugs to bugs.ghostscript.com.


gs -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png256 -r300x300 -sOutputFile=figure.png figure.eps
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Can't find (or can't open) font file /opt/local/share/ghostscript/9.06/Resource/Font/TimesNewRomanPS-ItalicMT.
Can't find (or can't open) font file TimesNewRomanPS-ItalicMT.
Querying operating system for font files...
**** Warning: glyf overlaps cmap, truncating.
Loading TimesNewRomanPS-ItalicMT font from /Library/Fonts/Times New Roman Italic.ttf... 3877288 2325892 11828548 8000738 3 done.
Loading TimesNewRomanPSMT font from /Library/Fonts/Times New Roman.ttf... 3914304 2364163 12897100 9153642 3 done.

http://www.fmwconcepts.com/misc_tests/c ... figure.png
User avatar
fmw42
Posts: 25562
Joined: 2007-07-02T17:14:51-07:00
Authentication code: 1152
Location: Sunnyvale, California, USA

Re: IM skews font in vector eps files

Post by fmw42 »

You might want to post this problem to the Bugs forum and put a link to this post. You can say that it works in GS, but not via IM. Perhaps one of the developers can either fix it or tell you how to modify the delegates.xml file to make it work.
LadyCygnus
Posts: 12
Joined: 2014-04-10T09:45:00-07:00
Authentication code: 6789

Re: IM skews font in vector eps files

Post by LadyCygnus »

This is...solved?...

It turned out to be a font problem - when GS was pointed to the Windows\Fonts folder it worked. Here is the process of figuring it out the problem since I'm not entirely sure what fixed it.

Running GS alone I noticed it was complaining about missing fonts and it was substituting with Times-Italic. I could get it to work if specified a FontPath and embeded the fonts:

Code: Select all

"C:\Program Files\gs\gs9.14\bin\gswin64c.exe"-dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png256 -r300x300 -sFONTPATH=%windir%/fonts -dEmbedAllFonts=true -sOutputFile=figure.png "figure.eps"
The image was rather ugly - but it was correct. I tried creating the system variable but GS ignored it. Then I began trying to edit the IM deligates file to include these commands and somehow messed everything up so badly I needed to re-install (I don't know how - it looks like a simple call, but IM was having NONE of it and I couldn't "fix" it by undoing it). I initially tried just re-installing GS, but IM continued to freak out.

So:
  • Uninstalled both and restarted the computer
  • Re-installed GS; unchecking "create the cidfmap for Windows CJK TrueType fonts (why bother since fonts didn't work anyway and I would need to add a manual pointer?) and restarted the computer
  • downloaded new release of IM (6.8.9) and installed
  • tried running the conversion to see if it at least got the BAD response - instead it worked.
Now my coworker tried these steps and it still failed. However, we then added the system variable, restarted and it worked for him. The only thing I can think of is that it was the system variable and I didn't restart my computer after attempting to add it on mine, yet all the restarts later caused it to work. Although there is the possibility that it was a combination of things. I'm still not sure what the cidfmap does - or now doesn't do. Either way, it works and I'm not going to complain further.

Anyway, here is how to add the system variable in Windows 7 (because it was a pain in the tush to track down each bit of instruction):
  • Right-click on Computer and choose Properties
  • Click on Advanced System Settings > Environment Variables
  • Under System Variables select New...
  • Variable Name: GS_FONTPATH
  • Variable Value: C:\Windows\Fonts
  • OK > OK > OK > Restart
snibgo
Posts: 12159
Joined: 2010-01-23T23:01:33-07:00
Authentication code: 1151
Location: England, UK

Re: IM skews font in vector eps files

Post by snibgo »

Congratulations on getting it to work, and thanks for letting us know the solution, even if it isn't pinned down.

When I edit IM's xml files, I always mess it up. So I back them up, and copy lines I'm going to change to somewhere else.
snibgo's IM pages: im.snibgo.com
Post Reply