martes, 14 de agosto de 2012

Boox i62HD/M92: Guionado correcto con CoolReader

Esto me retrotrae a los tiempos del Papyre, cuando el firmware original era poco menos que una mierda pinchada en un palo. Funcionar, lo que se dice funcionar, lo hacía, pero con muchas limitaciones y cosas a medio hacer.

Pasado el tiempo fue cosa de gente de fuera de la empresa los que lo arreglaron todo lo que se podía arreglar, y entonces, sin ser para echar cohetes, al menos cumplía con su función.

Con el i62HD/M29 está pasando más o menos lo mismo, y supongo que, como con las versiones anteriores, en cuanto salgan nuevos aparatos, lo abandonarán.

No, no es que funcione mal. Hace lo que promete, pero podría tener algunas cosas solucionadas. El visor FBReader por defecto no funciona mal. Soporta diccionarios con un doble clic sobre la pantalla, y presenta el texto con más o menos acierto. También tiene muchas opciones y soporta gran variedad de fuentes.

Igual pasa con el CoolReader, que es un visor alternativo. La ventaja de este frente al anterior es que, en principio, aparte de diccionario, soporta anotaciones. Y digo en principio porque en el i62 estas no funcionan porque no han sido activadas.

Otra ventaja está en que se puede poner a dos columnas en horizontal, así como la creación de estilos propios a la hora de ver un formato de ebook mediante ficheros CSS. 

Esto último funciona más o menos aceptablemente, pero lo que no funciona es el guionado de palabras. Está bloqueado en ruso, y encima sólo lee el fichero interno, no el externo.

***

Esto requiere algo de explicación. CoolReader puede leer ficheros de configuración de dos lugares: /usr/share/ ó una unidad externa, configurada a la hora de compilar el código fuente. En el i62 la externa es /media/flash, que se corresponde con la unidad de disco montable. Por lo tanto, si ponemos ahí alguno de los ficheros adecuados, CoolReader ignorará los internos y leerá estos. 

Tanto con los estilos para los formatos, por ejemplo fb2.css o epub.css, como para la configuración de ficheros, cr3.ini, funciona así. Pero no para los ficheros de guionado. En este caso los programadores de Onyx se han saltado a la torera la posibilidad de poner tus propias personalizaciones a la hora de cortar las palabras al final de la línea.

El motivo de ello es que esa parte está a medio hacer. No hay menú para elegir guionado, ni nada en el fichero INI o en algún otro lado. Está todo cableado dentro del programa, que va a la ruta interna sí o sí y carga el guionado en idioma ruso si está.

***

Lo que he hecho con este hack ha sido cambiar la ruta interna por la externa y hacer que busque dos ficheros: primero irá a por “esSOLSTICIO.pdb”, y si este no está, cogerá “esSOLSTICIO.pattern”. Si tampoco lo encuentra, activará el guionado algorítmico, que por cierto tampoco funciona tan mal en castellano.

Es decir, si pones en /cr3/hyph/ uno de esos ficheros dentro de la unidad montada del i62, y aplicas el parche que he creado, el CoolReader usará uno de esos ficheros para hacer el guionado. Yo lo tengo en castellano, pero puedes coger el inglés y ponerlo con esos nombres.

***

El proceso de instalación es un tanto barroco, pero tampoco quiero liarme con programas instaladores complejos ni nada semejante. El instalador realiza una operación muy sencilla: saca el fichero cr3 original y mete el nuevo modificado. El desinstalador borra el fichero nuevo interno y vuelve a meter el original.

En esta página de Mobileread tenéis la descarga del parche, que debe quedar descomprimido en la microSD así:

 

/apps/cr/cr3new

/apps/cr/install_cr3.oar

/apps/cr/remove_cr3.oar

 

Ojo con las mayúsculas y minúsculas, tanto en la microSD como en la carpeta interna cuando coloquéis el fichero de guionado. Un error hará que no se instale o no funcione bien, o incluso que perdáis la posibilidad de abrir libros con el CoolReader. En el caso de que os pase algo así, la solución más sencilla es bajaros una actualización de firmware y reflasheéis el aparato.

Cuando tengáis la SD dentro del Onyx, navegáis por ella y ejecutáis install_cr3.oar. Si todo ha ido bien, cr3new se habrá convertido en cr3. Conservad este cr3 porque es el fichero interno original. El desinstalador lo volverá a meter en su sitio, borrando la actualización.

***

AVISO: Esto va sin garantía de ningún tipo. 

***

Una última cosa sobre el software en linux. Ni os imagináis lo que me ha costado poder compilar el CoolReader para el Onyx. En princpio hay un SDK listo para usar, que construye las partes Open Source, tanto para x86 como para arm, bajo linux. 

Pues no. El sistema de construcción, llamado “rake” es una mierda pinchada en un palo. Inestable e incoherente, unas veces compila y otras no.

El proceso de compilación se lleva a cabo mediante CMake, que es una variante de los makefiles de toda la vida. Pues bien, aquí no es culpa del software, sino de Onyx, que son unos dejados de tomo y lomo. Había ficheros CMakeFile.txt incompletos, con opciones faltantes, etc. Una verdadera chapuza.

Pero la chapuza mayor estaba en el propio CoolReader. Aparte de que la parte de Onyx está a medio hacer, había símbolos duplicados a la hora de compilar. Es decir, hay clases repetidas entre las bibliotecas del Boox y el CR, y de hecho me hago cruces de cómo los propios programadores de Onyx pueden generar las versiones finales.