Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.postscript > #3729

Re: Printing UTF8 (Unicode)

Subject Re: Printing UTF8 (Unicode)
Newsgroups comp.lang.postscript
References <4fe53d50-e66a-82b8-48fd-d0928e149698@davidnewall.com>
From David Newall <davidn@davidnewall.com>
Date Sun, 23 Jan 2022 13:31:54 +1100
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0
MIME-Version 1.0
In-Reply-To <4fe53d50-e66a-82b8-48fd-d0928e149698@davidnewall.com>
Content-Type text/plain; charset=utf-8; format=flowed
Content-Language en-US
Content-Transfer-Encoding 7bit
NNTP-Posting-Host news.ausics.net
Message-ID <61ecbe1b$1@news.ausics.net> (permalink)
Organization Ausics - https://www.ausics.net
Lines 41
X-Complaints abuse@ausics.net
Path csiph.com!news.bbs.nz!news.ausics.net!not-for-mail
Xref csiph.com comp.lang.postscript:3729

Show key headers only | View raw


On 21/1/22 9:56 pm, David Newall wrote:
> I've written some PostScript to allow me to print UTF8-encoded strings

There was an error in unicodeshow.  I wasn't attempting /uniXXXX for 
codepoints that weren't in Adobe's table.

Apparently it's also not uncommon to use /uXXXX through /uXXXXXX (4 to 6 
hex digits), so I check for those, too.

% integer unicodeshow - show glyph for unicode code point
/unicodeshow {
   % load array of known glyph names for this code point, supplemented
   % with /uXXXXXX (4 - 6 hex chars) and /uniXXXX (when codepoint fits
   % in 4 hex chars)
   [
     unicode 2 index known {unicode 2 index get aload pop} if
     % convert number to hex for /uXXXX.. and /uniXXXX
     (0000000) 6 counttomark 1 add index % string index number
     {
       % number must fit in 6 hex digits
       1 index 0 eq {
         pop pop pop
         /.error where {pop .error} {signalerror} ifelse
       } if
       dup 0 eq { pop exit } if
       3 copy 16 mod dup 9 gt { 55 } { 48 } ifelse add put
       16 idiv exch 1 sub exch
     } loop
     % require min 4 hex digits
     dup 2 gt { -1 3 { 1 index exch 16#30 put } for 2 } if
     % /uXXXX - /uXXXXXX
     2 copy 7 1 index sub getinterval dup 0 16#75 put cvn 3 1 roll
     % /uniXXXX
     2 eq { dup 0 (uni) putinterval dup cvn exch } if
     pop
   ] exch pop
   %[(candidates)2 index]== pstack(---)==
   dup currentfont chooseglyph not { /.notdef } if glyphshow
   pop
} bind def

Back to comp.lang.postscript | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Printing UTF8 (Unicode) David Newall <davidn@davidnewall.com> - 2022-01-21 21:56 +1100
  Re: Printing UTF8 (Unicode) Carlos <carlos@cvkm.cz> - 2022-01-21 14:23 +0100
    Re: Printing UTF8 (Unicode) David Newall <davidn@davidnewall.com> - 2022-01-22 12:27 +1100
  Re: Printing UTF8 (Unicode) David Newall <davidn@davidnewall.com> - 2022-01-23 13:31 +1100
    Re: Printing UTF8 (Unicode) Carlos <carlos@cvkm.cz> - 2022-01-23 13:35 +0100
      Re: Printing UTF8 (Unicode) David Newall <davidn@davidnewall.com> - 2022-01-26 14:59 +1100
        Re: Printing UTF8 (Unicode) Carlos <carlos@cvkm.cz> - 2022-02-10 15:05 +0100
          Re: Printing UTF8 (Unicode) David Newall <davidn@davidnewall.com> - 2022-02-16 13:55 +1100
  Printing UTF8 (Unicode) - opinions please David Newall <davidn@davidnewall.com> - 2022-01-23 14:10 +1100
    Re: Printing UTF8 (Unicode) - opinions please Carlos <carlos@cvkm.cz> - 2022-01-23 13:56 +0100
      Re: Printing UTF8 (Unicode) - opinions please luser droog <luser.droog@gmail.com> - 2022-01-24 08:37 -0800
    Re: Printing UTF8 (Unicode) - opinions please luser droog <luser.droog@gmail.com> - 2022-01-24 08:33 -0800
      Re: Printing UTF8 (Unicode) - opinions please David Newall <davidn@davidnewall.com> - 2022-01-26 15:06 +1100

csiph-web