Es estándar ODF y el código – EasyHack

Open Document Format (ODF) es un formato de archivo estándar (ISO/IEC 26300) y nativo que utiliza LibreOffice. OASIS desarrolló este formato de archivo basándose en el formato de archivo de StarOffice, el antecesor de LibreOffice.

por Hossein Nourikhah

Para entender el estándar ODF, trabajar con el código de LibreOffice y arreglar un pequeño error es esclarecedor. Aquí discutimos un EasyHack relacionado.

Extensiones de archivos ODF

Si usted es un usuario de LibreOffice, es posible que ya conozca estas extensiones:

  • .odt para documentos de procesamiento de texto (LibreOffice Writer)
  • .odp para presentaciones (LibreOffice Impress)
  • .ods para hojas de cálculo (LibreOffice Calc)
  • .odg para dibujos (LibreOffice Draw)
  • .odf para fórmulas (LibreOffice Math)

Básicamente, se trata de archivos zip que contienen archivos XML y binarios. Además, el formato de documento abierto también puede ser un formato de sólo texto con las extensiones .fodt, .fods y .fodg en lugar de .odt, .ods y odg respectivamente.

Especificación Open Document

El sitio web de OASIS ofrece los documentos que describen ampliamente el formato de documento abierto. Puede encontrar las especificaciones de ODF 1.3, que es la última versión del estándar.

Además de LibreOffice, varias otras aplicaciones soportan el estándar ODF, incluyendo Microsoft Office, ONLYOFFICE, Calligra Suite, Google Docs, y muchas otras. Pero aquí, nos centramos en LibreOffice.

Básicamente, LibreOffice maneja el formato Open Document abriendo el archivo zip utilizando el intérprete zip y el algoritmo de descompresión, y luego analiza los archivos XML dentro de él utilizando la biblioteca libxml2.

Por otro lado, el significado de las etiquetas y atributos XML está disponible a través de la especificación de OASIS. En esencia, la especificación describe el texto, las imágenes, las formas y otros elementos del tratamiento del texto, presentaciones, hojas de cálculo y fórmulas. Además, el estándar ODF aborda la accesibilidad, la colaboración y muchos otros temas.

Un EasyHack relacionado con ODF

La mejor manera de entender el estándar ODF, es trabajando con el código de LibreOffice. Por favor, eche un vistazo a este pequeño error, que tiene la etiqueta de EasyHack (tdf#150302):

En este EasyHack, hay un documento de ejemplo que está utilizando una característica específica en los dibujos. Mirando la etiqueta <draw:enhanced-geometry>, se puede ver que hay un atributo draw:text-path-same-letter-heights que se utiliza para controlar la forma en que el texto se representa en las formas. Se describe en el estándar ODF como:


19.224 draw:text-path-same-letter-heights

El atributo draw:text-path-same-letter-heights

especifica si todas las letras de una forma personalizada tienen la misma altura.

Los valores definidos para el atributo son:

  • false: las letras de una forma personalizada no tienen por qué tener la misma altura.
  • true: las letras de una forma personalizada tienen la misma altura.

El valor predeterminado de este atributo es false.


El problema es que el manejo de este parámetro en el código no es correcto. En concreto, el efecto de este error es que si se abre el archivo de muestra y se hace clic en el botón SameLetterHeights de la barra de herramientas de Fontwork, no ocurre nada. Por el contrario, el comportamiento correcto debería ser que la forma cambie, y «muestre los caracteres en vertical estirados para ajustarse al lugar entre los trayectos».

Formas dentro del archivo ODF de ejemplo

Formas dentro del archivo ODF de ejemplo

Al fin y al cabo, para solucionar este problema hay que remitirse al puntero de código que ha proporcionado Regina Henschel:

Si abres el archivo core/svx/source/toolbars/fontworkbar.cxx, verá que falta la parte else, que es la causa del problema. Específicamente, debe arreglar esa parte del código, y luego enviar sus cambios a Gerrit. Para empezar, consulte esta página para obtener más información sobre cómo enviar el código a LibreOffice Gerrit:

Escribir una prueba para el parche

El parche es bastante sencillo, pero esto no es el final de la tarea. Además, hay que asegurarse de que el problema no se repita. Para lograr este objetivo, es necesario escribir una prueba unitaria. El código de prueba debe abrir el archivo de ejemplo, y luego utilizar la opción de la barra de herramientas. Esto es posible invocando el comando.uno:FontworkSameLetterHeights.

Barra de herramientas de Fontwork: SameLetterHeights es el segundo icono

Barra de herramientas de Fontwork: SameLetterHeights es el segundo icono

Hay algunos ejemplos en sd/qa/unit/uiimpress.cxx que invocan comandos de UNO, y que puede utilizar como punto de partida.

Notas Finales

Los EasyHacks son buenos puntos de partida para los recién llegados. Esta mejora específica está archivada como tdf#150302.

Si quiere contribuir al código de LibreOffice trabajando en esta mejora, pero necesita saber cómo empezar con el desarrollo de LibreOffice, le sugiero que vea nuestro video tutorial:

Getting Started (Video Tutorial)

 

ODF standard and the code – EasyHack

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Acepto la Política de privacidad