[liblouis-liblouisxml] Re: Fix for extra space after 'changetable'

  • From: "John J. Boyer" <john.boyer@xxxxxxxxxxxxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Mon, 7 Jul 2014 10:56:46 -0500

Have you tried this fix to see if it actually solves the problem and 
doesn't obviously break anything else? An alternative is to use the 
compress.cti liblouis table in a table list such as

compress.cti,xxx.ctb

This will compress any whitespace into a single space. Tables used to do 
this by default, but it was put in a separate table because some users 
needed to see all the spaces.

John

On Mon, Jul 07, 2014 at 04:00:13PM +0100, Paul Wood wrote:
> 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.
> >>
> 
> -- 
> 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.
> 

-- 
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

Other related posts: