bidiv

bidiv(1)                             Ivrix                            bidiv(1)



NAME
       bidiv - bidirectional text filter

SYNOPSIS
       bidiv [ -plj ] [ -w width ] [file...]

DESCRIPTION
       bidiv is a filter, or viewer, for birectional text stored in logical-
       order, into visual-order 8-bit text which can be viewed on terminals
       that do not handle bidirectionality. The output visual-order text is
       formatted assuming a fixed number of characters per line (automatically
       determined or given with the -w parameter).

       The current version is oriented towards Hebrew, and therefore reads
       ISO-8859-8-i (logical) encoded text and outputs ISO-8859-8 (visual)
       encoded text. However, bidiv can be easily adapted to other encodings
       and right-to-left languages.

       bidiv reads each file in sequence, converts it into visual order and
       writes it on the standard output.  Thus:

              $ bidiv file

       prints file on your terminal (assuming it has the appropriate fonts,
       but no bidirectionality support), and:

              $ bidiv file1 file2 | less

       concatenates file1 and file2, and shows the results using the pager
       less.

       If no input file is given, bidiv reads from the standard input file.

       For more ideas on how to use bidiv, see the EXAMPLES section below.

OPTIONS
       -p     Paragraph-based direction (default): When formatting a
              bidirectional output line, bidiv needs to be aware of that
              line's base direction. A line whose base direction is RTL (right
              to left) gets right-justified and its first element appears on
              the right. Otherwise, the line is left-justified and its first
              element appears on the left.

              The -p option tells bidiv to choose a base direction per
              paragraph, where a paragraph is delimited by an empty line. This
              is bidiv's default behavior, and usually gives the expected
              results on most texts and emails.

              The direction of the entire paragraph is chosen according to the
              first strongly-directioned character (i.e., an alphabetic
              character) appearing in the paragraph. Currently, if the first
              output line of a paragraph has no directional characters (e.g.,
              a line of minus signs before an email signature, or a line
              containing only numbers) that line is output with the same
              direction of the previous paragraph, but it does not determine
              the direction of the rest of the paragraph. If the first line of
              the first paragraph does not have a direction, the RTL direction
              is arbitrarily chosen.

       -l     Line-based direction: This option choose an alternative method
              of choosing each output line's base direction. When this option
              is enabled, the base direction of each output line is determined
              on its own (again, according to the first character on the line
              with a strong direction). This method may give wrong results in
              the case where a line starts with a word of the opposite
              direction. This case is rare, but does happen under random line-
              splitting circumstances, or when the text is defining words of a
              foreign language.

              TODO: maybe add another option to choose direction based on
              _input_ line. Would that be useful at all? I doubt it.

       -j     Do not justify: By default, RTL lines are right-justified, i.e.,
              they are padded with spaces on the left when shorter than the
              required line width (see the -w option). The -j option tells
              0bidiv not to preform this justifications, and leave short lines
              unpadded.

       -w width
              bidiv formats its output for lines of the given width. Lines are
              split when longer than this width, and RTL lines are right-
              justfied to fill that width unless the -j option is given.

              When the -w option is not given, bidiv uses the value of the
              COLUMNS variable, which is usually automatically defined by the
              user's shell.  When that both the -w option and the COLUMNS
              variable are missing, the default of 80 columns is used.

OPERANDS
       The following operand is supported:

       file    A path name of an input file.  If no file is specified, the
               standard input is used.


EXAMPLES
       1. bidiv README | less

       2. man something | bidiv | less

          (or groff -man -Tlatin1 something.1 |sed 's/.^H\(.\)/\1/g' |../bidiv
          -w 65)

       3. set "bidiv" as a filter for your mail program (mutt, pine, etc.) for
          viewing mail with the ISO 8859-8-i character set.


ENVIRONMENT
       COLUMNS see -w option.

EXIT STATUS
       The following exit values are returned:

       0   All input files were output successfully.

       >0  An error occurred.

AUTHOR
       Written by Nadav Har'El, http://nadav.harel.org.il.

       Please send bug reports and comments to nyh@math.technion.ac.il.

       The latest version of this software can be found in
       ftp://ftp.ivrix.org.il/pub/ivrix/src/cmdline

SEE ALSO
       cat(1), fribidi(3)



Bidiv                             19 Feb 2001                         bidiv(1)