home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lynx2.8.1dev.10.tar.gz / lynx2.8.1dev.10.tar / lynx2-8 / src / chrtrans / README.format < prev    next >
Text File  |  1998-05-02  |  5KB  |  131 lines

  1. Some notes on the format of table files used here.
  2. (See README.tables for what to do with them.)
  3.  
  4. The format is derived from stuff in the console driver of the
  5. Linux kernel (as are the guts of the chartrans machinery).
  6. THAT DOES NOT MEAN that anything here is Linux specific - it isn't.
  7.  
  8. [Note that the format may change, this is still somewhat experimental.]
  9.  
  10. There are four kinds of lines:
  11.  
  12. Summary example:
  13.  
  14.   # This line is a comment, the next line is a directive
  15.   O Brand new Charset!
  16.   0x41    U+0041 U+0391
  17.   U+00cd:I'
  18.  
  19. Description:
  20.  
  21. a) comment lines start with a '#' character.
  22.    (trailing comments are allowed on some of the other lines, if in doubt
  23.    check the examples..)
  24.  
  25. b) directives:
  26.    start with a keyword which may be abbreviated to one letter (first
  27.    letter must be capitalized), followed by space and a value.
  28.    Currently recognized:
  29.  
  30.     OptionName
  31.     The name under which this should appear on the O)ptions screen
  32.     in the list for Display Character Set
  33.     MIMEName
  34.     The name for this charset in MIME syntax (one word with digits
  35.         and some other non-letters allowed, should be IANA registered)
  36.     Default
  37.     If "Y[es]" or "1", this is the default (fallback) translation table,
  38.     it will be used for Unicode -> 8bit (or 7bit) translation if no
  39.     translation is found in the specific table.
  40.     FallBack
  41.     Whether to use the default table if no translation is found in
  42.     this table.  Normally fallback is used, "FallBack NO" or "FallBack 0"
  43.     disables it (actually, other values than "FallBack Y[es]" or
  44.     "FallBack 1" disable it).
  45.  
  46.     RawOrEnc
  47.     a number which flags some special property (encoding) for this
  48.         charset [see utf8_uni.tbl for example, see UCDefs.h for details].
  49.  
  50. c) character translation definitions:
  51.    they look like
  52.  
  53.    0x41    U+0041 U+0391 ...
  54.  
  55.    and are used for "forward" translation (mapping this charset to Unicode)
  56.    AS WELL AS "back" translation (mapping Unicodes to an 8-bit
  57.    [incl. 7-bit ASCII] code).
  58.  
  59.    For the "forward" direction, only the first Unicode is used; for
  60.    "back" translation, all listed Unicodes are mapped to the byte (i.e.
  61.    code point) on the left.
  62.  
  63.    The above example line would tell the chartrans mechanism:
  64.    "For this charset, code position 65 [hex 0x41] contains Unicode
  65.     U+0041 (LATIN CAPITAL LETTER A).  For translation of Unicodes to
  66.     this charset, use byte value 65 [hex 0x41] for U+0041 (LATIN CAPITAL
  67.     LETTER A) as well as for U+0391 (GREEK CAPITAL LETTER ALPHA)."
  68.  
  69.   [Note that for bytes in the ASCII range 0x00-0x7F, the forward translations
  70.    will (probably) not be used by Lynx.  It doesn't hurt to list those,
  71.    too, for completeness.]
  72.  
  73.    Some other forms are also accepted:
  74.  
  75.  * Syntax accepted:
  76.  *    <fontpos>    <unicode> <unicode> ...
  77.  *    <fontpos>    <unicode range> <unicode range> ...
  78.  *    <fontpos>    idem
  79.  *    <range>        idem
  80.  *    <range>        <unicode range>
  81.  *
  82.  * where <range> ::= <fontpos>-<fontpos>
  83.  * and <unicode> ::= U+<h><h><h><h>
  84.  * and <h> ::= <hexadecimal digit>
  85.  
  86. d) string replacement definitions:
  87.  
  88.   They look like
  89.  
  90.   U+00cd:I'
  91.  
  92.   which would mean "Replace Unicode U+00cd (LATIN CAPITAL LETTER I WITH
  93.   ACUTE" with the string (consisting of two character) I' (if no other
  94.   translation is available)."  Please note that replacement definitions
  95.   in certain charset table will override ones from the Default table.
  96.  
  97.   Note that everything after the ':' is currently taken VERBATIM, so
  98.   careful with trailing blanks etc.
  99.  
  100.  * Syntax accepted:
  101.  *      <unicode>    :<replace>
  102.  *      <unicode range>    :<replace>
  103.  *      <unicode>    "<C replace>"
  104.  *      <unicode range>    "<C replace>"
  105.  *
  106.  * where <unicode range> ::= <unicode>-<unicode>
  107.  * and <unicode> ::= U+<h><h><h><h>
  108.  * and <h> ::= <hexadecimal digit>
  109.  * and <replace> any string not containing '\n' or '\0', taken verbatim
  110.  * and <C replace> any string, with backslash having the usual C meaning.
  111.  
  112. Motivation:
  113.  
  114. - It is an extension of the format already in use for Linux (kernel,
  115.   kbd package), those files can be used with some minimal editing.
  116.  
  117. - It is easy to convert Unicode tables for other charsets, as they
  118.   are commonly found on ftp sites etc., to this format - the right
  119.   sed command should do 99% of the work.
  120.  
  121. - The format is independent of details of other parts of the Lynx code,
  122.   unlike the "old" LYCharsets.c mechanism.  The tables don't have to
  123.   be changed in synch when e.g. new entities are added to the entities.h.
  124.  
  125.  
  126. Note: the Default "7bit approximation" table can be used for
  127. case-insensitive search for non-ascii letters if no upper/lower case
  128. information provided by other means, e.g. locale.  It is assumed that
  129. upper/lower case letters have their "7bit approximation" images
  130. in def7_uni.tbl matched case-insensitively.
  131.