Symbols Processing, JFW, build 45


Symbol processing is now functional.  There are additional
settings in each of the synth driver ini files (the ones specified
on the driver= line of jfw.ini).  For each context, there is  a
JAWSPunctuation= line.  (This is in addition to the Punctuation=
line which controls synth punctuation only.) Settings are 0 through
3, which correspond to None, Some, Most, and All respectively.
These choices also appear in the new "Text processing" dialog box
in the JFW Options menu.

The JAWSPunctuation= line does not have to be added to existing
Synth.ini files, it will automatically default to "Most" if the line
does not exist.  The line will be added automatically by JFW
whenever "OK" is selected in the Text Processing Dialog.

A new line in the Option section of .jcf files controls whether
JAWS or synthesizer punctuation processing is used.
JAWSPunctuationEnabled= 1 means to use JAWS punctuation processing.
"0" means just pass the punctuation symbols through to the
synthesizer and let it handle it, which is what JFW has been doing
up until now.

In order for JAWS punctuation processing to function, there needs
to be a symbols.ini file in the active language's settings
directory, e.g. \jfw\settings\enu\symbols.ini.  There is one
section in this file for each synthesizer type.  e.g.  [Accent
Symbols].  There is also a section  called [Synonyms] with lines of
the form

 acntsa17=accent
     kre=dectalk

which says that the names to the left of the equal sign are
synonyms for the names to the right.  This means that the [Accent
Symbols] section will be used for the acntsa17 driver and that the
[Dectalk Symbols] section will be used for the KRE driver.

Each [XXX Symbols] section contains a line of the form:
     SynthPunctuation=1
which indicates what that synthesizer's punctuation setting should
be when JAWS punctuation processing is enabled.  This may need to
be adjusted for your synthesizer: if you hear some symbols spoken
twice, or not spoken when they should be, then this may be set
wrong.  If you hear too much punctuation (symbols spoken twice)
then decrement this setting, e.g. "SynthPunctuation=0".  If you do
not hear enough punctuation then increment this value, e.g.
"SynthPunctuation=2".

Each [XXX Symbols] section consists primarily of lines of the form

symbol1=! 10000011 exclaim
symbol2=" 10000011 quote

The Symbol1, Symbol2, ... tags are arbitrarily assigned, but each
must appear only once in each section.  The information following
the = can be divided into three parts, separated from one another
by a space.  First comes the symbol itself.  Next eight digits
(either 0 or 1), and lastly the word or words which should be
spoken as this symbol's name.  The eight digits indicate how this
symbol should be processed in each of the four punctuation modes
(All, Most, Some, and None).  The  first pair control behavior when
punctuation is set to all (3), the second pair when it is set to
Most (2)  and so on.  The first of each bit pair controls whether
or not the symbols name should be spoken when the symbol is
encountered.  The name is spoken when the bit is set to 1, it is
not spoken when it is set to 0.  The second bit of the pair
determines whether or not the symbol itself is sent out to the
synthesizer.  When this bit is 1, the symbol is stripped out, when
it is 0, it is sent to the synth.

There are some special lines in the [XXX Symbols] section which
indicate what should be spoken when certain other things are
encountered in the text.

Dot=dot
Point=point
NumericComma=Comma
NumericColon=Colon
Space=space
Blank=blank

