insert___translation may be called more than once in translating a block of text such as a paragraph. This happens if different tables are needed. For example, if a paragraph contains text followed by MathML followed by more text then the literary text table will be used, then a math table, then the literaryTextTable again. The math should ordinarily be preceded and followed by a space. Of course, something more discriminating could be used. If you like Paaul's solution you could try it. A test to make sure it doesn't break something else would also be nice. John On Mon, Jul 07, 2014 at 05:55:33PM +0200, Bert Frees wrote: > John, > > You say that "the space is added to keep things from running > together". Remind me, why exactly is that needed again? Is it because > you remove space at an other place in the code? If so, shouldn't the > logic that removes space be a little more conservative so that it > doesn't remove space that has to be added again later? > > Bert > > > Paul Wood writes: > > > Hi John, > > We have looked at the code and found that the last 3 statements of > > change_table.c are: > > insert_translation (ud->main_braille_table); > > ud->main_braille_table = oldTable; > > pop_sem_stack (); > > > > This last 'insert_translation' calls the code I referred to in my > > previous email and because the text being translated doesn't end with a > > space e.g. 'a <abbr>US</abbr> state' then the 'insert_translation' code > > ADDS a space. As the next bit to be translated starts with a space, we > > end up with two spaces. There is nothing else that would add the space > > in the next two lines. as far as we can tell > > What we suggest is that the code does a look forward and if the next > > character to be translated is a space then it doesn't add that space, > > but otherwise it does. Is this a workable solution? > > Suggested solution: > > > > The line is in 'transcriber.c' and is in the function > > 'insert_translation (const char *table)' > > It's replacing: > > if (ud->translated_length > 0 && ud->translated_length < > > MAX_TRANS_LENGTH && > > ud->translated_buffer[ud->translated_length - 1] > 32) > > { > > ud->translated_buffer[ud->translated_length++] = 32; > > > > with: > > if (ud->translated_length > 0 && ud->translated_length < > > > > MAX_TRANS_LENGTH && > > ud->translated_buffer[ud->translated_length - 1] > 32 && > > ud->text_buffer[0]!=32) > > { > > ud->translated_buffer[ud->translated_length++] = 32; > > > > Thanks > > Paul > > > > > > > > On 30/06/2014 17:03, John J. Boyer wrote: > >> The space is added to keep things from running together. Your concern > >> about breaking something is justified, since this is the function that > >> handles all translations. The problem is more likely to be in the > >> function that actually handles changetable. > >> > >> John > >> > >> On Mon, Jun 30, 2014 at 03:40:11PM +0100, Paul Wood wrote: > >>> Hi Guys, > >>> We have a university student volunteering with us for the summer! So > >>> he thinks he has found the cause of the extra space after the > >>> changetable opcode. I'm worried it will break something else and I > >>> don't think we can run the checks as we are using windows. > >>> > >>> The line is in 'transcriber.c' and is in the function > >>> 'insert_translation (const char *table)' > >>> It's after: > >>> if (ud->translated_length > 0 && ud->translated_length < > >>> MAX_TRANS_LENGTH && > >>> ud->translated_buffer[ud->translated_length - 1] > 32) > >>> { > >>> > >>> and is: > >>> ud->translated_buffer[ud->translated_length++] = 32; > >>> > >>> He tells me 32 is the ascii for space, so basically it's adding a space. > >>> Please tell me if we can do the checks under windows and what else > >>> we need to do ie. create a fork etc. > >>> Thanks > >>> Paul > >>> > >>> -- > >>> Paulw.torchtrust signature > >>> > >>> Paul Wood, Chief Technical Officer > >>> *Torch Trust* > >>> Torch House, Torch Way, > >>> Market Harborough, Leics. LE16 9HL, UK > >>> Direct Line: *+44(0)1858 438269* > >>> Tel: *+44(0)1858 438260*, Fax: *+44(0)1858 438275* > >>> Email: paulw@xxxxxxxxxxxxxx <mailto:paulw@xxxxxxxxxxxxxx> > >>> Website: www.torchtrust.org <http://www.torchtrust.org/> > >>> > >>> ____________________________________________________ > >>> > >>> Chief Executive: Dr Gordon Temple > >>> Charity No. 1095904 > >>> > >>> Privileged/Confidential Information may be contained in this message. > >>> If you are not the intended recipient please destroy this message > >>> and kindly notify the sender by reply email. The computer from which > >>> this mail originates is equipped with virus screening software. > >>> However Torch Trust cannot guarantee that the mail and its attachments > >>> are free from virus infection. > >>> > > For a description of the software, to download it and links to > project pages go to http://www.abilitiessoft.com -- John J. Boyer; President, Chief Software Developer Abilitiessoft, Inc. http://www.abilitiessoft.com Madison, Wisconsin USA Developing software for people with disabilities For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com