Fuentes en Pango

Los atributos de las etiquetas span: font_desc y font_family nos permite definir la familia de la fuente (normal, sans, serif, monoespacio), pero además, también indicar el tamaño de forma fácil, siendo este método más fácil y legible que el que comenté en un post anterior utilizando el atributo size. Así, para un tamaño de letra, por ejemplo 6, en lugar de tener una etiqueta del tipo: <span size = “6144”> xx-small </span>, tendríamos algo del tipo: <span font_descr = “Normal 6”> xx-small </span>

Obtenido: Forma de trabajar con fuentes en pango.

Objetivo: Trabajar con pdfs con herramientas de consola.

Anuncios

Mark-text y has_tag

Mark-text es una señal del widget gtk.TextBuffer su prototipo sería algo así como:

def mark-set (textbuffer, iter, textmark, *params): La señal “mark-set” se emite cuando textmark está siendo puesta en el lugar indicado por iter en el textbuffer. De modo que si guardamos , por ejemplo en un diccionario, las etiquetas y el widget al que pertenece podremos saber fácilmente mediante el método has_tag(tag) del widget gtk.TextIter, que nos dice si el lugar indicado por el iterador está etiquetado por tag, si el widget está activado o no. Esto se traduce a que podremos ver “pulsado” o no un botón de etiqueta (por ejemplo el de cursiva), si estamos dentro de un texto en cursiva o no.

Obtenido: Forma de interactuar entre los botones y el texto dependiendo de la zona donde estemos.

Objetivo: Trabajar con fuentes.


Editor: tamaño de la fuente

El modo para cambiar el tamaño de una fuente con el lenguaje Pango es mediante la etiqueta <span size=”X”></span>  donde X puede ser un número (1024 aprox. equivaldría a 1pt) o alguna de las etiquetas: ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’. Tambiés es posible indicar tamaños relativos, pudiendo de esta manera hacer de forma fácil una fuente más grande o pequeña que otra mediante: ‘smaller’ or ‘larger’

Obtenido: Trabajo con fuentes en Pango.

Objetivo: Trabajo con colores en Pango

Editor: bold, italic and underlined font

Por el momento he conseguido modificar estas tres características de la fuente del editor  usando  togglebuttons, es decir, botones que guardan su estado y el lenguaje de marcado de Pango. En estos tres casos, las etiquetas a utilizar coinciden con las utilizadas en HTML, por lo tanto se debe escribir <b>para texto en negrita</b>, <i>para texto en cursiva</i> y <u>para texto subrayado</u>.

Lo próximo ya será cambiar el tamaño de la letra, el color y pelearme con las listas. Éstas son más difíciles de tratar ya que, Pango no cuenta con marcas nativas para formatear el texto.

Obtenido: Formateo del texto en negrita, cursiva y subrayado.

Objetivo: Permitir modificar el tamaño y color de una fuente

Editor: Alternativa para las tablas

Como ya comenté crear un editor para una aplicación de escritorio que ofrezca poder incluir tablas , no es un problema sencillo de resolver. Se puede trabajar con algún editor (por ejemplo, OpenOffice Writer) y guardar la tabla como fichero CSV, pero este formato está muy limitado. Por lo tanto, una alternativa, ya que se utiliza un editor externo, es pensar en las tablas como “objetos flotantes” (si pensamos en términos de LaTeX), así se podría editar la tabla en, por ejemplo: OpenOffice Calc, y de este archivo genera su correspondiente PDF e incluirlo así en la pregunta.

Para conseguir poder obtener un fichero PDF a partir de un fichero de OpenOffice se puede utilizar esta receta.

Obtenido: Alternativa para incluir tablas.

Objetivo: Seguir trabajando en el editor.

Pango

Pango es una librería para mostrar y renderizar texto. La mayoría del trabajo de Pango ha sido realizado en el contexto de GTK pero puede ser utilizado en otros contextos. Pango está diseñado de forma modular y puede ser utilizando con diferentes backends de fuentes: fuentes FreeType, fuentes nativas de Microsoft Windows y de MacOsX.

Pango será utilizado para el editor de texto y su documentación se puede encontrar en Manual de Referencia

Obtenido: Modo de mostrar y realizar texto en GTK.

Objetivo:  Continuar con el editor.

Editor de preguntas

He estado pensando en cómo realizar el editor, qué posibilidades ofrecer ya que al ser una aplicación de escritorio hay ciertas complicaciones que en herramientas web por ejemplo, no existen (creación y visualización de tablas).

A parte de qué cada tipo de interación tendrá su correspondiente interfaz, el editor será siempre el mismo, al menos, en principio. Las opciones que he incluido (aún por implementar), son las de varios tamaños y colores de texto, negrita, cursiva, subrayado, inclusión de listas y listas numeradas(algo que realmente no sé todavía como realizar con gtk) , imágenes, fórmulas (en formato MathML, por lo que tengo pensado) y tablas (una de las opciones podría ser, guardar la información de las tablas en formato CSV).

He querido poner unos iconillos representativos, para hacerlo más atractivo visualmente e intuitivo, aquellos que no son de uso propio en aplicaciones gtk como botones para crear listas, cambiar el color a la fuente, etc, he buscado algunos para utilizarlos, los he modificado y he creado uno de ellos. Todo ha sido mediante Gimp, no os puedo contar mucho, porque como ya dije en el diseño y con sus herramientas soy complementa un neófito, y por eso os animo (y me animo) a visitar su página allí se pueden encontrar tutoriales y también de Inkscape (para el dibujo vectorial).

Obtenido: Creación de la interfaz del editor.

Objetivo:  Implementar la interfaz.