Flowed text is a form of text in which spaces play the role of continuation
of paragraphs. Technically it was first defined in
RFC 2646, later extended
in RFC 3676. Alpine
support of flowed text conforms to the latter RFC.
The main point of flowed text is to display text correctly despite of the
screen width of the recipient of the message. Depending on the size of the
screen of the recipient of the message, the displayed text may contain
text wrapped in undesirable ways. This is a more delicate point in small
screens (like a PDA, cell phone, etc). Normally when a text written in a
80 columns terminal is displayed in a 30 columns screen, lines are cut in
the middle and the formatting of the message is destroyed. Vice versa,
when a message was written in a 30 columns screen and it is displayed in a
80 column screen, the message feels like it was wrapped too early. The
purpose of flowed text is to be able to send and receive text that will
adapt to the screen width of the display device, no matter what device
that is, so the same text will look well formatted in
a 30 or 80 columns screen.
In every message there are three types of lines, signature separator lines,
flowed lines and fixed lines. There can be any number of these lines.
A signature separator line is a line whose only
content in two dashes followed by a space. This is an old convention in
USENET which got propagated to e-mail.
A flowed line is a line which is not a signature
separator line whose last character is a space. The idea is that the next
line to a flowed line is a line in the same paragraph as that line. In
other words, you are signaling with this space a continuation of
paragraph.
A fixed line is a line that does not end in a space.
A fixed line is the last line of a paragraph.
In other words, in flowed text, a paragraph is composed of several
flowed lines ended by a fixed line.
If you can resize the screen of your web browser to widen or shorten the
columns, you will see the text of this page adapting to the screen width.
This is exactly what is supposed to happen with flowed text in e-mail, and
the interplay between fixed and flowed lines is used to accomplish this.
Of course, you could have a paragraph of only fixed lines, but it will
fail the test described above, which is undesirable since we want text to
adapt to any screen size.
The above plan is a good idea, but there is a problem when you try to resize
quoted text, this is because a 74 characters quoted line, when resized to a
screen of 30 columns in a web brower produces several lines. Only one of these
lines is quoted (the first one). The other two lines are not. There is an
intent in this format to warn the displaying agent that there is quoted text,
so that wrapping will preserve quoting in all lines. Since it is very
difficult to guess random quote strings, there is a simplification where the
only quote allowed is ">". The string "> " (a bigger than sign followed by a
space) is not considered a quote string. In this way, you only need to count
how many consecutive ">" characters are in a
line in order to know the quote string of a paragraph. Alpine deviates a
little bit of this convention and it accepts "> " as a quote string too.
Accepting only one type of quote string makes this format simple. However,
there is a tradition of adding a quote to any line that begins with the string
"From ", which adds one level of quoting to a
paragraph containing such line. Due to this problem, the format destroys this
quote by "stuffing a space" to its left. When processing a message, leading
spaces from lines must be removed, which means that a sending agent must add
two spaces so that only one be displayed. Alpine takes care of this, which means
that it adds a space to the text that you wrote automatically.
There are more technical details which have been omitted from this
presentation, which you can read directly in the RFC that defines flowed text.
This is just a quick summary so that you can get the basic ideas of what
this format is, and how Alpine handles it.
[ ] Do Not Send Flowed Text (pinerc name: quell-flowed-text): If this option
is enabled, Alpine will not send messages that are marked
as flowed text, but still display it.
[ ] Strip White Space Before Sending (pinerc name: strip-white-space-before-send):
If this feature is enabled, all spaces at the end of a line will de deleted
and therefore the message will not be tagged format=flowed. If not, then
all trailing spaces in a line will be replaced with only one space.
Viewer Margin Left (pinerc name:
viewer-margin-left): this feature has nothing to do with flowed text, but
it is the symmetrical option to the next one, which does have to do with
flowed text. In any case the number specified here is the number of spaces
added at the beginning of each line when Alpine displays text, be it
flowed or not.
Viewer Margin Right (pinerc name:
viewer-margin-right): One of the problems of the display of flowed text is
that it will be displayed up to right most column of the screen. This
configuration variable tells Alpine how many characters it should leave
empty up to the right margin. Normally this makes reading flowed text
nicer. However, if your screen is too wide this may have the undesirable
effect of having too much text in each line of the screen. In Alpine4.61
you can use this feature to specify in which column you want Alpine to
wrap flowed text in the screen, this is done by entering the column number
followed by the lowercase letter c, so for example 72c
means to wrap text at the 72 column of the screen.
The amount of space left for displaying text in the screen between Viewer
Margin Left and Viewer margin Right must be at least 8 characters. In case
this limit is passed, this variable goes back to its default value of 4
characters.
Quote Replace String (pinerc name: quote-replace-string)
This configuration option has to do with the display of a flowed
message when you read it, this does not apply to what you see
when you reply or forward a message.
This is a configuration option which allows you to replace the quote string
when a flowed text is being displayed. For example one could replace the
quote string to be | instead of >.
This is useful because the default is that different levels of quoting
are displayed separated by spaces, and you can use this option to override
this behavior.
If you use this option you could define this variable to be
">", which has the effect of leaving no
space between quote strings, so more quoted text per line is displayed. The
problem of defining this variable like that, is that your displayed text
will appear merged with the quote string, which may be undesirable. One way
to create such space is to add it to the quote string, as in
"> ". This defeats the purpose of this
variable, since it makes the quote string much longer than needed.
The way to avoid this problem is to define the quote string replace with
no space at the end, to save space and to tell Alpine to add a space at the
end, between the full quote string and the displayed text. This is done by
defining this field as ">" " "
(a bigger than sign enclosed in double quotes, separated by a space
of a space enclosed in double quotes). The last space enclosed in quotes is
the text that Alpine adds between the full quote string and the text of the
body and can be replaced by anything (yes, even anoter quote string with a
space at the end!)
[X] Quote Replace Nonflowed (pinerc name: quote-replace-nonflowed) is a feature
which enables Alpine to use the Quote Replace String value for every message,
not only those that are flowed text.
There are several situations under which Alpine will send flowed text.
When composing a new message, or continuing a message that is already
flowed.
When replying to a message, and your quote string is either ">" or
"> ". Observe that if you correspond with someone who uses a
different quote string than the above mentioned strings and has an e-mail
program that is aware of flowed text, then when you quote quoted text in
their messages using either ">" or "> ", there's a very good
chance that the message will look corrupted in the screen of the
recipient, in the sense than the second level of quoting will look
mangled. If your recipient reads the message using Alpine, there is a patch which will fix this for you when
you read that message, but if you do not, text may look garbled.
When forwarding a message.
Of course, none of these applies if you have already turned off sending
of flowed text.
There is also an
option to not to send flowed text
even if you have not enabled any of the features that would permanently
disable sending of flowed text. This can be done when you are in the
editor and press ^X to send a message. In the menu of the bottom of the
screen there is a configuration option ^V, which is active only when the
message that you are going to send will be tagged format=flowed. When you
press ^V Alpine will not tag that message as format=flowed.
If you are sending flowed text, and you don't know if your text is
already flowed, you can force it to flow by justifying it. In Pico this is
done by pressing ^J. This only justifies one paragraph at the time.
Observe that you can justify the full message with the command ^W^U (the
reason why it was redefined was because it is possible to press ^W^J
without intending to do so, but not ^W^U). Alpine (actually Pico) does a
good job of reflowing text when justifying it (modulo a few disagreements
I have with the way some text is flowed), especially when the only quote
string is either ">" or "> ". If there are other quote strings
in the message that you are trying to flow, you will need a patch to do this more reliably.