I will point out we do have an epub expert already on the list he is currently on vacation but you will be hearing from Keith soon I am sure. Ken -----Original Message----- From: liblouis-liblouisxml-bounce@xxxxxxxxxxxxx [mailto:liblouis-liblouisxml-bounce@xxxxxxxxxxxxx] On Behalf Of Susan Jolly Sent: Sunday, October 27, 2013 2:22 PM To: liblouis-liblouisxml@xxxxxxxxxxxxx Subject: [liblouis-liblouisxml] Re: A new liblouis? Hi John G. and others, I hope this will be considered civil. You definitely need a lot of additional highly experienced software engineers. This is not meant as a criticism of the current team but simply to underscore the importance of the project. This need should be taken into consideration before choosing a programming language. Those of us who enjoy programming are always eager to jump into programming but as you all well know, the actual programming is only a small part of a software development project. There are many technical issues to be considered prior to actual programming or even choosing a language. A major issue is the adoption of EPUB 3. Matt Garrish, one of its designers, worked for CNIB for many years and his knowledge of the intricacies of braille transcription informed the design of EPUB 3. Designing braille software without a thorough understanding of EPUB 3 seems silly to me. I strongly recommend reading the book "EPUB 3 Best Practices" by Matt Garrish and Marcus Gylling. Here is a list of three items where what I've done differently from liblouis has been successful. I've added links where I've written more about an issue. I'm glad to answer questions about individual items but my main point here is to give some specific examples to underscore my contention that there is a lot to think about before plunging forward. (1) Translation tables for contracted braille systems typically contain two types of rules. One type of translation rule is defined by the braille system. For example, a certain contraction may be used in certain contexts. The other type of rule is an ad hoc rule used to account for certain exceptions to the default rules. There are several advantages to using some sort of extra opcode or label so as to distinguish these two types. http://www.dotlessbraille.org/bidissues2.htm#dotsys (2) There are many situations where contracted braille systems only use a subset of the default rules. For example, EBAE doesn't allow certain contractions to be used in proper names. Also there are many systems of learner braille or grade-relaxed braille based on using subsets of the default rules. It is possible to design a single translation table with all the rules such that an engine can easily extract the proper subsets. http://www.dotlessbraille.org/BrailleTransSpec1.htm (3) One of the unique problems with dealing with braille automatically is that the same braille character or braille cell typically has multiple semantics. This is, of course, a key reason why it is so difficult to automate accurate back translation. (As an aside, let me note that the only way to eliminate the backtranslation problem would be to make braille more verbose which would of course be ridiculous since it would make braille harder for humans to read. The only effective way I know of to accurately backtranslate a particular braille system is parsing which requires developing a lexer grammar specific to that system.) Given that the same braille cell has multiple semantics, is a direct representation of braille cells the best internal data structure for braille? We know from the success of Unicode the value of having a unique code point for each unique character. However, braille cells differ from the majority of characters because of their multiple semantics both within the same braille system and in different systems. That's why I use what I call extended braille where I assign a private code point not to each braille cell but to each different semantics of a braille cell within a particular braille system. EBAE requires several hundred code points; I don't know about other systems. Susan For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com