🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.std.internat
3 messages
3 total messages Started by Markus Kuhn Mon, 14 Dec 1992 13:23
ISO Latin 1 to 7-bit ASCII conversion (final draft!)
#409
Author: Markus Kuhn
Date: Mon, 14 Dec 1992 13:23
276 lines
13966 bytes
I received quite a number of suggestions for improvement of the conversion
tables which I posted to comp.std.internat a few weeks ago. Before I
will send the following text to a number of public domain software
authors, I'd like to ask you again for a final comment on these
tables. Would you as a user who has still to live with an 7-bit
terminal and who receives ISO Latin 1 textes be happy, if your
favourite piece of networking software would be able to display
the characters as described below? If not, what would you like
to change?

Markus

------------------------------------------------------------------------
Representation of ISO 8859-1 characters with 7-bit ASCII
--------------------------------------------------------

Markus Kuhn -- 1992-12-13

SUMMARY: This text describes a technique of displaying the 8-bit
character set, which is used today in many modern network services, on
old 7-bit terminals. Authors of software dealing with text received
from international networks are strongly encouraged to implement this
or similar methods as options in their software for the convenience of
users all over the world. Implementation is often trivial.



The "Latin alphabet No. 1" defined in part 1 of the international
standard

  ISO 8859:1987   Information processing -- 8-bit single-byte
                  coded graphic character sets

is an increasingly popular 8-bit extension of the traditional 7-bit
US-ASCII character set. It is already supported by many operating
systems and its 191 graphic characters include those used in the
following 14 languages:

  Danish, Dutch, English, Faeroese, Finnish, French, German,
  Icelandic, Irish, Italian, Norwegian, Portuguese, Spanish and
  Swedish.

ISO 8859-1 contains graphic characters used in at least 44 countries.
Many people believe that ISO Latin 1 is already the de-facto
replacement of the old 7-bit US-ASCII character set. In addition, the
first 256 characters of the new 16-bit character set ISO 10646/Unicode,
which contains nearly all characters used on this planet and is
expected to be the final solution of most of today's character set
troubles, are identical with ISO 8859-1.

ISO 8859-1 uses only the codes 32-126 (which are identical with
US-ASCII) and 160-255. The positions 0-31 and 127-159 are reserved for
control codes and normally used in the same way in which they are used
with ASCII.

As this character set gains more and more popularity in international
data communication (e.g. the Internet gopher service, the Internet
MIME, parts of USENET), the need arises to extend existing software
with the ability of displaying strings containing ISO 8859-1 characters
on old hardware that is only capable of displaying 7-bit US-ASCII
characters. Today, many users of old hardware suffer from getting the
Latin 1 characters between 160 and 255 only displayed as the
corresponding US-ASCII characters with the highest bit cleared. Then
they see e.g. a ')' instead of the copyright symbol. Pessimists expect
that these old 7-bit terminals will be in use at least for the next ten
years.

One approach for such a Latin 1 to ASCII conversion is to use the
replacements, that people use traditionally, when they have to live
with an US-ASCII keyboard. This seems to be the most natural method,
which often won't even be noticed by users that use these traditional
replacements already today on their old hardware.

The disadvantages of this approach are often acceptable:

  a) No one-to-one mapping between Latin 1 and ASCII strings possible
  b) Text layout may be destroyed by multi-character substitutions
  c) Different replacements may be in use for different languages

There is no optimal solution possible for the problem of displaying
text with ISO Latin 1 characters on old terminals apart from buying new
hardware. The conversion tables proposed here are only intermediate
solutions that are intended to make life easier for people who get
Latin 1 characters currently displayed as the corresponding 7-bit
US-ASCII symbols with the highest bit cleared, which is awful and
frustrates the users of old hardware.

Including the tables below in programs like mail user agents, news
readers, gopher clients, file browsers, tty drivers etc. is often a
trivial task. Users should be able to switch between the different
tables and the 8-bit transparent normal mode. User defineable tables
are always a nice possible extension.

Users should know if the text they read has been converted from the 
original Latin 1 text. This avoids confusion if e.g. someone asks for
sending him a 3<fraction 1/2>" disk [3½"], which will be displayed
after the conversion as 31/2" (= 15.25").

I collected four tables based on information I received from many
USENET readers from various countries in order to cope with the
different needs of ISO Latin 1 users. First of all, a table with the
real characters in the range 160 - 255 (0xa0 - 0xff):


       ¡   ¢   £   ¤   ¥   ¦   §   ¨   ©   ª   «   ¬   ­   ®   ¯
   °   ±   ²   ³   ´   µ   ¶   ·   ¸   ¹   º   »   ¼   ½   ¾   ¿
   À   Á   Â   Ã   Ä   Å   Æ   Ç   È   É   Ê   Ë   Ì   Í   Î   Ï
   Ð   Ñ   Ò   Ó   Ô   Õ   Ö   ×   Ø   Ù   Ú   Û   Ü   Ý   Þ   ß
   à   á   â   ã   ä   å   æ   ç   è   é   ê   ë   ì   í   î   ï
   ð   ñ   ò   ó   ô   õ   ö   ÷   ø   ù   ú   û   ü   ý   þ   ÿ

Table 0 is a universal table that is expected to be suitable for many
languages. The letters are simply the ASCII versions without the
diacritics. The character '?' as a fallback substitution where no ASCII
string is suitable is used as little as possible, as '?' carries no
information and if we are pedantic, we have to replace nearly every
Latin 1 character over 160 by question marks.

       !   c   ?   ?   Y   |   ?   " (c)   a  <<   -   - (R)   ?
   ? +/-   2   3   '  mu   P   .   ,   1   o  >> 1/4 1/2 3/4   ?
   A   A   A   A   A   A  AE   C   E   E   E   E   I   I   I   I
   D   N   O   O   O   O   O   x   O   U   U   U   U   Y  Th  ss
   a   a   a   a   a   a  ae   c   e   e   e   e   i   i   i   i
   d   n   o   o   o   o   o   :   o   u   u   u   u   y  th   y

Table 1 replaces Latin 1 characters only with single ASCII characters.
This won't destroy the layout of textes designed to be printed with
monospaced fonts, but the replacements are often not very satisfactory:

       !   c   ?   ?   Y   |   ?   "   c   a   <   -   -   R   ?
   ?   ?   2   3   '   u   P   .   ,   1   o   >   ?   ?   ?   ?
   A   A   A   A   A   A   A   C   E   E   E   E   I   I   I   I
   D   N   O   O   O   O   O   x   O   U   U   U   U   Y   T   s
   a   a   a   a   a   a   a   c   e   e   e   e   i   i   i   i
   d   n   o   o   o   o   o   :   o   u   u   u   u   y   t   y

In some languages, only removing the diacritics as in table 0 gives
orthographically incorrect and unappropriate results. The following
table 2 might be much more suitable that table 0 in Danish, Dutch,
German, Norwegian and Swedish:

       !   c   ?   ?   Y   |   ?   " (c)   a  <<   -   - (R)   ?
   ? +/-   2   3   '  mu   P   .   ,   1   o  >> 1/4 1/2 3/4   ?
   A   A   A   A  Ae  Aa  AE   C   E   E   E   E   I   I   I   I
   D   N   O   O   O   O  Oe   x   O   U   U   U  Ue   Y  Th  ss
   a   a   a   a  ae  aa  ae   c   e   e   e   e   i   i   i   i
   d   n   o   o   o   o  oe   :   o   u   u   u  ue   y  th  ij

In some north european languages, any US-ASCII replacement for the
relevant Latin 1 characters is unacceptable for many people. In these
countries, national variants of 7-bit ISO 646 are still very popular.
These use the codes of []{}\|~^`$ for national characters. Table 2 has
been designed for Danish, Finnish, Norwegian and Swedish users of ISO
646 terminals:

       !   c   ?   $   Y   |   ?   " (c)   a  <<   -   - (R)   ?
   ? +/-   2   3   '  mu   P   .   ,   1   o  >> 1/4 1/2 3/4   ?
   A   A   A   A   [   ]   [   C   E   @   E   E   I   I   I   I
   D   N   O   O   O   O   \   x   \   U   U   U   ^   Y  Th  ss
   a   a   a   a   {   }   {   c   e   `   e   e   i   i   i   i
   d   n   o   o   o   o   |   :   |   u   u   u   ~   y  th   y


For the convenience of C programmers, I included the code of these
tables in this text. Just copy the following lines in your software:

-----------------------------------------------------------------------
/* Conversion tables for displaying the G1 set (0xa0-0xff) of
   ISO Latin 1 (ISO 8859-1) with 7-bit ASCII characters.
   Suggestions for improvement are welcome!

   Table   Purpose
     0     universal table for many languages
     1     single-spacing universal table
     2     table for Danish, Dutch, German, Norwegian and Swedish
     3     table for Danish, Finnish, Norwegian and Swedish using ISO 646

   Markus Kuhn <mskuhn@immd4.informatik.uni-erlangen.de>                 */

#define SUB "?"        /* used if no reasonable ASCII string is possible */
#define ISO_TABLES 4

static unsigned char *iso2asc[ISO_TABLES][96] = {{
  " ","!","c",SUB,SUB,"Y","|",SUB,"\"","(c)","a","<<","-","-","(R)",SUB,
  SUB,"+/-","2","3","'","mu","P",".",",","1","o",">>","1/4","1/2","3/4","?",
  "A","A","A","A","A","A","AE","C","E","E","E","E","I","I","I","I",
  "D","N","O","O","O","O","O","x","O","U","U","U","U","Y","Th","ss",
  "a","a","a","a","a","a","ae","c","e","e","e","e","i","i","i","i",
  "d","n","o","o","o","o","o",":","o","u","u","u","u","y","th","y"
},{
  " ","!","c",SUB,SUB,"Y","|",SUB,"\"","c","a","<","-","-","R",SUB,
  SUB,SUB,"2","3","'","u","P",".",",","1","o",">",SUB,SUB,SUB,"?",
  "A","A","A","A","A","A","A","C","E","E","E","E","I","I","I","I",
  "D","N","O","O","O","O","O","x","O","U","U","U","U","Y","T","s",
  "a","a","a","a","a","a","a","c","e","e","e","e","i","i","i","i",
  "d","n","o","o","o","o","o",":","o","u","u","u","u","y","t","y"
},{
  " ","!","c",SUB,SUB,"Y","|",SUB,"\"","(c)","a","<<","-","-","(R)",SUB,
  SUB,"+/-","2","3","'","mu","P",".",",","1","o",">>","1/4","1/2","3/4","?",
  "A","A","A","A","Ae","Aa","AE","C","E","E","E","E","I","I","I","I",
  "D","N","O","O","O","O","Oe","x","O","U","U","U","Ue","Y","Th","ss",
  "a","a","a","a","ae","aa","ae","c","e","e","e","e","i","i","i","i",
  "d","n","o","o","o","o","oe",":","o","u","u","u","ue","y","th","ij"
},{
  " ","!","c",SUB,"$","Y","|",SUB,"\"","(c)","a","<<","-","-","(R)",SUB,
  SUB,"+/-","2","3","'","mu","P",".",",","1","o",">>","1/4","1/2","3/4","?",
  "A","A","A","A","[","]","[","C","E","@","E","E","I","I","I","I",
  "D","N","O","O","O","O","\\","x","\\","U","U","U","^","Y","Th","ss",
  "a","a","a","a","{","}","{","c","e","`","e","e","i","i","i","i",
  "d","n","o","o","o","o","|",":","|","u","u","u","~","y","th","y"
}};
-----------------------------------------------------------------------

One might perhaps replace the "?" in SUB with another code that will be
displayed as a blinking question mark or something similar. Then the
user will know that the software wants to tell him/her that it can't
display this symbol and that it isn't a question mark. If your software
runs on hardware that supports already another 8-bit characters set
(e.g. IBM PC with code page 437, etc.) then it might be a much better
idea to include only one single table that uses the supported symbols
as well as possible and uses the strings suggested here only if no
better alternative is available. (BTW: IBM code page 850 which is
supported by MS-DOS and OS/2 contains ALL Latin 1 characters, but at
other positions, in order to stay compatible with the old IBM PC
character set.)

The following string conversion routine uses these tables. It may
easily be called before a text received from the network is sent to the
terminal, if the user has selected one of the tables:

-----------------------------------------------------------------------
/*
 *  Transform an 8-bit ISO Latin 1 string s1 in a 7-bit ASCII string s2
 *  readable on old terminals using conversion table t.
 *
 *  worst case: strlen(s2) == 3*strlen(s1)
 */
  void
Latin1toASCII(s1, s2, t)
  unsigned char *s1, *s2;
  int t;
{
  unsigned char *p, **tab;

  if (s1==NULL || s2==NULL) return;

  tab = iso2asc[t] - 0xa0;
  do {
    if (*s1 > 0x9f) {
      p = tab[*(s1++)];
      while (*p) *(s2++) = *(p++);
    } else {
      *(s2++) = *(s1++);
    }
  } while (*s1);

  return;
}
-----------------------------------------------------------------------

Many users all over the world are looking forward to your next software
release that will allow them to participate without pain in the world
of 8-bit character communication even before they get modern hardware
with ISO 8859-1 (or even better ISO 10646) character sets.

Feel free to contact me or experts in USENET group comp.std.internat if
you have any questions about modern character sets. Many thanks to
everyone who helped me to improve these tables!

Markus

-- 
Markus Kuhn, Computer Science student -=-=- University of Erlangen, Germany
Internet: mskuhn@immd4.informatik.uni-erlangen.de  |  X.500 entry available
----- Anyone participating in the use of MS-DOS, Heroin or Cocaine is -----
---- simply not getting the most out of life possible. (Brian Downing) ----
Re: ISO Latin 1 to 7-bit ASCII conversion (final draft!)
#438
Author: ojarnef Olle Jarnefors psv Peter...
Date: Wed, 16 Dec 1992 16:50
294 lines
11836 bytes
Some comments on Markus's proposal:

> ------------------------------------------------------------------------
> Representation of ISO 8859-1 characters with 7-bit ASCII
> --------------------------------------------------------
> 
> Markus Kuhn -- 1992-12-13
> 
> SUMMARY: This text describes a technique of displaying the 8-bit
> character set, which is used today in many modern network services, on
> old 7-bit terminals. Authors of software dealing with text received
> from international networks are strongly encouraged to implement this
> or similar methods as options in their software for the convenience of
> users all over the world. Implementation is often trivial.

By only offering four tables to choose from it's impossible to
satisfy the different needs of many languages and national
cultures covered by ISO 8859-1. Therefore it should be stressed
already in the summary that it is important that the conversion
table can be easily changed by system managers and end users.

> The disadvantages of this approach are often acceptable:
> 
>   a) No one-to-one mapping between Latin 1 and ASCII strings possible
>   b) Text layout may be destroyed by multi-character substitutions

Add "..., especially in tables" to mention the practically most
important case.  We would also suggest the addition of some text
about a related disadvantage:

:   *) Truncation may be necessary to fit textual data into
:      fields of fixed width

> ... Users should be able to switch between the different
> tables and the 8-bit transparent normal mode. ...

Many users can get along with only one default conversion that
is always activated.  For most others it's sufficient with one
alternative conversion.  We suggest this addition to the text:

: It should be possible and not difficult to configure a default
: conversion and possibly a default alternative conversion for
: the program on a per user basis.

> ... User defineable tables
> are always a nice possible extension.

In our opinion this is not only a nice feature but a user need
almost as important as the capability of switching between the
five conversions defined in this text.  Write something like:

: A simple way for users to modify the conversion tables is also
: desirable.

> Users should know if the text they read has been converted from the 
> original Latin 1 text. ...

Do you have in mind any specific way of visually indicating that
conversion takes place?  Underlining converted characters?
Something else?

> ... This avoids confusion if e.g. someone asks for
> sending him a 3<fraction 1/2>" disk [3½"], which will be displayed
> after the conversion as 31/2" (= 15.25").

This particular problem is most easily solved, we suggest, by
converting the character not to "1/2" but to " 1/2", with an
initial space character.

> ... First of all, a table with the
> real characters in the range 160 - 255 (0xa0 - 0xff):

Two of the "high" characters of ISO 8859-1

160 "A0 '240  NO-BREAK SPACE (NBSP)
173 "AD '255  SOFT HYPHEN (SHY)

are not ordinary graphic characters but a sort of hybrid
characters with both a graphic component and a control
component.

For soft hyphen the graphic component is an ordinary hyphen
glyph.  The functional component is that this glyph should only
be displayed or printed if the character is at the end of a
line.  If it is somewhere else in the line, _nothing_ should be
displayed or printed.

In the simple, context-insensitive conversion that we are
dealing with here, SHY should be converted to the empty string,
since it will occur less often at the end of a line than
elsewhere.

> Table 0 is a universal table that is expected to be suitable for many
> languages. The letters are simply the ASCII versions without the
> diacritics. The character '?' as a fallback substitution where no ASCII
> string is suitable is used as little as possible ...

Even if it is used as little as possible we suggest that "_" is
a better fallback substitution than "?".  Genuine question marks
can be important for the correct interpretation of a text.
it's unfortunate if they are mixed with replacement characters.
By the way, there is a case of a genuine conversion to "?" in
the tables, viz. of the Spanish inverted question mark.  This of
course must not be replaced by "_".

For TABLE 0 we suggest the following changes:

0a: 164 "A4 '244  CURRENCY SIGN
    Now:        SUBST (general substitution character)
    Suggestion: DOLLAR SIGN

    This character was actually invented for the international
    reference 7-bit character set of first version of ISO 646.
    It is the only character that can replace the dollar sign in
    ISO 646-compatible character sets and no other character may
    be allocated to code position 36.  Therefore this characters
    have in practice become almost equivalent in those countries
    where the currency sign is known at all. (ISO has adopted a
    system for currency codes that doesn't use the currency sign
    at all.)

0b: 173 "AD '255  SOFT HYPHEN (SHY)
    Now:        "-"
    Suggestion: ""

0c: 175 "AF '257  MACRON
    Now:        SUBST
    Suggestion: "-"

    Macron is a diacritical mark used in semi-phonetical
    notation to indicate that a vowel is to be pronounced with a
    long sound.  In fine typography it has the same width as the
    vowel letter and its vertical position is adjusted to the
    height of the letter.  In ISO 8859-1 text it has to be
    written before or, preferably, after the vowel.  In the
    conversion to a 7-bit character set its principal graphical
    form can still be preserved.

0d: 176 "B0 '260  DEGREE SIGN
    Now:        SUBST
    Suggestion: "o"

    This is most often used in numerical data and can, without
    risk of misunderstanding, be substituted with the lowercase
    "o", as is often done.

0e: 188 "BC '274  VULGAR FRACTION ONE QUARTER
    Now:        "1/4"
    Suggestion: " 1/4"

0f: 189 "BD '275  VULGAR FRACTION ONE HALF
    Now:        "1/2"
    Suggestion: " 1/2"

0g: 190 "BE '276  VULGAR FRACTION THREE QUARTERS
    Now:        "3/4"
    Suggestion: " 3/4"

0h: 247 "F7 '367  DIVISION SIGN
    Now:        ":"
    Suggestion: "-:"

    This symbol has the meaning of subtraction in some countries
    and some application fields.  In addition, division is
    in some countries normally indicated by "/" rather than ":".
    We therefore suggest that the conversion should be neutral
    by trying to approximate the appearance of the symbol,
    rather than its meaning.  "-:" is better than ":-", since
    the "-" can't be misinterpreted as a minus on a following
    number.

These suggestions also apply to TABLE 3.

For TABLE 1 we suggest the following changes:

1a: 164 "A4 '244  CURRENCY SIGN
    Now:        SUBST (general substitution character)
    Suggestion: DOLLAR SIGN

1b: 173 "AD '255  SOFT HYPHEN (SHY)
    Now:        "-"
    Suggestion: ""

1c: 175 "AF '257  MACRON
    Now:        SUBST
    Suggestion: "-"

1d: 176 "B0 '260  DEGREE SIGN
    Now:        SUBST
    Suggestion: "o"

1e: 171 "AB '253  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    Now:        '<'
    Suggestion: '"'

    The generic double quotation mark of ASCII can be used to
    reduce the risk for confusion with a genuine "<" used as a
    left angle parenthesis.

1f: 187 "BB '273  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
    Now:        '>'
    Suggestion: '"'

1g: 188 "BC '274  VULGAR FRACTION ONE QUARTER
    Now:        SUBST
    Suggestion: "/"

    By using "/" instead of the general fallback character at
    least we indicate that the real character was a vulgar
    fraction.

1h: 189 "BD '275  VULGAR FRACTION ONE HALF
    Now:        SUBST
    Suggestion: "/"

1i: 190 "BE '276  VULGAR FRACTION THREE QUARTERS
    Now:        SUBST
    Suggestion: "/"

> In some north european languages, any US-ASCII replacement for the
> relevant Latin 1 characters is unacceptable for many people. In these
> countries, national variants of 7-bit ISO 646 are still very popular.
> These use the codes of []{}\|~^`$ for national characters. ...

The last sentence is partially incorrect.  Write instead: "These
use the codes of [ ] \ { } | in a consistent manner for national
letters.  One of the codes also uses @ ^ ` ~ for additional
letters."  (The spaces make it easier to identify the special
characters.)

> ... Table 2 has
> been designed for Danish, Finnish, Norwegian and Swedish users of ISO
> 646 terminals:

Unfortunately it uses @ ^ ` ~ as conversions for the letters
E WITH ACUTE and U WITH DIAERESIS.  This will give good results
only with one of the two Swedish 7-bit character sets and
disastrous results with the other Swedish code and with the
Danish/Norwegian code.

2a: 201 "C9 '311  CAPITAL LETTER E WITH ACUTE
    Now:        "@"
    Suggestion: "E"

2b: 233 "E9 '351  SMALL LETTER E WITH ACUTE
    Now:        "`"
    Suggestion: "e"

2c: 220 "DC '334  CAPITAL LETTER U WITH DIAERESIS
    Now:        "^"
    Suggestion: "Ue"

2d: 252 "FC '374  SMALL LETTER U WITH DIAERESIS
    Now:        "~"
    Suggestion: "ue"

Finally we would like to say that we are impressed by Markus's
work.  It identifies an important and neglected problem, is
based on principles that are technically sound, and offers a
practical solution.  The alternative approaches used by people
working with EBCDIC-ASCII conversion in the IBM mainframe world
and by Kermit developers are less promising.

We are ourselves active in this area, and have designed a more
ambitious system, called "The C3 System for Character Code
Conversion", as part of a joint project between Swedish
universities.  Actually, it's not quite finished yet.  The big
difference is that Markus's solution only treats two conversion
paths:

Latin-1 -> ASCII
Latin-1 -> Scandinavian 7-bit character sets

The C3 system will provide 3 types of conversion - 1-1, legible,
and reversible - between any two of about 20 coded character
sets by means of conversion tables on 3 levels - prototype,
elementary, and working table.

An obvious complement to Markus's work is a system that makes
_input_ of all Latin-1 characters from a 7-bit terminal
possible.  To make this reasonably user-friendly seems to be a
rather difficult task though.

--
Olle Jarnefors                     Internet: ojarnef@admin.kth.se
Information Management Services        UUCP: ...!uunet!mcsun!sunic!kth!ojarnef
Royal Institute of Technology (KTH)  BITNET: ojarnef@sekth  Fax:+46 8 10 25 10
S-100 44  Stockholm, Sweden           Phone: +46 8 790 71 26 (time zone +0100)

---
Peter Svanberg, NADA, KTH                   Email: psv@nada.kth.se
Dept of Num An & CS,
Royal Inst of Tech                          Phone: +46 8 790 71 46
S-100 44  Stockholm, SWEDEN                 Fax:   +46 8 790 09 30
Re: ISO Latin 1 to 7-bit ASCII conversion (final draft!)
#471
Author: Markus Kuhn
Date: Fri, 18 Dec 1992 18:14
152 lines
6837 bytes
ojarnef@admin.kth.se, psv@nada.kth.se (Olle Jarnefors) writes:

>> Users should know if the text they read has been converted from the 
>> original Latin 1 text. ...

>Do you have in mind any specific way of visually indicating that
>conversion takes place?  Underlining converted characters?
>Something else?

I had just a good explanation in the documentation and a reminding message
after program start in mind. Extra characters like [(c)] and [x]
again make the replacements longer and destroy the layout even worse.
In some applications, they might be of use, so I'll describe them
as a possible option. If underlining etc. is possible, this would be
more attractive. But powerfull terminals that allow underlining,
bold face etc. often also provide ISO 8859-1 and then we have the
only REAL solution for the whole problem.

BTW: Kermit translates <copyright> to @, which looks similar, but has 
confused me already a lot. But reading USENET articels about transcriptions
using a transcription system is always very confusing.

>> ... This avoids confusion if e.g. someone asks for
>> sending him a 3<fraction 1/2>" disk [3="], which will be displayed
>> after the conversion as 31/2" (= 15.25").

>This particular problem is most easily solved, we suggest, by
>converting the character not to "1/2" but to " 1/2", with an
>initial space character.

This was only one example of a long list of possible problems that
can't be solved by a non 1-1 mapping solution. 1-1 mapping solutions
(e.g. [a:] according to RFC 1345) have the problem, that you need
to transform the possible pure ASCII sequences like [, a, : and ] with an
escape mechanism. This will modify even 7-bit textes and that was not
my intention. I don't want to design an strict encoding, but anything
that makes reading e.g. 8-bit USENET articles easier on old terminals.

>Two of the "high" characters of ISO 8859-1

>160 "A0 '240  NO-BREAK SPACE (NBSP)
>173 "AD '255  SOFT HYPHEN (SHY)

>are not ordinary graphic characters but a sort of hybrid
>characters with both a graphic component and a control
>component.

>For soft hyphen the graphic component is an ordinary hyphen
>glyph.  The functional component is that this glyph should only
>be displayed or printed if the character is at the end of a
>line.  If it is somewhere else in the line, _nothing_ should be
>displayed or printed.

I agree with you completely here, and that is how I would use these
characters if I had to develop a simple text editor with a few
word processing functions. WordStar users will be very familiar with
the SHY and NBSP characters. But the text of ISO 8859-1:1987(E) does
not define the functionality you describe your second and third sentence.

>In the simple, context-insensitive conversion that we are
>dealing with here, SHY should be converted to the empty string,
>since it will occur less often at the end of a line than
>elsewhere.

NO! I and ISO 8859-1 absolutely disagree here with you. SHY has to be
displayed as something similar to a hyphen. If you remove SHYs that are
not at the end of the line or are not followed by space, than this
might be acceptable, but please NEVER remove SHYs at the end of the line.
Even not in the trival context insensitive case that I selected in order
to keep things simple in the hope that many PD developpers will use the system.

>For TABLE 0 we suggest the following changes:

>0b: 173 "AD '255  SOFT HYPHEN (SHY)
>    Now:        "-"
>    Suggestion: ""

No, see above.

>0c: 175 "AF '257  MACRON
>    Now:        SUBST
>    Suggestion: "-"

My first suggestion was " ", but Steve Summit insisted on SUB. Perhaps
"-" is the best solution, especially if MACRON becomes popular for
underlining the previous line.

>0d: 176 "B0 '260  DEGREE SIGN
>    Now:        SUBST
>    Suggestion: "o"

>    This is most often used in numerical data and can, without
>    risk of misunderstanding, be substituted with the lowercase
>    "o", as is often done.

A better suggestion was " ", as 25 C and 23 34' 44'' will still be understood.
I'll change this to " ".

>0e: 188 "BC '274  VULGAR FRACTION ONE QUARTER
>    Now:        "1/4"
>    Suggestion: " 1/4"

One of my goals was to keep the length below 3. There are many other
strings that might cause possible confusion. In a context sensitive
system, this surely would make sense.

>    DIVISION SIGN         
>    Suggestion: "-:"

>    This symbol has the meaning of subtraction in some countries
>    and some application fields.  In addition, division is
>    in some countries normally indicated by "/" rather than ":".
>    We therefore suggest that the conversion should be neutral
>    by trying to approximate the appearance of the symbol,
>    rather than its meaning.  "-:" is better than ":-", since
>    the "-" can't be misinterpreted as a minus on a following
>    number.

I didn't know this, as both DIVISION SIGN and : are used in Germany 
for division. "-:" seems to be quite artificial, so if ":" really causes
much confusion, SUB may be better here. Which countries use ":" for 
substraction?

>1f: 187 "BB '273  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
>    Now:        '>'
>    Suggestion: '"'

Why?

>1g: 188 "BC '274  VULGAR FRACTION ONE QUARTER
>    Now:        SUBST
>    Suggestion: "/"

>    By using "/" instead of the general fallback character at
>    least we indicate that the real character was a vulgar
>    fraction.

The important information has been lost, and I would prefer one single
fallback character.

Thank you for your comments. I'll include at least some of them in my text.

BTW: There is a serious bug in the Latin1toASCII function and only one
person has detected it so far ...

Markus

-- 
Markus Kuhn, Computer Science student -=-=- University of Erlangen, Germany
Internet: mskuhn@immd4.informatik.uni-erlangen.de  |  X.500 entry available
----- Anyone participating in the use of MS-DOS, Heroin or Cocaine is -----
---- simply not getting the most out of life possible. (Brian Downing) ----
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads