Upper vs lower case - important note regarding `l' and `I'
----------------------------------------------------------
-We maintain separate dictionaries for upper and lower case. At the
+We maintain separate dictionaries for upper case (Upper), lower case
+(Lower), and (initial portions of) mid-phrase words (Word). At the
beginning of each cell in the table, we expect uppercase; in the
middle of a word we expect lowercase; and, unfortunately, after an
inter-word gap, we are not sure.
So any time we see a word starting with `l' or `I', the program has to
ask about it.
-*Do not* make an entry in the character set dictionary mapping `vertical
-stick' to `l' or `I'. Instead, select enough of the whole word in
-question that no word would start with the other letter, and enter the
-whole word or part of it as a new glyph.
+After an interword gap, we first search for a Word entry in the
+dictionary. If there is a match we use it. Otherwise we search both
+the uppercase and lowercase dictionaries; if one matches and the other
+doesn't, or one matches a wider character than the other, we use it.
+If that fails to resolve the ambiguity we must ask.
+
+*Do not* make an entry in the character set dictionary mapping
+`vertical stick' to `l' or `I'. Instead, select enough of the whole
+word in question that no word would start with the other letter, and
+enter the whole word or part of it as a new glyph as a new entry in
+the Word dictionary.
For example, in the supplied dictionary there is already a glyph for
`Iron'; this is OK because there are no words which start `lron'.
Instead, make a new glyph for the last letter of the previous word
plus the (unusually narrow) inter-word space, and end that entry with
-\x20 (yes, type \ x 20).
+a literal space ` '.
For example, you might find that `y<space>G' is treated as
`y<??lowercase>' and the G doesn't get matched. Select the `y<space>'
-region of the bitmap and type `y\x20' into the string box.
-Sorry for this rather poor UI!
+region of the bitmap and type `y ' into the string box.
Overlapping characters - ligatures
Some of the characters in the font used overlap with the next
character. When this happens, select both the characters and enter
-them together as one glyph with a multi-character definition.
+them together as one glyph with a multi-character definition, as a new
+entry in the Lower or Upper dictionary.
For example `yw' is rendered with the top right corner of the `y' and
the top left corner of the `w' overlapping. This is dealt with by
Fixing mistakes
---------------
-The OCR query UI allows you to delete things from the glyph dictionary.
-However since you are not guaranteed to actually get an OCR query at
-all if the dictionary contains errors, you shouldn't rely on this.
+The OCR query UI allows you to delete things from the glyph
+dictionary. However since you are not guaranteed to actually get an
+OCR query at all (and since it is not possible to override the
+presence of an entry in the master database with the absence of one in
+the local database), if the dictionary contains errors, you shouldn't
+rely on this.
If you think you have made mistakes answering OCR queries (for
-example, the recognised data is wrong), you should download a fresh
-copy of charset-15.txt from
- http://www.chiark.greenend.org.uk/~ijackson/ypp-sc-tools/master/pctb/charset-15.txt
+example, the recognised data is wrong), you should delete the file
+#local-char*#.txt, which contains your local updates. It will then
+only use the centrally provided (and vetted) master file (which is
+automatically updated when you run the PCTB client, by default).
Enabling interactive character set update
it has got to, and allow you to edit the character set dictionary it
uses for recognising the text.
-*This is subtle* and it is important to understand the way the
+The process is subtle and it is important to understand the way the
machinery works, and the possible mistakes you can make, before
-answering the program. *Please read this documentation*, which
+answering the program. So *Please read this documentation*, which
explains the meaning of the entries you make.
-Also, the character set updates you make will by default be submitted
-to my server so that they can be checked by me and shared with other
-users. See README.privacy.
+You must specify the dictionary to which the new glyph should be
+added, by selecting the appropriate radiobutton or by pressing one of
+U D L W for Upper, Digit, Lower, Word. Word is only correct
+right if the match failure is a new word starting with l or I (see
+above). Upper or Lower is correct for single letters and ligatures.
+for new ligatures. Use Upper for punctuation and Digit for `>' and
+digits.
+
+The character set updates you make will by default be submitted to my
+server so that they can be checked by me and shared with other users.
+See README.privacy.
If you need help please ask me (ijackson@chiark.greenend.org.uk, or
Aristarchus on Midnight in game if I'm on line, or ask any pirate of