[GRASS-dev] Re: [bug #5195] (grass) ps.map sets encoding to iso-8859-1

Moritz Lennert mlennert at club.worldonline.be
Tue Oct 10 03:53:27 EDT 2006


Glynn Clements via RT wrote:
> Request Tracker wrote:
> 
>> this bug's URL: http://intevation.de/rt/webrt?serial_num=5195
>> -------------------------------------------------------------------------
>>
>> Subject: ps.map sets encoding to iso-8859-1
>>
>> Platform: GNU/Linux/x86
>> grass obtained from: CVS
>> grass binary for platform: Compiled from Sources
>> GRASS Version: cvs_head_20060921
>>
>> On line 92 of ps/ps.map/prolog.ps the encoding is set to ISOLatin1Encoding.
>>
>> If I understand correctly (and some testing confirms this) this
>> means that the instructions file for ps.map has to be encoded in
>> iso-8859-1 (or similar) to work, i.e. to be able to print accented
>> characters. If you are in a UTF-8 environment, ps.map creates a ps
>> file which doesn't show correct accented characters be it in iso or
>> in utf.
>>
>> Is there any reason why ps.map hardcodes the encoding ? Is it
>> possible to automatically use the users encoding ?
> 
> The reason why we force the font's encoding to ISOLatin1Encoding is
> that the default encoding for most Latin fonts is StandardEncoding,
> which (contrary to its name) is a completely non-standard encoding
> which (AFAICT) is not used by anything except PostScript.
> 
> The value of the Encoding property is an array of 256 glyph names, so
> you can use any unibyte encoding (e.g. ISO-646-*, ISO-8859-*,
> windows-12?? etc).
> 
> If you want to support more complex encodings, you need to use
> CID-keyed fonts. Apart from being rather complex, CID-keyed fonts may
> not be supported by PostScript printers sold outside of South-East
> Asia.


Does UTF-8 count as 'complex encoding' ? Most GNU/Linux distributions 
come with UTF-8 as default system encoding nowadays and so users will 
have that problem.

> 
> In short, allowing the encoding to be changed to other unibyte
> encodings is simple enough. Anything else will require a willing
> volunteer (i.e. not me), and will need to be implemented in such a way
> that users don't end up accidentally producing documents which show up
> fine in (recent versions of) Ghostscript but which will be rejected by
> every PostScript printer on this half of the planet.


Hamish wrote:
> FWIW, if all you want is accents, ps.map should be able to pass through
> the standard ascii extended chars.  e.g. I use the (c), ^2, degree
> symbols a lot. gnome-terminal doesn't like them, but they are fine
> passed from an input file. 

We haven't been able to get accents in ps.map if the instructions file 
containing the accents was utf-8 encoded.

> Alternately direct insertion using rxvt+vi on
> the output PostScript file can get the job done. If you try this & have
> many to do, I suggest leaving some breadcrumbs for the search&replace to
> find.

Yes, manually it is no problem (see below), but that is quite a hassle. 
IMO accents should be easily available in GRASS.

If I did understand correctly what happened during my testing, even in a 
UTF-8 environment it is enough that the ps.map instruction file was 
encoded using a unibyte encoding, i.e.

iconv -f ISO_8859-15 -t UTF-8 test.psmap.iso > test.psmap.utf8

LC_ALL=iso-8859-15

ps.map in=test.psmap.iso out=map.ps
accents are there.

ps.map in=test.psmap.utf8 out=map.ps
garbled accents


LC_ALL=UTF-8

ps.map in=test.psmap.iso out=map.ps
accents are there

ps.map in=test.psmap.utf8 out=map.ps
garbled accents

So, maybe we should at least add a hint to the ps.map man page that 
utf-8-based users who want non-ascii characters should translate their 
utf-8 instruction files to unibyte before using them.

I imagine there is no way of automatically identifying the encoding of a 
file ?

Moritz




More information about the grass-dev mailing list