All rights reserved. Copyright (C) 1996-2004 by NARITA Tomio
Last modified at Jan.16th,2004.

# LV Homepage

  lv - a Powerful Multilingual File Viewer / Grep

  The latest version is ver 4.51: Download

## Table of Contents

  1. Copyright
  2. Feature
  3. Download lv
  4. Installation
  5. Usage
     - How to run lv?
     - Command line options
     - Configuration
     - Run-time commands
     - How to input search strings?
     - Regular expressions
  6. Limitations
  7. Coding systems
     - ISO 2022 based coding systems
       - iso-2022-cn
       - iso-2022-jp
       - iso-2022-kr
     - Extended Unix Code
       - euc-china
       - euc-japan
       - euc-korea
       - euc-taiwan
     - UCS transformation format
       - UTF-7
       - UTF-8
     - Other coding systems
       - iso-8859-*
       - shift-jis
       - big5
       - HZ
       - raw mode
  8. Annotation about encoding/decoding scheme
     - Handling of invalid codes
     - Backspace
     - How to look in a binary file?
  9. Auto selection of a coding system
     - Default coding system
     - How does lv select a coding system?
  10. Extension for text decoration
  11. Customization
  12. Bug report
  13. Release note
  14. Acknowledgement
  15. Reference

## Copyright

      All rights reserved. Copyright (C) 1996-2004 by NARITA Tomio.

      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation; either version 2 of the License, or
      (at your option) any later version.

      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

  See also GNU General Public License Version 2.

## Feature

- ### Multilingual file viewer

  lv is a powerful multilingual file viewer. Apparently, lv looks like less (1), a representative file viewer on UNIX as you know, so UNIX people (and less people on other OSs) don't have to learn a burdensome new interface. lv can be used on MSDOS ANSI terminals and almost all UNIX platforms. lv is a currently growing software, so your feedback is welcome and helpful for us to refine the future lv.

- ### Multiple coding systems

  lv can decode and encode multilingual streams through many coding systems, for example, ISO 2022 based coding systems such as iso-2022-jp, and EUC (Extended Unix Code) like euc-japan. Furthermore, localized coding systems such as shift-jis, big5 and HZ are also supported. lv can be used not only as a file viewer but also as a coding-system translation filter like nkf (1) and tcs (1).

- ### Multilingual regular expressions / Multilingual grep

  lv can recognize multi-bytes patterns as regular expressions, and lv also provides multilingual grep (1) functionality by giving it another name, lgrep. Pattern matching is conducted in the charset level, so an EUC fragment, for example, can be found in the ISO 2022 tailored streams, of course.

- ### Supporting the Unicode standard

  lv provides Unicode facilities which enables you to handle Unicode streams encoded in UTF-7 or UTF-8, and lv can also convert their code-points between Unicode and other charsets. So you can display Unicode or foreign texts on your terminal, using the code conversion function to your favorite charsets via Unicode. (However, MSDOS version of lv has none of the Unicode facility.)

- ### ANSI escape sequence through

  lv can recognize ANSI escape sequences for text decoration. So you can look ANSI-decorated streams such as colored source codes generated by another software just like intended image on ANSI terminals.

- ### Completely original

  lv is a completely original software including no code drawn from less and grep and other programs at all.

## Sample Images

- Multilingual sample image
  ``Hello''s on kterm with lv (gif 15Kbytes) (Original text from Mule demo)

## Download lv

  You can download lv archive. Changes between older versions are described in release note (in Japanese).

- lv v.4.51 (tar and gzip compressed)
- lv v.4.50 (tar and gzip compressed)

## Installation

Standard installation:

1. Expand lv archive, using gunzip/tar.
2. Change your working directory to ``(extracted sub directory)/build''.
3. Execute ``../src/configure'' to configure compiler flags.
4. Launch ``make''.
5. Then, launch ``make install'' as root.

MSDOS installation:

Before making lv, you need to install LSI C-86 Compiler (limited and freeware version of LSI C-86 for sample usage).

1. Expand lv archive, using gunzip/tar.
2. Change your working directory to ``(extracted sub directory)/src''.
3. Launch ``make -f Makefile.dos''.
4. Copy ``lv.hlp'', brief help description, to the same directory as lv.exe settled.

MSDOS version of lv directly outputs ANSI escape sequences without regard to termcap and terminfo. Perhaps you need an ANSI escape sequence driver named ``ANSI.SYS'' (or more sophisticated one) on MSDOS including DOS prompt on MS-Windoze. Since Windoze-NT does not seem to prepare such drivers for DOS prompt in default, please look into the driver configuration when lv fails to handle the terminal capability correctly.

## Usage

- ### How to launch lv?

When you just wish to display a file on a terminal, please launch lv from command line like this:

  % lv [options] files ...

Or, using redirect or pipe-line:

  % another_command | lv [options]
  % lv [options] < file

Compressed files that have suffix ``gz'', ``z'', or ``GZ'', ``Z'' are extracted by lv using zcat (1), and ``bz2'' or ``BZ2'' with bzcat (1). Please install zcat and bzcat that can expand all of them.

In case that standard output is not connected to an ordinal terminal but to redirect or pipe-line, lv works as a coding-system or code-points conversion filter like nkf (1) and tcs (1).

lv also works like grep (1) by giving it another name, lgrep. Please install symbolic (or hard) link whose name is lgrep to lv (1). Or, lgrep functionality is also turned on the option '-g'. lgrep is used like below:

  % lgrep [options] grep_pattern files ...
  % another_command | lgrep [options] grep_pattern
  % lgrep [options] grep_pattern < file

The coding-system of grep_pattern can be specified as ``keyboard coding system'' (see below).

- ### Command line options

  -A<coding-system>
    Set all coding systems to coding-system.
  -I<coding-system>
    Set input coding system to coding-system.
  -K<coding-system>
    Set keyboard coding system to coding-system. If it is not set, output coding system will be applied to it.
  -O<coding-system>
    Set output coding system to coding-system.
  -P<coding-system>
    Set pathname coding system to coding-system.
  -D<coding-system>
    Set default EUC coding system to coding-system.

    ### coding-system

      - a: auto-select
        Its entity is iso-2022-kr until an 8bit code is found.
      - c: iso-2022-cn
      - j: iso-2022-jp
      - k: iso-2022-kr
      - e: Extended Unix Code
        - ec: euc-china
        - ej: euc-japan
        - ek: euc-korea
        - et: euc-taiwan
      - u: UCS transformation format
        - u7: UTF-7
        - u8: UTF-8
      - l: iso-8859-1..9
        - l1..9: iso-8859-1..9
        - l0: iso-8859-10
        - lb,ld,le,lf,lg: iso-8859-11,13,14,15,16
      - s: shift-jis
      - b: big5
      - h: HZ
      - r: raw mode
        No decoding and encoding are performed.

    ### Coding-system translations / Code-points conversions:

    iso-2022-cn, -jp, -kr can be converted into euc-china or -taiwan, euc-japan, euc-korea, respectively (and vice versa). shift-jis uses the same internal code-points as iso-2022-jp and euc-japan.

    Since big5 characters can be converted into CNS 11643-1992 with negligible incompleteness, big5 streams can be translated into iso-2022-cn or euc-taiwan (and vice versa) with code-points conversion. Note that the iso-2022-cn referred here is not GB sequence, only just CNS one. You should remember that lv cannot translate big5 into GB directly.

    The search function of lv may not work correctly when lv additionally performs ``code-points'' conversion (not ``coding-system'' translation), because visible code and internal code are different from each other. lv will try to avoid this problem with converting charsets of search patterns automatically, but this function is not always perfect.

  -W<number>
    Screen width
  -H<number>
    Screen height
  -E'<editor>'
    Editor name (default 'vi -c %d')
    ``%d'' means the line number of current position in a file.
  -q
    Assert there is delete/insert-lines control
    Please set this option on a MSDOS ANSI terminal that has capability to delete and/or insert lines. As to termcap and terminfo version, it will be set automatically.

  -Ss<seq>
    Set ANSI Standout sequence to (default "7")
  -Sr<seq>
    Set ANSI Reverse sequence to (default "7")
  -Sb<seq>
    Set ANSI Blink sequence to (default "5")
  -Su<seq>
    Set ANSI Underline sequence to (default "4")
  -Sh<seq>
    Set ANSI Highlight sequence to (default "1")
    These sequences are inserted between ```ESC [`'' and ```m`'' to construct full ANSI escape sequences.

  -T<number>
    Set Threshold-code which divides Unicode code-points in two regions. Characters belonging to the lower region are assumed to have a width of one, and the higher characters are equated to a width of two. (Default: 12288, = 0x3000)
  -m
    Force Unicode code-points which have the same glyphs as iso-8859-* to be Mapped to iso-8859-* in a conversion from Unicode to another character set which also has the corresponding code-points, in particular, Asian charsets.

  -a
    Adjust character set for search pattern (default)
  -c
    Allow ANSI escape sequences for text decoration (Color)
  -d, -i
    Make regexp-searches ignore case (case folD search) (default)
  -f
    Substitute Fixed strings for regular expressions
  -k
    Convert X0201 Katakana to X0208
  -l
    Allow physical lines of each logical line printed on the screen to be concatenated for cut and paste after screen refresh
  -s
    Force old pages to be swept out from the screen Smoothly
  -u
    Unify several character sets, eg. JIS X0208 and C6226. In addition, lv equates ISO 646 variants, eg. JIS X0201-Roman, and unknown charsets with ASCII.
  -g
    Turn on lgrep mode.
  -n
    Prefix each line of output with the line number within its input file on lgrep.
  -v
    Invert the sense of matching on lgrep.
  -z
    Enable HZ auto-detection (also enabled by run-time C-t).

  -+
    Clear all options
    You can also turn OFF specified options, using ``+<option>'' like +c, +d, ... +z.

  -
    Treat the following arguments as filenames

  -V
    Show lv version
  -h
    Show this help

- ### Configuration

  Options can be described in the configuration file ``.lv'' (``_lv'' on MSDOS) located at you home directory. If and only if you use MSDOS, you can locate ``_lv'' at current working directory. They can be also described in the environment variable LV.

  Every configuration will be overloaded in the following order if there is. Command line options are always read finally.

  1. .lv located at your home directory
  2. (_lv located at current working directory: MSDOS only)
  3. Environment variable LV
  4. Command line options

  Examples:

  - MSDOS (Input is shift-jis, Screen height is 25 lines, Highlight seq is "1;45", Underline seq is "1")
    `set LV=-Is -H25 -Sh1;45 -Su1`

  - UNIX csh (Input is HZ-enabled auto-select, Output and Keyboard is both iso-2022-cn)
    `setenv LV '-z -Oc -Dec'`

- ### Run-time commands

  0-9:
    Argument
  g, <:
    Jump to the line number (default: top of the file)
  G, >:
    Jump to the line number (default: bottom of the file)
  p:
    Jump to the percentage position in line numbers (0-100)
  b, C-b:
    Previous page
  u, C-u:
    Previous half page
  k, w, C-k, y, C-y, C-p:
    Previous line
  j, C-j, e, C-e, C-n, CR:
    Next line
  d, C-d:
    Next half page
  f, C-f, C-v, SP:
    Next page
  F:
    Jump to the end of file, and wait for a data to be appended to the file until interrupted.
  /<string>:
    Find a string in the forward direction (regular expression)
  ?<string>:
    Find a string in the backward direction (regular expression)
  n:
    Repeat previous search in the forward direction
  N:
    Repeat previous search in the backward direction (not REVERSE)
  C-l:
    Redisplay all lines
  r, C-r:
    Refresh screen and memory
  R:
    Reload the current file
  :n:
    Examine the next file
  :p:
    Examine the previous file
  t:
    Toggle input coding systems
  T:
    Toggle input coding systems reversely
  C-t:
    Toggle HZ decoding mode
  v:
    Launch the editor defined by option -E
  C-g, =:
    Show file information (filename, position, coding system)
  V:
    Show LV version
  C-z:
    Suspend (call SHELL or ``command.com'' under MSDOS)
  q, Q:
    Quit
  UP/DOWN:
    Previous/Next line
  LEFT/RIGHT:
    Previous/Next half page
  PageUp/PageDown:
    Previous/Next page

- ### How to input search strings?

  You can input a string which consists of multi-bytes characters and search the string as a regular expression. lv's regular expression is similar to Mule's one.

  The following keys have special meanings in the keyboard input:

  C-m, Enter
    Enter the current string
  C-h, BS, DEL
    Delete one character (backspace)
  C-u
    Cancel the current string and try again
  C-p
    Restore a few old strings incrementally (history)
  C-g
    Quit

- ### Regular expressions

  - `. (period)'
    matches any single character. For example, ``a.b'' matches any three-character string which begins with `a' and ends with `b'.
  - `*'
    constructs repetition of an expression more than 0 times. For example, ``ab*'' matches `a', `ab' `abb', etc.
  - `+'
    constructs repetition of an expression more than once. For example, ``ab+'' matches `ab', `abb', but not `a'.
  - `?'
    matches the preceding expression either once or not at all. For example, ``ca?r'' matches `car' or `cr'; nothing else.
  - `[ ... ]'
    makes a character set. For example, ``[ab]+'' matches any string composed of just `a's and `b's. You can also include character ranges in a character set, by writing two characters with a `-' between them. For example, ``[a-z]'' matches any lower-case letter. If the characters implies a multi-bytes charset, lv makes a multi-bytes range, ordering code-points as unsigned integer. Mutually overlapping ranges (or charset) are not guaranteed.
  - `[^ ... ]'
    makes a complemented character set. For example, ``[^a-z0-9A-Z]'' matches all characters *except* letters and digits.
  - `^'
    matches the empty string at the beginning of a line.
  - `$'
    is similar to `^' but matches only at the end of a line.
  - `\'
    quotes the special characters.
  - `\1'
    matches characters each of which has a width of 1 column.
  - `\2'
    matches characters each of which has a width of 2 columns.
  - `\|'
    specifies an alternative. For example, ``foo\|bar'' matches either `foo' or `bar' but no other string.
  - `\( ... \)'
    \(, \) is a grouping construct. For example, ``ba\(na\)*'' matches `ba', `bana', `banana', etc.

## Limitations

- ### Up to 8192 bytes per a logical line

  lv manages file location pointers logically, separating LOGICAL lines by LF (line feed) or CR (carriage return), or CR/LF. The length of a logical line is limited up to 8192 bytes. And lv insert a LF forcibly when a line has a length over 8192 bytes. Note that all of CRs or CR/LF are replaced with single LF on UNIX during decoding. As to MSDOS, CRs are inserted before every LFs without thinking.

- ### Physical lines per a logical line

  A logical line is divided into PHYSICAL lines to fall into the screen width. lv limits physical lines up to "characters / 16" lines length per a logical line for management of them. Note that when a logical line has more lines, the rest of the limit are truncated and not displayed at all.

- ### Limitation of encoding space

  Encoding space is limited upto "characters * 4" bytes length for each decoded string. Even if encoded string would be longer than that, the encoding process is dropped at the limit.

- ### Limitation of the number of logical lines

  The number of logical lines is also limited. Currently, lv can handle up to about 2 Giga lines on UNIX (65000 lines on MSDOS). Note that lines which exceed this limitation cannot be displayed at all.

## Coding systems

- ### ISO 2022 based coding systems

lv handles ISO 2022 based coding systems as they are stateless on the logical line level. So you have to specify a coding system before decoding, and lv maybe adds redundant codes during encoding.

- iso-2022-cn
RFC 1922 tailored coding system.

| G0 | G1 | G2 | G3
--- | --- | --- | --- | ---
Designation | ASCII | GB 2312-80, CNS 11643-1992 Plane 1, ISO-IR-165 | CNS 11643-1992 Plane 2 | CNS 11643-1992 Plane 3..7

- iso-2022-jp
  RFC 1468 and 1554 tailored coding system. All 94charsets use G0, and all 96charsets use G2 with single shift inside lv.

- iso-2022-kr
  RFC 1557 tailored coding system. All charsets except ASCII use only G1 with locking shift inside lv.

- ### Extended Unix Code

  lv can decode mixture texts of euc-* and iso-2022-*, when you select euc-* as the input coding system.

  - euc-china

  | G0 | G1 | G2 | G3
  --- | --- | --- | --- | ---
  Designation | ASCII | GB 2312-80 | not used | not used

  - euc-japan

    | G0 | G1 | G2 | G3
    --- | --- | --- | --- | ---
    Designation | ASCII | JIS X 0208 | JIS X 0201 Katakana | JIS X 0212

  - euc-korea

    | G0 | G1 | G2 | G3
    --- | --- | --- | --- | ---
    Designation | ASCII | KS C 5601-1987 | not used | not used

  - euc-taiwan

    | G0 | G1 | G2 | G3
    --- | --- | --- | --- | ---
    Designation | ASCII | CNS 11643 Plane 1 | CNS 11643 Plane 2-7 | not used

- ### UCS transformation format

  - UTF-7
  A Mail-Safe Transformation Format of Unicode. See RFC 1642 (Experimental) and UTF-7 Encoding Form .

  - UTF-8
    8bit Unicode encoding. See UCS Transformation Format 8 (UTF-8).

  lv can convert character codesets between Unicode and the following charsets: GB 2312-80, JIS X 0208, JIS X 0212, KSC 5601-1987, Big Five, CNS 11643-1992 Plane 1-2, and ISO 8859-1..16.

  Currently lv's mapping table is based on Unicode 1.1.

  Encoding | Charset used for mapping from Unicode
  --- | ---
  iso-2022-cn | GB 2312-80 (primary), CNS 11643-1992 (secondary), (ISO 8859-*)
  iso-2022-jp | JIS X0208, JIS X0212, JIS X0201, (ISO 8859-*)
  iso-2022-kr | KSC 5601-1987, (ISO 8859-*)
  euc-china | GB 2312-80
  euc-japan | JIS X0208, JIS X0212, JIS X0201
  euc-korea | KSC 5601-1987
  euc-taiwan | CNS 11643-1992 Plane 1-2
  shift-jis | JIS X0208, JIS X0201
  big5 | Big Five

  When you output Unicode CJK unified ideographs through iso-2022-cn, GB 2312-80 is used primarily, and the rest which are not included in GB are mapped into CNS 11643-1992.

- ### Other coding systems

  - iso-8859-*
  ASCII and one of ISO 8859/1-16 are designated on G0:G1 invoked to GL:GR, respectively.

  - shift-jis
    lv can decode mixture texts of shift-jis and iso-2022-jp, when you select shift-jis as the input coding system.

    Note that euc-japan and shift-jis are mutually exclusive for decoding.

  - big5
    Since big5 characters can be partially converted into CNS 11643-1992 Plane 1-2, lv can load big5 streams and output them through ISO 2022 based coding systems or euc-taiwan. Several big5 characters which have no correspondence to CNS are output as ``?'' (question mark).

  - HZ
    HZ is defined in RFC 1843. It would consist of four escape sequences, ~~, ~{, ~}, and ~\n, but lv does not support the last one, ~\n sequence, and leaves it alone. You should remember that lv does not conform full of RFC 1843. HZ will be decoded as euc-china in lv.

  - raw mode
    No decoding and encoding is performed.

## Annotation about encoding/decoding scheme

- ### Handling of invalid codes

Characters belonging to invalid character sets, for example, JIS X 0212 for shift-jis, are printed as ASCII at its code-point up to originally supposed width.

Invalid characters which cause error state under specified coding system might be ignored partially. If it is printable, it will be output as a control character.

- ### Backspace

  BS (backspace) characters included in files are interpreted as follows:

  - <char> BS <char>
    Highlighted <char>
  - ``_'' BS <char>
    Underlined <char>
  - ``o'' BS ``+''
    Highlighted ``o''
  - Otherwise
    BS deletes a character on the left side of it.

- ### How to look in a binary file?

  Decoding of lv is robust even for binary files. You can look in a binary file and decode embedded strings in it. However, there might be ignored characters if you decode binary files through a particular coding system. Option -Ir, raw decoding, saves such ignored characters other than CRs.

## Auto selection of a coding system

- ### Default coding system

Default input coding system is auto-select described below. In auto selection state, lv decodes an input stream as iso-2022-kr. Default output coding system is iso-2022-jp on UNIX, or shift-jis on MSDOS (as long as Japanese version of lv).

If you don't specify any input coding system, that is, when auto-select is specified, lv will select input coding system automatically.

- ### How does lv select a coding system?

  Auto selection state continues until an 8bit code is found, and the auto selection of input coding system is performed on demand.

  When a 8bit code is found during file loading and the input coding syste is auto-select (its entity is iso-2022-kr), lv examines ``the first line that contains the first 8bit code''. Then lv tries several 8bit decodings as below:

  - simple euc decoding test (included euc-china and euc-korea)
  - euc-japan (or euc-taiwan) decoding test
  - big5 decoding test
  - shift-jis decoding test
  - utf-8 decoding test (only on platforms other than MSDOS)

  The coding system cheking results are examined in the following order:

  1. Only when there is no error state in simple euc decoding, lv will assumes the input coding system is default EUC coding system, which is defined by option -D.
  2. Only when there is no error state in euc-japan (or euc-taiwan) decoding, lv will assumes the input coding system is euc-japan (Japanese version). Since there is no syntactical difference between euc-taiwan and euc-japan, this action is to be altered in Taiwanese environment.
  3. Only when there is no error state in big5 decoding, lv will assumes the input coding system is big5. Since big5 sequences are similar to EUCs, sometimes its streams will be misunderstood as EUCs.
  4. Only when there is no error state in shift-jis decoding, lv will assumes the input coding system is shift-jis. Since shift-jis shares code-points with EUCs partially, its streams may be possibly misunderstood as EUCs.
  5. Only when there is no error state in utf-8 decoding, lv will assumes the input coding system is utf-8. Like big5 and shift-jis, sometimes its steams will be misinterpreted as another coding system.
  6. Otherwise, lv will assumes the input coding system is ISO 8859-1 (latin-1).

  If a text contains only EUC code points, it is hard to identify the language the EUC coding system represents. So lv provides default EUC coding system used when lv chooses the input coding system from EUCs. Default EUC coding system is set by option -D (euc-japan on Japanese version LV).

  You can toggle coding systems even while viewing a file by run-time command `t' and `T', which traverses through all coding sytems implemented in LV. In addition, you can toggle HZ decoding mode by C-t on demand.

  You should remember that the auto-selection mechanism of LV works incorrectly in some cases. Especially, if a text contains only JIS X 0201 Katakana in shift-jis, it will be misinterpreted as euc-japan.

  If the result of auto selection is incorrect and you know the input coding system, please set it by the option -I, which disables auto selection.

## Extension for text decoration

- Option -c enables ANSI escape sequences in the form of ESC [ ps ; ... ; ps m, where ps takes following values:

  - 1: Highlight
  - 4: Underline
  - 5: Blink
  - 7: Reverse
  - 30: Black
  - 31: Red
  - 32: Green
  - 33: Yellow
  - 34: Blue
  - 35: Magenta
  - 36: Cyan
  - 37: White
  - 40-47: Reverse of 30-37

- Every sequence is independent of one another. lv will reset all values before new value is set. Meanwhile, multiple pss are accepted within one sequence.
- Every sequence is only effective within a logical line. On crossing logical lines, all attributes are reset automatically. Please recall that lv handles each logical line as stateless.
- You can specify one color at once. When multiple colors are specified, the last one is effective.
- As to reversed characters, a specified color is applied to the ``reversed background color''. You cannot specify the color of ``out-clipped characters''.
- You can customize actual sequences to be output to the screen. Please specify them by option -S.

## Customization

- Customization for command key bindings
  Please modify the keybind table in keybind.h.

- Customization for terminal controls
  When you add a new terminal control, please add codes to console.c. When you wish to change interpretation of escape sequences, please modify console.c and escape.c. However, some ANSI escape sequences are configurable through options.

- Changing default screen size of MSDOS ANSI terminals
  Default screen size is 80 columns by 24 rows. To change this, please modify console.c. However, screen size can be specified through options.

- Changing default coding systems
  Currently, Japanese version of lv uses following values:

    | MSDOS | UNIX
    --- | --- | ---
    Input: | auto-select | auto-select
    Keyboard: | shift-jis | iso-2022-jp
    Output: | shift-jis | iso-2022-jp
    Pathname: | shift-jis | iso-2022-jp
    Default EUC: | euc-japan | euc-japan

  To change above, please modify lv.c. However, those coding systems can be specified through options.

- Customization for coding systems
  Currently, an ISO 2022 universal decoder, and EUC, HZ, shift-jis, big5, UTF-7, UTF-8 decoders are implemented. When you wish to add another coding systems, please add source codes, referencing ctable_t.h, ctable.c, encode.c, decode.c, iso2022.c, etc.

- Customization for character sets
  Please add your favorite character sets, referencing itable_t.h, itable.c, etc. Currently recognized character sets are itemized below. You have to specify code length (bytes) and graphical width (columns) of each character as attributes. There is no necessity that code length and graphical width equal each other. Current implementation does not support per character length, but you can specify the maximum length of them in itable, it may not cause problems. You cannot add charsets whose code length is more than 3 bytes. (If you desire to do it, you can add only little modification to lv, so up to 4bytes charsets can be supported by lv.)

    ISO 646 United States (ANSI X3.4-1968)
    JIS X0201-1976 Japanese Roman
    JIS X0201-1976 Japanese Katakana
    ISO 8859/1 Latin alphabet No.1 Right part
    ISO 8859/2 Latin alphabet No.2 Right part
    ISO 8859/3 Latin alphabet No.3 Right part
    ISO 8859/4 Latin alphabet No.4 Right part
    ISO 8859/5 Cyrillic alphabet
    ISO 8859/6 Arabic alphabet
    ISO 8859/7 Greek alphabet
    ISO 8859/8 Hebrew alphabet
    ISO 8859/9 Latin alphabet No.5 Right part
    ISO 8859/10 Latin alphabet No.6 Right part (Nordic)
    ISO 8859/11 Thai alphabet
    ISO 8859/13 Latin alphabet No.7 Right part (Baltic Rim)
    ISO 8859/14 Latin alphabet No.8 Right part (Celtic)
    ISO 8859/15 Latin alphabet No.9 Right part
    ISO 8859/16 Latin alphabet No.10 Right part
    JIS C 6226-1978 Japanese kanji
    GB 2312-80 Chinese hanzi
    JIS X 0208-1983 Japanese kanji
    KS C 5601-1987 Korean graphic charset
    JIS X 0212-1990 Supplementary charset
    ISO-IR-165
    CNS 11643-1992 Plane 1..7
    JIS X 0213-2000 Plane 1..2
    Big5 Traditional Chinese
    Unicode 1.1

  These charset are only recognized by lv, and it is depend on your terminal's capability that actually can display them or not.

  Inversely, you can handle non-listed charsets above as latin-1 in such case as a 8bit coding system is displayed on a 8bit terminal. (If there is no code conversion and each character has one column.)

## Bug report

  Please send a bug report to nrt@ff.iij4u.or.jp when you find any bugs around lv.

## Release note

  Click here. (in Japanese)

## Acknowledgement

  I would like to express my 感謝の気持ち for everybody who works together in connection with lv, especially for package maintainers, bug reporters, and early beta testing members:

  後藤さん(gotom@debian.or.jp)

  野村さん(nomu@ipl.mech.nagoya-u.ac.jp)
  石塚さん(ishizuka@db.is.kyushu-u.ac.jp)
  野中さん(nona@in.it.okayama-u.ac.jp)
  松原さん(moody@osk.threewebnet.or.jp)
  村井さん(murai@geophys.hokudai.ac.jp)

## Reference

- JIS X 0202-1991 情報交換用符号の拡張法
  Information processing - ISO 7-bit and 8-bit coded character sets - Code extension techniques
- JIS X 0208-1990 情報交換用漢字符号
  Code of the Japanese graphic character set for information interchange
- JIS X 0212-1990 情報交換用漢字符号 - 補助漢字
  Code of the supplementary Japanese graphic character set for information interchange
- RFC 1468 Japanese Character Encoding for Internet Messages
- RFC 1554 ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP
- RFC 1557 Korean Character Encoding for Internet Messages
- RFC 1843 HZ - A Data Format for Exchanging Files of Arbitrarily Mixed Chinese and ASCII characters
- RFC 1922 Chinese Character Encoding for Internet Messages
- RFC 2152 UTF-7 A Mail-Safe Transformation Format of Unicode
- RFC 2279 UTF-8, a transformation format of ISO 10646
- Understanding Japanese Information Processing (『日本語情報処理』)
  Ken Lunde O'Reilly & Associates, Inc. ISBN 1-56592-043-0
- CJK.INF Version 2.1 (July 12, 1996)
  Online Companion to "Understanding Japanese Information Processing"
  Ken Lunde
- Unicode Mapping Data at the Unicode Consortium web site.
- Compilers - Principles, Techniques, and Tools
  Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman Addison-Wesley, ISBN 0-201-10088-6